Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

RDMA/cm: Remove CM message structs

All accesses now use the new IBA acessor scheme, so delete the structs
entirely and generate the structures from the schema file.

Link: https://lore.kernel.org/r/20200116170037.30109-8-jgg@ziepe.ca
Tested-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>

+6 -289
-77
drivers/infiniband/core/cm.c
··· 4426 4426 kfree(cm_dev); 4427 4427 } 4428 4428 4429 - /* 4430 - * Check at compile time that the byte offset and length of field old_name in 4431 - * the struct matches the byte offset and length in the new macro. 4432 - */ 4433 - #define _IBA_CHECK_OFF(old_name, field_struct, field_offset, mask, bits) \ 4434 - static_assert(offsetof(field_struct, old_name) == (field_offset)); \ 4435 - static_assert(bits == sizeof(((field_struct *)0)->old_name) * 8) 4436 - #define IBA_CHECK_OFF(field, old_name) _IBA_CHECK_OFF(old_name, field) 4437 - 4438 - IBA_CHECK_OFF(CM_REQ_LOCAL_COMM_ID, local_comm_id); 4439 - IBA_CHECK_OFF(CM_REQ_SERVICE_ID, service_id); 4440 - IBA_CHECK_OFF(CM_REQ_LOCAL_CA_GUID, local_ca_guid); 4441 - IBA_CHECK_OFF(CM_REQ_LOCAL_Q_KEY, local_qkey); 4442 - IBA_CHECK_OFF(CM_REQ_PARTITION_KEY, pkey); 4443 - IBA_CHECK_OFF(CM_REQ_PRIMARY_LOCAL_PORT_LID, primary_local_lid); 4444 - IBA_CHECK_OFF(CM_REQ_PRIMARY_REMOTE_PORT_LID, primary_remote_lid); 4445 - IBA_CHECK_OFF(CM_REQ_PRIMARY_LOCAL_PORT_GID, primary_local_gid); 4446 - IBA_CHECK_OFF(CM_REQ_PRIMARY_REMOTE_PORT_GID, primary_remote_gid); 4447 - IBA_CHECK_OFF(CM_REQ_PRIMARY_TRAFFIC_CLASS, primary_traffic_class); 4448 - IBA_CHECK_OFF(CM_REQ_PRIMARY_HOP_LIMIT, primary_hop_limit); 4449 - IBA_CHECK_OFF(CM_REQ_ALTERNATE_LOCAL_PORT_LID, alt_local_lid); 4450 - IBA_CHECK_OFF(CM_REQ_ALTERNATE_REMOTE_PORT_LID, alt_remote_lid); 4451 - IBA_CHECK_OFF(CM_REQ_ALTERNATE_LOCAL_PORT_GID, alt_local_gid); 4452 - IBA_CHECK_OFF(CM_REQ_ALTERNATE_REMOTE_PORT_GID, alt_remote_gid); 4453 - IBA_CHECK_OFF(CM_REQ_ALTERNATE_TRAFFIC_CLASS, alt_traffic_class); 4454 - IBA_CHECK_OFF(CM_REQ_ALTERNATE_HOP_LIMIT, alt_hop_limit); 4455 - IBA_CHECK_OFF(CM_REQ_PRIVATE_DATA, private_data); 4456 - IBA_CHECK_OFF(CM_MRA_LOCAL_COMM_ID, local_comm_id); 4457 - IBA_CHECK_OFF(CM_MRA_REMOTE_COMM_ID, remote_comm_id); 4458 - IBA_CHECK_OFF(CM_MRA_PRIVATE_DATA, private_data); 4459 - IBA_CHECK_OFF(CM_REJ_LOCAL_COMM_ID, local_comm_id); 4460 - IBA_CHECK_OFF(CM_REJ_REMOTE_COMM_ID, remote_comm_id); 4461 - IBA_CHECK_OFF(CM_REJ_REASON, reason); 4462 - IBA_CHECK_OFF(CM_REJ_ARI, ari); 4463 - IBA_CHECK_OFF(CM_REJ_PRIVATE_DATA, private_data); 4464 - IBA_CHECK_OFF(CM_REP_LOCAL_COMM_ID, local_comm_id); 4465 - IBA_CHECK_OFF(CM_REP_REMOTE_COMM_ID, remote_comm_id); 4466 - IBA_CHECK_OFF(CM_REP_LOCAL_Q_KEY, local_qkey); 4467 - IBA_CHECK_OFF(CM_REP_RESPONDER_RESOURCES, resp_resources); 4468 - IBA_CHECK_OFF(CM_REP_INITIATOR_DEPTH, initiator_depth); 4469 - IBA_CHECK_OFF(CM_REP_LOCAL_CA_GUID, local_ca_guid); 4470 - IBA_CHECK_OFF(CM_REP_PRIVATE_DATA, private_data); 4471 - IBA_CHECK_OFF(CM_RTU_LOCAL_COMM_ID, local_comm_id); 4472 - IBA_CHECK_OFF(CM_RTU_REMOTE_COMM_ID, remote_comm_id); 4473 - IBA_CHECK_OFF(CM_RTU_PRIVATE_DATA, private_data); 4474 - IBA_CHECK_OFF(CM_DREQ_LOCAL_COMM_ID, local_comm_id); 4475 - IBA_CHECK_OFF(CM_DREQ_REMOTE_COMM_ID, remote_comm_id); 4476 - IBA_CHECK_OFF(CM_DREQ_PRIVATE_DATA, private_data); 4477 - IBA_CHECK_OFF(CM_DREP_LOCAL_COMM_ID, local_comm_id); 4478 - IBA_CHECK_OFF(CM_DREP_REMOTE_COMM_ID, remote_comm_id); 4479 - IBA_CHECK_OFF(CM_DREP_PRIVATE_DATA, private_data); 4480 - IBA_CHECK_OFF(CM_LAP_LOCAL_COMM_ID, local_comm_id); 4481 - IBA_CHECK_OFF(CM_LAP_REMOTE_COMM_ID, remote_comm_id); 4482 - IBA_CHECK_OFF(CM_LAP_ALTERNATE_LOCAL_PORT_LID, alt_local_lid); 4483 - IBA_CHECK_OFF(CM_LAP_ALTERNATE_REMOTE_PORT_LID, alt_remote_lid); 4484 - IBA_CHECK_OFF(CM_LAP_ALTERNATE_LOCAL_PORT_GID, alt_local_gid); 4485 - IBA_CHECK_OFF(CM_LAP_ALTERNATE_REMOTE_PORT_GID, alt_remote_gid); 4486 - IBA_CHECK_OFF(CM_LAP_ALTERNATE_HOP_LIMIT, alt_hop_limit); 4487 - IBA_CHECK_OFF(CM_LAP_PRIVATE_DATA, private_data); 4488 - IBA_CHECK_OFF(CM_APR_LOCAL_COMM_ID, local_comm_id); 4489 - IBA_CHECK_OFF(CM_APR_REMOTE_COMM_ID, remote_comm_id); 4490 - IBA_CHECK_OFF(CM_APR_ADDITIONAL_INFORMATION_LENGTH, info_length); 4491 - IBA_CHECK_OFF(CM_APR_AR_STATUS, ap_status); 4492 - IBA_CHECK_OFF(CM_APR_ADDITIONAL_INFORMATION, info); 4493 - IBA_CHECK_OFF(CM_APR_PRIVATE_DATA, private_data); 4494 - IBA_CHECK_OFF(CM_SIDR_REQ_REQUESTID, request_id); 4495 - IBA_CHECK_OFF(CM_SIDR_REQ_PARTITION_KEY, pkey); 4496 - IBA_CHECK_OFF(CM_SIDR_REQ_SERVICEID, service_id); 4497 - IBA_CHECK_OFF(CM_SIDR_REQ_PRIVATE_DATA, private_data); 4498 - IBA_CHECK_OFF(CM_SIDR_REP_REQUESTID, request_id); 4499 - IBA_CHECK_OFF(CM_SIDR_REP_STATUS, status); 4500 - IBA_CHECK_OFF(CM_SIDR_REP_ADDITIONAL_INFORMATION_LENGTH, info_length); 4501 - IBA_CHECK_OFF(CM_SIDR_REP_SERVICEID, service_id); 4502 - IBA_CHECK_OFF(CM_SIDR_REP_Q_KEY, qkey); 4503 - IBA_CHECK_OFF(CM_SIDR_REP_ADDITIONAL_INFORMATION, info); 4504 - IBA_CHECK_OFF(CM_SIDR_REP_PRIVATE_DATA, private_data); 4505 - 4506 4429 static int __init ib_cm_init(void) 4507 4430 { 4508 4431 int ret;
-211
drivers/infiniband/core/cm_msgs.h
··· 19 19 20 20 #define IB_CM_CLASS_VERSION 2 /* IB specification 1.2 */ 21 21 22 - struct cm_req_msg { 23 - struct ib_mad_hdr hdr; 24 - 25 - __be32 local_comm_id; 26 - __be32 rsvd4; 27 - __be64 service_id; 28 - __be64 local_ca_guid; 29 - __be32 rsvd24; 30 - __be32 local_qkey; 31 - /* local QPN:24, responder resources:8 */ 32 - __be32 offset32; 33 - /* local EECN:24, initiator depth:8 */ 34 - __be32 offset36; 35 - /* 36 - * remote EECN:24, remote CM response timeout:5, 37 - * transport service type:2, end-to-end flow control:1 38 - */ 39 - __be32 offset40; 40 - /* starting PSN:24, local CM response timeout:5, retry count:3 */ 41 - __be32 offset44; 42 - __be16 pkey; 43 - /* path MTU:4, RDC exists:1, RNR retry count:3. */ 44 - u8 offset50; 45 - /* max CM Retries:4, SRQ:1, extended transport type:3 */ 46 - u8 offset51; 47 - 48 - __be16 primary_local_lid; 49 - __be16 primary_remote_lid; 50 - union ib_gid primary_local_gid; 51 - union ib_gid primary_remote_gid; 52 - /* flow label:20, rsvd:6, packet rate:6 */ 53 - __be32 primary_offset88; 54 - u8 primary_traffic_class; 55 - u8 primary_hop_limit; 56 - /* SL:4, subnet local:1, rsvd:3 */ 57 - u8 primary_offset94; 58 - /* local ACK timeout:5, rsvd:3 */ 59 - u8 primary_offset95; 60 - 61 - __be16 alt_local_lid; 62 - __be16 alt_remote_lid; 63 - union ib_gid alt_local_gid; 64 - union ib_gid alt_remote_gid; 65 - /* flow label:20, rsvd:6, packet rate:6 */ 66 - __be32 alt_offset132; 67 - u8 alt_traffic_class; 68 - u8 alt_hop_limit; 69 - /* SL:4, subnet local:1, rsvd:3 */ 70 - u8 alt_offset138; 71 - /* local ACK timeout:5, rsvd:3 */ 72 - u8 alt_offset139; 73 - 74 - u32 private_data[IB_CM_REQ_PRIVATE_DATA_SIZE / sizeof(u32)]; 75 - 76 - } __packed; 77 - 78 22 static inline enum ib_qp_type cm_req_get_qp_type(struct cm_req_msg *req_msg) 79 23 { 80 24 u8 transport_type = IBA_GET(CM_REQ_TRANSPORT_SERVICE_TYPE, req_msg); ··· 57 113 CM_MSG_RESPONSE_OTHER = 0x2 58 114 }; 59 115 60 - struct cm_mra_msg { 61 - struct ib_mad_hdr hdr; 62 - 63 - __be32 local_comm_id; 64 - __be32 remote_comm_id; 65 - /* message MRAed:2, rsvd:6 */ 66 - u8 offset8; 67 - /* service timeout:5, rsvd:3 */ 68 - u8 offset9; 69 - 70 - u8 private_data[IB_CM_MRA_PRIVATE_DATA_SIZE]; 71 - 72 - } __packed; 73 - 74 - struct cm_rej_msg { 75 - struct ib_mad_hdr hdr; 76 - 77 - __be32 local_comm_id; 78 - __be32 remote_comm_id; 79 - /* message REJected:2, rsvd:6 */ 80 - u8 offset8; 81 - /* reject info length:7, rsvd:1. */ 82 - u8 offset9; 83 - __be16 reason; 84 - u8 ari[IB_CM_REJ_ARI_LENGTH]; 85 - 86 - u8 private_data[IB_CM_REJ_PRIVATE_DATA_SIZE]; 87 - 88 - } __packed; 89 - 90 - struct cm_rep_msg { 91 - struct ib_mad_hdr hdr; 92 - 93 - __be32 local_comm_id; 94 - __be32 remote_comm_id; 95 - __be32 local_qkey; 96 - /* local QPN:24, rsvd:8 */ 97 - __be32 offset12; 98 - /* local EECN:24, rsvd:8 */ 99 - __be32 offset16; 100 - /* starting PSN:24 rsvd:8 */ 101 - __be32 offset20; 102 - u8 resp_resources; 103 - u8 initiator_depth; 104 - /* target ACK delay:5, failover accepted:2, end-to-end flow control:1 */ 105 - u8 offset26; 106 - /* RNR retry count:3, SRQ:1, rsvd:5 */ 107 - u8 offset27; 108 - __be64 local_ca_guid; 109 - 110 - u8 private_data[IB_CM_REP_PRIVATE_DATA_SIZE]; 111 - 112 - } __packed; 113 - 114 116 static inline __be32 cm_rep_get_qpn(struct cm_rep_msg *rep_msg, enum ib_qp_type qp_type) 115 117 { 116 118 return (qp_type == IB_QPT_XRC_INI) ? ··· 64 174 rep_msg)) : 65 175 cpu_to_be32(IBA_GET(CM_REP_LOCAL_QPN, rep_msg)); 66 176 } 67 - 68 - struct cm_rtu_msg { 69 - struct ib_mad_hdr hdr; 70 - 71 - __be32 local_comm_id; 72 - __be32 remote_comm_id; 73 - 74 - u8 private_data[IB_CM_RTU_PRIVATE_DATA_SIZE]; 75 - 76 - } __packed; 77 - 78 - struct cm_dreq_msg { 79 - struct ib_mad_hdr hdr; 80 - 81 - __be32 local_comm_id; 82 - __be32 remote_comm_id; 83 - /* remote QPN/EECN:24, rsvd:8 */ 84 - __be32 offset8; 85 - 86 - u8 private_data[IB_CM_DREQ_PRIVATE_DATA_SIZE]; 87 - 88 - } __packed; 89 - 90 - struct cm_drep_msg { 91 - struct ib_mad_hdr hdr; 92 - 93 - __be32 local_comm_id; 94 - __be32 remote_comm_id; 95 - 96 - u8 private_data[IB_CM_DREP_PRIVATE_DATA_SIZE]; 97 - 98 - } __packed; 99 - 100 - struct cm_lap_msg { 101 - struct ib_mad_hdr hdr; 102 - 103 - __be32 local_comm_id; 104 - __be32 remote_comm_id; 105 - 106 - __be32 rsvd8; 107 - /* remote QPN/EECN:24, remote CM response timeout:5, rsvd:3 */ 108 - __be32 offset12; 109 - __be32 rsvd16; 110 - 111 - __be16 alt_local_lid; 112 - __be16 alt_remote_lid; 113 - union ib_gid alt_local_gid; 114 - union ib_gid alt_remote_gid; 115 - /* flow label:20, rsvd:4, traffic class:8 */ 116 - __be32 offset56; 117 - u8 alt_hop_limit; 118 - /* rsvd:2, packet rate:6 */ 119 - u8 offset61; 120 - /* SL:4, subnet local:1, rsvd:3 */ 121 - u8 offset62; 122 - /* local ACK timeout:5, rsvd:3 */ 123 - u8 offset63; 124 - 125 - u8 private_data[IB_CM_LAP_PRIVATE_DATA_SIZE]; 126 - } __packed; 127 - 128 - struct cm_apr_msg { 129 - struct ib_mad_hdr hdr; 130 - 131 - __be32 local_comm_id; 132 - __be32 remote_comm_id; 133 - 134 - u8 info_length; 135 - u8 ap_status; 136 - __be16 rsvd; 137 - u8 info[IB_CM_APR_INFO_LENGTH]; 138 - 139 - u8 private_data[IB_CM_APR_PRIVATE_DATA_SIZE]; 140 - } __packed; 141 - 142 - struct cm_sidr_req_msg { 143 - struct ib_mad_hdr hdr; 144 - 145 - __be32 request_id; 146 - __be16 pkey; 147 - __be16 rsvd; 148 - __be64 service_id; 149 - 150 - u32 private_data[IB_CM_SIDR_REQ_PRIVATE_DATA_SIZE / sizeof(u32)]; 151 - } __packed; 152 - 153 - struct cm_sidr_rep_msg { 154 - struct ib_mad_hdr hdr; 155 - 156 - __be32 request_id; 157 - u8 status; 158 - u8 info_length; 159 - __be16 rsvd; 160 - /* QPN:24, rsvd:8 */ 161 - __be32 offset8; 162 - __be64 service_id; 163 - __be32 qkey; 164 - u8 info[IB_CM_SIDR_REP_INFO_LENGTH]; 165 - 166 - u8 private_data[IB_CM_SIDR_REP_PRIVATE_DATA_SIZE]; 167 - } __packed; 168 177 169 178 #endif /* CM_MSGS_H */
+6 -1
include/rdma/ibta_vol1_c12.h
··· 29 29 IBA_FIELD_MLOC(field_struct, \ 30 30 (byte_offset + sizeof(struct ib_mad_hdr)), width, type) 31 31 #define CM_STRUCT(field_struct, total_len) \ 32 - static_assert((total_len) % 32 == 0); 32 + field_struct \ 33 + { \ 34 + struct ib_mad_hdr hdr; \ 35 + u32 _data[(total_len) / 32 + \ 36 + BUILD_BUG_ON_ZERO((total_len) % 32 != 0)]; \ 37 + } 33 38 34 39 /* Table 106 REQ Message Contents */ 35 40 #define CM_REQ_LOCAL_COMM_ID CM_FIELD32_LOC(struct cm_req_msg, 0, 32)