bmips: switch to napi_build_skb() to reuse skbuff_heads
authorSieng Piaw Liew <liew.s.piaw@gmail.com>
Thu, 23 Jun 2022 04:49:28 +0000 (12:49 +0800)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Sat, 4 Mar 2023 18:28:16 +0000 (19:28 +0100)
napi_build_skb() reuses NAPI skbuff_head cache in order to save some
cycles on freeing/allocating skbuff_heads on every new rx or completed
tx.
Use napi_consume_skb() to feed the cache with skbuff_heads of completed
tx so it's never empty.

Signed-off-by: Sieng Piaw Liew <liew.s.piaw@gmail.com>
target/linux/bmips/files/drivers/net/ethernet/broadcom/bcm6368-enetsw.c

index 854bcc0a8c85b8c3a38a434dcc14335e56daa45a..962f9ac887d1139f8e09ffebb8b8953212a08e56 100644 (file)
@@ -407,7 +407,7 @@ static int bcm6368_enetsw_receive_queue(struct net_device *dev, int budget)
                        frag_size = priv->rx_frag_size;
                }
 
-               skb = build_skb(buf, frag_size);
+               skb = napi_build_skb(buf, frag_size);
                if (unlikely(!skb)) {
                        skb_free_frag(buf);
                        dev->stats.rx_dropped++;
@@ -475,7 +475,7 @@ static int bcm6368_enetsw_tx_reclaim(struct net_device *dev, int force)
                if (desc->len_stat & DMADESC_UNDER_MASK)
                        dev->stats.tx_errors++;
 
-               dev_kfree_skb(skb);
+               napi_consume_skb(skb, !force);
                released++;
        }