• Jianxin Xiong's avatar
    IB/rdmavt: Handle local operations in post send · d9f87239
    Jianxin Xiong authored
    Some work requests are local operations, such as IB_WR_REG_MR and
    IB_WR_LOCAL_INV. They differ from non-local operations in that:
    
    (1) Local operations can be processed immediately without being posted
    to the send queue if neither fencing nor completion generation is needed.
    However, to ensure correct ordering, once a local operation is posted to
    the work queue due to fencing or completion requiement, all subsequent
    local operations must also be posted to the work queue until all the
    local operations on the work queue have completed.
    
    (2) Local operations don't send packets over the wire and thus don't
    need (and shouldn't update) the packet sequence numbers.
    
    Define a new a flag bit for the post send table to identify local
    operations.
    
    Add a new field to the QP structure to track the number of local
    operations on the send queue to determine if direct processing of new
    local operations should be enabled/disabled.
    Reviewed-by: default avatarMike Marciniszyn <mike.marciniszyn@intel.com>
    Reviewed-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: default avatarJianxin Xiong <jianxin.xiong@intel.com>
    Signed-off-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
    Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
    d9f87239
qp.c 45.3 KB