• Yuval Mintz's avatar
    bnx2x: Create workqueue for IOV related tasks · 370d4a26
    Yuval Mintz authored
    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: default avatarYuval Mintz <Yuval.Mintz@qlogic.com>
    Signed-off-by: default avatarAriel Elior <Ariel.Elior@qlogic.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    370d4a26
bnx2x.h 77.2 KB