From d3ea5fc9f33e0951e36a6443a803b916a94d3b4f Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 5 Dec 2017 16:40:42 +0100 Subject: [PATCH] ramips: use napi_alloc_frag and skb_free_frag Slightly improves rx performance Signed-off-by: Felix Fietkau --- .../files-4.9/drivers/net/ethernet/mtk/mtk_eth_soc.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mtk_eth_soc.c b/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mtk_eth_soc.c index f2c11097f4..79ec17e3ff 100644 --- a/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mtk_eth_soc.c +++ b/target/linux/ramips/files-4.9/drivers/net/ethernet/mtk/mtk_eth_soc.c @@ -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); -- 2.30.2