linux/drivers/net/ethernet/broadcom/bnx2x
Yuval Mintz 370d4a2659 bnx2x: Create workqueue for IOV related tasks
The bnx2x sriov mechanisms were done in the bnx2x slowpath workitem which
runs on the bnx2x's workqueue; This workitem is also responsible for the bottom
half of interrupt handling in the driver, and specifically it also receives
FW notifications of ramrod completions, allowing other flows to progress.

The original design of the sriov reltaed-flows was based on the notion such
flows must not sleep, since their context is the slowpath workitem.
Otherwise, we might reach timeouts - those flows may wait for ramrod completion
that will never arrive as the workitem wlll not be re-scheduled until that same
flow will be over.

In more recent time bnx2x started supporting features in which the VF interface
can be configured by the tools accessing the PF on the hypervisor.
This support created possible races on the VF-PF lock (which is taken either
when the PF is handling a VF message or when the PF is doing some slowpath work
on behalf of the VF) which may cause timeouts on the VF side and lags on the PF
side.

This patch changes the scheme - it creates a new workqueue for sriov related
tasks and moves all handling currently done in the slowpath task into the the
new workqueue.

Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com>
Signed-off-by: Ariel Elior <Ariel.Elior@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2014-03-25 21:07:03 -04:00
..
bnx2x_cmn.c bnx2x: Support mng. request for driver version 2014-03-25 21:07:03 -04:00
bnx2x_cmn.h bnx2x: Remove hidden flow control goto from BNX2X_ALLOC macros 2014-02-25 17:36:35 -05:00
bnx2x_dcb.c bnx2x: (semantic) revise scheduling of sp_rtnl 2014-02-12 19:15:42 -05:00
bnx2x_dcb.h bnx2x: Change DCB context handling 2013-08-20 00:21:47 -07:00
bnx2x_dump.h bnx2x: Revise comments and alignment 2013-06-02 21:36:47 -07:00
bnx2x_ethtool.c bnx2x: Fix generic option settings 2014-01-28 18:08:57 -08:00
bnx2x_fw_defs.h bnx2x: Remove unnecessary internal mem config 2014-02-12 19:15:41 -05:00
bnx2x_fw_file_hdr.h bnx2x: Introduce 2013 and advance version to 1.78.02 2013-01-15 15:07:59 -05:00
bnx2x_hsi.h bnx2x: Support mng. request for driver version 2014-03-25 21:07:03 -04:00
bnx2x_init_ops.h bnx2x: Remove many sparse warnings 2013-01-23 13:58:29 -05:00
bnx2x_init.h bnx2x: Don't pretend during register dump 2013-10-21 18:31:36 -04:00
bnx2x_link.c bnx2x: fix sparse warning 2014-01-15 15:06:47 -08:00
bnx2x_link.h bnx2x: namespace and dead code cleanups 2014-01-13 11:59:47 -08:00
bnx2x_main.c bnx2x: Create workqueue for IOV related tasks 2014-03-25 21:07:03 -04:00
bnx2x_mfw_req.h bnx2x: Introduce 2013 and advance version to 1.78.02 2013-01-15 15:07:59 -05:00
bnx2x_reg.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2014-01-06 17:37:45 -05:00
bnx2x_sp.c bnx2x: Revise IOV vlan/mac validation 2014-02-12 19:15:42 -05:00
bnx2x_sp.h bnx2x: Revise IOV vlan/mac validation 2014-02-12 19:15:42 -05:00
bnx2x_sriov.c bnx2x: Create workqueue for IOV related tasks 2014-03-25 21:07:03 -04:00
bnx2x_sriov.h bnx2x: Create workqueue for IOV related tasks 2014-03-25 21:07:03 -04:00
bnx2x_stats.c bnx2x: Lock DMAE when used by statistic flow 2013-10-21 18:31:35 -04:00
bnx2x_stats.h bnx2x: Fix VF stats sync 2013-08-27 22:03:04 -04:00
bnx2x_vfpf.c bnx2x: Create workqueue for IOV related tasks 2014-03-25 21:07:03 -04:00
bnx2x_vfpf.h bnx2x: Add support in PF driver for RSC 2014-02-12 19:15:41 -05:00
bnx2x.h bnx2x: Create workqueue for IOV related tasks 2014-03-25 21:07:03 -04:00
Makefile bnx2x: Segregate SR-IOV code 2013-01-07 19:49:14 -08:00