Lines Matching refs:cm_core

211 static void irdma_timer_list_prep(struct irdma_cm_core *cm_core,  in irdma_timer_list_prep()  argument
217 hash_for_each_rcu(cm_core->cm_hash_tbl, bkt, cm_node, list) { in irdma_timer_list_prep()
599 sqbuf = cm_node->cm_core->form_cm_frame(cm_node, NULL, NULL, NULL, in irdma_send_reset()
624 cm_node->cm_core->stats_connect_errs++; in irdma_active_open_err()
645 cm_node->cm_core->stats_passive_errs++; in irdma_passive_open_err()
907 sqbuf = cm_node->cm_core->form_cm_frame(cm_node, NULL, in irdma_send_mpa_request()
938 sqbuf = cm_node->cm_core->form_cm_frame(cm_node, NULL, in irdma_send_mpa_reject()
1134 struct irdma_cm_core *cm_core = cm_node->cm_core; in irdma_schedule_cm_timer() local
1181 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_schedule_cm_timer()
1182 was_timer_set = timer_pending(&cm_core->tcp_timer); in irdma_schedule_cm_timer()
1185 cm_core->tcp_timer.expires = new_send->timetosend; in irdma_schedule_cm_timer()
1186 add_timer(&cm_core->tcp_timer); in irdma_schedule_cm_timer()
1188 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_schedule_cm_timer()
1266 struct irdma_cm_core *cm_core = from_timer(cm_core, t, tcp_timer); in irdma_cm_timer_tick() local
1276 irdma_timer_list_prep(cm_core, &timer_list); in irdma_cm_timer_tick()
1336 cm_node->cm_core->stats_pkt_retrans++; in irdma_cm_timer_tick()
1366 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_cm_timer_tick()
1367 if (!timer_pending(&cm_core->tcp_timer)) { in irdma_cm_timer_tick()
1368 cm_core->tcp_timer.expires = nexttimeout; in irdma_cm_timer_tick()
1369 add_timer(&cm_core->tcp_timer); in irdma_cm_timer_tick()
1371 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_cm_timer_tick()
1416 sqbuf = cm_node->cm_core->form_cm_frame(cm_node, &opts, NULL, NULL, in irdma_send_syn()
1434 sqbuf = cm_node->cm_core->form_cm_frame(cm_node, NULL, NULL, NULL, in irdma_send_ack()
1448 sqbuf = cm_node->cm_core->form_cm_frame(cm_node, NULL, NULL, NULL, in irdma_send_fin()
1466 irdma_find_listener(struct irdma_cm_core *cm_core, u32 *dst_addr, u16 dst_port, in irdma_find_listener() argument
1476 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_find_listener()
1477 list_for_each_entry (listen_node, &cm_core->listen_list, list) { in irdma_find_listener()
1487 spin_unlock_irqrestore(&cm_core->listen_list_lock, in irdma_find_listener()
1493 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_find_listener()
1514 spin_lock_irqsave(&iwdev->cm_core.listen_list_lock, flags); in irdma_del_multiple_qhash()
1549 cm_parent_listen_node->cm_core->stats_listen_nodes_destroyed++; in irdma_del_multiple_qhash()
1551 spin_unlock_irqrestore(&iwdev->cm_core.listen_list_lock, flags); in irdma_del_multiple_qhash()
1681 spin_lock_irqsave(&iwdev->cm_core.listen_list_lock, flags); in irdma_add_mqh_6()
1684 spin_unlock_irqrestore(&iwdev->cm_core.listen_list_lock, flags); in irdma_add_mqh_6()
1685 cm_parent_listen_node->cm_core->stats_listen_nodes_created++; in irdma_add_mqh_6()
1731 cm_parent_listen_node->cm_core->stats_listen_nodes_created++; in irdma_add_mqh_4()
1755 cm_parent_listen_node->cm_core in irdma_add_mqh_4()
1764 spin_lock_irqsave(&iwdev->cm_core.listen_list_lock, in irdma_add_mqh_4()
1768 spin_unlock_irqrestore(&iwdev->cm_core.listen_list_lock, flags); in irdma_add_mqh_4()
1800 static void irdma_reset_list_prep(struct irdma_cm_core *cm_core, in irdma_reset_list_prep() argument
1807 hash_for_each_rcu(cm_core->cm_hash_tbl, bkt, cm_node, list) { in irdma_reset_list_prep()
1822 static int irdma_dec_refcnt_listen(struct irdma_cm_core *cm_core, in irdma_dec_refcnt_listen() argument
1840 irdma_reset_list_prep(cm_core, listener, &reset_list); in irdma_dec_refcnt_listen()
1867 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_dec_refcnt_listen()
1869 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_dec_refcnt_listen()
1893 cm_core->stats_listen_destroyed++; in irdma_dec_refcnt_listen()
1894 cm_core->stats_listen_nodes_destroyed++; in irdma_dec_refcnt_listen()
1914 static int irdma_cm_del_listen(struct irdma_cm_core *cm_core, in irdma_cm_del_listen() argument
1921 return irdma_dec_refcnt_listen(cm_core, listener, 1, apbvt_del); in irdma_cm_del_listen()
2047 struct irdma_cm_node *irdma_find_node(struct irdma_cm_core *cm_core, in irdma_find_node() argument
2055 hash_for_each_possible_rcu(cm_core->cm_hash_tbl, cm_node, list, key) { in irdma_find_node()
2080 static void irdma_add_hte_node(struct irdma_cm_core *cm_core, in irdma_add_hte_node() argument
2086 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_add_hte_node()
2087 hash_add_rcu(cm_core->cm_hash_tbl, &cm_node->list, key); in irdma_add_hte_node()
2088 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_add_hte_node()
2186 irdma_make_cm_node(struct irdma_cm_core *cm_core, struct irdma_device *iwdev, in irdma_make_cm_node() argument
2242 cm_node->cm_core = cm_core; in irdma_make_cm_node()
2298 irdma_add_hte_node(cm_core, cm_node); in irdma_make_cm_node()
2299 cm_core->stats_nodes_created++; in irdma_make_cm_node()
2312 struct irdma_cm_core *cm_core = cm_node->cm_core; in irdma_cm_node_free_cb() local
2325 irdma_dec_refcnt_listen(cm_core, cm_node->listener, 0, true); in irdma_cm_node_free_cb()
2358 cm_core->cm_free_ah(cm_node); in irdma_cm_node_free_cb()
2368 struct irdma_cm_core *cm_core = cm_node->cm_core; in irdma_rem_ref_cm_node() local
2372 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2375 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2383 cm_node->cm_core->stats_nodes_destroyed++; in irdma_rem_ref_cm_node()
2385 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2641 cm_node->cm_core->stats_backlog_drops++; in irdma_handle_syn_pkt()
2651 err = cm_node->cm_core->cm_create_ah(cm_node, false); in irdma_handle_syn_pkt()
2892 irdma_make_listen_node(struct irdma_cm_core *cm_core, in irdma_make_listen_node() argument
2900 listener = irdma_find_listener(cm_core, cm_info->loc_addr, in irdma_make_listen_node()
2916 cm_core->stats_listen_nodes_created++; in irdma_make_listen_node()
2932 listener->cm_core = cm_core; in irdma_make_listen_node()
2939 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_make_listen_node()
2940 list_add(&listener->list, &cm_core->listen_list); in irdma_make_listen_node()
2941 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_make_listen_node()
2955 static int irdma_create_cm_node(struct irdma_cm_core *cm_core, in irdma_create_cm_node() argument
2966 cm_node = irdma_make_cm_node(cm_core, iwdev, cm_info, NULL); in irdma_create_cm_node()
3090 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_receive_ilq() local
3115 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3139 cm_node = irdma_find_node(cm_core, cm_info.rem_port, cm_info.rem_addr, in irdma_receive_ilq()
3149 listener = irdma_find_listener(cm_core, in irdma_receive_ilq()
3156 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3162 cm_node = irdma_make_cm_node(cm_core, iwdev, &cm_info, in irdma_receive_ilq()
3165 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3207 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_setup_cm_core() local
3209 cm_core->iwdev = iwdev; in irdma_setup_cm_core()
3210 cm_core->dev = &iwdev->rf->sc_dev; in irdma_setup_cm_core()
3213 cm_core->event_wq = alloc_ordered_workqueue("iwarp-event-wq", 0); in irdma_setup_cm_core()
3214 if (!cm_core->event_wq) in irdma_setup_cm_core()
3217 INIT_LIST_HEAD(&cm_core->listen_list); in irdma_setup_cm_core()
3219 timer_setup(&cm_core->tcp_timer, irdma_cm_timer_tick, 0); in irdma_setup_cm_core()
3221 spin_lock_init(&cm_core->ht_lock); in irdma_setup_cm_core()
3222 spin_lock_init(&cm_core->listen_list_lock); in irdma_setup_cm_core()
3223 spin_lock_init(&cm_core->apbvt_lock); in irdma_setup_cm_core()
3226 cm_core->form_cm_frame = irdma_form_uda_cm_frame; in irdma_setup_cm_core()
3227 cm_core->cm_create_ah = irdma_add_qh; in irdma_setup_cm_core()
3228 cm_core->cm_free_ah = irdma_cm_free_ah_nop; in irdma_setup_cm_core()
3232 cm_core->form_cm_frame = irdma_form_ah_cm_frame; in irdma_setup_cm_core()
3233 cm_core->cm_create_ah = irdma_cm_create_ah; in irdma_setup_cm_core()
3234 cm_core->cm_free_ah = irdma_cm_free_ah; in irdma_setup_cm_core()
3245 void irdma_cleanup_cm_core(struct irdma_cm_core *cm_core) in irdma_cleanup_cm_core() argument
3249 if (!cm_core) in irdma_cleanup_cm_core()
3252 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_cleanup_cm_core()
3253 if (timer_pending(&cm_core->tcp_timer)) in irdma_cleanup_cm_core()
3254 del_timer_sync(&cm_core->tcp_timer); in irdma_cleanup_cm_core()
3255 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_cleanup_cm_core()
3257 destroy_workqueue(cm_core->event_wq); in irdma_cleanup_cm_core()
3258 cm_core->dev->ws_reset(&cm_core->iwdev->vsi); in irdma_cleanup_cm_core()
3521 spin_lock_irqsave(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3523 spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3528 spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3700 cm_node->cm_core->cm_free_ah(cm_node); in irdma_accept()
3730 cm_node->cm_core->stats_accepts++; in irdma_accept()
3760 cm_node->cm_core->stats_rejects++; in irdma_reject()
3849 ret = irdma_create_cm_node(&iwdev->cm_core, iwdev, conn_param, &cm_info, in irdma_connect()
3853 ret = cm_node->cm_core->cm_create_ah(cm_node, true); in irdma_connect()
3903 iwdev->cm_core.stats_connect_errs++; in irdma_connect()
3969 cm_listen_node = irdma_make_listen_node(&iwdev->cm_core, iwdev, in irdma_create_listen()
4004 cm_listen_node->cm_core->stats_listen_created++; in irdma_create_listen()
4015 irdma_cm_del_listen(&iwdev->cm_core, cm_listen_node, false); in irdma_create_listen()
4030 irdma_cm_del_listen(&iwdev->cm_core, cm_id->provider_data, in irdma_destroy_listen()
4049 static void irdma_teardown_list_prep(struct irdma_cm_core *cm_core, in irdma_teardown_list_prep() argument
4058 hash_for_each_rcu(cm_core->cm_hash_tbl, bkt, cm_node, list) { in irdma_teardown_list_prep()
4118 cm_node->cm_core->cm_free_ah(cm_node); in irdma_cm_event_connected()
4164 if (!event || !event->cm_node || !event->cm_node->cm_core) in irdma_cm_event_handler()
4215 queue_work(event->cm_node->cm_core->event_wq, &event->event_work); in irdma_cm_post_event()
4231 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_cm_teardown_connections() local
4245 irdma_teardown_list_prep(cm_core, &teardown_list, ipaddr, nfo, disconnect_all); in irdma_cm_teardown_connections()
4379 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_if_notify() local
4394 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_if_notify()
4395 list_for_each_entry (listen_node, &cm_core->listen_list, list) { in irdma_if_notify()
4416 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_if_notify()