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()
2315 struct irdma_qp *iwqp; in irdma_destroy_connection() local
2344 iwqp = cm_node->iwqp; in irdma_destroy_connection()
2345 if (iwqp) { in irdma_destroy_connection()
2348 iwqp->cm_id = NULL; in irdma_destroy_connection()
2349 irdma_qp_rem_ref(&iwqp->ibqp); in irdma_destroy_connection()
2350 cm_node->iwqp = NULL; in irdma_destroy_connection()
2379 if (cm_node->iwqp) { in irdma_rem_ref_cm_node()
2380 cm_node->iwqp->cm_node = NULL; in irdma_rem_ref_cm_node()
2381 cm_node->iwqp->cm_id = NULL; in irdma_rem_ref_cm_node()
3265 struct irdma_qp *iwqp) in irdma_init_tcp_ctx() argument
3268 tcp_info->drop_ooo_seg = !iwqp->iwdev->iw_ooo; in irdma_init_tcp_ctx()
3310 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf, in irdma_init_tcp_ctx()
3322 tcp_info->arp_idx = (u16)irdma_arp_table(iwqp->iwdev->rf, in irdma_init_tcp_ctx()
3334 static void irdma_cm_init_tsa_conn(struct irdma_qp *iwqp, in irdma_cm_init_tsa_conn() argument
3340 iwarp_info = &iwqp->iwarp_info; in irdma_cm_init_tsa_conn()
3341 ctx_info = &iwqp->ctx_info; in irdma_cm_init_tsa_conn()
3343 ctx_info->tcp_info = &iwqp->tcp_info; in irdma_cm_init_tsa_conn()
3344 ctx_info->send_cq_num = iwqp->iwscq->sc_cq.cq_uk.cq_id; in irdma_cm_init_tsa_conn()
3345 ctx_info->rcv_cq_num = iwqp->iwrcq->sc_cq.cq_uk.cq_id; in irdma_cm_init_tsa_conn()
3352 iwarp_info->pd_id = iwqp->iwpd->sc_pd.pd_id; in irdma_cm_init_tsa_conn()
3358 irdma_init_tcp_ctx(cm_node, &iwqp->tcp_info, iwqp); in irdma_cm_init_tsa_conn()
3361 iwarp_info->snd_mark_offset = (iwqp->tcp_info.snd_nxt & SNDMARKER_SEQNMASK) + in irdma_cm_init_tsa_conn()
3366 iwqp->tcp_info.tcp_state = IRDMA_TCP_STATE_ESTABLISHED; in irdma_cm_init_tsa_conn()
3367 iwqp->tcp_info.src_mac_addr_idx = iwqp->iwdev->mac_ip_table_idx; in irdma_cm_init_tsa_conn()
3374 irdma_sc_qp_setctx(&iwqp->sc_qp, iwqp->host_ctx.va, ctx_info); in irdma_cm_init_tsa_conn()
3385 void irdma_cm_disconn(struct irdma_qp *iwqp) in irdma_cm_disconn() argument
3387 struct irdma_device *iwdev = iwqp->iwdev; in irdma_cm_disconn()
3396 if (!iwdev->rf->qp_table[iwqp->ibqp.qp_num]) { in irdma_cm_disconn()
3400 iwqp->ibqp.qp_num); in irdma_cm_disconn()
3404 irdma_qp_add_ref(&iwqp->ibqp); in irdma_cm_disconn()
3407 work->iwqp = iwqp; in irdma_cm_disconn()
3416 static void irdma_qp_disconnect(struct irdma_qp *iwqp) in irdma_qp_disconnect() argument
3418 struct irdma_device *iwdev = iwqp->iwdev; in irdma_qp_disconnect()
3420 iwqp->active_conn = 0; in irdma_qp_disconnect()
3423 irdma_cm_close(iwqp->cm_node); in irdma_qp_disconnect()
3430 static void irdma_cm_disconn_true(struct irdma_qp *iwqp) in irdma_cm_disconn_true() argument
3434 struct irdma_sc_qp *qp = &iwqp->sc_qp; in irdma_cm_disconn_true()
3445 iwdev = iwqp->iwdev; in irdma_cm_disconn_true()
3446 spin_lock_irqsave(&iwqp->lock, flags); in irdma_cm_disconn_true()
3450 if (iwqp->flush_issued || iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_disconn_true()
3451 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3455 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3458 irdma_modify_qp_roce(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_disconn_true()
3459 irdma_ib_qp_event(iwqp, qp->event_type); in irdma_cm_disconn_true()
3463 cm_id = iwqp->cm_id; in irdma_cm_disconn_true()
3464 original_hw_tcp_state = iwqp->hw_tcp_state; in irdma_cm_disconn_true()
3465 original_ibqp_state = iwqp->ibqp_state; in irdma_cm_disconn_true()
3466 last_ae = iwqp->last_aeq; in irdma_cm_disconn_true()
3471 iwqp->cm_id = NULL; in irdma_cm_disconn_true()
3473 if (!iwqp->flush_issued) { in irdma_cm_disconn_true()
3474 iwqp->flush_issued = 1; in irdma_cm_disconn_true()
3491 iwqp->cm_id = NULL; in irdma_cm_disconn_true()
3493 if (!iwqp->flush_issued) { in irdma_cm_disconn_true()
3494 iwqp->flush_issued = 1; in irdma_cm_disconn_true()
3499 spin_unlock_irqrestore(&iwqp->lock, flags); in irdma_cm_disconn_true()
3500 if (issue_flush && !iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_disconn_true()
3501 irdma_flush_wqes(iwqp, IRDMA_FLUSH_SQ | IRDMA_FLUSH_RQ | in irdma_cm_disconn_true()
3505 irdma_ib_qp_event(iwqp, qp->event_type); in irdma_cm_disconn_true()
3512 if (!iwqp->cm_node) { in irdma_cm_disconn_true()
3516 refcount_inc(&iwqp->cm_node->refcnt); in irdma_cm_disconn_true()
3521 err = irdma_send_cm_event(iwqp->cm_node, cm_id, in irdma_cm_disconn_true()
3530 cm_id->provider_data = iwqp; in irdma_cm_disconn_true()
3531 err = irdma_send_cm_event(iwqp->cm_node, cm_id, in irdma_cm_disconn_true()
3537 irdma_qp_disconnect(iwqp); in irdma_cm_disconn_true()
3539 irdma_rem_ref_cm_node(iwqp->cm_node); in irdma_cm_disconn_true()
3549 struct irdma_qp *iwqp = dwork->iwqp; in irdma_disconnect_worker() local
3552 irdma_cm_disconn_true(iwqp); in irdma_disconnect_worker()
3553 irdma_qp_rem_ref(&iwqp->ibqp); in irdma_disconnect_worker()
3560 void irdma_free_lsmm_rsrc(struct irdma_qp *iwqp) in irdma_free_lsmm_rsrc() argument
3564 iwdev = iwqp->iwdev; in irdma_free_lsmm_rsrc()
3566 if (iwqp->ietf_mem.va) { in irdma_free_lsmm_rsrc()
3567 if (iwqp->lsmm_mr) in irdma_free_lsmm_rsrc()
3568 iwdev->ibdev.ops.dereg_mr(iwqp->lsmm_mr, NULL); in irdma_free_lsmm_rsrc()
3570 iwqp->ietf_mem.size, iwqp->ietf_mem.va, in irdma_free_lsmm_rsrc()
3571 iwqp->ietf_mem.pa); in irdma_free_lsmm_rsrc()
3572 iwqp->ietf_mem.va = NULL; in irdma_free_lsmm_rsrc()
3573 iwqp->ietf_mem.va = NULL; in irdma_free_lsmm_rsrc()
3585 struct irdma_qp *iwqp; in irdma_accept() local
3603 iwqp = to_iwqp(ibqp); in irdma_accept()
3604 iwdev = iwqp->iwdev; in irdma_accept()
3633 iwqp->ietf_mem.size = ALIGN(buf_len, 1); in irdma_accept()
3634 iwqp->ietf_mem.va = dma_alloc_coherent(dev->hw->device, in irdma_accept()
3635 iwqp->ietf_mem.size, in irdma_accept()
3636 &iwqp->ietf_mem.pa, GFP_KERNEL); in irdma_accept()
3637 if (!iwqp->ietf_mem.va) { in irdma_accept()
3643 accept.addr = iwqp->ietf_mem.va; in irdma_accept()
3648 if (cm_node->dev->ws_add(iwqp->sc_qp.vsi, cm_node->user_pri)) { in irdma_accept()
3652 iwqp->sc_qp.user_pri = cm_node->user_pri; in irdma_accept()
3653 irdma_qp_add_qos(&iwqp->sc_qp); in irdma_accept()
3655 iwpd = iwqp->iwpd; in irdma_accept()
3656 tagged_offset = (uintptr_t)iwqp->ietf_mem.va; in irdma_accept()
3657 ibmr = irdma_reg_phys_mr(&iwpd->ibpd, iwqp->ietf_mem.pa, buf_len, in irdma_accept()
3666 iwqp->lsmm_mr = ibmr; in irdma_accept()
3667 if (iwqp->page) in irdma_accept()
3668 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page); in irdma_accept()
3671 irdma_sc_send_lsmm(&iwqp->sc_qp, iwqp->ietf_mem.va, cm_node->lsmm_size, in irdma_accept()
3674 if (iwqp->page) in irdma_accept()
3675 kunmap_local(iwqp->sc_qp.qp_uk.sq_base); in irdma_accept()
3677 iwqp->cm_id = cm_id; in irdma_accept()
3680 cm_id->provider_data = iwqp; in irdma_accept()
3681 iwqp->active_conn = 0; in irdma_accept()
3682 iwqp->cm_node = cm_node; in irdma_accept()
3683 cm_node->iwqp = iwqp; in irdma_accept()
3684 irdma_cm_init_tsa_conn(iwqp, cm_node); in irdma_accept()
3685 irdma_qp_add_ref(&iwqp->ibqp); in irdma_accept()
3692 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_accept()
3694 wait_ret = wait_event_interruptible_timeout(iwqp->waitq, in irdma_accept()
3695 iwqp->rts_ae_rcvd, in irdma_accept()
3724 irdma_free_lsmm_rsrc(iwqp); in irdma_accept()
3766 struct irdma_qp *iwqp; in irdma_connect() local
3779 iwqp = to_iwqp(ibqp); in irdma_connect()
3780 if (!iwqp) in irdma_connect()
3782 iwdev = iwqp->iwdev; in irdma_connect()
3794 iwqp->active_conn = 1; in irdma_connect()
3795 iwqp->cm_id = NULL; in irdma_connect()
3796 cm_id->provider_data = iwqp; in irdma_connect()
3830 iwqp->sc_qp.vsi->dscp_map[irdma_tos2dscp(cm_info.tos)]; in irdma_connect()
3834 if (iwqp->sc_qp.dev->ws_add(iwqp->sc_qp.vsi, cm_info.user_pri)) in irdma_connect()
3836 iwqp->sc_qp.user_pri = cm_info.user_pri; in irdma_connect()
3837 irdma_qp_add_qos(&iwqp->sc_qp); in irdma_connect()
3865 iwqp->cm_node = cm_node; in irdma_connect()
3866 cm_node->iwqp = iwqp; in irdma_connect()
3867 iwqp->cm_id = cm_id; in irdma_connect()
3868 irdma_qp_add_ref(&iwqp->ibqp); in irdma_connect()
4071 struct irdma_qp *iwqp; in irdma_cm_event_connected() local
4083 iwqp = cm_id->provider_data; in irdma_cm_event_connected()
4084 iwdev = iwqp->iwdev; in irdma_cm_event_connected()
4086 if (iwqp->sc_qp.qp_uk.destroy_pending) { in irdma_cm_event_connected()
4091 irdma_cm_init_tsa_conn(iwqp, cm_node); in irdma_cm_event_connected()
4093 if (iwqp->page) in irdma_cm_event_connected()
4094 iwqp->sc_qp.qp_uk.sq_base = kmap_local_page(iwqp->page); in irdma_cm_event_connected()
4095 irdma_sc_send_rtt(&iwqp->sc_qp, read0); in irdma_cm_event_connected()
4096 if (iwqp->page) in irdma_cm_event_connected()
4097 kunmap_local(iwqp->sc_qp.qp_uk.sq_base); in irdma_cm_event_connected()
4101 irdma_modify_qp(&iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_event_connected()
4103 wait_ret = wait_event_interruptible_timeout(iwqp->waitq, in irdma_cm_event_connected()
4104 iwqp->rts_ae_rcvd, in irdma_cm_event_connected()
4120 iwqp->cm_id = NULL; in irdma_cm_event_connected()
4135 struct irdma_qp *iwqp; in irdma_cm_event_reset() local
4140 iwqp = cm_id->provider_data; in irdma_cm_event_reset()
4141 if (!iwqp) in irdma_cm_event_reset()
4146 iwqp->cm_id = NULL; in irdma_cm_event_reset()
4246 irdma_modify_qp(&cm_node->iwqp->ibqp, &attr, IB_QP_STATE, NULL); in irdma_cm_teardown_connections()
4248 irdma_cm_disconn(cm_node->iwqp); in irdma_cm_teardown_connections()