• Amit Cohen's avatar
    mlxsw: pci: Use only one event queue · 6fc280a3
    Amit Cohen authored
    The device supports two event queues. EQ0 is used for command interface
    completion events. EQ1 is used for completion events of RDQ or SDQ.
    
    Currently, for each EQE (event queue element), we check the queue number
    and handle accordingly. More than that, for each interrupt we schedule
    tasklets for both EQs. This is really ineffective, especially because of
    the fact that EQ0 is used only as part of driver init/fini, when EMADs are
    not available. There is no point to schedule the tasklet for it and check
    each EQE.
    
    A previous patch changed the code to poll command interface for each use of
    it. It means that now there is no real reason to use EQ0, as we poll the
    command interface.
    
    Initialize only one event queue and use it as EQ1 (this is determined by
    queue number). Then, for each interrupt we can schedule the tasklet only
    for one queue and we do not have to check the queue number. This
    simplifies the code and should improve performance. Note that polling
    command interface is ok as we use it only as part of driver init/fini.
    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/23d764f5c032e4c363b98590b746a4b32d2bf900.1712062203.git.petrm@nvidia.comSigned-off-by: default avatarJakub Kicinski <kuba@kernel.org>
    6fc280a3
pci_hw.h 12.8 KB