[openwrt/openwrt] ipq40xx: ipqess: enable threaded NAPI

LEDE Commits lede-commits at lists.infradead.org
Sun Oct 2 14:05:54 PDT 2022


blocktrron pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/132545785bbbe50c4403640153b686c3b75b63a8

commit 132545785bbbe50c4403640153b686c3b75b63a8
Author: Robert Marko <robert.marko at sartura.hr>
AuthorDate: Mon Jun 27 14:40:43 2022 +0200

    ipq40xx: ipqess: enable threaded NAPI
    
    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 at sartura.hr>
---
 .../ipq40xx/files/drivers/net/ethernet/qualcomm/ipqess/ipqess.c     | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/ipqess/ipqess.c b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/ipqess/ipqess.c
index 7b83950a21..ee33bb0166 100644
--- a/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/ipqess/ipqess.c
+++ b/target/linux/ipq40xx/files/drivers/net/ethernet/qualcomm/ipqess/ipqess.c
@@ -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;
 




More information about the lede-commits mailing list