Sean,
  Enclosed is the specific modification to the ibv_sen_wr we are planning on 
submitting up stream.  This is intended to support XRC, but this also shows the 
modifications needed  to support several additional features (such as the DC 
transport and cross-channel synchronization), so these are added to put the 
proposed change in a better context.  The rdma and atomic data structures are 
replicated, as the UD and Cross-channel synchronization require both the 
transport type (UD) and a task.

Comments are welcome,
Rich



struct ibv_send_wr {
    uint64_t        wr_id;
    struct ibv_send_wr     *next;
    struct ibv_sge         *sg_list;
    int         num_sge;
    enum ibv_wr_opcode  opcode;
    int send_flags;
    uint32_t        imm_data;   /* in network byte order */
    union {
        struct {
            uint64_t    remote_addr;
            uint32_t    rkey;
        } rdma;
        struct {
            uint64_t    remote_addr;
            uint64_t    compare_add;
            uint64_t    swap;
            uint32_t    rkey;
        } atomic;
        struct {
            struct ibv_ah  *ah;
            uint32_t    remote_qpn;
            uint32_t    remote_qkey;
        } ud;
    } wr;
    union {
        struct {
                uint32_t    remote_srqn;
        } xrc;
        struct {
                struct ibv_ah  *ah;
                uint64_t remote dct_access_key;
                uint32_t  dct_number;
        }dc;
    } qp_type;
    /* CD stuff inline */
    union{
        struct {  
                        uint64_t               remote_addr;
                        uint32_t               rkey;
        } rdma;
        struct {
                        uint64_t               remote_addr;
                        uint64_t               compare_add;
                        uint64_t               swap;
                        uint32_t               rkey;
        } atomic;
        struct {
                        struct ibv_cq      *cq;
                        int32_t  cq_count;
        } cqe_wait;
        struct {
                        struct ibv_qp     *qp;
                        int32_t  wqe_count;
                        enum comm_type;
        } wqe_enable;
    } task;
    union{
        struct{
             enum verbs_core_direct_ops data_op;
             enum verbs_wr_calc_op     calc_op;
             enum verbs_wr_data_type               data_type;
        } calc;
    }op;
};

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to