[Intel-wired-lan] [PATCH iwl-net v2] idpf: enable WB_ON_ITR

Register, Scott scott.register at intel.com
Fri Dec 22 21:46:22 UTC 2023


> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces at osuosl.org> On Behalf Of
> Michal Kubiak
> Sent: Friday, December 15, 2023 11:37 AM
> To: intel-wired-lan at lists.osuosl.org
> Cc: Fijalkowski, Maciej <maciej.fijalkowski at intel.com>; Tantilov, Emil S
> <emil.s.tantilov at intel.com>; Zaremba, Larysa <larysa.zaremba at intel.com>;
> netdev at vger.kernel.org; Hay, Joshua A <joshua.a.hay at intel.com>; Lobakin,
> Aleksander <aleksander.lobakin at intel.com>; Kubiak, Michal
> <michal.kubiak at intel.com>; Brady, Alan <alan.brady at intel.com>; Kitszel,
> Przemyslaw <przemyslaw.kitszel at intel.com>
> Subject: [Intel-wired-lan] [PATCH iwl-net v2] idpf: enable WB_ON_ITR
> 
> From: Joshua Hay <joshua.a.hay at intel.com>
> 
> Tell hardware to write back completed descriptors even when interrupts
> are disabled. Otherwise, descriptors might not be written back until
> the hardware can flush a full cacheline of descriptors. This can cause
> unnecessary delays when traffic is light (or even trigger Tx queue
> timeout).
> 
> The example scenario to reproduce the Tx timeout if the fix is not
> applied:
>   - configure at least 2 Tx queues to be assigned to the same q_vector,
>   - generate a huge Tx traffic on the first Tx queue
>   - try to send a few packets using the second Tx queue.
> In such a case Tx timeout will appear on the second Tx queue because no
> completion descriptors are written back for that queue while interrupts
> are disabled due to NAPI polling.
> 
> The patch is necessary to start work on the AF_XDP implementation for
> the idpf driver, because there may be a case where a regular LAN Tx
> queue and an XDP queue share the same NAPI.
> 
> Fixes: c2d548cad150 ("idpf: add TX splitq napi poll support")
> Fixes: a5ab9ee0df0b ("idpf: add singleq start_xmit and napi poll")
> Reviewed-by: Przemek Kitszel <przemyslaw.kitszel at intel.com>
> Reviewed-by: Alexander Lobakin <aleksander.lobakin at intel.com>
> Signed-off-by: Joshua Hay <joshua.a.hay at intel.com>
> Co-developed-by: Michal Kubiak <michal.kubiak at intel.com>
> Signed-off-by: Michal Kubiak <michal.kubiak at intel.com>
> 
> ---
> 
> v1 -> v2:
> 	- reordered members of 'idpf_q_vector' to optimize the structure
> 	  layout in terms of cachelines,
> 	- added kdocs for new structure members,
> 	- added description of the example problem fixed by the patch,
> 	- fixed a typo in the commit message ("writeback" -> "write
> 	  back").
> ---
>  drivers/net/ethernet/intel/idpf/idpf_dev.c    |  2 ++
>  .../ethernet/intel/idpf/idpf_singleq_txrx.c   |  6 ++++-
>  drivers/net/ethernet/intel/idpf/idpf_txrx.c   |  7 ++++-
>  drivers/net/ethernet/intel/idpf/idpf_txrx.h   | 26 +++++++++++++++++++
>  drivers/net/ethernet/intel/idpf/idpf_vf_dev.c |  2 ++
>  5 files changed, 41 insertions(+), 2 deletions(-)

During testing, when sending multiprotocol (udp/tcp/sctp) ipv4/6 traffic using  
16+ netperf threads we are seeing tx timeouts with this patch after about
20m to 1h. The queues that hang appear to be random. 

Scott


More information about the Intel-wired-lan mailing list