Projects
Eulaceura:Mainline
lwip
_service:obs_scm:0087-support-vlan-offload.patch
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0087-support-vlan-offload.patch of Package lwip
From c2c63406f804550db5670715c1afa6e743d1f675 Mon Sep 17 00:00:00 2001 From: jiangheng <jiangheng14@huawei.com> Date: Mon, 5 Feb 2024 17:38:06 +0800 Subject: support vlan offload --- src/include/dpdk_version.h | 1 + src/include/lwip/pbuf.h | 1 + src/netif/ethernet.c | 17 +++++++++++------ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/include/dpdk_version.h b/src/include/dpdk_version.h index e61d0b3..5efaa39 100644 --- a/src/include/dpdk_version.h +++ b/src/include/dpdk_version.h @@ -48,6 +48,7 @@ #define RTE_MBUF_F_TX_TCP_CKSUM PKT_TX_TCP_CKSUM #define RTE_MBUF_F_TX_TCP_SEG PKT_TX_TCP_SEG #define RTE_MBUF_F_TX_UDP_CKSUM PKT_TX_UDP_CKSUM +#define RTE_MBUF_F_TX_VLAN PKT_TX_VLAN_PKT #endif /* DPDK_VERSION_1911 */ diff --git a/src/include/lwip/pbuf.h b/src/include/lwip/pbuf.h index 7fad719..bc29372 100644 --- a/src/include/lwip/pbuf.h +++ b/src/include/lwip/pbuf.h @@ -240,6 +240,7 @@ struct pbuf { struct pbuf *last; pthread_spinlock_t pbuf_lock; struct tcp_pcb *pcb; + u16_t vlan_tci; #if GAZELLE_UDP_ENABLE ip_addr_t addr; u16_t port; diff --git a/src/netif/ethernet.c b/src/netif/ethernet.c index af4cffc..d2960b5 100644 --- a/src/netif/ethernet.c +++ b/src/netif/ethernet.c @@ -289,7 +289,12 @@ ethernet_output(struct netif * netif, struct pbuf * p, } #else if (netif->vlan_enable) { - vlan_prio_vid = netif->vlan_tci; + if (netif->txol_flags & DEV_TX_OFFLOAD_VLAN_INSERT) { + p->ol_flags |= RTE_MBUF_F_TX_VLAN; + p->vlan_tci = netif->vlan_tci; + } else { + vlan_prio_vid = netif->vlan_tci; + } } #endif /* GAZELLE_ENABLE */ #endif @@ -327,11 +332,11 @@ ethernet_output(struct netif * netif, struct pbuf * p, ("ethernet_output: sending packet %p\n", (void *)p)); #if CHECKSUM_GEN_IP_HW || CHECKSUM_GEN_TCP_HW -#if LWIP_VLAN_PCP - ethh_cksum_set(p, sizeof(*ethhdr)+SIZEOF_VLAN_HDR); -#else - ethh_cksum_set(p, sizeof(*ethhdr)); -#endif + if (netif->vlan_enable && !(netif->txol_flags & DEV_TX_OFFLOAD_VLAN_INSERT)) { + ethh_cksum_set(p, sizeof(*ethhdr) + SIZEOF_VLAN_HDR); + } else { + ethh_cksum_set(p, sizeof(*ethhdr)); + } #endif /* send the packet */ -- 2.33.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2