• Gal Pressman's avatar
    RDMA/efa: CQ notifications · 2a152512
    Gal Pressman authored
    This patch adds support for CQ notifications through the standard verbs
    api.
    
    In order to achieve that, a new event queue (EQ) object is introduced,
    which is in charge of reporting completion events to the driver.  On
    driver load, EQs are allocated and their affinity is set to a single
    cpu. When a user app creates a CQ with a completion channel, the
    completion vector number is converted to a EQ number, which is in charge
    of reporting the CQ events.
    
    In addition, the CQ creation admin command now returns an offset for the
    CQ doorbell, which is mapped to the userspace provider and is used to arm
    the CQ when requested by the user.
    
    The EQs use a single doorbell (located on the registers BAR), which
    encodes the EQ number and arm as part of the doorbell value.  The EQs are
    polled by the driver on each new EQE, and arm it when the poll is
    completed.
    
    Link: https://lore.kernel.org/r/20211003105605.29222-1-galpress@amazon.comReviewed-by: default avatarFiras JahJah <firasj@amazon.com>
    Reviewed-by: default avatarYossi Leybovich <sleybo@amazon.com>
    Signed-off-by: default avatarGal Pressman <galpress@amazon.com>
    Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
    2a152512
efa_admin_defs.h 3.58 KB