Lines Matching refs:iwqp
663 struct irdma_qp *iwqp; in irdma_event_connect_error() local
670 iwqp = cm_id->provider_data; in irdma_event_connect_error()
672 if (!iwqp || !iwqp->iwdev) in irdma_event_connect_error()
675 iwqp->cm_id = NULL; in irdma_event_connect_error()
1228 struct irdma_qp *iwqp; in irdma_handle_close_entry() local
1233 iwqp = (struct irdma_qp *)close_entry->sqbuf; in irdma_handle_close_entry()
1234 if (iwqp) { in irdma_handle_close_entry()
1235 spin_lock_irqsave(&iwqp->lock, flags); in irdma_handle_close_entry()
1236 if (iwqp->cm_id) { in irdma_handle_close_entry()
1237 iwqp->hw_tcp_state = IRDMA_TCP_STATE_CLOSED; in irdma_handle_close_entry()
1238 iwqp->hw_iwarp_state = IRDMA_QP_STATE_ERROR; in irdma_handle_close_entry()
1239 iwqp->last_aeq = IRDMA_AE_RESET_SENT; in irdma_handle_close_entry()
1240 iwqp->ibqp_state = IB_QPS_ERR; in irdma_handle_close_entry()
1241 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_handle_close_entry()
1242 irdma_cm_disconn(iwqp); in irdma_handle_close_entry()
1244 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_handle_close_entry()
2368 struct irdma_qp *iwqp; in irdma_destroy_connection() local
2397 iwqp = cm_node->iwqp; in irdma_destroy_connection()
2398 if (iwqp) { in irdma_destroy_connection()
2401 iwqp->cm_id = NULL; in irdma_destroy_connection()
2402 irdma_qp_rem_ref(&iwqp->ibqp); in irdma_destroy_connection()
2403 cm_node->iwqp = NULL; in irdma_destroy_connection()
2432 if (cm_node->iwqp) { in irdma_rem_ref_cm_node()
2433 cm_node->iwqp->cm_node = NULL; in irdma_rem_ref_cm_node()
2434 cm_node->iwqp->cm_id = NULL; in irdma_rem_ref_cm_node()
3320 struct irdma_qp *iwqp) in irdma_init_tcp_ctx() argument
3323 tcp_info->drop_ooo_seg = !iwqp->iwdev->iw_ooo; in irdma_init_tcp_ctx()
3365 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf, in irdma_init_tcp_ctx()
3377 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf, in irdma_init_tcp_ctx()
3389 static void irdma_cm_init_tsa_conn(struct irdma_qp *iwqp, in irdma_cm_init_tsa_conn() argument
3395 iwarp_info = &iwqp->iwarp_info; in irdma_cm_init_tsa_conn()
3396 ctx_info = &iwqp->ctx_info; in irdma_cm_init_tsa_conn()
3398 ctx_info->tcp_info = &iwqp->tcp_info; in irdma_cm_init_tsa_conn()
3399 ctx_info->send_cq_num = iwqp->iwscq->sc_cq.cq_uk.cq_id; in irdma_cm_init_tsa_conn()
3400 ctx_info->rcv_cq_num = iwqp->iwrcq->sc_cq.cq_uk.cq_id; in irdma_cm_init_tsa_conn()
3407 iwarp_info->pd_id = iwqp->iwpd->sc_pd.pd_id; in irdma_cm_init_tsa_conn()
3413 irdma_init_tcp_ctx(cm_node, &iwqp->tcp_info, iwqp); in irdma_cm_init_tsa_conn()
3416 iwarp_info->snd_mark_offset = (iwqp->tcp_info.snd_nxt & SNDMARKER_SEQNMASK) + in irdma_cm_init_tsa_conn()
3421 iwqp->tcp_info.tcp_state = IRDMA_TCP_STATE_ESTABLISHED; in irdma_cm_init_tsa_conn()
3422 iwqp->tcp_info.src_mac_addr_idx = iwqp->iwdev->mac_ip_table_idx; in irdma_cm_init_tsa_conn()
3429 irdma_sc_qp_setctx(&iwqp->sc_qp, iwqp->host_ctx.va, ctx_info); in irdma_cm_init_tsa_conn()
3440 void irdma_cm_disconn(struct irdma_qp *iwqp) in irdma_cm_disconn() argument
3442 struct irdma_device *iwdev = iwqp->iwdev; in irdma_cm_disconn()
3451 if (!iwdev->rf->qp_table[iwqp->ibqp.qp_num]) { in irdma_cm_disconn()
3455 iwqp->ibqp.qp_num); in irdma_cm_disconn()
3459 irdma_qp_add_ref(&iwqp->ibqp); in irdma_cm_disconn()
3462 work->iwqp = iwqp; in irdma_cm_disconn()
3471 static void irdma_qp_disconnect(struct irdma_qp *iwqp) in irdma_qp_disconnect() argument
3473 struct irdma_device *iwdev = iwqp->iwdev; in irdma_qp_disconnect()
3475 iwqp->active_conn = 0; in irdma_qp_disconnect()
3478 irdma_cm_close(iwqp->cm_node); in irdma_qp_disconnect()
3485 static void irdma_cm_disconn_true(struct irdma_qp *iwqp) in irdma_cm_disconn_true() argument
3489 struct irdma_sc_qp *qp = &iwqp->sc_qp; in irdma_cm_disconn_true()
3500 iwdev = iwqp->iwdev; in irdma_cm_disconn_true()
3501 spin_lock_irqsave(&iwqp->lock, flags); in irdma_cm_disconn_true()
3505 if (iwqp->flush_issued || iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_disconn_true()
3506 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3510 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3513 irdma_modify_qp_roce(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_disconn_true()
3514 irdma_ib_qp_event(iwqp, qp->event_type); in irdma_cm_disconn_true()
3518 cm_id = iwqp->cm_id; in irdma_cm_disconn_true()
3519 original_hw_tcp_state = iwqp->hw_tcp_state; in irdma_cm_disconn_true()
3520 original_ibqp_state = iwqp->ibqp_state; in irdma_cm_disconn_true()
3521 last_ae = iwqp->last_aeq; in irdma_cm_disconn_true()
3526 iwqp->cm_id = NULL; in irdma_cm_disconn_true()
3528 if (!iwqp->flush_issued) { in irdma_cm_disconn_true()
3529 iwqp->flush_issued = 1; in irdma_cm_disconn_true()
3546 iwqp->cm_id = NULL; in irdma_cm_disconn_true()
3548 if (!iwqp->flush_issued) { in irdma_cm_disconn_true()
3549 iwqp->flush_issued = 1; in irdma_cm_disconn_true()
3554 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3555 if (issue_flush && !iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_disconn_true()
3556 irdma_flush_wqes(iwqp, IRDMA_FLUSH_SQ | IRDMA_FLUSH_RQ | in irdma_cm_disconn_true()
3560 irdma_ib_qp_event(iwqp, qp->event_type); in irdma_cm_disconn_true()
3567 if (!iwqp->cm_node) { in irdma_cm_disconn_true()
3571 refcount_inc(&iwqp->cm_node->refcnt); in irdma_cm_disconn_true()
3576 err = irdma_send_cm_event(iwqp->cm_node, cm_id, in irdma_cm_disconn_true()
3585 cm_id->provider_data = iwqp; in irdma_cm_disconn_true()
3586 err = irdma_send_cm_event(iwqp->cm_node, cm_id, in irdma_cm_disconn_true()
3592 irdma_qp_disconnect(iwqp); in irdma_cm_disconn_true()
3594 irdma_rem_ref_cm_node(iwqp->cm_node); in irdma_cm_disconn_true()
3604 struct irdma_qp *iwqp = dwork->iwqp; in irdma_disconnect_worker() local
3607 irdma_cm_disconn_true(iwqp); in irdma_disconnect_worker()
3608 irdma_qp_rem_ref(&iwqp->ibqp); in irdma_disconnect_worker()
3615 void irdma_free_lsmm_rsrc(struct irdma_qp *iwqp) in irdma_free_lsmm_rsrc() argument
3619 iwdev = iwqp->iwdev; in irdma_free_lsmm_rsrc()
3621 if (iwqp->ietf_mem.va) { in irdma_free_lsmm_rsrc()
3622 if (iwqp->lsmm_mr) in irdma_free_lsmm_rsrc()
3623 iwdev->ibdev.ops.dereg_mr(iwqp->lsmm_mr, NULL); in irdma_free_lsmm_rsrc()
3625 iwqp->ietf_mem.size, iwqp->ietf_mem.va, in irdma_free_lsmm_rsrc()
3626 iwqp->ietf_mem.pa); in irdma_free_lsmm_rsrc()
3627 iwqp->ietf_mem.va = NULL; in irdma_free_lsmm_rsrc()
3639 struct irdma_qp *iwqp; in irdma_accept() local
3657 iwqp = to_iwqp(ibqp); in irdma_accept()
3658 iwdev = iwqp->iwdev; in irdma_accept()
3687 iwqp->ietf_mem.size = ALIGN(buf_len, 1); in irdma_accept()
3688 iwqp->ietf_mem.va = dma_alloc_coherent(dev->hw->device, in irdma_accept()
3689 iwqp->ietf_mem.size, in irdma_accept()
3690 &iwqp->ietf_mem.pa, GFP_KERNEL); in irdma_accept()
3691 if (!iwqp->ietf_mem.va) { in irdma_accept()
3697 accept.addr = iwqp->ietf_mem.va; in irdma_accept()
3702 if (cm_node->dev->ws_add(iwqp->sc_qp.vsi, cm_node->user_pri)) { in irdma_accept()
3706 iwqp->sc_qp.user_pri = cm_node->user_pri; in irdma_accept()
3707 irdma_qp_add_qos(&iwqp->sc_qp); in irdma_accept()
3709 iwpd = iwqp->iwpd; in irdma_accept()
3710 tagged_offset = (uintptr_t)iwqp->ietf_mem.va; in irdma_accept()
3711 ibmr = irdma_reg_phys_mr(&iwpd->ibpd, iwqp->ietf_mem.pa, buf_len, in irdma_accept()
3720 iwqp->lsmm_mr = ibmr; in irdma_accept()
3721 if (iwqp->page) in irdma_accept()
3722 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page); in irdma_accept()
3725 irdma_sc_send_lsmm(&iwqp->sc_qp, iwqp->ietf_mem.va, cm_node->lsmm_size, in irdma_accept()
3728 if (iwqp->page) in irdma_accept()
3729 kunmap_local(iwqp->sc_qp.qp_uk.sq_base); in irdma_accept()
3731 iwqp->cm_id = cm_id; in irdma_accept()
3734 cm_id->provider_data = iwqp; in irdma_accept()
3735 iwqp->active_conn = 0; in irdma_accept()
3736 iwqp->cm_node = cm_node; in irdma_accept()
3737 cm_node->iwqp = iwqp; in irdma_accept()
3738 irdma_cm_init_tsa_conn(iwqp, cm_node); in irdma_accept()
3739 irdma_qp_add_ref(&iwqp->ibqp); in irdma_accept()
3746 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_accept()
3748 wait_ret = wait_event_interruptible_timeout(iwqp->waitq, in irdma_accept()
3749 iwqp->rts_ae_rcvd, in irdma_accept()
3778 irdma_free_lsmm_rsrc(iwqp); in irdma_accept()
3820 struct irdma_qp *iwqp; in irdma_connect() local
3833 iwqp = to_iwqp(ibqp); in irdma_connect()
3834 if (!iwqp) in irdma_connect()
3836 iwdev = iwqp->iwdev; in irdma_connect()
3848 iwqp->active_conn = 1; in irdma_connect()
3849 iwqp->cm_id = NULL; in irdma_connect()
3850 cm_id->provider_data = iwqp; in irdma_connect()
3884 iwqp->sc_qp.vsi->dscp_map[irdma_tos2dscp(cm_info.tos)]; in irdma_connect()
3892 if (iwqp->sc_qp.dev->ws_add(iwqp->sc_qp.vsi, cm_info.user_pri)) in irdma_connect()
3894 iwqp->sc_qp.user_pri = cm_info.user_pri; in irdma_connect()
3895 irdma_qp_add_qos(&iwqp->sc_qp); in irdma_connect()
3923 iwqp->cm_node = cm_node; in irdma_connect()
3924 cm_node->iwqp = iwqp; in irdma_connect()
3925 iwqp->cm_id = cm_id; in irdma_connect()
3926 irdma_qp_add_ref(&iwqp->ibqp); in irdma_connect()
4135 struct irdma_qp *iwqp; in irdma_cm_event_connected() local
4147 iwqp = cm_id->provider_data; in irdma_cm_event_connected()
4148 iwdev = iwqp->iwdev; in irdma_cm_event_connected()
4150 if (iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_event_connected()
4155 irdma_cm_init_tsa_conn(iwqp, cm_node); in irdma_cm_event_connected()
4157 if (iwqp->page) in irdma_cm_event_connected()
4158 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page); in irdma_cm_event_connected()
4159 irdma_sc_send_rtt(&iwqp->sc_qp, read0); in irdma_cm_event_connected()
4160 if (iwqp->page) in irdma_cm_event_connected()
4161 kunmap_local(iwqp->sc_qp.qp_uk.sq_base); in irdma_cm_event_connected()
4165 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_event_connected()
4167 wait_ret = wait_event_interruptible_timeout(iwqp->waitq, in irdma_cm_event_connected()
4168 iwqp->rts_ae_rcvd, in irdma_cm_event_connected()
4184 iwqp->cm_id = NULL; in irdma_cm_event_connected()
4199 struct irdma_qp *iwqp; in irdma_cm_event_reset() local
4204 iwqp = cm_id->provider_data; in irdma_cm_event_reset()
4205 if (!iwqp) in irdma_cm_event_reset()
4210 iwqp->cm_id = NULL; in irdma_cm_event_reset()
4310 irdma_modify_qp(&cm_node->iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_teardown_connections()
4312 irdma_cm_disconn(cm_node->iwqp); in irdma_cm_teardown_connections()