ramips: use napi_alloc_frag and skb_free_frag
authorFelix Fietkau <nbd@nbd.name>
Tue, 5 Dec 2017 15:40:42 +0000 (16:40 +0100)
committerFelix Fietkau <nbd@nbd.name>
Mon, 5 Feb 2018 09:16:26 +0000 (10:16 +0100)
Slightly improves rx performance

Signed-off-by: Felix Fietkau <nbd@nbd.name>
target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mtk_eth_soc.c

index f2c1109..79ec17e 100644 (file)
@@ -216,7 +216,7 @@ static void fe_clean_rx(struct fe_priv *priv)
                                                         ring->rx_dma[i].rxd1,
                                                         ring->rx_buf_size,
                                                         DMA_FROM_DEVICE);
-                               put_page(virt_to_head_page(ring->rx_data[i]));
+                               skb_free_frag(ring->rx_data[i]);
                        }
 
                kfree(ring->rx_data);
@@ -834,7 +834,7 @@ static int fe_poll_rx(struct napi_struct *napi, int budget,
                        break;
 
                /* alloc new buffer */
-               new_data = netdev_alloc_frag(ring->frag_size);
+               new_data = napi_alloc_frag(ring->frag_size);
                if (unlikely(!new_data)) {
                        stats->rx_dropped++;
                        goto release_desc;
@@ -844,14 +844,14 @@ static int fe_poll_rx(struct napi_struct *napi, int budget,
                                          ring->rx_buf_size,
                                          DMA_FROM_DEVICE);
                if (unlikely(dma_mapping_error(&netdev->dev, dma_addr))) {
-                       put_page(virt_to_head_page(new_data));
+                       skb_free_frag(new_data);
                        goto release_desc;
                }
 
                /* receive data */
                skb = build_skb(data, ring->frag_size);
                if (unlikely(!skb)) {
-                       put_page(virt_to_head_page(new_data));
+                       skb_free_frag(new_data);
                        goto release_desc;
                }
                skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN);