diff options
author | Sean Hefty <sean.hefty@intel.com> | 2011-05-13 13:46:20 -0400 |
---|---|---|
committer | Roland Dreier <roland@purestorage.com> | 2011-10-13 12:37:55 -0400 |
commit | d26a360b776d527429cf13300837711b0b2fde20 (patch) | |
tree | 70462d3c1f74f18ac212960deebd1edba307530e /drivers/infiniband/core/cm_msgs.h | |
parent | b93f3c18727634a2e847f067e549762d096921cf (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.h | 13 |
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) & |