| From c4a207865e7ea310dc146ff4aa1b0aa0c78d3fe1 Mon Sep 17 00:00:00 2001 |
| From: Sieng Piaw Liew <liew.s.piaw@gmail.com> |
| Date: Wed, 6 Jan 2021 22:42:05 +0800 |
| Subject: [PATCH 4/7] bcm63xx_enet: alloc rx skb with NET_IP_ALIGN |
| |
| Use netdev_alloc_skb_ip_align on newer SoCs with integrated switch |
| (enetsw) when refilling RX. Increases packet processing performance |
| by 30% (with netif_receive_skb_list). |
| |
| Non-enetsw SoCs cannot function with the extra pad so continue to use |
| the regular netdev_alloc_skb. |
| |
| Tested on BCM6328 320 MHz and iperf3 -M 512 to measure packet/sec |
| performance. |
| |
| Before: |
| [ ID] Interval Transfer Bandwidth Retr |
| [ 4] 0.00-30.00 sec 120 MBytes 33.7 Mbits/sec 277 sender |
| [ 4] 0.00-30.00 sec 120 MBytes 33.5 Mbits/sec receiver |
| |
| After (+netif_receive_skb_list): |
| [ 4] 0.00-30.00 sec 155 MBytes 43.3 Mbits/sec 354 sender |
| [ 4] 0.00-30.00 sec 154 MBytes 43.1 Mbits/sec receiver |
| |
| Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com> |
| Acked-by: Florian Fainelli <f.fainelli@gmail.com> |
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |
| --- |
| drivers/net/ethernet/broadcom/bcm63xx_enet.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c |
| +++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c |
| @@ -238,7 +238,10 @@ static int bcm_enet_refill_rx(struct net |
| desc = &priv->rx_desc_cpu[desc_idx]; |
| |
| if (!priv->rx_skb[desc_idx]) { |
| - skb = netdev_alloc_skb(dev, priv->rx_skb_size); |
| + if (priv->enet_is_sw) |
| + skb = netdev_alloc_skb_ip_align(dev, priv->rx_skb_size); |
| + else |
| + skb = netdev_alloc_skb(dev, priv->rx_skb_size); |
| if (!skb) |
| break; |
| priv->rx_skb[desc_idx] = skb; |