ath79: ag71xx: reuse skbuff_head with napi skb api
authorSieng Piaw Liew <liew.s.piaw@gmail.com>
Wed, 15 Jun 2022 04:17:24 +0000 (12:17 +0800)
committerChristian Marangi <ansuelsmth@gmail.com>
Mon, 4 Jul 2022 15:14:39 +0000 (17:14 +0200)
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>
[ fixed commit title ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
target/linux/ath79/files/drivers/net/ethernet/atheros/ag71xx/ag71xx_main.c

index 2fc18d597940c92610ca9e99c1319151afcae13e..d6e8dd20c804ce6447cd3adda157d61ab7cbbfe2 100644 (file)
@@ -1278,7 +1278,7 @@ static int ag71xx_tx_packets(struct ag71xx *ag, bool flush)
                if (!skb)
                        continue;
 
-               dev_kfree_skb_any(skb);
+               napi_consume_skb(skb, !flush);
                ring->buf[i].skb = NULL;
 
                bytes_compl += ring->buf[i].len;
@@ -1352,7 +1352,11 @@ static int ag71xx_rx_packets(struct ag71xx *ag, int limit)
                dev->stats.rx_packets++;
                dev->stats.rx_bytes += pktlen;
 
+#if LINUX_VERSION_CODE < KERNEL_VERSION(5,12,0)
                skb = build_skb(ring->buf[i].rx_buf, ag71xx_buffer_size(ag));
+#else
+               skb = napi_build_skb(ring->buf[i].rx_buf, ag71xx_buffer_size(ag));
+#endif
                if (!skb) {
                        skb_free_frag(ring->buf[i].rx_buf);
                        goto next;