···16411641static int ocrdma_mbx_create_ah_tbl(struct ocrdma_dev *dev)16421642{16431643 int i;16441644- int status = 0;16441644+ int status = -ENOMEM;16451645 int max_ah;16461646 struct ocrdma_create_ah_tbl *cmd;16471647 struct ocrdma_create_ah_tbl_rsp *rsp;
+12-12
drivers/infiniband/hw/qedr/verbs.c
···511511 struct qedr_dev *dev = get_qedr_dev(ibpd->device);512512 struct qedr_pd *pd = get_qedr_pd(ibpd);513513514514- if (!pd)514514+ if (!pd) {515515 pr_err("Invalid PD received in dealloc_pd\n");516516+ return -EINVAL;517517+ }516518517519 DP_DEBUG(dev, QEDR_MSG_INIT, "Deallocating PD %d\n", pd->pd_id);518520 dev->ops->rdma_dealloc_pd(dev->rdma_ctx, pd->pd_id);···14791477 struct qedr_ucontext *ctx = NULL;14801478 struct qedr_create_qp_ureq ureq;14811479 struct qedr_qp *qp;14801480+ struct ib_qp *ibqp;14821481 int rc = 0;1483148214841483 DP_DEBUG(dev, QEDR_MSG_QP, "create qp: called from %s, pd=%p\n",···14891486 if (rc)14901487 return ERR_PTR(rc);1491148814891489+ if (attrs->srq)14901490+ return ERR_PTR(-EINVAL);14911491+14921492 qp = kzalloc(sizeof(*qp), GFP_KERNEL);14931493 if (!qp)14941494 return ERR_PTR(-ENOMEM);14951495-14961496- if (attrs->srq)14971497- return ERR_PTR(-EINVAL);1498149514991496 DP_DEBUG(dev, QEDR_MSG_QP,15001497 "create qp: sq_cq=%p, sq_icid=%d, rq_cq=%p, rq_icid=%d\n",···15111508 "create qp: unexpected udata when creating GSI QP\n");15121509 goto err0;15131510 }15141514- return qedr_create_gsi_qp(dev, attrs, qp);15111511+ ibqp = qedr_create_gsi_qp(dev, attrs, qp);15121512+ if (IS_ERR(ibqp))15131513+ kfree(qp);15141514+ return ibqp;15151515 }1516151615171517 memset(&in_params, 0, sizeof(in_params));···24202414 */24212415 pbl = list_first_entry(&info->inuse_pbl_list,24222416 struct qedr_pbl, list_entry);24232423- list_del(&pbl->list_entry);24242424- list_add_tail(&pbl->list_entry, &info->free_pbl_list);24172417+ list_move_tail(&pbl->list_entry, &info->free_pbl_list);24252418 info->completed_handled++;24262419 }24272420}···29842979 DP_DEBUG(dev, QEDR_MSG_CQ,29852980 "QP in wrong state! QP icid=0x%x state %d\n",29862981 qp->icid, qp->state);29872987- return -EINVAL;29882988- }29892989-29902990- if (!wr) {29912991- DP_ERR(dev, "Got an empty post send.\n");29922982 return -EINVAL;29932983 }29942984
+6-6
drivers/infiniband/hw/usnic/usnic_ib_qp_grp.c
···117117 vnic_idx = usnic_vnic_get_index(qp_grp->vf->vnic);118118119119 res_chunk = get_qp_res_chunk(qp_grp);120120- if (IS_ERR_OR_NULL(res_chunk)) {120120+ if (IS_ERR(res_chunk)) {121121 usnic_err("Unable to get qp res with err %ld\n",122122 PTR_ERR(res_chunk));123123- return res_chunk ? PTR_ERR(res_chunk) : -ENOMEM;123123+ return PTR_ERR(res_chunk);124124 }125125126126 for (i = 0; i < res_chunk->cnt; i++) {···158158 vnic_idx = usnic_vnic_get_index(qp_grp->vf->vnic);159159160160 res_chunk = get_qp_res_chunk(qp_grp);161161- if (IS_ERR_OR_NULL(res_chunk)) {161161+ if (IS_ERR(res_chunk)) {162162 usnic_err("Unable to get qp res with err %ld\n",163163 PTR_ERR(res_chunk));164164- return res_chunk ? PTR_ERR(res_chunk) : -ENOMEM;164164+ return PTR_ERR(res_chunk);165165 }166166167167 for (i = 0; i < res_chunk->cnt; i++) {···186186 struct usnic_vnic_res_chunk *res_chunk;187187188188 res_chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_RQ);189189- if (IS_ERR_OR_NULL(res_chunk)) {189189+ if (IS_ERR(res_chunk)) {190190 usnic_err("Unable to get %s with err %ld\n",191191 usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_RQ),192192 PTR_ERR(res_chunk));193193- return res_chunk ? PTR_ERR(res_chunk) : -ENOMEM;193193+ return PTR_ERR(res_chunk);194194 }195195196196 uaction->vnic_idx = usnic_vnic_get_index(qp_grp->vf->vnic);
+6-6
drivers/infiniband/hw/usnic/usnic_ib_verbs.c
···8787 resp.bar_len = bar->len;88888989 chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_RQ);9090- if (IS_ERR_OR_NULL(chunk)) {9090+ if (IS_ERR(chunk)) {9191 usnic_err("Failed to get chunk %s for qp_grp %d with err %ld\n",9292 usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_RQ),9393 qp_grp->grp_id,9494 PTR_ERR(chunk));9595- return chunk ? PTR_ERR(chunk) : -ENOMEM;9595+ return PTR_ERR(chunk);9696 }97979898 WARN_ON(chunk->type != USNIC_VNIC_RES_TYPE_RQ);···101101 resp.rq_idx[i] = chunk->res[i]->vnic_idx;102102103103 chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_WQ);104104- if (IS_ERR_OR_NULL(chunk)) {104104+ if (IS_ERR(chunk)) {105105 usnic_err("Failed to get chunk %s for qp_grp %d with err %ld\n",106106 usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_WQ),107107 qp_grp->grp_id,108108 PTR_ERR(chunk));109109- return chunk ? PTR_ERR(chunk) : -ENOMEM;109109+ return PTR_ERR(chunk);110110 }111111112112 WARN_ON(chunk->type != USNIC_VNIC_RES_TYPE_WQ);···115115 resp.wq_idx[i] = chunk->res[i]->vnic_idx;116116117117 chunk = usnic_ib_qp_grp_get_chunk(qp_grp, USNIC_VNIC_RES_TYPE_CQ);118118- if (IS_ERR_OR_NULL(chunk)) {118118+ if (IS_ERR(chunk)) {119119 usnic_err("Failed to get chunk %s for qp_grp %d with err %ld\n",120120 usnic_vnic_res_type_to_str(USNIC_VNIC_RES_TYPE_CQ),121121 qp_grp->grp_id,122122 PTR_ERR(chunk));123123- return chunk ? PTR_ERR(chunk) : -ENOMEM;123123+ return PTR_ERR(chunk);124124 }125125126126 WARN_ON(chunk->type != USNIC_VNIC_RES_TYPE_CQ);
+7-2
drivers/infiniband/sw/rxe/rxe_comp.c
···420420 (wqe->wr.send_flags & IB_SEND_SIGNALED) ||421421 (qp->req.state == QP_STATE_ERROR)) {422422 make_send_cqe(qp, wqe, &cqe);423423+ advance_consumer(qp->sq.queue);423424 rxe_cq_post(qp->scq, &cqe, 0);425425+ } else {426426+ advance_consumer(qp->sq.queue);424427 }425425-426426- advance_consumer(qp->sq.queue);427428428429 /*429430 * we completed something so let req run again···510509 struct sk_buff *skb = NULL;511510 struct rxe_pkt_info *pkt = NULL;512511 enum comp_state state;512512+513513+ rxe_add_ref(qp);513514514515 if (!qp->valid) {515516 while ((skb = skb_dequeue(&qp->resp_pkts))) {···742739 /* we come here if we are done with processing and want the task to743740 * exit from the loop calling us744741 */742742+ rxe_drop_ref(qp);745743 return -EAGAIN;746744747745done:748746 /* we come here if we have processed a packet we want the task to call749747 * us again to see if there is anything else to do750748 */749749+ rxe_drop_ref(qp);751750 return 0;752751}
···566566 if (udata) {567567 if (udata->inlen) {568568 err = -EINVAL;569569- goto err1;569569+ goto err2;570570 }571571 qp->is_user = 1;572572 }···575575576576 err = rxe_qp_from_init(rxe, qp, pd, init, udata, ibpd);577577 if (err)578578- goto err2;578578+ goto err3;579579580580 return &qp->ibqp;581581582582-err2:582582+err3:583583 rxe_drop_index(qp);584584+err2:584585 rxe_drop_ref(qp);585586err1:586587 return ERR_PTR(err);···10101009static int rxe_req_notify_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags flags)10111010{10121011 struct rxe_cq *cq = to_rcq(ibcq);10121012+ unsigned long irq_flags;10131013+ int ret = 0;1013101410151015+ spin_lock_irqsave(&cq->cq_lock, irq_flags);10141016 if (cq->notify != IB_CQ_NEXT_COMP)10151017 cq->notify = flags & IB_CQ_SOLICITED_MASK;1016101810171017- return 0;10191019+ if ((flags & IB_CQ_REPORT_MISSED_EVENTS) && !queue_empty(cq->queue))10201020+ ret = 1;10211021+10221022+ spin_unlock_irqrestore(&cq->cq_lock, irq_flags);10231023+10241024+ return ret;10181025}1019102610201027static struct ib_mr *rxe_get_dma_mr(struct ib_pd *ibpd, int access)
+5-2
drivers/infiniband/ulp/ipoib/ipoib_multicast.c
···575575 if (!test_bit(IPOIB_FLAG_OPER_UP, &priv->flags))576576 return;577577578578- if (ib_query_port(priv->ca, priv->port, &port_attr) ||579579- port_attr.state != IB_PORT_ACTIVE) {578578+ if (ib_query_port(priv->ca, priv->port, &port_attr)) {579579+ ipoib_dbg(priv, "ib_query_port() failed\n");580580+ return;581581+ }582582+ if (port_attr.state != IB_PORT_ACTIVE) {580583 ipoib_dbg(priv, "port state is not ACTIVE (state = %d) suspending join task\n",581584 port_attr.state);582585 return;
+4-1
drivers/infiniband/ulp/iser/iser_verbs.c
···890890 case RDMA_CM_EVENT_ESTABLISHED:891891 iser_connected_handler(cma_id, event->param.conn.private_data);892892 break;893893+ case RDMA_CM_EVENT_REJECTED:894894+ iser_info("Connection rejected: %s\n",895895+ rdma_reject_msg(cma_id, event->status));896896+ /* FALLTHROUGH */893897 case RDMA_CM_EVENT_ADDR_ERROR:894898 case RDMA_CM_EVENT_ROUTE_ERROR:895899 case RDMA_CM_EVENT_CONNECT_ERROR:896900 case RDMA_CM_EVENT_UNREACHABLE:897897- case RDMA_CM_EVENT_REJECTED:898901 iser_connect_error(cma_id);899902 break;900903 case RDMA_CM_EVENT_DISCONNECTED:
···6464MODULE_VERSION(DRV_VERSION);6565MODULE_INFO(release_date, DRV_RELDATE);66666767+#if !defined(CONFIG_DYNAMIC_DEBUG)6868+#define DEFINE_DYNAMIC_DEBUG_METADATA(name, fmt)6969+#define DYNAMIC_DEBUG_BRANCH(descriptor) false7070+#endif7171+6772static unsigned int srp_sg_tablesize;6873static unsigned int cmd_sg_entries;6974static unsigned int indirect_sg_entries;···389384 max_page_list_len);390385 if (IS_ERR(mr)) {391386 ret = PTR_ERR(mr);387387+ if (ret == -ENOMEM)388388+ pr_info("%s: ib_alloc_mr() failed. Try to reduce max_cmd_per_lun, max_sect or ch_count\n",389389+ dev_name(&device->dev));392390 goto destroy_pool;393391 }394392 d->mr = mr;···12741266 struct ib_pool_fmr *fmr;12751267 u64 io_addr = 0;1276126812771277- if (state->fmr.next >= state->fmr.end)12691269+ if (state->fmr.next >= state->fmr.end) {12701270+ shost_printk(KERN_ERR, ch->target->scsi_host,12711271+ PFX "Out of MRs (mr_per_cmd = %d)\n",12721272+ ch->target->mr_per_cmd);12781273 return -ENOMEM;12741274+ }1279127512801276 WARN_ON_ONCE(!dev->use_fmr);12811277···13351323 u32 rkey;13361324 int n, err;1337132513381338- if (state->fr.next >= state->fr.end)13261326+ if (state->fr.next >= state->fr.end) {13271327+ shost_printk(KERN_ERR, ch->target->scsi_host,13281328+ PFX "Out of MRs (mr_per_cmd = %d)\n",13291329+ ch->target->mr_per_cmd);13391330 return -ENOMEM;13311331+ }1340133213411333 WARN_ON_ONCE(!dev->use_fast_reg);13421334···15721556 return 0;15731557}1574155815751575-#if defined(DYNAMIC_DATA_DEBUG)15761559static void srp_check_mapping(struct srp_map_state *state,15771560 struct srp_rdma_ch *ch, struct srp_request *req,15781561 struct scatterlist *scat, int count)···15951580 scsi_bufflen(req->scmnd), desc_len, mr_len,15961581 state->ndesc, state->nmdesc);15971582}15981598-#endif1599158316001584/**16011585 * srp_map_data() - map SCSI data buffer onto an SRP request···16831669 if (ret < 0)16841670 goto unmap;1685167116861686-#if defined(DYNAMIC_DEBUG)16871672 {16881673 DEFINE_DYNAMIC_DEBUG_METADATA(ddm,16891674 "Memory mapping consistency check");16901690- if (unlikely(ddm.flags & _DPRINTK_FLAGS_PRINT))16751675+ if (DYNAMIC_DEBUG_BRANCH(ddm))16911676 srp_check_mapping(&state, ch, req, scat, count);16921677 }16931693-#endif1694167816951679 /* We've mapped the request, now pull as much of the indirect16961680 * descriptor table as we can into the command buffer. If this···32993287 */33003288 scsi_host_get(target->scsi_host);3301328933023302- mutex_lock(&host->add_target_mutex);32903290+ ret = mutex_lock_interruptible(&host->add_target_mutex);32913291+ if (ret < 0)32923292+ goto put;3303329333043294 ret = srp_parse_options(buf, target);33053295 if (ret)···34573443out:34583444 mutex_unlock(&host->add_target_mutex);3459344534463446+put:34603447 scsi_host_put(target->scsi_host);34613448 if (ret < 0)34623449 scsi_host_put(target->scsi_host);···35413526static void srp_add_one(struct ib_device *device)35423527{35433528 struct srp_device *srp_dev;35293529+ struct ib_device_attr *attr = &device->attrs;35443530 struct srp_host *host;35453531 int mr_page_shift, p;35463532 u64 max_pages_per_mr;···35563540 * minimum of 4096 bytes. We're unlikely to build large sglists35573541 * out of smaller entries.35583542 */35593559- mr_page_shift = max(12, ffs(device->attrs.page_size_cap) - 1);35433543+ mr_page_shift = max(12, ffs(attr->page_size_cap) - 1);35603544 srp_dev->mr_page_size = 1 << mr_page_shift;35613545 srp_dev->mr_page_mask = ~((u64) srp_dev->mr_page_size - 1);35623562- max_pages_per_mr = device->attrs.max_mr_size;35463546+ max_pages_per_mr = attr->max_mr_size;35633547 do_div(max_pages_per_mr, srp_dev->mr_page_size);35643548 pr_debug("%s: %llu / %u = %llu <> %u\n", __func__,35653565- device->attrs.max_mr_size, srp_dev->mr_page_size,35493549+ attr->max_mr_size, srp_dev->mr_page_size,35663550 max_pages_per_mr, SRP_MAX_PAGES_PER_MR);35673551 srp_dev->max_pages_per_mr = min_t(u64, SRP_MAX_PAGES_PER_MR,35683552 max_pages_per_mr);3569355335703554 srp_dev->has_fmr = (device->alloc_fmr && device->dealloc_fmr &&35713555 device->map_phys_fmr && device->unmap_fmr);35723572- srp_dev->has_fr = (device->attrs.device_cap_flags &35563556+ srp_dev->has_fr = (attr->device_cap_flags &35733557 IB_DEVICE_MEM_MGT_EXTENSIONS);35743558 if (!never_register && !srp_dev->has_fmr && !srp_dev->has_fr) {35753559 dev_warn(&device->dev, "neither FMR nor FR is supported\n");35763560 } else if (!never_register &&35773577- device->attrs.max_mr_size >= 2 * srp_dev->mr_page_size) {35613561+ attr->max_mr_size >= 2 * srp_dev->mr_page_size) {35783562 srp_dev->use_fast_reg = (srp_dev->has_fr &&35793563 (!srp_dev->has_fmr || prefer_fr));35803564 srp_dev->use_fmr = !srp_dev->use_fast_reg && srp_dev->has_fmr;···35873571 if (srp_dev->use_fast_reg) {35883572 srp_dev->max_pages_per_mr =35893573 min_t(u32, srp_dev->max_pages_per_mr,35903590- device->attrs.max_fast_reg_page_list_len);35743574+ attr->max_fast_reg_page_list_len);35913575 }35923576 srp_dev->mr_max_size = srp_dev->mr_page_size *35933577 srp_dev->max_pages_per_mr;35943578 pr_debug("%s: mr_page_shift = %d, device->max_mr_size = %#llx, device->max_fast_reg_page_list_len = %u, max_pages_per_mr = %d, mr_max_size = %#x\n",35953595- device->name, mr_page_shift, device->attrs.max_mr_size,35963596- device->attrs.max_fast_reg_page_list_len,35793579+ device->name, mr_page_shift, attr->max_mr_size,35803580+ attr->max_fast_reg_page_list_len,35973581 srp_dev->max_pages_per_mr, srp_dev->mr_max_size);3598358235993583 INIT_LIST_HEAD(&srp_dev->dev_list);
+9-13
drivers/infiniband/ulp/srpt/ib_srpt.c
···18401840 struct srpt_rdma_ch *ch, *tmp_ch;18411841 u32 it_iu_len;18421842 int i, ret = 0;18431843- unsigned char *p;1844184318451844 WARN_ON_ONCE(irqs_disabled());18461845···19931994 be64_to_cpu(*(__be64 *)(ch->i_port_id + 8)));1994199519951996 pr_debug("registering session %s\n", ch->sess_name);19961996- p = &ch->sess_name[0];1997199719981998-try_again:19991998 ch->sess = target_alloc_session(&sport->port_tpg_1, 0, 0,20002000- TARGET_PROT_NORMAL, p, ch, NULL);19991999+ TARGET_PROT_NORMAL, ch->sess_name, ch,20002000+ NULL);20012001+ /* Retry without leading "0x" */20022002+ if (IS_ERR(ch->sess))20032003+ ch->sess = target_alloc_session(&sport->port_tpg_1, 0, 0,20042004+ TARGET_PROT_NORMAL,20052005+ ch->sess_name + 2, ch, NULL);20012006 if (IS_ERR(ch->sess)) {20022002- pr_info("Rejected login because no ACL has been"20032003- " configured yet for initiator %s.\n", p);20042004- /*20052005- * XXX: Hack to retry of ch->i_port_id without leading '0x'20062006- */20072007- if (p == &ch->sess_name[0]) {20082008- p += 2;20092009- goto try_again;20102010- }20072007+ pr_info("Rejected login because no ACL has been configured yet for initiator %s.\n",20082008+ ch->sess_name);20112009 rej->reason = cpu_to_be32((PTR_ERR(ch->sess) == -ENOMEM) ?20122010 SRP_LOGIN_REJ_INSUFFICIENT_RESOURCES :20132011 SRP_LOGIN_REJ_CHANNEL_LIMIT_REACHED);
+2-2
drivers/net/ethernet/qlogic/qede/qede_roce.c
···191191 }192192 mutex_unlock(&qedr_dev_list_lock);193193194194- DP_INFO(edev, "qedr: discovered and registered %d RoCE funcs\n",195195- qedr_counter);194194+ pr_notice("qedr: discovered and registered %d RoCE funcs\n",195195+ qedr_counter);196196197197 return 0;198198}
+36-6
drivers/nvme/host/rdma.c
···43434444#define NVME_RDMA_MAX_INLINE_SEGMENTS 145454646+static const char *const nvme_rdma_cm_status_strs[] = {4747+ [NVME_RDMA_CM_INVALID_LEN] = "invalid length",4848+ [NVME_RDMA_CM_INVALID_RECFMT] = "invalid record format",4949+ [NVME_RDMA_CM_INVALID_QID] = "invalid queue ID",5050+ [NVME_RDMA_CM_INVALID_HSQSIZE] = "invalid host SQ size",5151+ [NVME_RDMA_CM_INVALID_HRQSIZE] = "invalid host RQ size",5252+ [NVME_RDMA_CM_NO_RSC] = "resource not found",5353+ [NVME_RDMA_CM_INVALID_IRD] = "invalid IRD",5454+ [NVME_RDMA_CM_INVALID_ORD] = "Invalid ORD",5555+};5656+5757+static const char *nvme_rdma_cm_msg(enum nvme_rdma_cm_status status)5858+{5959+ size_t index = status;6060+6161+ if (index < ARRAY_SIZE(nvme_rdma_cm_status_strs) &&6262+ nvme_rdma_cm_status_strs[index])6363+ return nvme_rdma_cm_status_strs[index];6464+ else6565+ return "unrecognized reason";6666+};6767+4668/*4769 * We handle AEN commands ourselves and don't even let the4870 * block layer know about them.···12291207static int nvme_rdma_conn_rejected(struct nvme_rdma_queue *queue,12301208 struct rdma_cm_event *ev)12311209{12321232- if (ev->param.conn.private_data_len) {12331233- struct nvme_rdma_cm_rej *rej =12341234- (struct nvme_rdma_cm_rej *)ev->param.conn.private_data;12101210+ struct rdma_cm_id *cm_id = queue->cm_id;12111211+ int status = ev->status;12121212+ const char *rej_msg;12131213+ const struct nvme_rdma_cm_rej *rej_data;12141214+ u8 rej_data_len;12151215+12161216+ rej_msg = rdma_reject_msg(cm_id, status);12171217+ rej_data = rdma_consumer_reject_data(cm_id, ev, &rej_data_len);12181218+12191219+ if (rej_data && rej_data_len >= sizeof(u16)) {12201220+ u16 sts = le16_to_cpu(rej_data->sts);1235122112361222 dev_err(queue->ctrl->ctrl.device,12371237- "Connect rejected, status %d.", le16_to_cpu(rej->sts));12381238- /* XXX: Think of something clever to do here... */12231223+ "Connect rejected: status %d (%s) nvme status %d (%s).\n",12241224+ status, rej_msg, sts, nvme_rdma_cm_msg(sts));12391225 } else {12401226 dev_err(queue->ctrl->ctrl.device,12411241- "Connect rejected, no private data.\n");12271227+ "Connect rejected: status %d (%s).\n", status, rej_msg);12421228 }1243122912441230 return -ECONNRESET;
+3
drivers/nvme/target/rdma.c
···13581358 ret = nvmet_rdma_device_removal(cm_id, queue);13591359 break;13601360 case RDMA_CM_EVENT_REJECTED:13611361+ pr_debug("Connection rejected: %s\n",13621362+ rdma_reject_msg(cm_id, event->status));13631363+ /* FALLTHROUGH */13611364 case RDMA_CM_EVENT_UNREACHABLE:13621365 case RDMA_CM_EVENT_CONNECT_ERROR:13631366 nvmet_rdma_queue_connect_fail(cm_id, queue);
+6
include/rdma/ib_cm.h
···603603int ib_send_cm_sidr_rep(struct ib_cm_id *cm_id,604604 struct ib_cm_sidr_rep_param *param);605605606606+/**607607+ * ibcm_reject_msg - return a pointer to a reject message string.608608+ * @reason: Value returned in the REJECT event status field.609609+ */610610+const char *__attribute_const__ ibcm_reject_msg(int reason);611611+606612#endif /* IB_CM_H */
···253253int iw_cm_init_qp_attr(struct iw_cm_id *cm_id, struct ib_qp_attr *qp_attr,254254 int *qp_attr_mask);255255256256+/**257257+ * iwcm_reject_msg - return a pointer to a reject message string.258258+ * @reason: Value returned in the REJECT event status field.259259+ */260260+const char *__attribute_const__ iwcm_reject_msg(int reason);261261+256262#endif /* IW_CM_H */
···388388 */389389__be64 rdma_get_service_id(struct rdma_cm_id *id, struct sockaddr *addr);390390391391+/**392392+ * rdma_reject_msg - return a pointer to a reject message string.393393+ * @id: Communication identifier that received the REJECT event.394394+ * @reason: Value returned in the REJECT event status field.395395+ */396396+const char *__attribute_const__ rdma_reject_msg(struct rdma_cm_id *id,397397+ int reason);398398+/**399399+ * rdma_is_consumer_reject - return true if the consumer rejected the connect400400+ * request.401401+ * @id: Communication identifier that received the REJECT event.402402+ * @reason: Value returned in the REJECT event status field.403403+ */404404+bool rdma_is_consumer_reject(struct rdma_cm_id *id, int reason);405405+406406+/**407407+ * rdma_consumer_reject_data - return the consumer reject private data and408408+ * length, if any.409409+ * @id: Communication identifier that received the REJECT event.410410+ * @ev: RDMA CM reject event.411411+ * @data_len: Pointer to the resulting length of the consumer data.412412+ */413413+const void *rdma_consumer_reject_data(struct rdma_cm_id *id,414414+ struct rdma_cm_event *ev, u8 *data_len);415415+391416#endif /* RDMA_CM_H */
···100100 trans->cm_connect_complete(conn, event);101101 break;102102103103+ case RDMA_CM_EVENT_REJECTED:104104+ rdsdebug("Connection rejected: %s\n",105105+ rdma_reject_msg(cm_id, event->status));106106+ /* FALLTHROUGH */103107 case RDMA_CM_EVENT_ADDR_ERROR:104108 case RDMA_CM_EVENT_ROUTE_ERROR:105109 case RDMA_CM_EVENT_CONNECT_ERROR:106110 case RDMA_CM_EVENT_UNREACHABLE:107107- case RDMA_CM_EVENT_REJECTED:108111 case RDMA_CM_EVENT_DEVICE_REMOVAL:109112 case RDMA_CM_EVENT_ADDR_CHANGE:110113 if (conn)