[Bug,1138] net/i40e all packets dropped after rte_eth_dev_flow_ctrl_set

Message ID bug-1138-3@http.bugs.dpdk.org/ (mailing list archive)
State Not Applicable, archived
Delegated to: Ferruh Yigit
Headers
Series [Bug,1138] net/i40e all packets dropped after rte_eth_dev_flow_ctrl_set |

Checks

Context Check Description
ci/Intel-compilation warning apply issues

Commit Message

bugzilla@dpdk.org Dec. 1, 2022, 2:30 a.m. UTC
  https://bugs.dpdk.org/show_bug.cgi?id=1138

            Bug ID: 1138
           Summary: net/i40e all packets dropped after
                    rte_eth_dev_flow_ctrl_set
           Product: DPDK
           Version: 21.11
          Hardware: All
                OS: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: ethdev
          Assignee: dev@dpdk.org
          Reporter: hanshuang87@gmail.com
  Target Milestone: ---

My program call rte_eth_dev_flow_ctrl_set after rte_eth_dev_start. I found that
x710 dropped all packets(rx_dropped_packets in xstats).
I have used testpmd to confirm the problem:


If I stop and start the port again, packet will be received as good.
  

Patch

diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c
index da29858..eb11789 100755
--- a/app/test-pmd/testpmd.c
+++ b/app/test-pmd/testpmd.c
@@ -2928,6 +2928,16 @@  struct extmem_param {
                        continue;
                }

+               {
+                       struct rte_eth_fc_conf fc_conf = {
+                               .autoneg = 0,
+                               .mode = RTE_FC_NONE,
+                       };
+
+                       if (!rte_eth_dev_flow_ctrl_set(pi, &fc_conf))
+                               printf("set port %d flow ctrl\n", pi);
+               }
+
                if (port->port_status == RTE_PORT_HANDLING)
                        port->port_status = RTE_PORT_STARTED;
                else