linux/drivers/net/ethernet/cavium/thunder
Sunil Goutham 773225388d net: thunderx: Optimize page recycling for XDP
Driver follows a method of taking one extra reference on the
page for recycling which is fine in usual packet path where
each 64KB page is segmented into multiple receive buffers.

But in XDP mode since there is just one receive buffer per
page taking extra page reference itself becomes big bottleneck
consuming ~50% of CPU cycles due to atomic operations.

This patch adds a internal ref count in pgcache for each
page and additional page references are taken in a batch
instead of just one at a time. Internal i.e 'pgcache->ref_count'
and page's i.e 'page->_refcount' counters are compared to check
page's recyclability.

Signed-off-by: Sunil Goutham <sgoutham@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2017-05-02 15:41:22 -04:00
..
Makefile net: thunderx: Add RGMII interface type support 2016-08-13 11:59:31 -07:00
nic.h net: thunderx: Add basic XDP support 2017-05-02 15:41:21 -04:00
nic_main.c net: thunderx: Switch to pci_alloc_irq_vectors 2017-04-11 11:16:03 -04:00
nic_reg.h net: thunderx: Program LMAC credits based on MTU 2016-11-16 13:28:33 -05:00
nicvf_ethtool.c net: thunderx: Add basic XDP support 2017-05-02 15:41:21 -04:00
nicvf_main.c net: thunderx: Support for XDP header adjustment 2017-05-02 15:41:22 -04:00
nicvf_queues.c net: thunderx: Optimize page recycling for XDP 2017-05-02 15:41:22 -04:00
nicvf_queues.h net: thunderx: Optimize page recycling for XDP 2017-05-02 15:41:22 -04:00
q_struct.h net: thunderx: Optimize RBDR descriptor handling 2017-05-02 15:41:20 -04:00
thunder_bgx.c net: thunderx: Fix set_max_bgx_per_node for 81xx rgx 2017-04-17 13:03:48 -04:00
thunder_bgx.h net: thunderx: Fix set_max_bgx_per_node for 81xx rgx 2017-04-17 13:03:48 -04:00
thunder_xcv.c net: thunderx: avoid dereferencing xcv when NULL 2017-01-31 13:07:40 -05:00