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()
1488 spin_unlock_irqrestore(&cm_core->listen_list_lock, in irdma_find_listener()
1494 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()
1734 cm_parent_listen_node->cm_core->stats_listen_nodes_created++; in irdma_add_mqh_4()
1758 cm_parent_listen_node->cm_core in irdma_add_mqh_4()
1767 spin_lock_irqsave(&iwdev->cm_core.listen_list_lock, in irdma_add_mqh_4()
1771 spin_unlock_irqrestore(&iwdev->cm_core.listen_list_lock, flags); in irdma_add_mqh_4()
1803 static void irdma_reset_list_prep(struct irdma_cm_core *cm_core, in irdma_reset_list_prep() argument
1810 hash_for_each_rcu(cm_core->cm_hash_tbl, bkt, cm_node, list) { in irdma_reset_list_prep()
1825 static int irdma_dec_refcnt_listen(struct irdma_cm_core *cm_core, in irdma_dec_refcnt_listen() argument
1843 irdma_reset_list_prep(cm_core, listener, &reset_list); in irdma_dec_refcnt_listen()
1870 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_dec_refcnt_listen()
1872 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_dec_refcnt_listen()
1896 cm_core->stats_listen_destroyed++; in irdma_dec_refcnt_listen()
1897 cm_core->stats_listen_nodes_destroyed++; in irdma_dec_refcnt_listen()
1917 static int irdma_cm_del_listen(struct irdma_cm_core *cm_core, in irdma_cm_del_listen() argument
1924 return irdma_dec_refcnt_listen(cm_core, listener, 1, apbvt_del); in irdma_cm_del_listen()
2050 struct irdma_cm_node *irdma_find_node(struct irdma_cm_core *cm_core, in irdma_find_node() argument
2058 hash_for_each_possible_rcu(cm_core->cm_hash_tbl, cm_node, list, key) { in irdma_find_node()
2083 static void irdma_add_hte_node(struct irdma_cm_core *cm_core, in irdma_add_hte_node() argument
2089 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_add_hte_node()
2090 hash_add_rcu(cm_core->cm_hash_tbl, &cm_node->list, key); in irdma_add_hte_node()
2091 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_add_hte_node()
2189 irdma_make_cm_node(struct irdma_cm_core *cm_core, struct irdma_device *iwdev, in irdma_make_cm_node() argument
2249 cm_node->cm_core = cm_core; in irdma_make_cm_node()
2305 irdma_add_hte_node(cm_core, cm_node); in irdma_make_cm_node()
2306 cm_core->stats_nodes_created++; in irdma_make_cm_node()
2317 struct irdma_cm_core *cm_core = cm_node->cm_core; in irdma_destroy_connection() local
2330 irdma_dec_refcnt_listen(cm_core, cm_node->listener, 0, true); in irdma_destroy_connection()
2363 cm_core->cm_free_ah(cm_node); in irdma_destroy_connection()
2372 struct irdma_cm_core *cm_core = cm_node->cm_core; in irdma_rem_ref_cm_node() local
2376 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2379 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2387 cm_node->cm_core->stats_nodes_destroyed++; in irdma_rem_ref_cm_node()
2389 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2646 cm_node->cm_core->stats_backlog_drops++; in irdma_handle_syn_pkt()
2656 err = cm_node->cm_core->cm_create_ah(cm_node, false); in irdma_handle_syn_pkt()
2897 irdma_make_listen_node(struct irdma_cm_core *cm_core, in irdma_make_listen_node() argument
2905 listener = irdma_find_listener(cm_core, cm_info->loc_addr, in irdma_make_listen_node()
2921 cm_core->stats_listen_nodes_created++; in irdma_make_listen_node()
2937 listener->cm_core = cm_core; in irdma_make_listen_node()
2944 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_make_listen_node()
2945 list_add(&listener->list, &cm_core->listen_list); in irdma_make_listen_node()
2946 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_make_listen_node()
2960 static int irdma_create_cm_node(struct irdma_cm_core *cm_core, in irdma_create_cm_node() argument
2971 cm_node = irdma_make_cm_node(cm_core, iwdev, cm_info, NULL); in irdma_create_cm_node()
3095 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_receive_ilq() local
3120 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3144 cm_node = irdma_find_node(cm_core, cm_info.rem_port, cm_info.rem_addr, in irdma_receive_ilq()
3154 listener = irdma_find_listener(cm_core, in irdma_receive_ilq()
3161 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3167 cm_node = irdma_make_cm_node(cm_core, iwdev, &cm_info, in irdma_receive_ilq()
3170 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3211 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_setup_cm_core() local
3213 cm_core->iwdev = iwdev; in irdma_setup_cm_core()
3214 cm_core->dev = &iwdev->rf->sc_dev; in irdma_setup_cm_core()
3217 cm_core->event_wq = alloc_ordered_workqueue("iwarp-event-wq", 0); in irdma_setup_cm_core()
3218 if (!cm_core->event_wq) in irdma_setup_cm_core()
3221 INIT_LIST_HEAD(&cm_core->listen_list); in irdma_setup_cm_core()
3223 timer_setup(&cm_core->tcp_timer, irdma_cm_timer_tick, 0); in irdma_setup_cm_core()
3225 spin_lock_init(&cm_core->ht_lock); in irdma_setup_cm_core()
3226 spin_lock_init(&cm_core->listen_list_lock); in irdma_setup_cm_core()
3227 spin_lock_init(&cm_core->apbvt_lock); in irdma_setup_cm_core()
3230 cm_core->form_cm_frame = irdma_form_uda_cm_frame; in irdma_setup_cm_core()
3231 cm_core->cm_create_ah = irdma_add_qh; in irdma_setup_cm_core()
3232 cm_core->cm_free_ah = irdma_cm_free_ah_nop; in irdma_setup_cm_core()
3236 cm_core->form_cm_frame = irdma_form_ah_cm_frame; in irdma_setup_cm_core()
3237 cm_core->cm_create_ah = irdma_cm_create_ah; in irdma_setup_cm_core()
3238 cm_core->cm_free_ah = irdma_cm_free_ah; in irdma_setup_cm_core()
3249 void irdma_cleanup_cm_core(struct irdma_cm_core *cm_core) in irdma_cleanup_cm_core() argument
3251 if (!cm_core) in irdma_cleanup_cm_core()
3254 del_timer_sync(&cm_core->tcp_timer); in irdma_cleanup_cm_core()
3256 destroy_workqueue(cm_core->event_wq); in irdma_cleanup_cm_core()
3257 cm_core->dev->ws_reset(&cm_core->iwdev->vsi); in irdma_cleanup_cm_core()
3514 spin_lock_irqsave(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3516 spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3521 spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3693 cm_node->cm_core->cm_free_ah(cm_node); in irdma_accept()
3723 cm_node->cm_core->stats_accepts++; in irdma_accept()
3753 cm_node->cm_core->stats_rejects++; in irdma_reject()
3846 ret = irdma_create_cm_node(&iwdev->cm_core, iwdev, conn_param, &cm_info, in irdma_connect()
3850 ret = cm_node->cm_core->cm_create_ah(cm_node, true); in irdma_connect()
3900 iwdev->cm_core.stats_connect_errs++; in irdma_connect()
3966 cm_listen_node = irdma_make_listen_node(&iwdev->cm_core, iwdev, in irdma_create_listen()
4005 cm_listen_node->cm_core->stats_listen_created++; in irdma_create_listen()
4016 irdma_cm_del_listen(&iwdev->cm_core, cm_listen_node, false); in irdma_create_listen()
4031 irdma_cm_del_listen(&iwdev->cm_core, cm_id->provider_data, in irdma_destroy_listen()
4050 static void irdma_teardown_list_prep(struct irdma_cm_core *cm_core, in irdma_teardown_list_prep() argument
4059 hash_for_each_rcu(cm_core->cm_hash_tbl, bkt, cm_node, list) { in irdma_teardown_list_prep()
4119 cm_node->cm_core->cm_free_ah(cm_node); in irdma_cm_event_connected()
4165 if (!event || !event->cm_node || !event->cm_node->cm_core) in irdma_cm_event_handler()
4216 queue_work(event->cm_node->cm_core->event_wq, &event->event_work); in irdma_cm_post_event()
4232 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_cm_teardown_connections() local
4242 irdma_teardown_list_prep(cm_core, &teardown_list, ipaddr, nfo, disconnect_all); in irdma_cm_teardown_connections()
4330 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_if_notify() local
4345 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_if_notify()
4346 list_for_each_entry (listen_node, &cm_core->listen_list, list) { in irdma_if_notify()
4367 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_if_notify()