enic: fix issues in enic_poll
authorGovindarajulu Varadarajan <_govind@gmx.com>
Wed, 1 Jul 2015 08:51:57 +0000 (14:21 +0530)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Jul 2015 19:10:20 +0000 (12:10 -0700)
commit25c14ef86a0d5ec9320e833685c15bc96f504864
tree7ffd199a89cf4613f7af1d6a114e5f8833a7d640
parenta611fb75d0517fce65f588cde94f80bb4052c6b2
enic: fix issues in enic_poll

In enic_poll, we clean tx and rx queues, when low latency busy socket polling
is happening, enic_poll will only clean tx queue. After cleaning tx, it should
return total budget for re-poll.

There is a small window between vnic_intr_unmask() and enic_poll_unlock_napi().
In this window if an irq occurs and napi is scheduled on different cpu, it tries
to acquire enic_poll_lock_napi() and fails. Unlock napi_poll before unmasking
the interrupt.

v2:
Do not change tx wonk done behaviour. Consider only rx work done for completing
napi.

Signed-off-by: Govindarajulu Varadarajan <_govind@gmx.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/cisco/enic/enic_main.c