1diff -Nur lwip-82/src/include/dpdk_version.h lwip-offload/src/include/dpdk_version.h 2--- lwip-82/src/include/dpdk_version.h 2023-11-28 14:17:02.432481010 +0800 3+++ lwip-offload/src/include/dpdk_version.h 2023-11-28 14:34:21.208481010 +0800 4@@ -48,6 +48,7 @@ 5 #define RTE_MBUF_F_TX_TCP_CKSUM PKT_TX_TCP_CKSUM 6 #define RTE_MBUF_F_TX_TCP_SEG PKT_TX_TCP_SEG 7 #define RTE_MBUF_F_TX_UDP_CKSUM PKT_TX_UDP_CKSUM 8+#define RTE_MBUF_F_TX_VLAN PKT_TX_VLAN_PKT 9 10 #endif /* DPDK_VERSION_1911 */ 11 12diff -Nur lwip-82/src/include/lwip/pbuf.h lwip-offload/src/include/lwip/pbuf.h 13--- lwip-82/src/include/lwip/pbuf.h 2023-11-28 14:17:02.408481010 +0800 14+++ lwip-offload/src/include/lwip/pbuf.h 2023-11-28 14:41:31.580481010 +0800 15@@ -240,6 +240,7 @@ 16 struct pbuf *last; 17 pthread_spinlock_t pbuf_lock; 18 struct tcp_pcb *pcb; 19+ u16_t vlan_tci; 20 #if GAZELLE_UDP_ENABLE 21 ip_addr_t addr; 22 u16_t port; 23diff -Nur lwip-82/src/netif/ethernet.c lwip-offload/src/netif/ethernet.c 24--- lwip-82/src/netif/ethernet.c 2023-11-28 14:17:02.440481010 +0800 25+++ lwip-offload/src/netif/ethernet.c 2023-11-28 16:35:36.536481010 +0800 26@@ -289,7 +289,12 @@ 27 } 28 #else 29 if (netif->vlan_enable) { 30- vlan_prio_vid = netif->vlan_tci; 31+ if (netif->txol_flags & DEV_TX_OFFLOAD_VLAN_INSERT) { 32+ p->ol_flags |= RTE_MBUF_F_TX_VLAN; 33+ p->vlan_tci = netif->vlan_tci; 34+ } else { 35+ vlan_prio_vid = netif->vlan_tci; 36+ } 37 } 38 #endif /* GAZELLE_ENABLE */ 39 #endif 40@@ -327,11 +332,11 @@ 41 ("ethernet_output: sending packet %p\n", (void *)p)); 42 43 #if CHECKSUM_GEN_IP_HW || CHECKSUM_GEN_TCP_HW 44-#if LWIP_VLAN_PCP 45- ethh_cksum_set(p, sizeof(*ethhdr)+SIZEOF_VLAN_HDR); 46-#else 47- ethh_cksum_set(p, sizeof(*ethhdr)); 48-#endif 49+ if (netif->vlan_enable && !(netif->txol_flags & DEV_TX_OFFLOAD_VLAN_INSERT)) { 50+ ethh_cksum_set(p, sizeof(*ethhdr) + SIZEOF_VLAN_HDR); 51+ } else { 52+ ethh_cksum_set(p, sizeof(*ethhdr)); 53+ } 54 #endif 55 56 /* send the packet */ 57