]> www.infradead.org Git - users/willy/pagecache.git/commitdiff
s390/qeth: move netif_napi_add_tx() and napi_enable() from under BH
authorAlexandra Winter <wintera@linux.ibm.com>
Wed, 12 Feb 2025 16:36:59 +0000 (17:36 +0100)
committerJakub Kicinski <kuba@kernel.org>
Thu, 13 Feb 2025 16:39:57 +0000 (08:39 -0800)
Like other drivers qeth is calling local_bh_enable() after napi_schedule()
to kick-start softirqs [0].
Since netif_napi_add_tx() and napi_enable() now take the netdev_lock()
mutex [1], move them out from under the BH protection. Same solution as in
commit a60558644e20 ("wifi: mt76: move napi_enable() from under BH")

Fixes: 1b23cdbd2bbc ("net: protect netdev->napi_list with netdev_lock()")
Link: https://lore.kernel.org/netdev/20240612181900.4d9d18d0@kernel.org/
Link: https://lore.kernel.org/netdev/20250115035319.559603-1-kuba@kernel.org/
Signed-off-by: Alexandra Winter <wintera@linux.ibm.com>
Acked-by: Joe Damato <jdamato@fastly.com>
Link: https://patch.msgid.link/20250212163659.2287292-1-wintera@linux.ibm.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/s390/net/qeth_core_main.c

index a3adaec5504e45384eeedf8f82ee160317fcbbf5..20328d695ef927811cf833ecaf9bdc28348c8a62 100644 (file)
@@ -7050,14 +7050,16 @@ int qeth_open(struct net_device *dev)
        card->data.state = CH_STATE_UP;
        netif_tx_start_all_queues(dev);
 
-       local_bh_disable();
        qeth_for_each_output_queue(card, queue, i) {
                netif_napi_add_tx(dev, &queue->napi, qeth_tx_poll);
                napi_enable(&queue->napi);
-               napi_schedule(&queue->napi);
        }
-
        napi_enable(&card->napi);
+
+       local_bh_disable();
+       qeth_for_each_output_queue(card, queue, i) {
+               napi_schedule(&queue->napi);
+       }
        napi_schedule(&card->napi);
        /* kick-start the NAPI softirq: */
        local_bh_enable();