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()
1693 struct nes_qp *nesqp; in rem_ref_cm_node() local
1732 nesqp = cm_node->nesqp; in rem_ref_cm_node()
1733 if (nesqp) { in rem_ref_cm_node()
1734 nesqp->cm_node = NULL; in rem_ref_cm_node()
1735 nes_rem_ref(&nesqp->ibqp); in rem_ref_cm_node()
1736 cm_node->nesqp = NULL; in rem_ref_cm_node()
2803 if (cm_node->nesqp->pau_mode) in mini_cm_recv_pkt()
2804 nes_queue_mgt_skbs(skb, nesvnic, cm_node->nesqp); in mini_cm_recv_pkt()
2925 static int nes_cm_init_tsa_conn(struct nes_qp *nesqp, struct nes_cm_node *cm_node) in nes_cm_init_tsa_conn() argument
2929 if (!nesqp) in nes_cm_init_tsa_conn()
2932 nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_IPV4 | in nes_cm_init_tsa_conn()
2937 nesqp->nesqp_context->misc |= cpu_to_le32(NES_QPCONTEXT_MISC_WSCALE); in nes_cm_init_tsa_conn()
2939 nesqp->nesqp_context->misc2 |= cpu_to_le32(64 << NES_QPCONTEXT_MISC2_TTL_SHIFT); in nes_cm_init_tsa_conn()
2941 nesqp->nesqp_context->mss |= cpu_to_le32(((u32)cm_node->tcp_cntxt.mss) << 16); in nes_cm_init_tsa_conn()
2943 nesqp->nesqp_context->tcp_state_flow_label |= cpu_to_le32( in nes_cm_init_tsa_conn()
2946 nesqp->nesqp_context->pd_index_wscale |= cpu_to_le32( in nes_cm_init_tsa_conn()
2950 nesqp->nesqp_context->pd_index_wscale |= cpu_to_le32( in nes_cm_init_tsa_conn()
2954 nesqp->nesqp_context->keepalive = cpu_to_le32(0x80); in nes_cm_init_tsa_conn()
2955 nesqp->nesqp_context->ts_recent = 0; in nes_cm_init_tsa_conn()
2956 nesqp->nesqp_context->ts_age = 0; in nes_cm_init_tsa_conn()
2957 nesqp->nesqp_context->snd_nxt = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2958 nesqp->nesqp_context->snd_wnd = cpu_to_le32(cm_node->tcp_cntxt.snd_wnd); in nes_cm_init_tsa_conn()
2959 nesqp->nesqp_context->rcv_nxt = cpu_to_le32(cm_node->tcp_cntxt.rcv_nxt); in nes_cm_init_tsa_conn()
2960 nesqp->nesqp_context->rcv_wnd = cpu_to_le32(cm_node->tcp_cntxt.rcv_wnd << in nes_cm_init_tsa_conn()
2962 nesqp->nesqp_context->snd_max = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2963 nesqp->nesqp_context->snd_una = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2964 nesqp->nesqp_context->srtt = 0; in nes_cm_init_tsa_conn()
2965 nesqp->nesqp_context->rttvar = cpu_to_le32(0x6); in nes_cm_init_tsa_conn()
2966 nesqp->nesqp_context->ssthresh = cpu_to_le32(0x3FFFC000); in nes_cm_init_tsa_conn()
2967 nesqp->nesqp_context->cwnd = cpu_to_le32(2 * cm_node->tcp_cntxt.mss); in nes_cm_init_tsa_conn()
2968 nesqp->nesqp_context->snd_wl1 = cpu_to_le32(cm_node->tcp_cntxt.rcv_nxt); in nes_cm_init_tsa_conn()
2969 nesqp->nesqp_context->snd_wl2 = cpu_to_le32(cm_node->tcp_cntxt.loc_seq_num); in nes_cm_init_tsa_conn()
2970 nesqp->nesqp_context->max_snd_wnd = cpu_to_le32(cm_node->tcp_cntxt.max_snd_wnd); in nes_cm_init_tsa_conn()
2974 nesqp->hwqp.qp_id, le32_to_cpu(nesqp->nesqp_context->rcv_nxt), in nes_cm_init_tsa_conn()
2975 le32_to_cpu(nesqp->nesqp_context->snd_nxt), in nes_cm_init_tsa_conn()
2976 cm_node->tcp_cntxt.mss, le32_to_cpu(nesqp->nesqp_context->pd_index_wscale), in nes_cm_init_tsa_conn()
2977 le32_to_cpu(nesqp->nesqp_context->rcv_wnd), in nes_cm_init_tsa_conn()
2978 le32_to_cpu(nesqp->nesqp_context->misc)); in nes_cm_init_tsa_conn()
2979 nes_debug(NES_DBG_CM, " snd_wnd = 0x%08X.\n", le32_to_cpu(nesqp->nesqp_context->snd_wnd)); in nes_cm_init_tsa_conn()
2980 nes_debug(NES_DBG_CM, " snd_cwnd = 0x%08X.\n", le32_to_cpu(nesqp->nesqp_context->cwnd)); in nes_cm_init_tsa_conn()
2981 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()
2993 int nes_cm_disconn(struct nes_qp *nesqp) in nes_cm_disconn() argument
3001 nes_add_ref(&nesqp->ibqp); in nes_cm_disconn()
3002 work->nesqp = nesqp; in nes_cm_disconn()
3015 struct nes_qp *nesqp = dwork->nesqp; in nes_disconnect_worker() local
3019 nesqp->last_aeq, nesqp->hwqp.qp_id); in nes_disconnect_worker()
3020 nes_cm_disconn_true(nesqp); in nes_disconnect_worker()
3021 nes_rem_ref(&nesqp->ibqp); in nes_disconnect_worker()
3028 static int nes_cm_disconn_true(struct nes_qp *nesqp) in nes_cm_disconn_true() argument
3045 if (!nesqp) { in nes_cm_disconn_true()
3050 spin_lock_irqsave(&nesqp->lock, flags); in nes_cm_disconn_true()
3051 cm_id = nesqp->cm_id; in nes_cm_disconn_true()
3055 nesqp->hwqp.qp_id); in nes_cm_disconn_true()
3056 spin_unlock_irqrestore(&nesqp->lock, flags); in nes_cm_disconn_true()
3060 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_cm_disconn_true()
3061 nes_debug(NES_DBG_CM, "Disconnecting QP%u\n", nesqp->hwqp.qp_id); in nes_cm_disconn_true()
3063 original_hw_tcp_state = nesqp->hw_tcp_state; in nes_cm_disconn_true()
3064 original_ibqp_state = nesqp->ibqp_state; in nes_cm_disconn_true()
3065 last_ae = nesqp->last_aeq; in nes_cm_disconn_true()
3067 if (nesqp->term_flags) { in nes_cm_disconn_true()
3070 nesqp->cm_id = NULL; in nes_cm_disconn_true()
3071 del_timer(&nesqp->terminate_timer); in nes_cm_disconn_true()
3072 if (nesqp->flush_issued == 0) { in nes_cm_disconn_true()
3073 nesqp->flush_issued = 1; in nes_cm_disconn_true()
3089 nesqp->cm_id = NULL; in nes_cm_disconn_true()
3090 if (nesqp->flush_issued == 0) { in nes_cm_disconn_true()
3091 nesqp->flush_issued = 1; in nes_cm_disconn_true()
3096 spin_unlock_irqrestore(&nesqp->lock, flags); in nes_cm_disconn_true()
3098 if ((issue_flush) && (nesqp->destroyed == 0)) { in nes_cm_disconn_true()
3100 if (nesqp->hw_iwarp_state >= NES_AEQE_IWARP_STATE_TERMINATE) in nes_cm_disconn_true()
3102 flush_wqes(nesvnic->nesdev, nesqp, flush_q, 1); in nes_cm_disconn_true()
3104 if (nesqp->term_flags) { in nes_cm_disconn_true()
3105 ibevent.device = nesqp->ibqp.device; in nes_cm_disconn_true()
3106 ibevent.event = nesqp->terminate_eventtype; in nes_cm_disconn_true()
3107 ibevent.element.qp = &nesqp->ibqp; in nes_cm_disconn_true()
3108 if (nesqp->ibqp.event_handler) in nes_cm_disconn_true()
3109 nesqp->ibqp.event_handler(&ibevent, nesqp->ibqp.qp_context); in nes_cm_disconn_true()
3126 nesqp->hwqp.qp_id, nesqp->hwqp.sq_head, in nes_cm_disconn_true()
3127 nesqp->hwqp.sq_tail, cm_id, in nes_cm_disconn_true()
3128 atomic_read(&nesqp->refcount)); in nes_cm_disconn_true()
3138 nes_disconnect(nesqp, 1); in nes_cm_disconn_true()
3140 cm_id->provider_data = nesqp; in nes_cm_disconn_true()
3165 static int nes_disconnect(struct nes_qp *nesqp, int abrupt) in nes_disconnect() argument
3172 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_disconnect()
3182 if (nesqp->active_conn) { in nes_disconnect()
3185 nesqp->active_conn = 0; in nes_disconnect()
3188 if (nesqp->ietf_frame) { in nes_disconnect()
3189 if (nesqp->lsmm_mr) in nes_disconnect()
3190 nesibdev->ibdev.dereg_mr(nesqp->lsmm_mr); in nes_disconnect()
3192 nesqp->private_data_len + nesqp->ietf_frame_size, in nes_disconnect()
3193 nesqp->ietf_frame, nesqp->ietf_frame_pbase); in nes_disconnect()
3198 if (nesqp->cm_node) { in nes_disconnect()
3201 g_cm_core->api->close(g_cm_core, nesqp->cm_node); in nes_disconnect()
3215 struct nes_qp *nesqp; in nes_accept() local
3246 nesqp = to_nesqp(ibqp); in nes_accept()
3247 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_accept()
3269 nesqp->cm_node = (void *)cm_node; in nes_accept()
3270 cm_node->nesqp = nesqp; in nes_accept()
3274 nesqp->hwqp.qp_id, cm_node, jiffies, cm_node->listener); in nes_accept()
3280 nesqp->ietf_frame_size = sizeof(struct ietf_mpa_v2); in nes_accept()
3282 nesqp->ietf_frame = pci_alloc_consistent(nesdev->pcidev, in nes_accept()
3283 nesqp->ietf_frame_size + conn_param->private_data_len, in nes_accept()
3284 &nesqp->ietf_frame_pbase); in nes_accept()
3286 if (!nesqp->ietf_frame) { in nes_accept()
3290 mpa_v2_frame = (struct ietf_mpa_v2 *)nesqp->ietf_frame; in nes_accept()
3303 cm_build_mpa_frame(cm_node, start_buff, &buff_len, nesqp->ietf_frame, MPA_KEY_REPLY); in nes_accept()
3304 nesqp->private_data_len = conn_param->private_data_len; in nes_accept()
3307 wqe = &nesqp->hwqp.sq_vbase[0]; in nes_accept()
3310 u64temp = (unsigned long)nesqp; in nes_accept()
3312 nespd = nesqp->nespd; in nes_accept()
3313 ibphysbuf.addr = nesqp->ietf_frame_pbase + mpa_frame_offset; in nes_accept()
3325 nesqp->private_data_len + nesqp->ietf_frame_size, in nes_accept()
3326 nesqp->ietf_frame, nesqp->ietf_frame_pbase); in nes_accept()
3332 nesqp->lsmm_mr = ibmr; in nes_accept()
3349 if (nesqp->sq_kmapped) { in nes_accept()
3350 nesqp->sq_kmapped = 0; in nes_accept()
3351 kunmap(nesqp->page); in nes_accept()
3354 nesqp->nesqp_context->ird_ord_sizes |= in nes_accept()
3358 nesqp->nesqp_context->ird_ord_sizes |= in nes_accept()
3361 nesqp->skip_lsmm = 1; in nes_accept()
3364 nesqp->cm_id = cm_id; in nes_accept()
3368 cm_id->provider_data = nesqp; in nes_accept()
3369 nesqp->active_conn = 0; in nes_accept()
3375 nes_cm_init_tsa_conn(nesqp, cm_node); in nes_accept()
3377 nesqp->nesqp_context->tcpPorts[0] = in nes_accept()
3379 nesqp->nesqp_context->tcpPorts[1] = in nes_accept()
3382 nesqp->nesqp_context->ip0 = cpu_to_le32(cm_node->mapped_rem_addr); in nes_accept()
3384 nesqp->nesqp_context->misc2 |= cpu_to_le32( in nes_accept()
3388 nesqp->nesqp_context->arp_index_vlan |= in nes_accept()
3390 le32_to_cpu(nesqp->nesqp_context->ip0), NULL, in nes_accept()
3393 nesqp->nesqp_context->ts_val_delta = cpu_to_le32( in nes_accept()
3396 nesqp->nesqp_context->ird_index = cpu_to_le32(nesqp->hwqp.qp_id); in nes_accept()
3398 nesqp->nesqp_context->ird_ord_sizes |= cpu_to_le32( in nes_accept()
3400 nesqp->nesqp_context->ird_ord_sizes |= in nes_accept()
3412 nesqp->hte_index = cpu_to_be32(crc_value ^ 0xffffffff); in nes_accept()
3414 nesqp->hte_index, nesqp->hte_index & adapter->hte_index_mask); in nes_accept()
3416 nesqp->hte_index &= adapter->hte_index_mask; in nes_accept()
3417 nesqp->nesqp_context->hte_index = cpu_to_le32(nesqp->hte_index); in nes_accept()
3423 "private data length=%u.\n", nesqp->hwqp.qp_id, in nes_accept()
3426 le32_to_cpu(nesqp->nesqp_context->rcv_nxt), in nes_accept()
3427 le32_to_cpu(nesqp->nesqp_context->snd_nxt), in nes_accept()
3432 nes_add_ref(&nesqp->ibqp); in nes_accept()
3436 cm_event.provider_data = (void *)nesqp; in nes_accept()
3446 nes_modify_qp(&nesqp->ibqp, &attr, IB_QP_STATE, NULL); in nes_accept()
3449 nesqp->private_data_len; in nes_accept()
3502 struct nes_qp *nesqp; in nes_connect() local
3519 nesqp = to_nesqp(ibqp); in nes_connect()
3520 if (!nesqp) in nes_connect()
3522 nesvnic = to_nesvnic(nesqp->ibqp.device); in nes_connect()
3533 "0x%08X:0x%04X, local = 0x%08X:0x%04X.\n", nesqp->hwqp.qp_id, in nes_connect()
3539 nesqp->active_conn = 1; in nes_connect()
3542 nesqp->cm_id = cm_id; in nes_connect()
3543 cm_id->provider_data = nesqp; in nes_connect()
3544 nesqp->private_data_len = conn_param->private_data_len; in nes_connect()
3615 nesqp->cm_node = cm_node; in nes_connect()
3616 cm_node->nesqp = nesqp; in nes_connect()
3617 nes_add_ref(&nesqp->ibqp); in nes_connect()
3761 struct nes_qp *nesqp; in cm_event_connected() local
3780 nesqp = (struct nes_qp *)cm_id->provider_data; in cm_event_connected()
3781 nesvnic = to_nesvnic(nesqp->ibqp.device); in cm_event_connected()
3788 if (nesqp->destroyed) in cm_event_connected()
3793 nesqp->hwqp.qp_id, ntohl(raddr->sin_addr.s_addr), in cm_event_connected()
3796 nes_cm_init_tsa_conn(nesqp, cm_node); in cm_event_connected()
3799 nesqp->nesqp_context->tcpPorts[0] = in cm_event_connected()
3801 nesqp->nesqp_context->tcpPorts[1] = in cm_event_connected()
3803 nesqp->nesqp_context->ip0 = cpu_to_le32(cm_node->mapped_rem_addr); in cm_event_connected()
3805 nesqp->nesqp_context->misc2 |= cpu_to_le32( in cm_event_connected()
3808 nesqp->nesqp_context->arp_index_vlan |= cpu_to_le32( in cm_event_connected()
3810 le32_to_cpu(nesqp->nesqp_context->ip0), in cm_event_connected()
3812 nesqp->nesqp_context->ts_val_delta = cpu_to_le32( in cm_event_connected()
3814 nesqp->nesqp_context->ird_index = cpu_to_le32(nesqp->hwqp.qp_id); in cm_event_connected()
3815 nesqp->nesqp_context->ird_ord_sizes |= in cm_event_connected()
3818 nesqp->nesqp_context->ird_ord_sizes |= in cm_event_connected()
3824 build_rdma0_msg(cm_node, &nesqp); in cm_event_connected()
3827 (1 << 24) | 0x00800000 | nesqp->hwqp.qp_id); in cm_event_connected()
3839 nesqp->hte_index = cpu_to_be32(crc_value ^ 0xffffffff); in cm_event_connected()
3841 nesqp->hte_index, nesqp->hte_index & nesadapter->hte_index_mask); in cm_event_connected()
3843 nesqp->hte_index &= nesadapter->hte_index_mask; in cm_event_connected()
3844 nesqp->nesqp_context->hte_index = cpu_to_le32(nesqp->hte_index); in cm_event_connected()
3846 nesqp->ietf_frame = &cm_node->mpa_frame; in cm_event_connected()
3847 nesqp->private_data_len = (u8)cm_node->mpa_frame_size; in cm_event_connected()
3871 nes_modify_qp(&nesqp->ibqp, &attr, IB_QP_STATE, NULL); in cm_event_connected()
3874 "%lu\n", nesqp->hwqp.qp_id, jiffies); in cm_event_connected()
3885 struct nes_qp *nesqp; in cm_event_connect_error() local
3899 nesqp = cm_id->provider_data; in cm_event_connect_error()
3901 if (!nesqp) in cm_event_connect_error()
3906 nesqp->cm_id = NULL; in cm_event_connect_error()
3944 struct nes_qp *nesqp; in cm_event_reset() local
3959 nesqp = cm_id->provider_data; in cm_event_reset()
3960 if (!nesqp) in cm_event_reset()
3963 nesqp->cm_id = NULL; in cm_event_reset()