Bug 1102

Summary: i40e: enabling Rx/Tx queue deferred start has no effect
Product: DPDK Reporter: ivan.malov
Component: ethdevAssignee: Zhang Yuying (yuying.zhang)
Status: UNCONFIRMED ---    
Severity: normal CC: andrew.rybchenko, beilei.xing, ivan.malov, kaiwenx.deng, yux.jiang
Priority: Normal    
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Attachments: probable fix
probable fix v2

Description ivan.malov 2022-10-12 08:38:00 CEST
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
Comment 1 ivan.malov 2022-10-19 09:30:25 CEST
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.
Comment 2 dengkaiwen 2023-11-09 03:32:57 CET
please offer the reproduce steps with standard DPDK API like testpmd, l3fwd and other examples.