aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/cm_msgs.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/core/cm_msgs.h')
-rw-r--r--drivers/infiniband/core/cm_msgs.h13
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/infiniband/core/cm_msgs.h b/drivers/infiniband/core/cm_msgs.h
index 7e63c08f697..3ade3202597 100644
--- a/drivers/infiniband/core/cm_msgs.h
+++ b/drivers/infiniband/core/cm_msgs.h
@@ -86,7 +86,7 @@ struct cm_req_msg {
86 __be16 pkey; 86 __be16 pkey;
87 /* path MTU:4, RDC exists:1, RNR retry count:3. */ 87 /* path MTU:4, RDC exists:1, RNR retry count:3. */
88 u8 offset50; 88 u8 offset50;
89 /* max CM Retries:4, SRQ:1, rsvd:3 */ 89 /* max CM Retries:4, SRQ:1, extended transport type:3 */
90 u8 offset51; 90 u8 offset51;
91 91
92 __be16 primary_local_lid; 92 __be16 primary_local_lid;
@@ -175,6 +175,11 @@ static inline enum ib_qp_type cm_req_get_qp_type(struct cm_req_msg *req_msg)
175 switch(transport_type) { 175 switch(transport_type) {
176 case 0: return IB_QPT_RC; 176 case 0: return IB_QPT_RC;
177 case 1: return IB_QPT_UC; 177 case 1: return IB_QPT_UC;
178 case 3:
179 switch (req_msg->offset51 & 0x7) {
180 case 1: return IB_QPT_XRC_TGT;
181 default: return 0;
182 }
178 default: return 0; 183 default: return 0;
179 } 184 }
180} 185}
@@ -188,6 +193,12 @@ static inline void cm_req_set_qp_type(struct cm_req_msg *req_msg,
188 req_msg->offset40) & 193 req_msg->offset40) &
189 0xFFFFFFF9) | 0x2); 194 0xFFFFFFF9) | 0x2);
190 break; 195 break;
196 case IB_QPT_XRC_INI:
197 req_msg->offset40 = cpu_to_be32((be32_to_cpu(
198 req_msg->offset40) &
199 0xFFFFFFF9) | 0x6);
200 req_msg->offset51 = (req_msg->offset51 & 0xF8) | 1;
201 break;
191 default: 202 default:
192 req_msg->offset40 = cpu_to_be32(be32_to_cpu( 203 req_msg->offset40 = cpu_to_be32(be32_to_cpu(
193 req_msg->offset40) & 204 req_msg->offset40) &