ipq40xx: ipqess: enable threaded NAPI
authorRobert Marko <robert.marko@sartura.hr>
Mon, 27 Jun 2022 12:40:43 +0000 (14:40 +0200)
committerDavid Bauer <mail@david-bauer.net>
Sun, 2 Oct 2022 21:04:39 +0000 (23:04 +0200)
Enable threaded NAPI by default in IPQESS driver as it significantly
improves network perfromance, in my testing about 100+ Mbps in WAN-LAN
routing.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/ipqess/ipqess.c

index 7b83950a21b3d3c544352b1928027f6d53aa77af..ee33bb01667f55f10c17a7cf4caa99a7462a013b 100644 (file)
@@ -542,10 +542,10 @@ static irqreturn_t ipqess_interrupt_tx(int irq, void *priv)
        struct ipqess_tx_ring *tx_ring = (struct ipqess_tx_ring *) priv;
 
        if (likely(napi_schedule_prep(&tx_ring->napi_tx))) {
-               __napi_schedule(&tx_ring->napi_tx);
                ipqess_w32(tx_ring->ess,
                         IPQESS_REG_TX_INT_MASK_Q(tx_ring->idx),
                         0x0);
+               __napi_schedule(&tx_ring->napi_tx);
        }
 
        return IRQ_HANDLED;
@@ -556,10 +556,10 @@ static irqreturn_t ipqess_interrupt_rx(int irq, void *priv)
        struct ipqess_rx_ring *rx_ring = (struct ipqess_rx_ring *) priv;
 
        if (likely(napi_schedule_prep(&rx_ring->napi_rx))) {
-               __napi_schedule(&rx_ring->napi_rx);
                ipqess_w32(rx_ring->ess,
                         IPQESS_REG_RX_INT_MASK_Q(rx_ring->idx),
                         0x0);
+               __napi_schedule(&rx_ring->napi_rx);
        }
 
        return IRQ_HANDLED;
@@ -1269,6 +1269,8 @@ static int ipqess_axi_probe(struct platform_device *pdev)
        if (err)
                goto err_out;
 
+       dev_set_threaded(netdev, true);
+
        for (i = 0; i < IPQESS_NETDEV_QUEUES; i++) {
                int qid;