<html>
    <head>
      <base href="https://bugs.dpdk.org/">
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8" class="bz_new_table">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_UNCONFIRMED "
   title="UNCONFIRMED - "net_txgbe" have not implemented outer UDP checksum offload, but the capability flag has been set."
   href="https://bugs.dpdk.org/show_bug.cgi?id=1529">1529</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>"net_txgbe" have not implemented outer UDP checksum offload, but the capability flag has been set.
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>DPDK
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>24.07
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>All
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>UNCONFIRMED
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>Normal
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>ethdev
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>dev@dpdk.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>junwang01@cestc.cn
          </td>
        </tr>

        <tr>
          <th>Target Milestone</th>
          <td>---
          </td>
        </tr></table>
      <p>
        <div class="bz_comment_block">
          <pre class="bz_comment_text">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;
     }
          </pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
      <div itemscope itemtype="http://schema.org/EmailMessage">
        <div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
          
          <link itemprop="url" href="https://bugs.dpdk.org/show_bug.cgi?id=1529">
          <meta itemprop="name" content="View bug">
        </div>
        <meta itemprop="description" content="Bugzilla bug update notification">
      </div>
    </body>
</html>