;  unsigned long flags;  int ret;   cm_id_priv = container_of(cm_id, struct iwcm_id_private, id);  set_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags);   spin_lock_irqsave(&cm_id_priv->lock, flags);  if (cm_id_priv->state != IW_CM_STATE_CONN_RECV) {   spin_unlock_irqrestore(&cm_id_priv->lock, flags);   clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags);   wake_up_all(&cm_id_priv->connect_wait);   return -EINVAL;  }  /* Get the ib_qp given the QPN */  qp = cm_id->device->iwcm->get_qp(cm_id->device, iw_param->qpn);  if (!qp) {   spin_unlock_irqrestore(&cm_id_priv->lock, flags);   clear_bit(IWCM_F_CONNECT_WAIT, &cm_id_priv->flags);   wake_up_all(&cm_id_priv->connect_wait);   return -EINVAL;  }  cm_id->device->iwcm->add_ref(qp);  cm_id_priv->qp = qp;  spin_unlock_irqrestore(&cm_id_priv->lock, flags);   ret = cm_id->device->iwcm->