Hi Helin, I did some more testing and it seems like the issue is triggered when the 'high_water' and 'low_water' fields of the 'rte_eth_fc_conf' structure are set to 0 (like in my initial code example). The following example does not trigger the issue:
struct rte_eth_fc_conf fc_conf; rte_eth_dev_flow_ctrl_get(pi, &fc_conf); fc_conf.mode = RTE_FC_NONE; rte_eth_dev_flow_ctrl_set(pi, &fc_conf); But when using the following code all packets will be discarded although the call to rte_eth_dev_flow_ctrl_set does not return an error: struct rte_eth_fc_conf fc_conf; rte_eth_dev_flow_ctrl_get(pi, &fc_conf); fc_conf.mode = RTE_FC_NONE; fc_conf.low_water = 0; fc_conf.high_water = 0; rte_eth_dev_flow_ctrl_set(pi, &fc_conf); I think the rest of the structure's values should not have any effect as long as flow control is completely disabled by setting the mode to RTE_FC_NONE. At least it did not with DPDK 2.1 or for other NIC types. Regards, Martin On 04.11.15 15:32, Zhang, Helin wrote: > Hi Martin > > Thank you very much for reporting the issue! > Could you help to add more detailed steps and other information? > We will try to reproduce what have seen in our lab, and then debug. > > Regards, > Helin > >> -----Original Message----- >> From: Martin Weiser [mailto:martin.weiser at allegro-packets.com] >> Sent: Wednesday, November 4, 2015 6:17 PM >> To: Zhang, Helin; dev at dpdk.org >> Subject: i40e: disabling flow control makes XL710 NIC discard all packets >> >> Hi Helin, >> >> I have been doing some tests with the current DPDK master to see if the >> issues >> we had with performance and statistics have improved. >> In our own applications we usually disable flow control using the following >> code: >> >> struct rte_eth_fc_conf fc_conf = { .mode = RTE_FC_NONE }; int ret = >> rte_eth_dev_flow_ctrl_set(port_id, &fc_conf); >> >> In DPDK 2.1 this did not cause any problems with XL710 NICs but with the >> current >> master the NIC will not receive any packets and they are all counted in >> ierrors and >> imissed. >> The return value of rte_eth_dev_flow_ctrl_set does not indicate an error so >> it >> seems like something is going wrong here. >> Regards, >> Martin