Message ID | 1710991038-3539-1-git-send-email-junwang01@cestc.cn |
---|---|
State | Changes Requested |
Headers | show |
Series | [ovs-dev,v4] netdev-dpdk: Disable outer udp checksum offload for ice driver. | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
ovsrobot/intel-ovs-compilation | success | test: success |
On 3/21/24 04:17, Jun Wang wrote: > Fixing the issue of incorrect outer UDP checksum in packets sent by E810. > > Fixes: 084c8087292c ("userspace: Support VXLAN and GENEVE TSO.") > Reported-at: https://github.com/openvswitch/ovs-issues/issues/321 > > Signed-off-by: Jun Wang <junwang01@cestc.cn> > --- > lib/netdev-dpdk.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c > index 29a6bf0..1820163 100644 > --- a/lib/netdev-dpdk.c > +++ b/lib/netdev-dpdk.c > @@ -1354,6 +1354,12 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev) > info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_TCP_CKSUM; > } > > + if (!strcmp(info.driver_name, "net_ice")) { I'd suggest to add a following comment here: /* FIXME: Driver advertises the capability but doesn't seem * to actually support it correctly. Can remove this once * the driver is fixed on DPDK side. */ > + VLOG_INFO("%s: disabled Tx outer udp checksum offloads for a " > + "net/ice port.", netdev_get_name(&dev->up)); > + info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM; As per my comment in the github issue, could you, please, also clear all the flags that depend on this one? i.e. also turn off: RTE_ETH_TX_OFFLOAD_VXLAN_TNL_TSO RTE_ETH_TX_OFFLOAD_GENEVE_TNL_TSO Devices should not advertise features that depend on features that are not supported. Some other parts of the code check only for tunnel TSO and do not check UDP checksum offloading assuming that it is supported always if tunnel TSO is supported. > + } > + > if (info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM) { > dev->hw_ol_features |= NETDEV_TX_IPV4_CKSUM_OFFLOAD; > } else {
diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c index 29a6bf0..1820163 100644 --- a/lib/netdev-dpdk.c +++ b/lib/netdev-dpdk.c @@ -1354,6 +1354,12 @@ dpdk_eth_dev_init(struct netdev_dpdk *dev) info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_TCP_CKSUM; } + if (!strcmp(info.driver_name, "net_ice")) { + VLOG_INFO("%s: disabled Tx outer udp checksum offloads for a " + "net/ice port.", netdev_get_name(&dev->up)); + info.tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM; + } + if (info.tx_offload_capa & RTE_ETH_TX_OFFLOAD_IPV4_CKSUM) { dev->hw_ol_features |= NETDEV_TX_IPV4_CKSUM_OFFLOAD; } else {
Fixing the issue of incorrect outer UDP checksum in packets sent by E810. Fixes: 084c8087292c ("userspace: Support VXLAN and GENEVE TSO.") Reported-at: https://github.com/openvswitch/ovs-issues/issues/321 Signed-off-by: Jun Wang <junwang01@cestc.cn> --- lib/netdev-dpdk.c | 6 ++++++ 1 file changed, 6 insertions(+)