Intermittent wrong ol_flag in rte_mbuf when vlan offload strip is used
Issue
- Intermittent wrong ol_flag in rte_mbuf when vlan offload strip is used.
- vdev virtio_user0 is used and tap0 is created automatically inside the dpdk Pod. On top of tap0 a vlan and IP will be configured and the tap0 will send ARP broadcast to get MAC address for a range of subnets.
- When the ARP reply is sent back to VF, the ol_flag is lacking two bits intermittently. This will cause the packet be sent to the wrong interface and cause retransmit of ARP broadcast. This could cause packet drop.
- To be more specific the following two bits are missing in the ol_flag.
#define RTE_MBUF_F_RX_VLAN (1ULL << 0)
#define RTE_MBUF_F_RX_VLAN_STRIPPED (1ULL << 6)
- Correct ol_flag:
_iavf_recv_raw_pkts_vec_avx2_flex_rxd(): arp: pktlen:60, vlan_tci:58160, ol_flag:449
>>> bin(449)
'0b111000001'
- Wrong ol_flag:
_iavf_recv_raw_pkts_vec_avx2_flex_rxd(): arp: pktlen:60, vlan_tci:58160, ol_flag:384
>>> bin(384)
'0b110000000'
Environment
- Red Hat OpenShift Container Platform 4.x
- DPDK
- E810 NIC
Subscriber exclusive content
A Red Hat subscription provides unlimited access to our knowledgebase, tools, and much more.