]> www.infradead.org Git - users/jedix/linux-maple.git/commit
be2net: fix a possible events_get() race on BE2
authorSathya Perla <sathya.perla@emulex.com>
Fri, 7 Dec 2012 14:02:41 +0000 (09:02 -0500)
committerMaxim Uvarov <maxim.uvarov@oracle.com>
Mon, 17 Dec 2012 08:42:42 +0000 (00:42 -0800)
commit3c37f170b70476f42301b02bf699d82e28052a1a
tree4d58b558d139126b0cb7e5be542e5ffc8d0c1592
parentb479f4863564d26c1e94e77f50a5dbd14f50383a
be2net: fix a possible events_get() race on BE2

On BE2 chip, an interrupt being raised even when EQ is in un-armed state has
been observed a few times.  This is not expected and has never been
observed on BE3/Lancer chips.

As a consequence, be_msix()::events_get() and be_poll()::events_get()
can race and notify an EQ wrongly causing a CEV UE. The other possible
side-effect would be traffic stalling because after notifying EQ,
napi_schedule() is ignored as NAPI is already running.

This patch fixes this issue by counting events only in be_poll().

Signed-off-by: Sathya Perla <sathya.perla@emulex.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/benet/be_main.c