aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/core/iwcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/infiniband/core/iwcm.c')
-rw-r--r--drivers/infiniband/core/iwcm.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/drivers/infiniband/core/iwcm.c b/drivers/infiniband/core/iwcm.c
index 732637c913d9..72141c5b7c95 100644
--- a/drivers/infiniband/core/iwcm.c
+++ b/drivers/infiniband/core/iwcm.c
@@ -394,7 +394,7 @@ static void destroy_cm_id(struct iw_cm_id *cm_id)
394 cm_id_priv->state = IW_CM_STATE_DESTROYING; 394 cm_id_priv->state = IW_CM_STATE_DESTROYING;
395 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 395 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
396 /* destroy the listening endpoint */ 396 /* destroy the listening endpoint */
397 cm_id->device->iwcm->destroy_listen(cm_id); 397 cm_id->device->ops.iw_destroy_listen(cm_id);
398 spin_lock_irqsave(&cm_id_priv->lock, flags); 398 spin_lock_irqsave(&cm_id_priv->lock, flags);
399 break; 399 break;
400 case IW_CM_STATE_ESTABLISHED: 400 case IW_CM_STATE_ESTABLISHED:
@@ -417,7 +417,7 @@ static void destroy_cm_id(struct iw_cm_id *cm_id)
417 */ 417 */
418 cm_id_priv->state = IW_CM_STATE_DESTROYING; 418 cm_id_priv->state = IW_CM_STATE_DESTROYING;
419 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 419 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
420 cm_id->device->iwcm->reject(cm_id, NULL, 0); 420 cm_id->device->ops.iw_reject(cm_id, NULL, 0);
421 spin_lock_irqsave(&cm_id_priv->lock, flags); 421 spin_lock_irqsave(&cm_id_priv->lock, flags);
422 break; 422 break;
423 case IW_CM_STATE_CONN_SENT: 423 case IW_CM_STATE_CONN_SENT:
@@ -427,7 +427,7 @@ static void destroy_cm_id(struct iw_cm_id *cm_id)
427 break; 427 break;
428 } 428 }
429 if (cm_id_priv->qp) { 429 if (cm_id_priv->qp) {
430 cm_id_priv->id.device->iwcm->rem_ref(cm_id_priv->qp); 430 cm_id_priv->id.device->ops.iw_rem_ref(cm_id_priv->qp);
431 cm_id_priv->qp = NULL; 431 cm_id_priv->qp = NULL;
432 } 432 }
433 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 433 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
@@ -504,7 +504,7 @@ static void iw_cm_check_wildcard(struct sockaddr_storage *pm_addr,
504static int iw_cm_map(struct iw_cm_id *cm_id, bool active) 504static int iw_cm_map(struct iw_cm_id *cm_id, bool active)
505{ 505{
506 const char *devname = dev_name(&cm_id->device->dev); 506 const char *devname = dev_name(&cm_id->device->dev);
507 const char *ifname = cm_id->device->iwcm->ifname; 507 const char *ifname = cm_id->device->iw_ifname;
508 struct iwpm_dev_data pm_reg_msg = {}; 508 struct iwpm_dev_data pm_reg_msg = {};
509 struct iwpm_sa_data pm_msg; 509 struct iwpm_sa_data pm_msg;
510 int status; 510 int status;
@@ -526,7 +526,7 @@ static int iw_cm_map(struct iw_cm_id *cm_id, bool active)
526 cm_id->mapped = true; 526 cm_id->mapped = true;
527 pm_msg.loc_addr = cm_id->local_addr; 527 pm_msg.loc_addr = cm_id->local_addr;
528 pm_msg.rem_addr = cm_id->remote_addr; 528 pm_msg.rem_addr = cm_id->remote_addr;
529 pm_msg.flags = (cm_id->device->iwcm->driver_flags & IW_F_NO_PORT_MAP) ? 529 pm_msg.flags = (cm_id->device->iw_driver_flags & IW_F_NO_PORT_MAP) ?
530 IWPM_FLAGS_NO_PORT_MAP : 0; 530 IWPM_FLAGS_NO_PORT_MAP : 0;
531 if (active) 531 if (active)
532 status = iwpm_add_and_query_mapping(&pm_msg, 532 status = iwpm_add_and_query_mapping(&pm_msg,
@@ -577,7 +577,8 @@ int iw_cm_listen(struct iw_cm_id *cm_id, int backlog)
577 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 577 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
578 ret = iw_cm_map(cm_id, false); 578 ret = iw_cm_map(cm_id, false);
579 if (!ret) 579 if (!ret)
580 ret = cm_id->device->iwcm->create_listen(cm_id, backlog); 580 ret = cm_id->device->ops.iw_create_listen(cm_id,
581 backlog);
581 if (ret) 582 if (ret)
582 cm_id_priv->state = IW_CM_STATE_IDLE; 583 cm_id_priv->state = IW_CM_STATE_IDLE;
583 spin_lock_irqsave(&cm_id_priv->lock, flags); 584 spin_lock_irqsave(&cm_id_priv->lock, flags);
@@ -617,7 +618,7 @@ int iw_cm_reject(struct iw_cm_id *cm_id,
617 cm_id_priv->state = IW_CM_STATE_IDLE; 618 cm_id_priv->state = IW_CM_STATE_IDLE;
618 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 619 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
619 620
620 ret = cm_id->device->iwcm->reject(cm_id, private_data, 621 ret = cm_id->device->ops.iw_reject(cm_id, private_data,
621 private_data_len); 622 private_data_len);
622 623
623 clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags); 624 clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags);
@@ -653,25 +654,25 @@ int iw_cm_accept(struct iw_cm_id *cm_id,
653 return -EINVAL; 654 return -EINVAL;
654 } 655 }
655 /* Get the ib_qp given the QPN */ 656 /* Get the ib_qp given the QPN */
656 qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn); 657 qp = cm_id->device->ops.iw_get_qp(cm_id->device, iw_param->qpn);
657 if (!qp) { 658 if (!qp) {
658 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 659 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
659 clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags); 660 clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags);
660 wake_up_all(&cm_id_priv->connect_wait); 661 wake_up_all(&cm_id_priv->connect_wait);
661 return -EINVAL; 662 return -EINVAL;
662 } 663 }
663 cm_id->device->iwcm->add_ref(qp); 664 cm_id->device->ops.iw_add_ref(qp);
664 cm_id_priv->qp = qp; 665 cm_id_priv->qp = qp;
665 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 666 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
666 667
667 ret = cm_id->device->iwcm->accept(cm_id, iw_param); 668 ret = cm_id->device->ops.iw_accept(cm_id, iw_param);
668 if (ret) { 669 if (ret) {
669 /* An error on accept precludes provider events */ 670 /* An error on accept precludes provider events */
670 BUG_ON(cm_id_priv->state != IW_CM_STATE_CONN_RECV); 671 BUG_ON(cm_id_priv->state != IW_CM_STATE_CONN_RECV);
671 cm_id_priv->state = IW_CM_STATE_IDLE; 672 cm_id_priv->state = IW_CM_STATE_IDLE;
672 spin_lock_irqsave(&cm_id_priv->lock, flags); 673 spin_lock_irqsave(&cm_id_priv->lock, flags);
673 if (cm_id_priv->qp) { 674 if (cm_id_priv->qp) {
674 cm_id->device->iwcm->rem_ref(qp); 675 cm_id->device->ops.iw_rem_ref(qp);
675 cm_id_priv->qp = NULL; 676 cm_id_priv->qp = NULL;
676 } 677 }
677 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 678 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
@@ -712,25 +713,25 @@ int iw_cm_connect(struct iw_cm_id *cm_id, struct iw_cm_conn_param *iw_param)
712 } 713 }
713 714
714 /* Get the ib_qp given the QPN */ 715 /* Get the ib_qp given the QPN */
715 qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn); 716 qp = cm_id->device->ops.iw_get_qp(cm_id->device, iw_param->qpn);
716 if (!qp) { 717 if (!qp) {
717 ret = -EINVAL; 718 ret = -EINVAL;
718 goto err; 719 goto err;
719 } 720 }
720 cm_id->device->iwcm->add_ref(qp); 721 cm_id->device->ops.iw_add_ref(qp);
721 cm_id_priv->qp = qp; 722 cm_id_priv->qp = qp;
722 cm_id_priv->state = IW_CM_STATE_CONN_SENT; 723 cm_id_priv->state = IW_CM_STATE_CONN_SENT;
723 spin_unlock_irqrestore(&cm_id_priv->lock, flags); 724 spin_unlock_irqrestore(&cm_id_priv->lock, flags);
724 725
725 ret = iw_cm_map(cm_id, true); 726 ret = iw_cm_map(cm_id, true);
726 if (!ret) 727 if (!ret)
727 ret = cm_id->device->iwcm->connect(cm_id, iw_param); 728 ret = cm_id->device->ops.iw_connect(cm_id, iw_param);
728 if (!ret) 729 if (!ret)
729 return 0; /* success */ 730 return 0; /* success */
730 731
731 spin_lock_irqsave(&cm_id_priv->lock, flags); 732 spin_lock_irqsave(&cm_id_priv->lock, flags);
732 if (cm_id_priv->qp) { 733 if (cm_id_priv->qp) {
733 cm_id->device->iwcm->rem_ref(qp); 734 cm_id->device->ops.iw_rem_ref(qp);
734 cm_id_priv->qp = NULL; 735 cm_id_priv->qp = NULL;
735 } 736 }
736 cm_id_priv->state = IW_CM_STATE_IDLE; 737 cm_id_priv->state = IW_CM_STATE_IDLE;
@@ -895,7 +896,7 @@ static int cm_conn_rep_handler(struct iwcm_id_private *cm_id_priv,
895 cm_id_priv->state = IW_CM_STATE_ESTABLISHED; 896 cm_id_priv->state = IW_CM_STATE_ESTABLISHED;
896 } else { 897 } else {
897 /* REJECTED or RESET */ 898 /* REJECTED or RESET */
898 cm_id_priv->id.device->iwcm->rem_ref(cm_id_priv->qp); 899 cm_id_priv->id.device->ops.iw_rem_ref(cm_id_priv->qp);
899 cm_id_priv->qp = NULL; 900 cm_id_priv->qp = NULL;
900 cm_id_priv->state = IW_CM_STATE_IDLE; 901 cm_id_priv->state = IW_CM_STATE_IDLE;
901 } 902 }
@@ -946,7 +947,7 @@ static int cm_close_handler(struct iwcm_id_private *cm_id_priv,
946 spin_lock_irqsave(&cm_id_priv->lock, flags); 947 spin_lock_irqsave(&cm_id_priv->lock, flags);
947 948
948 if (cm_id_priv->qp) { 949 if (cm_id_priv->qp) {
949 cm_id_priv->id.device->iwcm->rem_ref(cm_id_priv->qp); 950 cm_id_priv->id.device->ops.iw_rem_ref(cm_id_priv->qp);
950 cm_id_priv->qp = NULL; 951 cm_id_priv->qp = NULL;
951 } 952 }
952 switch (cm_id_priv->state) { 953 switch (cm_id_priv->state) {