From: Dilshod Urazov <dilshod.ura...@oktetlabs.ru> Layer 2 length must be updated after the prepend to mbuf to keep the length right to be used by other Tx offloads.
If the packet has tunnel encapsulation, outer_l2_len should be updated. Otherwise l2_len should be updated. Fixes: c974021a5949 ("ether: add soft vlan encap/decap") Cc: step...@networkplumber.org Cc: sta...@dpdk.org Signed-off-by: Dilshod Urazov <dilshod.ura...@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybche...@solarflare.com> --- The fix is required for net/virtio which supports both VLAN insertion (using the function) and Tx checksum offloads. lib/librte_net/rte_ether.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h index 7be9b4890..961ed9361 100644 --- a/lib/librte_net/rte_ether.h +++ b/lib/librte_net/rte_ether.h @@ -417,6 +417,11 @@ static inline int rte_vlan_insert(struct rte_mbuf **m) (*m)->ol_flags &= ~(PKT_RX_VLAN_STRIPPED | PKT_TX_VLAN); + if ((*m)->ol_flags & PKT_TX_TUNNEL_MASK) + (*m)->outer_l2_len += sizeof(struct rte_vlan_hdr); + else + (*m)->l2_len += sizeof(struct rte_vlan_hdr); + return 0; } -- 2.17.1