Lines Matching refs:nesqp

99 static int nes_disconnect(struct nes_qp *nesqp, int abrupt);
776 struct nes_qp *nesqp = *nesqp_addr; in build_rdma0_msg() local
777 struct nes_hw_qp_wqe *wqe = &nesqp->hwqp.sq_vbase[0]; in build_rdma0_msg()
779 u64temp = (unsigned long)nesqp->nesuqp_addr; in build_rdma0_msg()
812 if (nesqp->sq_kmapped) { in build_rdma0_msg()
813 nesqp->sq_kmapped = 0; in build_rdma0_msg()
814 kunmap(nesqp->page); in build_rdma0_msg()
818 nesqp->nesqp_context->ird_ord_sizes &= cpu_to_le32(~(NES_QPCONTEXT_ORDIRD_LSMM_PRESENT | in build_rdma0_msg()
821 nesqp->skip_lsmm = 1; in build_rdma0_msg()
822 nesqp->hwqp.sq_tail = 0; in build_rdma0_msg()
923 struct nes_qp *nesqp; in handle_recv_entry() local
928 nesqp = (struct nes_qp *)recv_entry->skb; in handle_recv_entry()
929 if (nesqp) { in handle_recv_entry()
930 spin_lock_irqsave(&nesqp->lock, qplockflags); in handle_recv_entry()
931 if (nesqp->cm_id) { in handle_recv_entry()
935 "to do!!!\n", nesqp->hwqp.qp_id, cm_id, in handle_recv_entry()
936 atomic_read(&nesqp->refcount)); in handle_recv_entry()
937 nesqp->hw_tcp_state = NES_AEQE_TCP_STATE_CLOSED; in handle_recv_entry()
938 nesqp->last_aeq = NES_AEQE_AEID_RESET_SENT; in handle_recv_entry()
939 nesqp->ibqp_state = IB_QPS_ERR; in handle_recv_entry()
940 spin_unlock_irqrestore(&nesqp->lock, qplockflags); in handle_recv_entry()
941 nes_cm_disconn(nesqp); in handle_recv_entry()
943 spin_unlock_irqrestore(&nesqp->lock, qplockflags); in handle_recv_entry()
947 "to do!!!\n", nesqp->hwqp.qp_id, cm_id, in handle_recv_entry()
948 atomic_read(&nesqp->refcount)); in handle_recv_entry()
1696 struct nes_qp *nesqp; in rem_ref_cm_node() local
1735 nesqp = cm_node->nesqp; in rem_ref_cm_node()
1736 if (nesqp) { in rem_ref_cm_node()
1737 nesqp->cm_node = NULL; in rem_ref_cm_node()
1738 nes_rem_ref(&nesqp->ibqp); in rem_ref_cm_node()
1739 cm_node->nesqp = NULL; in rem_ref_cm_node()
2806 if (cm_node->nesqp->pau_mode) in mini_cm_recv_pkt()
2807 nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp); in mini_cm_recv_pkt()
2928 static int nes_cm_init_tsa_conn(struct nes_qp *nesqp, struct nes_cm_node *cm_node) in nes_cm_init_tsa_conn() argument
2932 if (!nesqp) in nes_cm_init_tsa_conn()
2935 nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_IPV4 | in nes_cm_init_tsa_conn()
2940 nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_WSCALE); in nes_cm_init_tsa_conn()
2942 nesqp->nesqp_context->misc2 |= cpu_to_le32(64 << NES_QPCONTEXT_MISC2_TTL_SHIFT); in nes_cm_init_tsa_conn()
2944 nesqp->nesqp_context->misc2 |= cpu_to_le32( in nes_cm_init_tsa_conn()
2947 nesqp->nesqp_context->mss |= cpu_to_le32(((u32)cm_node->tcp_cntxt.mss) << 16); in nes_cm_init_tsa_conn()
2949 nesqp->nesqp_context->tcp_state_flow_label |= cpu_to_le32( in nes_cm_init_tsa_conn()
2952 nesqp->nesqp_context->pd_index_wscale |= cpu_to_le32( in nes_cm_init_tsa_conn()
2956 nesqp->nesqp_context->pd_index_wscale |= cpu_to_le32( in nes_cm_init_tsa_conn()
2960 nesqp->nesqp_context->keepalive = cpu_to_le32(0x80); in nes_cm_init_tsa_conn()
2961 nesqp->nesqp_context->ts_recent = 0; in nes_cm_init_tsa_conn()
2962 nesqp->nesqp_context->ts_age = 0; in nes_cm_init_tsa_conn()
2963 nesqp->nesqp_context->snd_nxt = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2964 nesqp->nesqp_context->snd_wnd = cpu_to_le32(cm_node->tcp_cntxt.snd_wnd); in nes_cm_init_tsa_conn()
2965 nesqp->nesqp_context->rcv_nxt = cpu_to_le32(cm_node->tcp_cntxt.rcv_nxt); in nes_cm_init_tsa_conn()
2966 nesqp->nesqp_context->rcv_wnd = cpu_to_le32(cm_node->tcp_cntxt.rcv_wnd << in nes_cm_init_tsa_conn()
2968 nesqp->nesqp_context->snd_max = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2969 nesqp->nesqp_context->snd_una = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2970 nesqp->nesqp_context->srtt = 0; in nes_cm_init_tsa_conn()
2971 nesqp->nesqp_context->rttvar = cpu_to_le32(0x6); in nes_cm_init_tsa_conn()
2972 nesqp->nesqp_context->ssthresh = cpu_to_le32(0x3FFFC000); in nes_cm_init_tsa_conn()
2973 nesqp->nesqp_context->cwnd = cpu_to_le32(2 * cm_node->tcp_cntxt.mss); in nes_cm_init_tsa_conn()
2974 nesqp->nesqp_context->snd_wl1 = cpu_to_le32(cm_node->tcp_cntxt.rcv_nxt); in nes_cm_init_tsa_conn()
2975 nesqp->nesqp_context->snd_wl2 = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2976 nesqp->nesqp_context->max_snd_wnd = cpu_to_le32(cm_node->tcp_cntxt.max_snd_wnd); in nes_cm_init_tsa_conn()
2980 nesqp->hwqp.qp_id, le32_to_cpu(nesqp->nesqp_context->rcv_nxt), in nes_cm_init_tsa_conn()
2981 le32_to_cpu(nesqp->nesqp_context->snd_nxt), in nes_cm_init_tsa_conn()
2982 cm_node->tcp_cntxt.mss, le32_to_cpu(nesqp->nesqp_context->pd_index_wscale), in nes_cm_init_tsa_conn()
2983 le32_to_cpu(nesqp->nesqp_context->rcv_wnd), in nes_cm_init_tsa_conn()
2984 le32_to_cpu(nesqp->nesqp_context->misc)); in nes_cm_init_tsa_conn()
2985 nes_debug(NES_DBG_CM, " snd_wnd = 0x%08X.\n", le32_to_cpu(nesqp->nesqp_context->snd_wnd)); in nes_cm_init_tsa_conn()
2986 nes_debug(NES_DBG_CM, " snd_cwnd = 0x%08X.\n", le32_to_cpu(nesqp->nesqp_context->cwnd)); in nes_cm_init_tsa_conn()
2987 nes_debug(NES_DBG_CM, " max_swnd = 0x%08X.\n", le32_to_cpu(nesqp->nesqp_context->max_snd_wnd)); in nes_cm_init_tsa_conn()
2999 int nes_cm_disconn(struct nes_qp *nesqp) in nes_cm_disconn() argument
3007 nes_add_ref(&nesqp->ibqp); in nes_cm_disconn()
3008 work->nesqp = nesqp; in nes_cm_disconn()
3021 struct nes_qp *nesqp = dwork->nesqp; in nes_disconnect_worker() local
3025 nesqp->last_aeq, nesqp->hwqp.qp_id); in nes_disconnect_worker()
3026 nes_cm_disconn_true(nesqp); in nes_disconnect_worker()
3027 nes_rem_ref(&nesqp->ibqp); in nes_disconnect_worker()
3034 static int nes_cm_disconn_true(struct nes_qp *nesqp) in nes_cm_disconn_true() argument
3051 if (!nesqp) { in nes_cm_disconn_true()
3056 spin_lock_irqsave(&nesqp->lock, flags); in nes_cm_disconn_true()
3057 cm_id = nesqp->cm_id; in nes_cm_disconn_true()
3061 nesqp->hwqp.qp_id); in nes_cm_disconn_true()
3062 spin_unlock_irqrestore(&nesqp->lock, flags); in nes_cm_disconn_true()
3066 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_cm_disconn_true()
3067 nes_debug(NES_DBG_CM, "Disconnecting QP%u\n", nesqp->hwqp.qp_id); in nes_cm_disconn_true()
3069 original_hw_tcp_state = nesqp->hw_tcp_state; in nes_cm_disconn_true()
3070 original_ibqp_state = nesqp->ibqp_state; in nes_cm_disconn_true()
3071 last_ae = nesqp->last_aeq; in nes_cm_disconn_true()
3073 if (nesqp->term_flags) { in nes_cm_disconn_true()
3076 nesqp->cm_id = NULL; in nes_cm_disconn_true()
3077 del_timer(&nesqp->terminate_timer); in nes_cm_disconn_true()
3078 if (nesqp->flush_issued == 0) { in nes_cm_disconn_true()
3079 nesqp->flush_issued = 1; in nes_cm_disconn_true()
3095 nesqp->cm_id = NULL; in nes_cm_disconn_true()
3096 if (nesqp->flush_issued == 0) { in nes_cm_disconn_true()
3097 nesqp->flush_issued = 1; in nes_cm_disconn_true()
3102 spin_unlock_irqrestore(&nesqp->lock, flags); in nes_cm_disconn_true()
3104 if ((issue_flush) && (nesqp->destroyed == 0)) { in nes_cm_disconn_true()
3106 if (nesqp->hw_iwarp_state >= NES_AEQE_IWARP_STATE_TERMINATE) in nes_cm_disconn_true()
3108 flush_wqes(nesvnic->nesdev, nesqp, flush_q, 1); in nes_cm_disconn_true()
3110 if (nesqp->term_flags) { in nes_cm_disconn_true()
3111 ibevent.device = nesqp->ibqp.device; in nes_cm_disconn_true()
3112 ibevent.event = nesqp->terminate_eventtype; in nes_cm_disconn_true()
3113 ibevent.element.qp = &nesqp->ibqp; in nes_cm_disconn_true()
3114 if (nesqp->ibqp.event_handler) in nes_cm_disconn_true()
3115 nesqp->ibqp.event_handler(&ibevent, nesqp->ibqp.qp_context); in nes_cm_disconn_true()
3132 nesqp->hwqp.qp_id, nesqp->hwqp.sq_head, in nes_cm_disconn_true()
3133 nesqp->hwqp.sq_tail, cm_id, in nes_cm_disconn_true()
3134 atomic_read(&nesqp->refcount)); in nes_cm_disconn_true()
3144 nes_disconnect(nesqp, 1); in nes_cm_disconn_true()
3146 cm_id->provider_data = nesqp; in nes_cm_disconn_true()
3171 static int nes_disconnect(struct nes_qp *nesqp, int abrupt) in nes_disconnect() argument
3178 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_disconnect()
3188 if (nesqp->active_conn) { in nes_disconnect()
3191 nesqp->active_conn = 0; in nes_disconnect()
3194 if (nesqp->ietf_frame) { in nes_disconnect()
3195 if (nesqp->lsmm_mr) in nes_disconnect()
3196 nesibdev->ibdev.dereg_mr(nesqp->lsmm_mr); in nes_disconnect()
3198 nesqp->private_data_len + nesqp->ietf_frame_size, in nes_disconnect()
3199 nesqp->ietf_frame, nesqp->ietf_frame_pbase); in nes_disconnect()
3204 if (nesqp->cm_node) { in nes_disconnect()
3207 g_cm_core->api->close(g_cm_core, nesqp->cm_node); in nes_disconnect()
3221 struct nes_qp *nesqp; in nes_accept() local
3252 nesqp = to_nesqp(ibqp); in nes_accept()
3253 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_accept()
3275 nesqp->cm_node = (void *)cm_node; in nes_accept()
3276 cm_node->nesqp = nesqp; in nes_accept()
3280 nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener); in nes_accept()
3286 nesqp->ietf_frame_size = sizeof(struct ietf_mpa_v2); in nes_accept()
3288 nesqp->ietf_frame = pci_alloc_consistent(nesdev->pcidev, in nes_accept()
3289 nesqp->ietf_frame_size + conn_param->private_data_len, in nes_accept()
3290 &nesqp->ietf_frame_pbase); in nes_accept()
3292 if (!nesqp->ietf_frame) { in nes_accept()
3296 mpa_v2_frame = (struct ietf_mpa_v2 *)nesqp->ietf_frame; in nes_accept()
3309 cm_build_mpa_frame(cm_node, start_buff, &buff_len, nesqp->ietf_frame, MPA_KEY_REPLY); in nes_accept()
3310 nesqp->private_data_len = conn_param->private_data_len; in nes_accept()
3313 wqe = &nesqp->hwqp.sq_vbase[0]; in nes_accept()
3316 u64temp = (unsigned long)nesqp; in nes_accept()
3318 nespd = nesqp->nespd; in nes_accept()
3319 ibphysbuf.addr = nesqp->ietf_frame_pbase + mpa_frame_offset; in nes_accept()
3331 nesqp->private_data_len + nesqp->ietf_frame_size, in nes_accept()
3332 nesqp->ietf_frame, nesqp->ietf_frame_pbase); in nes_accept()
3338 nesqp->lsmm_mr = ibmr; in nes_accept()
3355 if (nesqp->sq_kmapped) { in nes_accept()
3356 nesqp->sq_kmapped = 0; in nes_accept()
3357 kunmap(nesqp->page); in nes_accept()
3360 nesqp->nesqp_context->ird_ord_sizes |= in nes_accept()
3364 nesqp->nesqp_context->ird_ord_sizes |= in nes_accept()
3367 nesqp->skip_lsmm = 1; in nes_accept()
3370 nesqp->cm_id = cm_id; in nes_accept()
3374 cm_id->provider_data = nesqp; in nes_accept()
3375 nesqp->active_conn = 0; in nes_accept()
3381 nes_cm_init_tsa_conn(nesqp, cm_node); in nes_accept()
3383 nesqp->nesqp_context->tcpPorts[0] = in nes_accept()
3385 nesqp->nesqp_context->tcpPorts[1] = in nes_accept()
3388 nesqp->nesqp_context->ip0 = cpu_to_le32(cm_node->mapped_rem_addr); in nes_accept()
3390 nesqp->nesqp_context->misc2 |= cpu_to_le32( in nes_accept()
3394 nesqp->nesqp_context->arp_index_vlan |= in nes_accept()
3396 le32_to_cpu(nesqp->nesqp_context->ip0), NULL, in nes_accept()
3399 nesqp->nesqp_context->ts_val_delta = cpu_to_le32( in nes_accept()
3402 nesqp->nesqp_context->ird_index = cpu_to_le32(nesqp->hwqp.qp_id); in nes_accept()
3404 nesqp->nesqp_context->ird_ord_sizes |= cpu_to_le32( in nes_accept()
3406 nesqp->nesqp_context->ird_ord_sizes |= in nes_accept()
3418 nesqp->hte_index = cpu_to_be32(crc_value ^ 0xffffffff); in nes_accept()
3420 nesqp->hte_index, nesqp->hte_index & adapter->hte_index_mask); in nes_accept()
3422 nesqp->hte_index &= adapter->hte_index_mask; in nes_accept()
3423 nesqp->nesqp_context->hte_index = cpu_to_le32(nesqp->hte_index); in nes_accept()
3429 "private data length=%u.\n", nesqp->hwqp.qp_id, in nes_accept()
3432 le32_to_cpu(nesqp->nesqp_context->rcv_nxt), in nes_accept()
3433 le32_to_cpu(nesqp->nesqp_context->snd_nxt), in nes_accept()
3438 nes_add_ref(&nesqp->ibqp); in nes_accept()
3442 cm_event.provider_data = (void *)nesqp; in nes_accept()
3452 nes_modify_qp(&nesqp->ibqp, &attr, IB_QP_STATE, NULL); in nes_accept()
3455 nesqp->private_data_len; in nes_accept()
3508 struct nes_qp *nesqp; in nes_connect() local
3525 nesqp = to_nesqp(ibqp); in nes_connect()
3526 if (!nesqp) in nes_connect()
3528 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_connect()
3539 "0x%08X:0x%04X, local = 0x%08X:0x%04X.\n", nesqp->hwqp.qp_id, in nes_connect()
3545 nesqp->active_conn = 1; in nes_connect()
3548 nesqp->cm_id = cm_id; in nes_connect()
3549 cm_id->provider_data = nesqp; in nes_connect()
3550 nesqp->private_data_len = conn_param->private_data_len; in nes_connect()
3622 nesqp->cm_node = cm_node; in nes_connect()
3623 cm_node->nesqp = nesqp; in nes_connect()
3624 nes_add_ref(&nesqp->ibqp); in nes_connect()
3769 struct nes_qp *nesqp; in cm_event_connected() local
3788 nesqp = (struct nes_qp *)cm_id->provider_data; in cm_event_connected()
3789 nesvnic = to_nesvnic(nesqp->ibqp.device); in cm_event_connected()
3796 if (nesqp->destroyed) in cm_event_connected()
3801 nesqp->hwqp.qp_id, ntohl(raddr->sin_addr.s_addr), in cm_event_connected()
3804 nes_cm_init_tsa_conn(nesqp, cm_node); in cm_event_connected()
3807 nesqp->nesqp_context->tcpPorts[0] = in cm_event_connected()
3809 nesqp->nesqp_context->tcpPorts[1] = in cm_event_connected()
3811 nesqp->nesqp_context->ip0 = cpu_to_le32(cm_node->mapped_rem_addr); in cm_event_connected()
3813 nesqp->nesqp_context->misc2 |= cpu_to_le32( in cm_event_connected()
3816 nesqp->nesqp_context->arp_index_vlan |= cpu_to_le32( in cm_event_connected()
3818 le32_to_cpu(nesqp->nesqp_context->ip0), in cm_event_connected()
3820 nesqp->nesqp_context->ts_val_delta = cpu_to_le32( in cm_event_connected()
3822 nesqp->nesqp_context->ird_index = cpu_to_le32(nesqp->hwqp.qp_id); in cm_event_connected()
3823 nesqp->nesqp_context->ird_ord_sizes |= in cm_event_connected()
3826 nesqp->nesqp_context->ird_ord_sizes |= in cm_event_connected()
3832 build_rdma0_msg(cm_node, &nesqp); in cm_event_connected()
3835 (1 << 24) | 0x00800000 | nesqp->hwqp.qp_id); in cm_event_connected()
3847 nesqp->hte_index = cpu_to_be32(crc_value ^ 0xffffffff); in cm_event_connected()
3849 nesqp->hte_index, nesqp->hte_index & nesadapter->hte_index_mask); in cm_event_connected()
3851 nesqp->hte_index &= nesadapter->hte_index_mask; in cm_event_connected()
3852 nesqp->nesqp_context->hte_index = cpu_to_le32(nesqp->hte_index); in cm_event_connected()
3854 nesqp->ietf_frame = &cm_node->mpa_frame; in cm_event_connected()
3855 nesqp->private_data_len = (u8)cm_node->mpa_frame_size; in cm_event_connected()
3879 nes_modify_qp(&nesqp->ibqp, &attr, IB_QP_STATE, NULL); in cm_event_connected()
3882 "%lu\n", nesqp->hwqp.qp_id, jiffies); in cm_event_connected()
3893 struct nes_qp *nesqp; in cm_event_connect_error() local
3907 nesqp = cm_id->provider_data; in cm_event_connect_error()
3909 if (!nesqp) in cm_event_connect_error()
3914 nesqp->cm_id = NULL; in cm_event_connect_error()
3952 struct nes_qp *nesqp; in cm_event_reset() local
3967 nesqp = cm_id->provider_data; in cm_event_reset()
3968 if (!nesqp) in cm_event_reset()
3971 nesqp->cm_id = NULL; in cm_event_reset()