linux/drivers/net/ethernet/cisco/enic
Govindarajulu Varadarajan f586a33601 enic: use atomic_t instead of spin_lock in busy poll
We use spinlock to access a single flag. We can avoid spin_locks by using
atomic variable and atomic_cmpxchg(). Use atomic_cmpxchg to set the flag
for idle to poll. And a simple atomic_set to unlock (set idle from poll).

In napi poll, if gro is enabled, we call napi_gro_receive() to deliver the
packets. Before we call napi_complete(), i.e while re-polling, if low
latency busy poll is called, we use netif_receive_skb() to deliver the packets.
At this point if there are some skb's held in GRO, busy poll could deliver the
packets out of order. So we call napi_gro_flush() to flush skbs before we
move the napi poll to idle.

Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-06-25 05:23:01 -07:00
..
Kconfig
Makefile
cq_desc.h
cq_enet_desc.h
enic.h
enic_api.c
enic_api.h
enic_clsf.c net: Add full IPv6 addresses to flow_keys 2015-06-04 15:44:30 -07:00
enic_clsf.h
enic_dev.c
enic_dev.h
enic_ethtool.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2015-06-13 23:56:52 -07:00
enic_main.c enic: use atomic_t instead of spin_lock in busy poll 2015-06-25 05:23:01 -07:00
enic_pp.c
enic_pp.h
enic_res.c
enic_res.h
rq_enet_desc.h
vnic_cq.c
vnic_cq.h
vnic_dev.c
vnic_dev.h
vnic_devcmd.h
vnic_enet.h
vnic_intr.c
vnic_intr.h
vnic_nic.h
vnic_resource.h
vnic_rq.c enic: fix memory leak in rq_clean 2015-06-10 23:42:39 -07:00
vnic_rq.h enic: use atomic_t instead of spin_lock in busy poll 2015-06-25 05:23:01 -07:00
vnic_rss.h
vnic_stats.h
vnic_vic.c
vnic_vic.h
vnic_wq.c
vnic_wq.h
wq_enet_desc.h