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()
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
2246 cm_node->cm_core = cm_core; in irdma_make_cm_node()
2302 irdma_add_hte_node(cm_core, cm_node); in irdma_make_cm_node()
2303 cm_core->stats_nodes_created++; in irdma_make_cm_node()
2314 struct irdma_cm_core *cm_core = cm_node->cm_core; in irdma_destroy_connection() local
2327 irdma_dec_refcnt_listen(cm_core, cm_node->listener, 0, true); in irdma_destroy_connection()
2360 cm_core->cm_free_ah(cm_node); in irdma_destroy_connection()
2369 struct irdma_cm_core *cm_core = cm_node->cm_core; in irdma_rem_ref_cm_node() local
2373 spin_lock_irqsave(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2376 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2384 cm_node->cm_core->stats_nodes_destroyed++; in irdma_rem_ref_cm_node()
2386 spin_unlock_irqrestore(&cm_core->ht_lock, flags); in irdma_rem_ref_cm_node()
2643 cm_node->cm_core->stats_backlog_drops++; in irdma_handle_syn_pkt()
2653 err = cm_node->cm_core->cm_create_ah(cm_node, false); in irdma_handle_syn_pkt()
2894 irdma_make_listen_node(struct irdma_cm_core *cm_core, in irdma_make_listen_node() argument
2902 listener = irdma_find_listener(cm_core, cm_info->loc_addr, in irdma_make_listen_node()
2918 cm_core->stats_listen_nodes_created++; in irdma_make_listen_node()
2934 listener->cm_core = cm_core; in irdma_make_listen_node()
2941 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_make_listen_node()
2942 list_add(&listener->list, &cm_core->listen_list); in irdma_make_listen_node()
2943 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_make_listen_node()
2957 static int irdma_create_cm_node(struct irdma_cm_core *cm_core, in irdma_create_cm_node() argument
2968 cm_node = irdma_make_cm_node(cm_core, iwdev, cm_info, NULL); in irdma_create_cm_node()
3092 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_receive_ilq() local
3117 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3141 cm_node = irdma_find_node(cm_core, cm_info.rem_port, cm_info.rem_addr, in irdma_receive_ilq()
3151 listener = irdma_find_listener(cm_core, in irdma_receive_ilq()
3158 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3164 cm_node = irdma_make_cm_node(cm_core, iwdev, &cm_info, in irdma_receive_ilq()
3167 ibdev_dbg(&cm_core->iwdev->ibdev, in irdma_receive_ilq()
3208 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_setup_cm_core() local
3210 cm_core->iwdev = iwdev; in irdma_setup_cm_core()
3211 cm_core->dev = &iwdev->rf->sc_dev; in irdma_setup_cm_core()
3214 cm_core->event_wq = alloc_ordered_workqueue("iwarp-event-wq", 0); in irdma_setup_cm_core()
3215 if (!cm_core->event_wq) in irdma_setup_cm_core()
3218 INIT_LIST_HEAD(&cm_core->listen_list); in irdma_setup_cm_core()
3220 timer_setup(&cm_core->tcp_timer, irdma_cm_timer_tick, 0); in irdma_setup_cm_core()
3222 spin_lock_init(&cm_core->ht_lock); in irdma_setup_cm_core()
3223 spin_lock_init(&cm_core->listen_list_lock); in irdma_setup_cm_core()
3224 spin_lock_init(&cm_core->apbvt_lock); in irdma_setup_cm_core()
3227 cm_core->form_cm_frame = irdma_form_uda_cm_frame; in irdma_setup_cm_core()
3228 cm_core->cm_create_ah = irdma_add_qh; in irdma_setup_cm_core()
3229 cm_core->cm_free_ah = irdma_cm_free_ah_nop; in irdma_setup_cm_core()
3233 cm_core->form_cm_frame = irdma_form_ah_cm_frame; in irdma_setup_cm_core()
3234 cm_core->cm_create_ah = irdma_cm_create_ah; in irdma_setup_cm_core()
3235 cm_core->cm_free_ah = irdma_cm_free_ah; in irdma_setup_cm_core()
3246 void irdma_cleanup_cm_core(struct irdma_cm_core *cm_core) in irdma_cleanup_cm_core() argument
3248 if (!cm_core) in irdma_cleanup_cm_core()
3251 del_timer_sync(&cm_core->tcp_timer); in irdma_cleanup_cm_core()
3253 destroy_workqueue(cm_core->event_wq); in irdma_cleanup_cm_core()
3254 cm_core->dev->ws_reset(&cm_core->iwdev->vsi); in irdma_cleanup_cm_core()
3511 spin_lock_irqsave(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3513 spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3518 spin_unlock_irqrestore(&iwdev->cm_core.ht_lock, flags); in irdma_cm_disconn_true()
3690 cm_node->cm_core->cm_free_ah(cm_node); in irdma_accept()
3720 cm_node->cm_core->stats_accepts++; in irdma_accept()
3750 cm_node->cm_core->stats_rejects++; in irdma_reject()
3843 ret = irdma_create_cm_node(&iwdev->cm_core, iwdev, conn_param, &cm_info, in irdma_connect()
3847 ret = cm_node->cm_core->cm_create_ah(cm_node, true); in irdma_connect()
3897 iwdev->cm_core.stats_connect_errs++; in irdma_connect()
3963 cm_listen_node = irdma_make_listen_node(&iwdev->cm_core, iwdev, in irdma_create_listen()
4002 cm_listen_node->cm_core->stats_listen_created++; in irdma_create_listen()
4013 irdma_cm_del_listen(&iwdev->cm_core, cm_listen_node, false); in irdma_create_listen()
4028 irdma_cm_del_listen(&iwdev->cm_core, cm_id->provider_data, in irdma_destroy_listen()
4047 static void irdma_teardown_list_prep(struct irdma_cm_core *cm_core, in irdma_teardown_list_prep() argument
4056 hash_for_each_rcu(cm_core->cm_hash_tbl, bkt, cm_node, list) { in irdma_teardown_list_prep()
4116 cm_node->cm_core->cm_free_ah(cm_node); in irdma_cm_event_connected()
4162 if (!event || !event->cm_node || !event->cm_node->cm_core) in irdma_cm_event_handler()
4213 queue_work(event->cm_node->cm_core->event_wq, &event->event_work); in irdma_cm_post_event()
4229 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_cm_teardown_connections() local
4239 irdma_teardown_list_prep(cm_core, &teardown_list, ipaddr, nfo, disconnect_all); in irdma_cm_teardown_connections()
4327 struct irdma_cm_core *cm_core = &iwdev->cm_core; in irdma_if_notify() local
4342 spin_lock_irqsave(&cm_core->listen_list_lock, flags); in irdma_if_notify()
4343 list_for_each_entry (listen_node, &cm_core->listen_list, list) { in irdma_if_notify()
4364 spin_unlock_irqrestore(&cm_core->listen_list_lock, flags); in irdma_if_notify()