gve: Remove the code of clearing PBA bit
authorZiwei Xiao <ziweixiao@google.com>
Tue, 9 May 2023 22:51:23 +0000 (15:51 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 10 May 2023 09:30:46 +0000 (10:30 +0100)
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>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/google/gve/gve_main.c

index 57ce743..caa00c7 100644 (file)
@@ -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);