RDMA/ucma: Mask QPN to be 24 bits according to IBTA
IBTA declares QPN as 24bits, mask input to ensure that kernel doesn't get higher bits and ensure by adding WANR_ONCE() that other CM users do the same. Link: https://lore.kernel.org/r/20200212072635.682689-2-leon@kernel.org Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
This commit is contained in:
parent
beb205dd67
commit
ca750d4a9c
@ -2188,6 +2188,9 @@ int ib_send_cm_rep(struct ib_cm_id *cm_id,
|
||||
cm_id_priv->initiator_depth = param->initiator_depth;
|
||||
cm_id_priv->responder_resources = param->responder_resources;
|
||||
cm_id_priv->rq_psn = cpu_to_be32(IBA_GET(CM_REP_STARTING_PSN, rep_msg));
|
||||
WARN_ONCE(param->qp_num & 0xFF000000,
|
||||
"IBTA declares QPN to be 24 bits, but it is 0x%X\n",
|
||||
param->qp_num);
|
||||
cm_id_priv->local_qpn = cpu_to_be32(param->qp_num & 0xFFFFFF);
|
||||
|
||||
out: spin_unlock_irqrestore(&cm_id_priv->lock, flags);
|
||||
|
@ -1045,7 +1045,7 @@ static void ucma_copy_conn_param(struct rdma_cm_id *id,
|
||||
dst->retry_count = src->retry_count;
|
||||
dst->rnr_retry_count = src->rnr_retry_count;
|
||||
dst->srq = src->srq;
|
||||
dst->qp_num = src->qp_num;
|
||||
dst->qp_num = src->qp_num & 0xFFFFFF;
|
||||
dst->qkey = (id->route.addr.src_addr.ss_family == AF_IB) ? src->qkey : 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user