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()
2318 struct irdma_qp *iwqp; in irdma_destroy_connection() local
2347 iwqp = cm_node->iwqp; in irdma_destroy_connection()
2348 if (iwqp) { in irdma_destroy_connection()
2351 iwqp->cm_id = NULL; in irdma_destroy_connection()
2352 irdma_qp_rem_ref(&iwqp->ibqp); in irdma_destroy_connection()
2353 cm_node->iwqp = NULL; in irdma_destroy_connection()
2382 if (cm_node->iwqp) { in irdma_rem_ref_cm_node()
2383 cm_node->iwqp->cm_node = NULL; in irdma_rem_ref_cm_node()
2384 cm_node->iwqp->cm_id = NULL; in irdma_rem_ref_cm_node()
3268 struct irdma_qp *iwqp) in irdma_init_tcp_ctx() argument
3271 tcp_info->drop_ooo_seg = !iwqp->iwdev->iw_ooo; in irdma_init_tcp_ctx()
3313 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf, in irdma_init_tcp_ctx()
3325 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf, in irdma_init_tcp_ctx()
3337 static void irdma_cm_init_tsa_conn(struct irdma_qp *iwqp, in irdma_cm_init_tsa_conn() argument
3343 iwarp_info = &iwqp->iwarp_info; in irdma_cm_init_tsa_conn()
3344 ctx_info = &iwqp->ctx_info; in irdma_cm_init_tsa_conn()
3346 ctx_info->tcp_info = &iwqp->tcp_info; in irdma_cm_init_tsa_conn()
3347 ctx_info->send_cq_num = iwqp->iwscq->sc_cq.cq_uk.cq_id; in irdma_cm_init_tsa_conn()
3348 ctx_info->rcv_cq_num = iwqp->iwrcq->sc_cq.cq_uk.cq_id; in irdma_cm_init_tsa_conn()
3355 iwarp_info->pd_id = iwqp->iwpd->sc_pd.pd_id; in irdma_cm_init_tsa_conn()
3361 irdma_init_tcp_ctx(cm_node, &iwqp->tcp_info, iwqp); in irdma_cm_init_tsa_conn()
3364 iwarp_info->snd_mark_offset = (iwqp->tcp_info.snd_nxt & SNDMARKER_SEQNMASK) + in irdma_cm_init_tsa_conn()
3369 iwqp->tcp_info.tcp_state = IRDMA_TCP_STATE_ESTABLISHED; in irdma_cm_init_tsa_conn()
3370 iwqp->tcp_info.src_mac_addr_idx = iwqp->iwdev->mac_ip_table_idx; in irdma_cm_init_tsa_conn()
3377 irdma_sc_qp_setctx(&iwqp->sc_qp, iwqp->host_ctx.va, ctx_info); in irdma_cm_init_tsa_conn()
3388 void irdma_cm_disconn(struct irdma_qp *iwqp) in irdma_cm_disconn() argument
3390 struct irdma_device *iwdev = iwqp->iwdev; in irdma_cm_disconn()
3399 if (!iwdev->rf->qp_table[iwqp->ibqp.qp_num]) { in irdma_cm_disconn()
3403 iwqp->ibqp.qp_num); in irdma_cm_disconn()
3407 irdma_qp_add_ref(&iwqp->ibqp); in irdma_cm_disconn()
3410 work->iwqp = iwqp; in irdma_cm_disconn()
3419 static void irdma_qp_disconnect(struct irdma_qp *iwqp) in irdma_qp_disconnect() argument
3421 struct irdma_device *iwdev = iwqp->iwdev; in irdma_qp_disconnect()
3423 iwqp->active_conn = 0; in irdma_qp_disconnect()
3426 irdma_cm_close(iwqp->cm_node); in irdma_qp_disconnect()
3433 static void irdma_cm_disconn_true(struct irdma_qp *iwqp) in irdma_cm_disconn_true() argument
3437 struct irdma_sc_qp *qp = &iwqp->sc_qp; in irdma_cm_disconn_true()
3448 iwdev = iwqp->iwdev; in irdma_cm_disconn_true()
3449 spin_lock_irqsave(&iwqp->lock, flags); in irdma_cm_disconn_true()
3453 if (iwqp->flush_issued || iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_disconn_true()
3454 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3458 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3461 irdma_modify_qp_roce(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_disconn_true()
3462 irdma_ib_qp_event(iwqp, qp->event_type); in irdma_cm_disconn_true()
3466 cm_id = iwqp->cm_id; in irdma_cm_disconn_true()
3467 original_hw_tcp_state = iwqp->hw_tcp_state; in irdma_cm_disconn_true()
3468 original_ibqp_state = iwqp->ibqp_state; in irdma_cm_disconn_true()
3469 last_ae = iwqp->last_aeq; in irdma_cm_disconn_true()
3474 iwqp->cm_id = NULL; in irdma_cm_disconn_true()
3476 if (!iwqp->flush_issued) { in irdma_cm_disconn_true()
3477 iwqp->flush_issued = 1; in irdma_cm_disconn_true()
3494 iwqp->cm_id = NULL; in irdma_cm_disconn_true()
3496 if (!iwqp->flush_issued) { in irdma_cm_disconn_true()
3497 iwqp->flush_issued = 1; in irdma_cm_disconn_true()
3502 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3503 if (issue_flush && !iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_disconn_true()
3504 irdma_flush_wqes(iwqp, IRDMA_FLUSH_SQ | IRDMA_FLUSH_RQ | in irdma_cm_disconn_true()
3508 irdma_ib_qp_event(iwqp, qp->event_type); in irdma_cm_disconn_true()
3515 if (!iwqp->cm_node) { in irdma_cm_disconn_true()
3519 refcount_inc(&iwqp->cm_node->refcnt); in irdma_cm_disconn_true()
3524 err = irdma_send_cm_event(iwqp->cm_node, cm_id, in irdma_cm_disconn_true()
3533 cm_id->provider_data = iwqp; in irdma_cm_disconn_true()
3534 err = irdma_send_cm_event(iwqp->cm_node, cm_id, in irdma_cm_disconn_true()
3540 irdma_qp_disconnect(iwqp); in irdma_cm_disconn_true()
3542 irdma_rem_ref_cm_node(iwqp->cm_node); in irdma_cm_disconn_true()
3552 struct irdma_qp *iwqp = dwork->iwqp; in irdma_disconnect_worker() local
3555 irdma_cm_disconn_true(iwqp); in irdma_disconnect_worker()
3556 irdma_qp_rem_ref(&iwqp->ibqp); in irdma_disconnect_worker()
3563 void irdma_free_lsmm_rsrc(struct irdma_qp *iwqp) in irdma_free_lsmm_rsrc() argument
3567 iwdev = iwqp->iwdev; in irdma_free_lsmm_rsrc()
3569 if (iwqp->ietf_mem.va) { in irdma_free_lsmm_rsrc()
3570 if (iwqp->lsmm_mr) in irdma_free_lsmm_rsrc()
3571 iwdev->ibdev.ops.dereg_mr(iwqp->lsmm_mr, NULL); in irdma_free_lsmm_rsrc()
3573 iwqp->ietf_mem.size, iwqp->ietf_mem.va, in irdma_free_lsmm_rsrc()
3574 iwqp->ietf_mem.pa); in irdma_free_lsmm_rsrc()
3575 iwqp->ietf_mem.va = NULL; in irdma_free_lsmm_rsrc()
3576 iwqp->ietf_mem.va = NULL; in irdma_free_lsmm_rsrc()
3588 struct irdma_qp *iwqp; in irdma_accept() local
3606 iwqp = to_iwqp(ibqp); in irdma_accept()
3607 iwdev = iwqp->iwdev; in irdma_accept()
3636 iwqp->ietf_mem.size = ALIGN(buf_len, 1); in irdma_accept()
3637 iwqp->ietf_mem.va = dma_alloc_coherent(dev->hw->device, in irdma_accept()
3638 iwqp->ietf_mem.size, in irdma_accept()
3639 &iwqp->ietf_mem.pa, GFP_KERNEL); in irdma_accept()
3640 if (!iwqp->ietf_mem.va) { in irdma_accept()
3646 accept.addr = iwqp->ietf_mem.va; in irdma_accept()
3651 if (cm_node->dev->ws_add(iwqp->sc_qp.vsi, cm_node->user_pri)) { in irdma_accept()
3655 iwqp->sc_qp.user_pri = cm_node->user_pri; in irdma_accept()
3656 irdma_qp_add_qos(&iwqp->sc_qp); in irdma_accept()
3658 iwpd = iwqp->iwpd; in irdma_accept()
3659 tagged_offset = (uintptr_t)iwqp->ietf_mem.va; in irdma_accept()
3660 ibmr = irdma_reg_phys_mr(&iwpd->ibpd, iwqp->ietf_mem.pa, buf_len, in irdma_accept()
3669 iwqp->lsmm_mr = ibmr; in irdma_accept()
3670 if (iwqp->page) in irdma_accept()
3671 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page); in irdma_accept()
3674 irdma_sc_send_lsmm(&iwqp->sc_qp, iwqp->ietf_mem.va, cm_node->lsmm_size, in irdma_accept()
3677 if (iwqp->page) in irdma_accept()
3678 kunmap_local(iwqp->sc_qp.qp_uk.sq_base); in irdma_accept()
3680 iwqp->cm_id = cm_id; in irdma_accept()
3683 cm_id->provider_data = iwqp; in irdma_accept()
3684 iwqp->active_conn = 0; in irdma_accept()
3685 iwqp->cm_node = cm_node; in irdma_accept()
3686 cm_node->iwqp = iwqp; in irdma_accept()
3687 irdma_cm_init_tsa_conn(iwqp, cm_node); in irdma_accept()
3688 irdma_qp_add_ref(&iwqp->ibqp); in irdma_accept()
3695 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_accept()
3697 wait_ret = wait_event_interruptible_timeout(iwqp->waitq, in irdma_accept()
3698 iwqp->rts_ae_rcvd, in irdma_accept()
3727 irdma_free_lsmm_rsrc(iwqp); in irdma_accept()
3769 struct irdma_qp *iwqp; in irdma_connect() local
3782 iwqp = to_iwqp(ibqp); in irdma_connect()
3783 if (!iwqp) in irdma_connect()
3785 iwdev = iwqp->iwdev; in irdma_connect()
3797 iwqp->active_conn = 1; in irdma_connect()
3798 iwqp->cm_id = NULL; in irdma_connect()
3799 cm_id->provider_data = iwqp; in irdma_connect()
3833 iwqp->sc_qp.vsi->dscp_map[irdma_tos2dscp(cm_info.tos)]; in irdma_connect()
3837 if (iwqp->sc_qp.dev->ws_add(iwqp->sc_qp.vsi, cm_info.user_pri)) in irdma_connect()
3839 iwqp->sc_qp.user_pri = cm_info.user_pri; in irdma_connect()
3840 irdma_qp_add_qos(&iwqp->sc_qp); in irdma_connect()
3868 iwqp->cm_node = cm_node; in irdma_connect()
3869 cm_node->iwqp = iwqp; in irdma_connect()
3870 iwqp->cm_id = cm_id; in irdma_connect()
3871 irdma_qp_add_ref(&iwqp->ibqp); in irdma_connect()
4074 struct irdma_qp *iwqp; in irdma_cm_event_connected() local
4086 iwqp = cm_id->provider_data; in irdma_cm_event_connected()
4087 iwdev = iwqp->iwdev; in irdma_cm_event_connected()
4089 if (iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_event_connected()
4094 irdma_cm_init_tsa_conn(iwqp, cm_node); in irdma_cm_event_connected()
4096 if (iwqp->page) in irdma_cm_event_connected()
4097 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page); in irdma_cm_event_connected()
4098 irdma_sc_send_rtt(&iwqp->sc_qp, read0); in irdma_cm_event_connected()
4099 if (iwqp->page) in irdma_cm_event_connected()
4100 kunmap_local(iwqp->sc_qp.qp_uk.sq_base); in irdma_cm_event_connected()
4104 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_event_connected()
4106 wait_ret = wait_event_interruptible_timeout(iwqp->waitq, in irdma_cm_event_connected()
4107 iwqp->rts_ae_rcvd, in irdma_cm_event_connected()
4123 iwqp->cm_id = NULL; in irdma_cm_event_connected()
4138 struct irdma_qp *iwqp; in irdma_cm_event_reset() local
4143 iwqp = cm_id->provider_data; in irdma_cm_event_reset()
4144 if (!iwqp) in irdma_cm_event_reset()
4149 iwqp->cm_id = NULL; in irdma_cm_event_reset()
4249 irdma_modify_qp(&cm_node->iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_teardown_connections()
4251 irdma_cm_disconn(cm_node->iwqp); in irdma_cm_teardown_connections()