Thread (23 messages) 23 messages, 3 authors, 2024-06-04

RE: [Intel-wired-lan] [PATCH v2 iwl-net 1/8] ice: respect netif readiness in AF_XDP ZC related ndo's

From: Rout, ChandanX <hidden>
Date: 2024-06-04 06:48:04
Also in: intel-wired-lan

-----Original Message-----
From: Intel-wired-lan <redacted> On Behalf Of
Fijalkowski, Maciej
Sent: Wednesday, May 29, 2024 4:54 PM
To: intel-wired-lan@lists.osuosl.org
Cc: Fijalkowski, Maciej <maciej.fijalkowski@intel.com>; Zaremba, Larysa
[off-list ref]; netdev@vger.kernel.org; Kubiak, Michal
[off-list ref]; Nguyen, Anthony L
[off-list ref]; Karlsson, Magnus
[off-list ref]
Subject: [Intel-wired-lan] [PATCH v2 iwl-net 1/8] ice: respect netif readiness in
AF_XDP ZC related ndo's

From: Michal Kubiak <redacted>

Address a scenario in which XSK ZC Tx produces descriptors to XDP Tx ring
when link is either not yet fully initialized or process of stopping the netdev has
already started. To avoid this, add checks against carrier readiness in
ice_xsk_wakeup() and in ice_xmit_zc().
One could argue that bailing out early in ice_xsk_wakeup() would be sufficient
but given the fact that we produce Tx descriptors on behalf of NAPI that is
triggered for Rx traffic, the latter is also needed.

Bringing link up is an asynchronous event executed within ice_service_task so
even though interface has been brought up there is still a time frame where link
is not yet ok.

Without this patch, when AF_XDP ZC Tx is used simultaneously with stack Tx, Tx
timeouts occur after going through link flap (admin brings interface down then
up again). HW seem to be unable to transmit descriptor to the wire after HW
tail register bump which in turn causes bit __QUEUE_STATE_STACK_XOFF to be
set forever as
netdev_tx_completed_queue() sees no cleaned bytes on the input.

Fixes: 126cdfe1007a ("ice: xsk: Improve AF_XDP ZC Tx and use batching API")
Fixes: 2d4238f55697 ("ice: Add support for AF_XDP")
Signed-off-by: Michal Kubiak <redacted>
Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
---
drivers/net/ethernet/intel/ice/ice_xsk.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
Tested-by: Chandan Kumar Rout <redacted> (A Contingent Worker at Intel)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help