mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-30 01:56:42 +07:00
IB/cma: Print warning on different inner and header P_Keys
Commit4c21b5bcef
("IB/cma: Add net_dev and private data checks to RDMA CM") added checks for incoming RDMA CM requests that they can be matched to a netdev based on the P_Key in the BTH of the request. This behavior was reverted in commitab3964ad2a
("IB/cma: Use inner P_Key to determine netdev"), since the mlx5 and ipath drivers didn't send the correct value in the BTH P_Key. Since the ipath driver was removed, and the mlx5 driver can now send GSI packets on different P_Keys, we could revert the patch to let the rdma_cm module look on the BTH P_Key when deciding to what netdev a packet belongs. However, that still breaks compatibility with the older drivers. Change the behavior to print a warning when receiving a request that has a different BTH P_Key and inner payload P_Key. In the future, after users have seen the warnings and upgraded their setups, remove the warning and block these requests. Signed-off-by: Haggai Eran <haggaie@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
ebe6ccc53f
commit
84424a7fc7
@ -1206,6 +1206,10 @@ static int cma_save_req_info(const struct ib_cm_event *ib_event,
|
|||||||
req->has_gid = true;
|
req->has_gid = true;
|
||||||
req->service_id = req_param->primary_path->service_id;
|
req->service_id = req_param->primary_path->service_id;
|
||||||
req->pkey = be16_to_cpu(req_param->primary_path->pkey);
|
req->pkey = be16_to_cpu(req_param->primary_path->pkey);
|
||||||
|
if (req->pkey != req_param->bth_pkey)
|
||||||
|
pr_warn_ratelimited("RDMA CMA: got different BTH P_Key (0x%x) and primary path P_Key (0x%x)\n"
|
||||||
|
"RDMA CMA: in the future this may cause the request to be dropped\n",
|
||||||
|
req_param->bth_pkey, req->pkey);
|
||||||
break;
|
break;
|
||||||
case IB_CM_SIDR_REQ_RECEIVED:
|
case IB_CM_SIDR_REQ_RECEIVED:
|
||||||
req->device = sidr_param->listen_id->device;
|
req->device = sidr_param->listen_id->device;
|
||||||
@ -1213,6 +1217,10 @@ static int cma_save_req_info(const struct ib_cm_event *ib_event,
|
|||||||
req->has_gid = false;
|
req->has_gid = false;
|
||||||
req->service_id = sidr_param->service_id;
|
req->service_id = sidr_param->service_id;
|
||||||
req->pkey = sidr_param->pkey;
|
req->pkey = sidr_param->pkey;
|
||||||
|
if (req->pkey != sidr_param->bth_pkey)
|
||||||
|
pr_warn_ratelimited("RDMA CMA: got different BTH P_Key (0x%x) and SIDR request payload P_Key (0x%x)\n"
|
||||||
|
"RDMA CMA: in the future this may cause the request to be dropped\n",
|
||||||
|
sidr_param->bth_pkey, req->pkey);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
Loading…
Reference in New Issue
Block a user