Message ID | 20230509225123.11401-1-ziweixiao@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f4c2e67c1773d2a2632381ee30e9139c1e744c16 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net] gve: Remove the code of clearing PBA bit | expand |
On Tue, May 09, 2023 at 03:51:23PM -0700, Ziwei Xiao wrote: > Clearing the PBA bit from the driver is race prone and it may lead to > dropped interrupt events. This could potentially lead to the traffic > being completely halted. > > Fixes: 5e8c5adf95f8 ("gve: DQO: Add core netdev features") > Signed-off-by: Ziwei Xiao <ziweixiao@google.com> > Signed-off-by: Bailey Forrest <bcf@google.com> Reviewed-by: Simon Horman <simon.horman@corigine.com>
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Tue, 9 May 2023 15:51:23 -0700 you wrote: > Clearing the PBA bit from the driver is race prone and it may lead to > dropped interrupt events. This could potentially lead to the traffic > being completely halted. > > Fixes: 5e8c5adf95f8 ("gve: DQO: Add core netdev features") > Signed-off-by: Ziwei Xiao <ziweixiao@google.com> > Signed-off-by: Bailey Forrest <bcf@google.com> > > [...] Here is the summary with links: - [net] gve: Remove the code of clearing PBA bit https://git.kernel.org/netdev/net/c/f4c2e67c1773 You are awesome, thank you!
diff --git a/drivers/net/ethernet/google/gve/gve_main.c b/drivers/net/ethernet/google/gve/gve_main.c index 57ce74315eba..caa00c72aeeb 100644 --- a/drivers/net/ethernet/google/gve/gve_main.c +++ b/drivers/net/ethernet/google/gve/gve_main.c @@ -294,19 +294,6 @@ static int gve_napi_poll_dqo(struct napi_struct *napi, int budget) bool reschedule = false; int work_done = 0; - /* Clear PCI MSI-X Pending Bit Array (PBA) - * - * This bit is set if an interrupt event occurs while the vector is - * masked. If this bit is set and we reenable the interrupt, it will - * fire again. Since we're just about to poll the queue state, we don't - * need it to fire again. - * - * Under high softirq load, it's possible that the interrupt condition - * is triggered twice before we got the chance to process it. - */ - gve_write_irq_doorbell_dqo(priv, block, - GVE_ITR_NO_UPDATE_DQO | GVE_ITR_CLEAR_PBA_BIT_DQO); - if (block->tx) reschedule |= gve_tx_poll_dqo(block, /*do_clean=*/true);