aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/cm_msgs.h
diff options
context:
space:
mode:
authorSean Hefty <sean.hefty@intel.com>2011-05-13 13:46:20 -0400
committerRoland Dreier <roland@purestorage.com>2011-10-13 12:37:55 -0400
commitd26a360b776d527429cf13300837711b0b2fde20 (patch)
tree70462d3c1f74f18ac212960deebd1edba307530e /drivers/infiniband/core/cm_msgs.h
parentb93f3c18727634a2e847f067e549762d096921cf (diff)
IB/cm: Update protocol to support XRC
Update the REQ and REP messages to support XRC connection setup according to the XRC Annex. Several existing fields must be set to 0 or 1 when connecting XRC QPs, and a reserved field is changed to an extended transport type. Signed-off-by: Sean Hefty <sean.hefty@intel.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
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) &