2
0

704-net-qualcomm-ipqess-enable-threaded-NAPI-by-default.patch 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. From 9fa4a57a65e270e4d579cace4de5c438f46c7d12 Mon Sep 17 00:00:00 2001
  2. From: Robert Marko <[email protected]>
  3. Date: Tue, 15 Aug 2023 14:38:44 +0200
  4. Subject: [PATCH] net: qualcomm: ipqess: enable threaded NAPI by default
  5. Threaded NAPI provides a nice performance boost, so lets enable it by
  6. default.
  7. We do however need to move the __napi_schedule() after HW IRQ has been
  8. cleared in order to avoid concurency issues.
  9. Signed-off-by: Robert Marko <[email protected]>
  10. ---
  11. drivers/net/ethernet/qualcomm/ipqess/ipqess.c | 6 ++++--
  12. 1 file changed, 4 insertions(+), 2 deletions(-)
  13. --- a/drivers/net/ethernet/qualcomm/ipqess/ipqess.c
  14. +++ b/drivers/net/ethernet/qualcomm/ipqess/ipqess.c
  15. @@ -530,9 +530,9 @@ static irqreturn_t ipqess_interrupt_tx(i
  16. struct ipqess_tx_ring *tx_ring = (struct ipqess_tx_ring *)priv;
  17. if (likely(napi_schedule_prep(&tx_ring->napi_tx))) {
  18. - __napi_schedule(&tx_ring->napi_tx);
  19. ipqess_w32(tx_ring->ess, IPQESS_REG_TX_INT_MASK_Q(tx_ring->idx),
  20. 0x0);
  21. + __napi_schedule(&tx_ring->napi_tx);
  22. }
  23. return IRQ_HANDLED;
  24. @@ -543,9 +543,9 @@ static irqreturn_t ipqess_interrupt_rx(i
  25. struct ipqess_rx_ring *rx_ring = (struct ipqess_rx_ring *)priv;
  26. if (likely(napi_schedule_prep(&rx_ring->napi_rx))) {
  27. - __napi_schedule(&rx_ring->napi_rx);
  28. ipqess_w32(rx_ring->ess, IPQESS_REG_RX_INT_MASK_Q(rx_ring->idx),
  29. 0x0);
  30. + __napi_schedule(&rx_ring->napi_rx);
  31. }
  32. return IRQ_HANDLED;
  33. @@ -1261,6 +1261,8 @@ static int ipqess_axi_probe(struct platf
  34. if (err)
  35. goto err_notifier_unregister;
  36. + dev_set_threaded(netdev, true);
  37. +
  38. return 0;
  39. err_notifier_unregister: