Merge branches 'amso1100', 'cma', 'cxgb3', 'cxgb4', 'fdr', 'ipath', 'ipoib', 'misc', 'mlx4', 'misc', 'nes', 'qib' and 'xrc' into for-next
This commit is contained in:
@ -81,7 +81,11 @@ enum {
|
||||
IB_USER_VERBS_CMD_MODIFY_SRQ,
|
||||
IB_USER_VERBS_CMD_QUERY_SRQ,
|
||||
IB_USER_VERBS_CMD_DESTROY_SRQ,
|
||||
IB_USER_VERBS_CMD_POST_SRQ_RECV
|
||||
IB_USER_VERBS_CMD_POST_SRQ_RECV,
|
||||
IB_USER_VERBS_CMD_OPEN_XRCD,
|
||||
IB_USER_VERBS_CMD_CLOSE_XRCD,
|
||||
IB_USER_VERBS_CMD_CREATE_XSRQ,
|
||||
IB_USER_VERBS_CMD_OPEN_QP
|
||||
};
|
||||
|
||||
/*
|
||||
@ -222,6 +226,21 @@ struct ib_uverbs_dealloc_pd {
|
||||
__u32 pd_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_open_xrcd {
|
||||
__u64 response;
|
||||
__u32 fd;
|
||||
__u32 oflags;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_open_xrcd_resp {
|
||||
__u32 xrcd_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_close_xrcd {
|
||||
__u32 xrcd_handle;
|
||||
};
|
||||
|
||||
struct ib_uverbs_reg_mr {
|
||||
__u64 response;
|
||||
__u64 start;
|
||||
@ -404,6 +423,17 @@ struct ib_uverbs_create_qp {
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_open_qp {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 pd_handle;
|
||||
__u32 qpn;
|
||||
__u8 qp_type;
|
||||
__u8 reserved[7];
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
/* also used for open response */
|
||||
struct ib_uverbs_create_qp_resp {
|
||||
__u32 qp_handle;
|
||||
__u32 qpn;
|
||||
@ -648,11 +678,25 @@ struct ib_uverbs_create_srq {
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_xsrq {
|
||||
__u64 response;
|
||||
__u64 user_handle;
|
||||
__u32 srq_type;
|
||||
__u32 pd_handle;
|
||||
__u32 max_wr;
|
||||
__u32 max_sge;
|
||||
__u32 srq_limit;
|
||||
__u32 reserved;
|
||||
__u32 xrcd_handle;
|
||||
__u32 cq_handle;
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_create_srq_resp {
|
||||
__u32 srq_handle;
|
||||
__u32 max_wr;
|
||||
__u32 max_sge;
|
||||
__u32 reserved;
|
||||
__u32 srqn;
|
||||
};
|
||||
|
||||
struct ib_uverbs_modify_srq {
|
||||
|
@ -112,6 +112,7 @@ enum ib_device_cap_flags {
|
||||
*/
|
||||
IB_DEVICE_UD_IP_CSUM = (1<<18),
|
||||
IB_DEVICE_UD_TSO = (1<<19),
|
||||
IB_DEVICE_XRC = (1<<20),
|
||||
IB_DEVICE_MEM_MGT_EXTENSIONS = (1<<21),
|
||||
IB_DEVICE_BLOCK_MULTICAST_LOOPBACK = (1<<22),
|
||||
};
|
||||
@ -207,6 +208,7 @@ enum ib_port_cap_flags {
|
||||
IB_PORT_SM_DISABLED = 1 << 10,
|
||||
IB_PORT_SYS_IMAGE_GUID_SUP = 1 << 11,
|
||||
IB_PORT_PKEY_SW_EXT_PORT_TRAP_SUP = 1 << 12,
|
||||
IB_PORT_EXTENDED_SPEEDS_SUP = 1 << 14,
|
||||
IB_PORT_CM_SUP = 1 << 16,
|
||||
IB_PORT_SNMP_TUNNEL_SUP = 1 << 17,
|
||||
IB_PORT_REINIT_SUP = 1 << 18,
|
||||
@ -415,7 +417,15 @@ enum ib_rate {
|
||||
IB_RATE_40_GBPS = 7,
|
||||
IB_RATE_60_GBPS = 8,
|
||||
IB_RATE_80_GBPS = 9,
|
||||
IB_RATE_120_GBPS = 10
|
||||
IB_RATE_120_GBPS = 10,
|
||||
IB_RATE_14_GBPS = 11,
|
||||
IB_RATE_56_GBPS = 12,
|
||||
IB_RATE_112_GBPS = 13,
|
||||
IB_RATE_168_GBPS = 14,
|
||||
IB_RATE_25_GBPS = 15,
|
||||
IB_RATE_100_GBPS = 16,
|
||||
IB_RATE_200_GBPS = 17,
|
||||
IB_RATE_300_GBPS = 18
|
||||
};
|
||||
|
||||
/**
|
||||
@ -426,6 +436,13 @@ enum ib_rate {
|
||||
*/
|
||||
int ib_rate_to_mult(enum ib_rate rate) __attribute_const__;
|
||||
|
||||
/**
|
||||
* ib_rate_to_mbps - Convert the IB rate enum to Mbps.
|
||||
* For example, IB_RATE_2_5_GBPS will be converted to 2500.
|
||||
* @rate: rate to convert.
|
||||
*/
|
||||
int ib_rate_to_mbps(enum ib_rate rate) __attribute_const__;
|
||||
|
||||
/**
|
||||
* mult_to_ib_rate - Convert a multiple of 2.5 Gbit/sec to an IB rate
|
||||
* enum.
|
||||
@ -522,6 +539,11 @@ enum ib_cq_notify_flags {
|
||||
IB_CQ_REPORT_MISSED_EVENTS = 1 << 2,
|
||||
};
|
||||
|
||||
enum ib_srq_type {
|
||||
IB_SRQT_BASIC,
|
||||
IB_SRQT_XRC
|
||||
};
|
||||
|
||||
enum ib_srq_attr_mask {
|
||||
IB_SRQ_MAX_WR = 1 << 0,
|
||||
IB_SRQ_LIMIT = 1 << 1,
|
||||
@ -537,6 +559,14 @@ struct ib_srq_init_attr {
|
||||
void (*event_handler)(struct ib_event *, void *);
|
||||
void *srq_context;
|
||||
struct ib_srq_attr attr;
|
||||
enum ib_srq_type srq_type;
|
||||
|
||||
union {
|
||||
struct {
|
||||
struct ib_xrcd *xrcd;
|
||||
struct ib_cq *cq;
|
||||
} xrc;
|
||||
} ext;
|
||||
};
|
||||
|
||||
struct ib_qp_cap {
|
||||
@ -565,7 +595,11 @@ enum ib_qp_type {
|
||||
IB_QPT_UC,
|
||||
IB_QPT_UD,
|
||||
IB_QPT_RAW_IPV6,
|
||||
IB_QPT_RAW_ETHERTYPE
|
||||
IB_QPT_RAW_ETHERTYPE,
|
||||
/* Save 8 for RAW_PACKET */
|
||||
IB_QPT_XRC_INI = 9,
|
||||
IB_QPT_XRC_TGT,
|
||||
IB_QPT_MAX
|
||||
};
|
||||
|
||||
enum ib_qp_create_flags {
|
||||
@ -579,6 +613,7 @@ struct ib_qp_init_attr {
|
||||
struct ib_cq *send_cq;
|
||||
struct ib_cq *recv_cq;
|
||||
struct ib_srq *srq;
|
||||
struct ib_xrcd *xrcd; /* XRC TGT QPs only */
|
||||
struct ib_qp_cap cap;
|
||||
enum ib_sig_type sq_sig_type;
|
||||
enum ib_qp_type qp_type;
|
||||
@ -586,6 +621,13 @@ struct ib_qp_init_attr {
|
||||
u8 port_num; /* special QP types only */
|
||||
};
|
||||
|
||||
struct ib_qp_open_attr {
|
||||
void (*event_handler)(struct ib_event *, void *);
|
||||
void *qp_context;
|
||||
u32 qp_num;
|
||||
enum ib_qp_type qp_type;
|
||||
};
|
||||
|
||||
enum ib_rnr_timeout {
|
||||
IB_RNR_TIMER_655_36 = 0,
|
||||
IB_RNR_TIMER_000_01 = 1,
|
||||
@ -770,6 +812,7 @@ struct ib_send_wr {
|
||||
u32 rkey;
|
||||
} fast_reg;
|
||||
} wr;
|
||||
u32 xrc_remote_srq_num; /* XRC TGT QPs only */
|
||||
};
|
||||
|
||||
struct ib_recv_wr {
|
||||
@ -831,6 +874,7 @@ struct ib_ucontext {
|
||||
struct list_head qp_list;
|
||||
struct list_head srq_list;
|
||||
struct list_head ah_list;
|
||||
struct list_head xrcd_list;
|
||||
int closing;
|
||||
};
|
||||
|
||||
@ -858,6 +902,15 @@ struct ib_pd {
|
||||
atomic_t usecnt; /* count all resources */
|
||||
};
|
||||
|
||||
struct ib_xrcd {
|
||||
struct ib_device *device;
|
||||
atomic_t usecnt; /* count all exposed resources */
|
||||
struct inode *inode;
|
||||
|
||||
struct mutex tgt_qp_mutex;
|
||||
struct list_head tgt_qp_list;
|
||||
};
|
||||
|
||||
struct ib_ah {
|
||||
struct ib_device *device;
|
||||
struct ib_pd *pd;
|
||||
@ -882,7 +935,16 @@ struct ib_srq {
|
||||
struct ib_uobject *uobject;
|
||||
void (*event_handler)(struct ib_event *, void *);
|
||||
void *srq_context;
|
||||
enum ib_srq_type srq_type;
|
||||
atomic_t usecnt;
|
||||
|
||||
union {
|
||||
struct {
|
||||
struct ib_xrcd *xrcd;
|
||||
struct ib_cq *cq;
|
||||
u32 srq_num;
|
||||
} xrc;
|
||||
} ext;
|
||||
};
|
||||
|
||||
struct ib_qp {
|
||||
@ -891,6 +953,11 @@ struct ib_qp {
|
||||
struct ib_cq *send_cq;
|
||||
struct ib_cq *recv_cq;
|
||||
struct ib_srq *srq;
|
||||
struct ib_xrcd *xrcd; /* XRC TGT QPs only */
|
||||
struct list_head xrcd_list;
|
||||
atomic_t usecnt; /* count times opened */
|
||||
struct list_head open_list;
|
||||
struct ib_qp *real_qp;
|
||||
struct ib_uobject *uobject;
|
||||
void (*event_handler)(struct ib_event *, void *);
|
||||
void *qp_context;
|
||||
@ -1149,6 +1216,10 @@ struct ib_device {
|
||||
struct ib_grh *in_grh,
|
||||
struct ib_mad *in_mad,
|
||||
struct ib_mad *out_mad);
|
||||
struct ib_xrcd * (*alloc_xrcd)(struct ib_device *device,
|
||||
struct ib_ucontext *ucontext,
|
||||
struct ib_udata *udata);
|
||||
int (*dealloc_xrcd)(struct ib_xrcd *xrcd);
|
||||
|
||||
struct ib_dma_mapping_ops *dma_ops;
|
||||
|
||||
@ -1442,6 +1513,25 @@ int ib_query_qp(struct ib_qp *qp,
|
||||
*/
|
||||
int ib_destroy_qp(struct ib_qp *qp);
|
||||
|
||||
/**
|
||||
* ib_open_qp - Obtain a reference to an existing sharable QP.
|
||||
* @xrcd - XRC domain
|
||||
* @qp_open_attr: Attributes identifying the QP to open.
|
||||
*
|
||||
* Returns a reference to a sharable QP.
|
||||
*/
|
||||
struct ib_qp *ib_open_qp(struct ib_xrcd *xrcd,
|
||||
struct ib_qp_open_attr *qp_open_attr);
|
||||
|
||||
/**
|
||||
* ib_close_qp - Release an external reference to a QP.
|
||||
* @qp: The QP handle to release
|
||||
*
|
||||
* The opened QP handle is released by the caller. The underlying
|
||||
* shared QP is not destroyed until all internal references are released.
|
||||
*/
|
||||
int ib_close_qp(struct ib_qp *qp);
|
||||
|
||||
/**
|
||||
* ib_post_send - Posts a list of work requests to the send queue of
|
||||
* the specified QP.
|
||||
@ -2060,4 +2150,16 @@ int ib_attach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid);
|
||||
*/
|
||||
int ib_detach_mcast(struct ib_qp *qp, union ib_gid *gid, u16 lid);
|
||||
|
||||
/**
|
||||
* ib_alloc_xrcd - Allocates an XRC domain.
|
||||
* @device: The device on which to allocate the XRC domain.
|
||||
*/
|
||||
struct ib_xrcd *ib_alloc_xrcd(struct ib_device *device);
|
||||
|
||||
/**
|
||||
* ib_dealloc_xrcd - Deallocates an XRC domain.
|
||||
* @xrcd: The XRC domain to deallocate.
|
||||
*/
|
||||
int ib_dealloc_xrcd(struct ib_xrcd *xrcd);
|
||||
|
||||
#endif /* IB_VERBS_H */
|
||||
|
@ -52,8 +52,10 @@ struct iw_cm_event {
|
||||
struct sockaddr_in local_addr;
|
||||
struct sockaddr_in remote_addr;
|
||||
void *private_data;
|
||||
u8 private_data_len;
|
||||
void *provider_data;
|
||||
u8 private_data_len;
|
||||
u8 ord;
|
||||
u8 ird;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -65,6 +65,7 @@ enum rdma_cm_event_type {
|
||||
enum rdma_port_space {
|
||||
RDMA_PS_SDP = 0x0001,
|
||||
RDMA_PS_IPOIB = 0x0002,
|
||||
RDMA_PS_IB = 0x013F,
|
||||
RDMA_PS_TCP = 0x0106,
|
||||
RDMA_PS_UDP = 0x0111,
|
||||
};
|
||||
|
@ -77,7 +77,8 @@ struct rdma_ucm_create_id {
|
||||
__u64 uid;
|
||||
__u64 response;
|
||||
__u16 ps;
|
||||
__u8 reserved[6];
|
||||
__u8 qp_type;
|
||||
__u8 reserved[5];
|
||||
};
|
||||
|
||||
struct rdma_ucm_create_id_resp {
|
||||
|
Reference in New Issue
Block a user