@@ -3621,9 +3621,10 @@ int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id,
unsigned long flags;
int ret;
- if ((param->info && param->info_length > IB_CM_SIDR_REP_INFO_LENGTH) ||
+ if ((param->info &&
+ param->info_length > CM_SIDR_REP_ADDITIONAL_INFORMATION_SIZE) ||
(param->private_data &&
- param->private_data_len > IB_CM_SIDR_REP_PRIVATE_DATA_SIZE))
+ param->private_data_len > CM_SIDR_REP_PRIVATE_DATA_SIZE))
return -EINVAL;
cm_id_priv = container_of(cm_id, struct cm_id_private, id);
@@ -3677,7 +3678,7 @@ static void cm_format_sidr_rep_event(struct cm_work *work,
param->info_len = sidr_rep_msg->info_length;
param->sgid_attr = cm_id_priv->av.ah_attr.grh.sgid_attr;
work->cm_event.private_data = &sidr_rep_msg->private_data;
- work->cm_event.private_data_len = IB_CM_SIDR_REP_PRIVATE_DATA_SIZE;
+ work->cm_event.private_data_len = CM_SIDR_REP_PRIVATE_DATA_SIZE;
}
static int cm_sidr_rep_handler(struct cm_work *work)
@@ -778,9 +778,9 @@ struct cm_sidr_rep_msg {
__be32 offset8;
__be64 service_id;
__be32 qkey;
- u8 info[IB_CM_SIDR_REP_INFO_LENGTH];
+ u8 info[CM_SIDR_REP_ADDITIONAL_INFORMATION_SIZE];
- u8 private_data[IB_CM_SIDR_REP_PRIVATE_DATA_SIZE];
+ u8 private_data[CM_SIDR_REP_PRIVATE_DATA_SIZE];
} __packed;
static inline __be32 cm_sidr_rep_get_qpn(struct cm_sidr_rep_msg *sidr_rep_msg)
@@ -3706,7 +3706,7 @@ static int cma_sidr_rep_handler(struct ib_cm_id *cm_id,
break;
case IB_CM_SIDR_REP_RECEIVED:
event.param.ud.private_data = ib_event->private_data;
- event.param.ud.private_data_len = IB_CM_SIDR_REP_PRIVATE_DATA_SIZE;
+ event.param.ud.private_data_len = CM_SIDR_REP_PRIVATE_DATA_SIZE;
if (rep->status != IB_SIDR_SUCCESS) {
event.event = RDMA_CM_EVENT_UNREACHABLE;
event.status = ib_event->param.sidr_rep_rcvd.status;
@@ -64,11 +64,6 @@ enum ib_cm_event_type {
IB_CM_SIDR_REP_RECEIVED
};
-enum ib_cm_data_size {
- IB_CM_SIDR_REP_PRIVATE_DATA_SIZE = 136,
- IB_CM_SIDR_REP_INFO_LENGTH = 72,
-};
-
struct ib_cm_id;
struct ib_cm_req_event_param {
@@ -189,4 +189,18 @@
#define CM_SIDR_REQ_PRIVATE_DATA CM_FIELD_MLOC(struct cm_sidr_req_msg, 16, 1728)
#define CM_SIDR_REQ_PRIVATE_DATA_SIZE 216
+/* Table 120 SIDR_REP Message Contents */
+#define CM_SIDR_REP_REQUESTID CM_FIELD32_LOC(struct cm_sidr_rep_msg, 0, 32)
+#define CM_SIDR_REP_STATUS CM_FIELD8_LOC(struct cm_sidr_rep_msg, 4, 8)
+#define CM_SIDR_REP_ADDITIONAL_INFORMATION_LENGTH \
+ CM_FIELD8_LOC(struct cm_sidr_rep_msg, 5, 8)
+#define CM_SIDR_REP_QPN CM_FIELD32_LOC(struct cm_sidr_rep_msg, 8, 24)
+#define CM_SIDR_REP_SERVICEID CM_FIELD64_LOC(struct cm_sidr_rep_msg, 12, 64)
+#define CM_SIDR_REP_Q_KEY CM_FIELD32_LOC(struct cm_sidr_rep_msg, 20, 32)
+#define CM_SIDR_REP_ADDITIONAL_INFORMATION \
+ CM_FIELD_MLOC(struct cm_sidr_rep_msg, 24, 576)
+#define CM_SIDR_REP_ADDITIONAL_INFORMATION_SIZE 72
+#define CM_SIDR_REP_PRIVATE_DATA CM_FIELD_MLOC(struct cm_sidr_rep_msg, 96, 1088)
+#define CM_SIDR_REP_PRIVATE_DATA_SIZE 136
+
#endif /* _IBTA_VOL1_C12_H_ */