Created attachment 223 [details] probable fix As part of the ongoing efforts [1] to bring up sophisticated DPDK PMD testing, it was found that i40e had a bug in deferred queue start feature. Test logs [2] and [3] suggest that the problem manifests itself both in Rx and Tx cases. The target queue marked for deferred start proves active at the point where the test has not yet asked to enable it. Our takeaway from studying i40e code is that the driver does not check whether a queue has been marked for deferred start when enabling all queues on port start. Please find the probable fix attached. [1] http://mails.dpdk.org/archives/dev/2022-October/251663.html [2] https://ts-factory.io/bublik/v2/log/100333?focusId=101010&mode=treeAndlog [3] https://ts-factory.io/bublik/v2/log/100333?focusId=101022&mode=treeAndlog
Created attachment 224 [details] probable fix v2 Please find the new proposed fix attached. UPDATE for Tx: As noted before, without the fix, inactive queues send packets passed to them; the packets really hit the wire. With the fix being applied, the packets still can be passed to the PMD by the user, but they just get stuck; when the user starts the queues, the packets get unstuck and hit the wire. Such behaviour also might be incorrect, but it's unclear how to fix it.
please offer the reproduce steps with standard DPDK API like testpmd, l3fwd and other examples.