net: fix Tx VLAN flag for offload emulation
authorBill Hong <bhong@brocade.com>
Mon, 25 Mar 2019 15:05:41 +0000 (11:05 -0400)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 5 Apr 2019 15:45:22 +0000 (17:45 +0200)
A PMD might use rte_vlan_insert to implement Tx VLAN offload. Typically
the PMD will insert the VLAN header in the transmit path and then
attempt to send the packets. If this fails, the packets are returned to
the application which may attempt to send these packets again. If the
PKT_TX_VLAN flag is not cleared, the transmit path may attempt to insert
the VLAN header again.

Fixes: 47aa48b969f8 ("net: fix stripped VLAN flag for offload emulation")
Cc: stable@dpdk.org
Signed-off-by: Bill Hong <bhong@brocade.com>
Signed-off-by: Chas Williams <chas3@att.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
lib/librte_net/rte_ether.h

index 54822df..3a87ff1 100644 (file)
@@ -410,7 +410,7 @@ static inline int rte_vlan_insert(struct rte_mbuf **m)
        vh = (struct vlan_hdr *) (nh + 1);
        vh->vlan_tci = rte_cpu_to_be_16((*m)->vlan_tci);
 
-       (*m)->ol_flags &= ~PKT_RX_VLAN_STRIPPED;
+       (*m)->ol_flags &= ~(PKT_RX_VLAN_STRIPPED | PKT_TX_VLAN);
 
        return 0;
 }