Lines Matching defs:iwqp
663 struct irdma_qp *iwqp;
670 iwqp = cm_id->provider_data;
672 if (!iwqp || !iwqp->iwdev)
675 iwqp->cm_id = NULL;
1228 struct irdma_qp *iwqp;
1233 iwqp = (struct irdma_qp *)close_entry->sqbuf;
1234 if (iwqp) {
1235 spin_lock_irqsave(&iwqp->lock, flags);
1236 if (iwqp->cm_id) {
1237 iwqp->hw_tcp_state = IRDMA_TCP_STATE_CLOSED;
1238 iwqp->hw_iwarp_state = IRDMA_QP_STATE_ERROR;
1239 iwqp->last_aeq = IRDMA_AE_RESET_SENT;
1240 iwqp->ibqp_state = IB_QPS_ERR;
1241 spin_unlock_irqrestore(&iwqp->lock, flags);
1242 irdma_cm_disconn(iwqp);
1244 spin_unlock_irqrestore(&iwqp->lock, flags);
2367 struct irdma_qp *iwqp;
2396 iwqp = cm_node->iwqp;
2397 if (iwqp) {
2400 iwqp->cm_id = NULL;
2401 irdma_qp_rem_ref(&iwqp->ibqp);
2402 cm_node->iwqp = NULL;
2431 if (cm_node->iwqp) {
2432 cm_node->iwqp->cm_node = NULL;
2433 cm_node->iwqp->cm_id = NULL;
3315 * @iwqp: associate qp for the connection
3319 struct irdma_qp *iwqp)
3322 tcp_info->drop_ooo_seg = !iwqp->iwdev->iw_ooo;
3364 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf,
3376 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf,
3385 * @iwqp: associate qp for the connection
3388 static void irdma_cm_init_tsa_conn(struct irdma_qp *iwqp,
3394 iwarp_info = &iwqp->iwarp_info;
3395 ctx_info = &iwqp->ctx_info;
3397 ctx_info->tcp_info = &iwqp->tcp_info;
3398 ctx_info->send_cq_num = iwqp->iwscq->sc_cq.cq_uk.cq_id;
3399 ctx_info->rcv_cq_num = iwqp->iwrcq->sc_cq.cq_uk.cq_id;
3406 iwarp_info->pd_id = iwqp->iwpd->sc_pd.pd_id;
3412 irdma_init_tcp_ctx(cm_node, &iwqp->tcp_info, iwqp);
3415 iwarp_info->snd_mark_offset = (iwqp->tcp_info.snd_nxt & SNDMARKER_SEQNMASK) +
3420 iwqp->tcp_info.tcp_state = IRDMA_TCP_STATE_ESTABLISHED;
3421 iwqp->tcp_info.src_mac_addr_idx = iwqp->iwdev->mac_ip_table_idx;
3428 irdma_sc_qp_setctx(&iwqp->sc_qp, iwqp->host_ctx.va, ctx_info);
3437 * @iwqp: associated qp for the connection
3439 void irdma_cm_disconn(struct irdma_qp *iwqp)
3441 struct irdma_device *iwdev = iwqp->iwdev;
3450 if (!iwdev->rf->qp_table[iwqp->ibqp.qp_num]) {
3454 iwqp->ibqp.qp_num);
3458 irdma_qp_add_ref(&iwqp->ibqp);
3461 work->iwqp = iwqp;
3468 * @iwqp: associate qp for the connection
3470 static void irdma_qp_disconnect(struct irdma_qp *iwqp)
3472 struct irdma_device *iwdev = iwqp->iwdev;
3474 iwqp->active_conn = 0;
3477 irdma_cm_close(iwqp->cm_node);
3482 * @iwqp: associate qp for the connection
3484 static void irdma_cm_disconn_true(struct irdma_qp *iwqp)
3488 struct irdma_sc_qp *qp = &iwqp->sc_qp;
3499 iwdev = iwqp->iwdev;
3500 spin_lock_irqsave(&iwqp->lock, flags);
3504 if (iwqp->flush_issued || iwqp->sc_qp.qp_uk.destroy_pending) {
3505 spin_unlock_irqrestore(&iwqp->lock, flags);
3509 spin_unlock_irqrestore(&iwqp->lock, flags);
3512 irdma_modify_qp_roce(&iwqp->ibqp, &attr, IB_QP_STATE, NULL);
3513 irdma_ib_qp_event(iwqp, qp->event_type);
3517 cm_id = iwqp->cm_id;
3518 original_hw_tcp_state = iwqp->hw_tcp_state;
3519 original_ibqp_state = iwqp->ibqp_state;
3520 last_ae = iwqp->last_aeq;
3525 iwqp->cm_id = NULL;
3527 if (!iwqp->flush_issued) {
3528 iwqp->flush_issued = 1;
3545 iwqp->cm_id = NULL;
3547 if (!iwqp->flush_issued) {
3548 iwqp->flush_issued = 1;
3553 spin_unlock_irqrestore(&iwqp->lock, flags);
3554 if (issue_flush && !iwqp->sc_qp.qp_uk.destroy_pending) {
3555 irdma_flush_wqes(iwqp, IRDMA_FLUSH_SQ | IRDMA_FLUSH_RQ |
3559 irdma_ib_qp_event(iwqp, qp->event_type);
3566 if (!iwqp->cm_node) {
3570 refcount_inc(&iwqp->cm_node->refcnt);
3575 err = irdma_send_cm_event(iwqp->cm_node, cm_id,
3584 cm_id->provider_data = iwqp;
3585 err = irdma_send_cm_event(iwqp->cm_node, cm_id,
3591 irdma_qp_disconnect(iwqp);
3593 irdma_rem_ref_cm_node(iwqp->cm_node);
3603 struct irdma_qp *iwqp = dwork->iwqp;
3606 irdma_cm_disconn_true(iwqp);
3607 irdma_qp_rem_ref(&iwqp->ibqp);
3612 * @iwqp: associate qp for the connection
3614 void irdma_free_lsmm_rsrc(struct irdma_qp *iwqp)
3618 iwdev = iwqp->iwdev;
3620 if (iwqp->ietf_mem.va) {
3621 if (iwqp->lsmm_mr)
3622 iwdev->ibdev.ops.dereg_mr(iwqp->lsmm_mr, NULL);
3624 iwqp->ietf_mem.size, iwqp->ietf_mem.va,
3625 iwqp->ietf_mem.pa);
3626 iwqp->ietf_mem.va = NULL;
3638 struct irdma_qp *iwqp;
3656 iwqp = to_iwqp(ibqp);
3657 iwdev = iwqp->iwdev;
3686 iwqp->ietf_mem.size = ALIGN(buf_len, 1);
3687 iwqp->ietf_mem.va = dma_alloc_coherent(dev->hw->device,
3688 iwqp->ietf_mem.size,
3689 &iwqp->ietf_mem.pa, GFP_KERNEL);
3690 if (!iwqp->ietf_mem.va) {
3696 accept.addr = iwqp->ietf_mem.va;
3701 if (cm_node->dev->ws_add(iwqp->sc_qp.vsi, cm_node->user_pri)) {
3705 iwqp->sc_qp.user_pri = cm_node->user_pri;
3706 irdma_qp_add_qos(&iwqp->sc_qp);
3708 iwpd = iwqp->iwpd;
3709 tagged_offset = (uintptr_t)iwqp->ietf_mem.va;
3710 ibmr = irdma_reg_phys_mr(&iwpd->ibpd, iwqp->ietf_mem.pa, buf_len,
3719 iwqp->lsmm_mr = ibmr;
3720 if (iwqp->page)
3721 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page);
3724 irdma_sc_send_lsmm(&iwqp->sc_qp, iwqp->ietf_mem.va, cm_node->lsmm_size,
3727 if (iwqp->page)
3728 kunmap_local(iwqp->sc_qp.qp_uk.sq_base);
3730 iwqp->cm_id = cm_id;
3733 cm_id->provider_data = iwqp;
3734 iwqp->active_conn = 0;
3735 iwqp->cm_node = cm_node;
3736 cm_node->iwqp = iwqp;
3737 irdma_cm_init_tsa_conn(iwqp, cm_node);
3738 irdma_qp_add_ref(&iwqp->ibqp);
3745 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL);
3747 wait_ret = wait_event_interruptible_timeout(iwqp->waitq,
3748 iwqp->rts_ae_rcvd,
3777 irdma_free_lsmm_rsrc(iwqp);
3819 struct irdma_qp *iwqp;
3832 iwqp = to_iwqp(ibqp);
3833 if (!iwqp)
3835 iwdev = iwqp->iwdev;
3847 iwqp->active_conn = 1;
3848 iwqp->cm_id = NULL;
3849 cm_id->provider_data = iwqp;
3883 iwqp->sc_qp.vsi->dscp_map[irdma_tos2dscp(cm_info.tos)];
3891 if (iwqp->sc_qp.dev->ws_add(iwqp->sc_qp.vsi, cm_info.user_pri))
3893 iwqp->sc_qp.user_pri = cm_info.user_pri;
3894 irdma_qp_add_qos(&iwqp->sc_qp);
3922 iwqp->cm_node = cm_node;
3923 cm_node->iwqp = iwqp;
3924 iwqp->cm_id = cm_id;
3925 irdma_qp_add_ref(&iwqp->ibqp);
4134 struct irdma_qp *iwqp;
4146 iwqp = cm_id->provider_data;
4147 iwdev = iwqp->iwdev;
4149 if (iwqp->sc_qp.qp_uk.destroy_pending) {
4154 irdma_cm_init_tsa_conn(iwqp, cm_node);
4156 if (iwqp->page)
4157 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page);
4158 irdma_sc_send_rtt(&iwqp->sc_qp, read0);
4159 if (iwqp->page)
4160 kunmap_local(iwqp->sc_qp.qp_uk.sq_base);
4164 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL);
4166 wait_ret = wait_event_interruptible_timeout(iwqp->waitq,
4167 iwqp->rts_ae_rcvd,
4183 iwqp->cm_id = NULL;
4198 struct irdma_qp *iwqp;
4203 iwqp = cm_id->provider_data;
4204 if (!iwqp)
4209 iwqp->cm_id = NULL;
4309 irdma_modify_qp(&cm_node->iwqp->ibqp, &attr, IB_QP_STATE, NULL);
4311 irdma_cm_disconn(cm_node->iwqp);