Intermittent wrong ol_flag in rte_mbuf when vlan offload strip is used

Solution Unverified - Updated -

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.

Current Customers and Partners

Log in for full access

Log In

New to Red Hat?

Learn more about Red Hat subscriptions

Using a Red Hat product through a public cloud?

How to access this content