Author: nbd Date: 2016-01-31 13:35:20 +0100 (Sun, 31 Jan 2016) New Revision: 48580
Modified: trunk/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c Log: cns3xxx: improve ethernet performance by using the page fragment allocation API Signed-off-by: Felix Fietkau <[email protected]> Modified: trunk/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c =================================================================== --- trunk/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c 2016-01-31 12:35:07 UTC (rev 48579) +++ trunk/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c 2016-01-31 12:35:20 UTC (rev 48580) @@ -518,14 +518,14 @@ unsigned int phys; for (received += rx_ring->alloc_count; received > 0; received--) { - buf = kmalloc(RX_SEGMENT_ALLOC_SIZE, GFP_ATOMIC); + buf = napi_alloc_frag(RX_SEGMENT_ALLOC_SIZE); if (!buf) break; phys = dma_map_single(sw->dev, buf + SKB_HEAD_ALIGN, RX_SEGMENT_MRU, DMA_FROM_DEVICE); if (dma_mapping_error(sw->dev, phys)) { - kfree(buf); + skb_free_frag(buf); break; } @@ -636,7 +636,7 @@ dma_unmap_single(sw->dev, rx_ring->phys_tab[i], RX_SEGMENT_MRU, DMA_FROM_DEVICE); - skb = build_skb(rx_ring->buff_tab[i], 0); + skb = build_skb(rx_ring->buff_tab[i], RX_SEGMENT_ALLOC_SIZE); if (!skb) break; @@ -907,7 +907,7 @@ struct rx_desc *desc = &(rx_ring)->desc[i]; void *buf; - buf = kzalloc(RX_SEGMENT_ALLOC_SIZE, GFP_KERNEL); + buf = netdev_alloc_frag(RX_SEGMENT_ALLOC_SIZE); if (!buf) return -ENOMEM; @@ -957,14 +957,14 @@ for (i = 0; i < RX_DESCS; i++) { struct _rx_ring *rx_ring = &sw->rx_ring; struct rx_desc *desc = &(rx_ring)->desc[i]; - struct sk_buff *skb = sw->rx_ring.buff_tab[i]; + void *buf = sw->rx_ring.buff_tab[i]; - if (!skb) + if (!buf) continue; dma_unmap_single(sw->dev, desc->sdp, RX_SEGMENT_MRU, DMA_FROM_DEVICE); - dev_kfree_skb(skb); + skb_free_frag(buf); } for (i = 0; i < TX_DESCS; i++) { _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
