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