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>
This commit is contained in:
parent
375281d3a6
commit
c4a207865e
@ -237,6 +237,9 @@ static int bcm_enet_refill_rx(struct net_device *dev)
|
||||
desc = &priv->rx_desc_cpu[desc_idx];
|
||||
|
||||
if (!priv->rx_skb[desc_idx]) {
|
||||
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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user