• Amit Cohen's avatar
    mlxsw: pci: Poll command interface for each cmd_exec() · d4b3930b
    Amit Cohen authored
    
    
    Command interface is used for configuring and querying FW when EMADs are
    not available. During the time that the driver sets up the asynchronous
    queues, it polls the command interface for getting completions. Then,
    there is a short period when asynchronous queues work, but EMADs are not
    available (marked in the code as nopoll = true). During this time, we
    send commands via command interface, but we do not poll it, as we can get
    an interrupt for the completion. Completions of command interface are
    received from HW in EQ0 (event queue 0).
    
    The usage of EQ0 instead of polling is done only 4 times during
    initialization and one time during tear down, but it makes an overhead
    during lifetime of the driver. For each interrupt, we have to check if
    we get events in EQ0 or EQ1 and handle them. This is really ineffective,
    especially because of the fact that EQ0 is used only as part of driver
    init/fini.
    
    Instead, we can poll command interface for each call of cmd_exec(). It
    means that when we send a command via command interface (as EMADs are
    not available), we will poll it, regardless of availability of the
    asynchronous queues. This will allow us to configure later only EQ1 and
    simplify the flow.
    
    Remove 'nopoll' indication and change mlxsw_pci_cmd_exec() to poll till
    answer/timeout regardless of queues' state. For now, completions are
    handled also by EQ0, but it will be removed in next patch. Additional
    cleanups will be added in next patches.
    Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
    Reviewed-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Link: https://lore.kernel.org/r/e674c70380ceda953e0e45a77334c5d22e69938f.1712062203.git.petrm@nvidia.com
    
    Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    d4b3930b
pci.c 58.9 KB