blob: 575dcb9ad8fed72c7f411b19b52dce2c2070a1e9 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001From c4a207865e7ea310dc146ff4aa1b0aa0c78d3fe1 Mon Sep 17 00:00:00 2001
2From: Sieng Piaw Liew <liew.s.piaw@gmail.com>
3Date: Wed, 6 Jan 2021 22:42:05 +0800
4Subject: [PATCH 4/7] bcm63xx_enet: alloc rx skb with NET_IP_ALIGN
5
6Use netdev_alloc_skb_ip_align on newer SoCs with integrated switch
7(enetsw) when refilling RX. Increases packet processing performance
8by 30% (with netif_receive_skb_list).
9
10Non-enetsw SoCs cannot function with the extra pad so continue to use
11the regular netdev_alloc_skb.
12
13Tested on BCM6328 320 MHz and iperf3 -M 512 to measure packet/sec
14performance.
15
16Before:
17[ ID] Interval Transfer Bandwidth Retr
18[ 4] 0.00-30.00 sec 120 MBytes 33.7 Mbits/sec 277 sender
19[ 4] 0.00-30.00 sec 120 MBytes 33.5 Mbits/sec receiver
20
21After (+netif_receive_skb_list):
22[ 4] 0.00-30.00 sec 155 MBytes 43.3 Mbits/sec 354 sender
23[ 4] 0.00-30.00 sec 154 MBytes 43.1 Mbits/sec receiver
24
25Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com>
26Acked-by: Florian Fainelli <f.fainelli@gmail.com>
27Signed-off-by: Jakub Kicinski <kuba@kernel.org>
28---
29 drivers/net/ethernet/broadcom/bcm63xx_enet.c | 5 ++++-
30 1 file changed, 4 insertions(+), 1 deletion(-)
31
32--- a/drivers/net/ethernet/broadcom/bcm63xx_enet.c
33+++ b/drivers/net/ethernet/broadcom/bcm63xx_enet.c
34@@ -238,7 +238,10 @@ static int bcm_enet_refill_rx(struct net
35 desc = &priv->rx_desc_cpu[desc_idx];
36
37 if (!priv->rx_skb[desc_idx]) {
38- skb = netdev_alloc_skb(dev, priv->rx_skb_size);
39+ if (priv->enet_is_sw)
40+ skb = netdev_alloc_skb_ip_align(dev, priv->rx_skb_size);
41+ else
42+ skb = netdev_alloc_skb(dev, priv->rx_skb_size);
43 if (!skb)
44 break;
45 priv->rx_skb[desc_idx] = skb;