diff options
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_cm.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c index 7da5437d9859..1efe0beca063 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c | |||
| @@ -2955,6 +2955,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2955 | struct nes_device *nesdev; | 2955 | struct nes_device *nesdev; |
| 2956 | struct nes_cm_node *cm_node; | 2956 | struct nes_cm_node *cm_node; |
| 2957 | struct nes_cm_info cm_info; | 2957 | struct nes_cm_info cm_info; |
| 2958 | int apbvt_set = 0; | ||
| 2958 | 2959 | ||
| 2959 | ibqp = nes_get_qp(cm_id->device, conn_param->qpn); | 2960 | ibqp = nes_get_qp(cm_id->device, conn_param->qpn); |
| 2960 | if (!ibqp) | 2961 | if (!ibqp) |
| @@ -2992,9 +2993,11 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 2992 | conn_param->private_data_len); | 2993 | conn_param->private_data_len); |
| 2993 | 2994 | ||
| 2994 | if (cm_id->local_addr.sin_addr.s_addr != | 2995 | if (cm_id->local_addr.sin_addr.s_addr != |
| 2995 | cm_id->remote_addr.sin_addr.s_addr) | 2996 | cm_id->remote_addr.sin_addr.s_addr) { |
| 2996 | nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port), | 2997 | nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port), |
| 2997 | PCI_FUNC(nesdev->pcidev->devfn), NES_MANAGE_APBVT_ADD); | 2998 | PCI_FUNC(nesdev->pcidev->devfn), NES_MANAGE_APBVT_ADD); |
| 2999 | apbvt_set = 1; | ||
| 3000 | } | ||
| 2998 | 3001 | ||
| 2999 | /* set up the connection params for the node */ | 3002 | /* set up the connection params for the node */ |
| 3000 | cm_info.loc_addr = htonl(cm_id->local_addr.sin_addr.s_addr); | 3003 | 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) | |||
| 3011 | conn_param->private_data_len, (void *)conn_param->private_data, | 3014 | conn_param->private_data_len, (void *)conn_param->private_data, |
| 3012 | &cm_info); | 3015 | &cm_info); |
| 3013 | if (!cm_node) { | 3016 | if (!cm_node) { |
| 3014 | if (cm_id->local_addr.sin_addr.s_addr != | 3017 | if (apbvt_set) |
| 3015 | cm_id->remote_addr.sin_addr.s_addr) | ||
| 3016 | nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port), | 3018 | nes_manage_apbvt(nesvnic, ntohs(cm_id->local_addr.sin_port), |
| 3017 | PCI_FUNC(nesdev->pcidev->devfn), | 3019 | PCI_FUNC(nesdev->pcidev->devfn), |
| 3018 | NES_MANAGE_APBVT_DEL); | 3020 | NES_MANAGE_APBVT_DEL); |
| @@ -3021,7 +3023,7 @@ int nes_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *conn_param) | |||
| 3021 | return -ENOMEM; | 3023 | return -ENOMEM; |
| 3022 | } | 3024 | } |
| 3023 | 3025 | ||
| 3024 | cm_node->apbvt_set = 1; | 3026 | cm_node->apbvt_set = apbvt_set; |
| 3025 | nesqp->cm_node = cm_node; | 3027 | nesqp->cm_node = cm_node; |
| 3026 | cm_node->nesqp = nesqp; | 3028 | cm_node->nesqp = nesqp; |
| 3027 | nes_add_ref(&nesqp->ibqp); | 3029 | nes_add_ref(&nesqp->ibqp); |
