Re: [PATCH net-next 3/7] gve: Do lazy cleanup in TX path
From: Eric Dumazet <hidden>
Date: 2021-10-07 19:57:16
On 10/7/21 9:25 AM, Jeroen de Borst wrote:
quoted hunk ↗ jump to hunk
From: Tao Liu <redacted> When TX queue is full, attemt to process enough TX completions to avoid stalling the queue. Fixes: f5cedc84a30d2 ("gve: Add transmit and receive support") Signed-off-by: Tao Liu <redacted> Signed-off-by: Catherine Sullivan <redacted> --- drivers/net/ethernet/google/gve/gve.h | 9 +- drivers/net/ethernet/google/gve/gve_ethtool.c | 3 +- drivers/net/ethernet/google/gve/gve_main.c | 6 +- drivers/net/ethernet/google/gve/gve_tx.c | 94 +++++++++++-------- 4 files changed, 62 insertions(+), 50 deletions(-)diff --git a/drivers/net/ethernet/google/gve/gve.h b/drivers/net/ethernet/google/gve/gve.h index 59c525800e5d..003b30b91c6d 100644 --- a/drivers/net/ethernet/google/gve/gve.h +++ b/drivers/net/ethernet/google/gve/gve.h@@ -341,8 +341,8 @@ struct gve_tx_ring { union { /* GQI fields */ struct { - /* NIC tail pointer */ - __be32 last_nic_done; + /* Spinlock for when cleanup in progress */ + spinlock_t clean_lock; };
This is adding yet another spinlock in tx completion path. Normally, BQL should kick and you should not fill the queue completely. Something is not right. tx completion can take a lot of time, it seems odd to block an innocent thread in ndo_start_xmit(). Please provide more details in your changelog ?