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:
parent
1f0dba1e51
commit
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_device *nesdev;
|
||||||
struct nes_cm_node *cm_node;
|
struct nes_cm_node *cm_node;
|
||||||
struct nes_cm_info cm_info;
|
struct nes_cm_info cm_info;
|
||||||
|
int apbvt_set = 0;
|
||||||
|
|
||||||
ibqp = nes_get_qp(cm_id->device, conn_param->qpn);
|
ibqp = nes_get_qp(cm_id->device, conn_param->qpn);
|
||||||
if (!ibqp)
|
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);
|
conn_param->private_data_len);
|
||||||
|
|
||||||
if (cm_id->local_addr.sin_addr.s_addr !=
|
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),
|
nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port),
|
||||||
PCI_FUNC(nesdev->pcidev->devfn), NES_MANAGE_APBVT_ADD);
|
PCI_FUNC(nesdev->pcidev->devfn), NES_MANAGE_APBVT_ADD);
|
||||||
|
apbvt_set = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/* set up the connection params for the node */
|
/* set up the connection params for the node */
|
||||||
cm_info.loc_addr = htonl(cm_id->local_addr.sin_addr.s_addr);
|
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,
|
conn_param->private_data_len, (void *)conn_param->private_data,
|
||||||
&cm_info);
|
&cm_info);
|
||||||
if (!cm_node) {
|
if (!cm_node) {
|
||||||
if (cm_id->local_addr.sin_addr.s_addr !=
|
if (apbvt_set)
|
||||||
cm_id->remote_addr.sin_addr.s_addr)
|
|
||||||
nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port),
|
nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port),
|
||||||
PCI_FUNC(nesdev->pcidev->devfn),
|
PCI_FUNC(nesdev->pcidev->devfn),
|
||||||
NES_MANAGE_APBVT_DEL);
|
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;
|
return -ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
cm_node->apbvt_set = 1;
|
cm_node->apbvt_set = apbvt_set;
|
||||||
nesqp->cm_node = cm_node;
|
nesqp->cm_node = cm_node;
|
||||||
cm_node->nesqp = nesqp;
|
cm_node->nesqp = nesqp;
|
||||||
nes_add_ref(&nesqp->ibqp);
|
nes_add_ref(&nesqp->ibqp);
|
||||||
|
|
Loading…
Reference in New Issue