diff options
Diffstat (limited to 'drivers/infiniband/core/cm.c')
-rw-r--r-- | drivers/infiniband/core/cm.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/infiniband/core/cm.c b/drivers/infiniband/core/cm.c index 02110e00d145..1fe21865d1f2 100644 --- a/drivers/infiniband/core/cm.c +++ b/drivers/infiniband/core/cm.c | |||
@@ -684,6 +684,13 @@ retest: | |||
684 | cm_reject_sidr_req(cm_id_priv, IB_SIDR_REJECT); | 684 | cm_reject_sidr_req(cm_id_priv, IB_SIDR_REJECT); |
685 | break; | 685 | break; |
686 | case IB_CM_REQ_SENT: | 686 | case IB_CM_REQ_SENT: |
687 | ib_cancel_mad(cm_id_priv->av.port->mad_agent, cm_id_priv->msg); | ||
688 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); | ||
689 | ib_send_cm_rej(cm_id, IB_CM_REJ_TIMEOUT, | ||
690 | &cm_id_priv->av.port->cm_dev->ca_guid, | ||
691 | sizeof cm_id_priv->av.port->cm_dev->ca_guid, | ||
692 | NULL, 0); | ||
693 | break; | ||
687 | case IB_CM_MRA_REQ_RCVD: | 694 | case IB_CM_MRA_REQ_RCVD: |
688 | case IB_CM_REP_SENT: | 695 | case IB_CM_REP_SENT: |
689 | case IB_CM_MRA_REP_RCVD: | 696 | case IB_CM_MRA_REP_RCVD: |
@@ -694,10 +701,8 @@ retest: | |||
694 | case IB_CM_REP_RCVD: | 701 | case IB_CM_REP_RCVD: |
695 | case IB_CM_MRA_REP_SENT: | 702 | case IB_CM_MRA_REP_SENT: |
696 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); | 703 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); |
697 | ib_send_cm_rej(cm_id, IB_CM_REJ_TIMEOUT, | 704 | ib_send_cm_rej(cm_id, IB_CM_REJ_CONSUMER_DEFINED, |
698 | &cm_id_priv->av.port->cm_dev->ca_guid, | 705 | NULL, 0, NULL, 0); |
699 | sizeof cm_id_priv->av.port->cm_dev->ca_guid, | ||
700 | NULL, 0); | ||
701 | break; | 706 | break; |
702 | case IB_CM_ESTABLISHED: | 707 | case IB_CM_ESTABLISHED: |
703 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); | 708 | spin_unlock_irqrestore(&cm_id_priv->lock, flags); |