sfc: Leave interrupts and event queues enabled whenever we can
authorBen Hutchings <bhutchings@solarflare.com>
Wed, 8 Feb 2012 00:11:20 +0000 (00:11 +0000)
committerBen Hutchings <bhutchings@solarflare.com>
Thu, 16 Feb 2012 00:24:46 +0000 (00:24 +0000)
commit9f2cb71c2b0ce33c472856c0feec2883fa0d9cd1
treee60e2fc6a18ec5cfaf079e9855246a9282742667
parent2ae75dac301b0f255f79cd84ac70c619e55d7694
sfc: Leave interrupts and event queues enabled whenever we can

When SR-IOV is enabled we may receive FLR (Function-Level Reset)
events, associated queue flush events and requests from VF drivers at
any time.  Therefore we need to keep event queues and interrupts
enabled whenever possible.

Currently we stop interrupt-driven event processing before flushing RX
and TX queues; efx_nic_flush_queues() then polls event queues for
flush events and discards any others it finds.  Change it to work with
the regular event handling functions.

Currently efx_start_channel() fills RX queues synchronously when a
device is brought up.  This could now race with NAPI, so change it to
send fill events.

This was almost entirely written by Steve Hodgson, formerly
shodgson@solarflare.com.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
drivers/net/ethernet/sfc/efx.c
drivers/net/ethernet/sfc/net_driver.h
drivers/net/ethernet/sfc/nic.c
drivers/net/ethernet/sfc/rx.c