RDMA/nes: Do not set apbvt entry for loopback
When a connect request comes, apbvt should only be set for non-loopback connections. Signed-off-by: Faisal Latif <faisal.latif@intel.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
This commit is contained in:
Родитель
1f0dba1e51
Коммит
53094c388f
|
@ -2955,6 +2955,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
|||
struct nes_device *nesdev;
|
||||
struct nes_cm_node *cm_node;
|
||||
struct nes_cm_info cm_info;
|
||||
int apbvt_set = 0;
|
||||
|
||||
ibqp = nes_get_qp(cm_id->device, conn_param->qpn);
|
||||
if (!ibqp)
|
||||
|
@ -2992,9 +2993,11 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
|||
conn_param->private_data_len);
|
||||
|
||||
if (cm_id->local_addr.sin_addr.s_addr !=
|
||||
cm_id->remote_addr.sin_addr.s_addr)
|
||||
cm_id->remote_addr.sin_addr.s_addr) {
|
||||
nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port),
|
||||
PCI_FUNC(nesdev->pcidev->devfn), NES_MANAGE_APBVT_ADD);
|
||||
apbvt_set = 1;
|
||||
}
|
||||
|
||||
/* set up the connection params for the node */
|
||||
cm_info.loc_addr = htonl(cm_id->local_addr.sin_addr.s_addr);
|
||||
|
@ -3011,8 +3014,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
|||
conn_param->private_data_len, (void *)conn_param->private_data,
|
||||
&cm_info);
|
||||
if (!cm_node) {
|
||||
if (cm_id->local_addr.sin_addr.s_addr !=
|
||||
cm_id->remote_addr.sin_addr.s_addr)
|
||||
if (apbvt_set)
|
||||
nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port),
|
||||
PCI_FUNC(nesdev->pcidev->devfn),
|
||||
NES_MANAGE_APBVT_DEL);
|
||||
|
@ -3021,7 +3023,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param)
|
|||
return -ENOMEM;
|
||||
}
|
||||
|
||||
cm_node->apbvt_set = 1;
|
||||
cm_node->apbvt_set = apbvt_set;
|
||||
nesqp->cm_node = cm_node;
|
||||
cm_node->nesqp = nesqp;
|
||||
nes_add_ref(&nesqp->ibqp);
|
||||
|
|
Загрузка…
Ссылка в новой задаче