Bug ID 1529
Summary "net_txgbe" have not implemented outer UDP checksum offload, but the capability flag has been set.
Product DPDK
Version 24.07
Hardware All
OS All
Status UNCONFIRMED
Severity normal
Priority Normal
Component ethdev
Assignee dev@dpdk.org
Reporter junwang01@cestc.cn
Target Milestone ---

In OVS-DPDK, when using the Wangxun RP1000 network card, I found that the card
supports outer UDP checksum offload according to the capabilities retrieved by
OVS-DPDK. However, in actual testing, the outer UDP checksum of the transmitted
packets is incorrect. After I manually disabled
RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM in the OVS code, the traffic was normal. So,
does this mean that the card does not actually support outer UDP checksum
offload, but the capability is enabled in the DPDK code? Or is there a bug in
the implementation logic?

Before modification in OVS:

status              : {bus_info="bus_name=pci, vendor_id=8088, device_id=1001",
driver_name=net_txgbe, if_descr="DPDK 23.11.0 net_txgbe", if_type="6",
link_speed="10Gbps", max_hash_mac_addrs="4096", max_mac_addrs="128",
max_rx_pktlen="1618", max_rx_queues="128", max_tx_queues="128", max_vfs="0",
max_vmdq_pools="64", min_rx_bufsize="1024", n_rxq="2", n_txq="5", numa_id="0",
port_no="0", rx-steering=rss, rx_csum_offload="true",
tx_geneve_tso_offload="true", tx_ip_csum_offload="true",
tx_out_ip_csum_offload="true", tx_out_udp_csum_offload="true",
tx_sctp_csum_offload="true", tx_tcp_csum_offload="true",
tx_tcp_seg_offload="true", tx_udp_csum_offload="true",
tx_vxlan_tso_offload="true"}


After modification in OVS:

status              : {bus_info="bus_name=pci, vendor_id=8088, device_id=1001",
driver_name=net_txgbe, if_descr="DPDK 23.11.0 net_txgbe", if_type="6",
link_speed="10Gbps", max_hash_mac_addrs="4096", max_mac_addrs="128",
max_rx_pktlen="1618", max_rx_queues="128", max_tx_queues="128", max_vfs="0",
max_vmdq_pools="64", min_rx_bufsize="1024", n_rxq="2", n_txq="5", numa_id="0",
port_no="0", rx-steering=rss, rx_csum_offload="true",
tx_geneve_tso_offload="true", tx_ip_csum_offload="true",
tx_out_ip_csum_offload="true", tx_out_udp_csum_offload="false",
tx_sctp_csum_offload="true", tx_tcp_csum_offload="true",
tx_tcp_seg_offload="true", tx_udp_csum_offload="true",
tx_vxlan_tso_offload="true"}


diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index
d7f0aa1f5835b5c51ed0a2c8cd84079f388ca9ce..1f50676e55687f6ccdaccb7f5403c82569fb2041
100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -2050,12 +2050,13 @@ dpdk_eth_offload_config(struct netdev_dpdk *dev,
     }

     if (!strcmp(info->driver_name, "net_i40e")
-        || !strcmp(info->driver_name, "net_iavf")) {
+        || !strcmp(info->driver_name, "net_iavf")
+        || !strcmp(info->driver_name, "net_txgbe")) {
         /* 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/i40e or net/iavf port.",
+                  "net/i40e or net/iavf or net_txgbe port.",
                   netdev_get_name(&dev->up));
         info->tx_offload_capa &= ~RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM;
     }
          


You are receiving this mail because: