0007-nss-dp-edma-v1-use-NAPI-GRO-by-default.patch 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. From c2df713569fe3bb671d1444c7bf758681081053c Mon Sep 17 00:00:00 2001
  2. From: Robert Marko <[email protected]>
  3. Date: Thu, 23 Jun 2022 14:18:50 +0200
  4. Subject: [PATCH 7/8] nss-dp: edma-v1: use NAPI GRO by default
  5. Utilize napi_gro_receive instead of plain netif_receive_skb on EDMA v1.
  6. Usually it provides quite a lot of RX speed improvements, however in some
  7. cases it may lead to decreased performance as there is no checksum
  8. offloading implemented.
  9. In cases where reduced performance is experienced its possible to disable
  10. GRO by using ethtool.
  11. Signed-off-by: Robert Marko <[email protected]>
  12. ---
  13. hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c | 10 ++++++----
  14. hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c | 8 ++++++--
  15. 2 files changed, 12 insertions(+), 6 deletions(-)
  16. --- a/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
  17. +++ b/hal/dp_ops/edma_dp/edma_v1/edma_data_plane.c
  18. @@ -597,10 +597,12 @@ drop:
  19. */
  20. static void edma_if_set_features(struct nss_dp_data_plane_ctx *dpc)
  21. {
  22. - /*
  23. - * TODO - add flags to support HIGHMEM/cksum offload VLAN
  24. - * the features are enabled.
  25. - */
  26. + struct net_device *netdev = dpc->dev;
  27. +
  28. + netdev->features |= NETIF_F_GRO;
  29. + netdev->hw_features |= NETIF_F_GRO;
  30. + netdev->vlan_features |= NETIF_F_GRO;
  31. + netdev->wanted_features |= NETIF_F_GRO;
  32. }
  33. /* TODO - check if this is needed */
  34. --- a/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
  35. +++ b/hal/dp_ops/edma_dp/edma_v1/edma_tx_rx.c
  36. @@ -410,8 +410,12 @@ static uint32_t edma_clean_rx(struct edm
  37. if (unlikely(EDMA_RXPH_SERVICE_CODE_GET(rxph) ==
  38. NSS_PTP_EVENT_SERVICE_CODE))
  39. nss_phy_tstamp_rx_buf(ndev, skb);
  40. - else
  41. - netif_receive_skb(skb);
  42. + else {
  43. + if (likely(ndev->features & NETIF_F_GRO))
  44. + napi_gro_receive(&ehw->napi, skb);
  45. + else
  46. + netif_receive_skb(skb);
  47. + }
  48. next_rx_desc:
  49. /*