Lines Matching refs:stcb

86 sctp_threshold_management(struct sctp_inpcb *inp, struct sctp_tcb *stcb,  in sctp_threshold_management()  argument
89 KASSERT(stcb != NULL, ("stcb is NULL")); in sctp_threshold_management()
90 SCTP_TCB_LOCK_ASSERT(stcb); in sctp_threshold_management()
104 stcb, 0, in sctp_threshold_management()
112 sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); in sctp_threshold_management()
114 inp, stcb, net, in sctp_threshold_management()
116 sctp_timer_start(SCTP_TIMER_TYPE_HEARTBEAT, inp, stcb, net); in sctp_threshold_management()
122 stcb->asoc.overall_error_count, in sctp_threshold_management()
123 (stcb->asoc.overall_error_count + 1), in sctp_threshold_management()
127 stcb->asoc.overall_error_count++; in sctp_threshold_management()
132 stcb->asoc.overall_error_count, in sctp_threshold_management()
133 (stcb->asoc.overall_error_count + 1), in sctp_threshold_management()
137 stcb->asoc.overall_error_count++; in sctp_threshold_management()
140 (void *)&stcb->asoc, stcb->asoc.overall_error_count, in sctp_threshold_management()
147 if (stcb->asoc.overall_error_count > threshold) { in sctp_threshold_management()
154 sctp_abort_an_association(inp, stcb, op_err, true, SCTP_SO_NOT_LOCKED); in sctp_threshold_management()
165 sctp_find_alternate_net(struct sctp_tcb *stcb, in sctp_find_alternate_net() argument
177 if (stcb->asoc.numnets == 1) { in sctp_find_alternate_net()
179 return (TAILQ_FIRST(&stcb->asoc.nets)); in sctp_find_alternate_net()
190 TAILQ_FOREACH(mnet, &stcb->asoc.nets, sctp_next) { in sctp_find_alternate_net()
259 if (stcb->asoc.hb_random_idx > 3) { in sctp_find_alternate_net()
260 rndval = sctp_select_initial_TSN(&stcb->sctp_ep->sctp_ep); in sctp_find_alternate_net()
261 memcpy(stcb->asoc.hb_random_values, &rndval, sizeof(stcb->asoc.hb_random_values)); in sctp_find_alternate_net()
262 this_random = stcb->asoc.hb_random_values[0]; in sctp_find_alternate_net()
263 stcb->asoc.hb_random_idx++; in sctp_find_alternate_net()
264 stcb->asoc.hb_ect_randombit = 0; in sctp_find_alternate_net()
266 this_random = stcb->asoc.hb_random_values[stcb->asoc.hb_random_idx]; in sctp_find_alternate_net()
267 stcb->asoc.hb_random_idx++; in sctp_find_alternate_net()
268 stcb->asoc.hb_ect_randombit = 0; in sctp_find_alternate_net()
287 TAILQ_FOREACH(mnet, &stcb->asoc.nets, sctp_next) { in sctp_find_alternate_net()
303 if (stcb->asoc.hb_random_idx > 3) { in sctp_find_alternate_net()
304 rndval = sctp_select_initial_TSN(&stcb->sctp_ep->sctp_ep); in sctp_find_alternate_net()
305 memcpy(stcb->asoc.hb_random_values, &rndval, in sctp_find_alternate_net()
306 sizeof(stcb->asoc.hb_random_values)); in sctp_find_alternate_net()
307 this_random = stcb->asoc.hb_random_values[0]; in sctp_find_alternate_net()
308 stcb->asoc.hb_random_idx = 0; in sctp_find_alternate_net()
309 stcb->asoc.hb_ect_randombit = 0; in sctp_find_alternate_net()
311 this_random = stcb->asoc.hb_random_values[stcb->asoc.hb_random_idx]; in sctp_find_alternate_net()
312 stcb->asoc.hb_random_idx++; in sctp_find_alternate_net()
313 stcb->asoc.hb_ect_randombit = 0; in sctp_find_alternate_net()
329 alt = TAILQ_FIRST(&stcb->asoc.nets); in sctp_find_alternate_net()
335 alt = TAILQ_FIRST(&stcb->asoc.nets); in sctp_find_alternate_net()
368 alt = TAILQ_FIRST(&stcb->asoc.nets); in sctp_find_alternate_net()
374 alt = TAILQ_FIRST(&stcb->asoc.nets); in sctp_find_alternate_net()
403 alt = TAILQ_FIRST(&stcb->asoc.nets); in sctp_find_alternate_net()
410 sctp_backoff_on_timeout(struct sctp_tcb *stcb, in sctp_backoff_on_timeout() argument
417 net->RTO = stcb->asoc.minrto; in sctp_backoff_on_timeout()
419 net->RTO = stcb->asoc.initial_rto; in sctp_backoff_on_timeout()
423 if (net->RTO > stcb->asoc.maxrto) { in sctp_backoff_on_timeout()
424 net->RTO = stcb->asoc.maxrto; in sctp_backoff_on_timeout()
429 stcb->asoc.cc_functions.sctp_cwnd_update_after_timeout(stcb, net); in sctp_backoff_on_timeout()
435 sctp_recover_sent_list(struct sctp_tcb *stcb) in sctp_recover_sent_list() argument
440 asoc = &stcb->asoc; in sctp_recover_sent_list()
462 sctp_free_bufspace(stcb, asoc, chk, 1); in sctp_recover_sent_list()
470 sctp_free_a_chunk(stcb, chk, SCTP_SO_NOT_LOCKED); in sctp_recover_sent_list()
481 sctp_mark_all_for_resend(struct sctp_tcb *stcb, in sctp_mark_all_for_resend() argument
521 stcb->asoc.peers_rwnd, in sctp_mark_all_for_resend()
525 sctp_log_fr(net->flight_size, net->cwnd, stcb->asoc.total_flight, SCTP_FR_CWND_REPORT); in sctp_mark_all_for_resend()
549 orig_tf = stcb->asoc.total_flight; in sctp_mark_all_for_resend()
559 TAILQ_FOREACH_SAFE(chk, &stcb->asoc.sent_queue, sctp_next, nchk) { in sctp_mark_all_for_resend()
560 if (SCTP_TSN_GE(stcb->asoc.last_acked_seq, chk->rec.data.tsn)) { in sctp_mark_all_for_resend()
563 (unsigned int)stcb->asoc.last_acked_seq, (unsigned int)chk->rec.data.tsn); in sctp_mark_all_for_resend()
569 sctp_recover_sent_list(stcb); in sctp_mark_all_for_resend()
620 if (stcb->asoc.prsctp_supported && PR_SCTP_TTL_ENABLED(chk->flags)) { in sctp_mark_all_for_resend()
625 (void)sctp_release_pr_sctp_chunk(stcb, in sctp_mark_all_for_resend()
634 if (stcb->asoc.prsctp_supported && PR_SCTP_RTX_ENABLED(chk->flags)) { in sctp_mark_all_for_resend()
638 (void)sctp_release_pr_sctp_chunk(stcb, in sctp_mark_all_for_resend()
648 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_mark_all_for_resend()
666 stcb->asoc.marked_retrans++; in sctp_mark_all_for_resend()
675 sctp_total_flight_decrease(stcb, chk); in sctp_mark_all_for_resend()
676 stcb->asoc.peers_rwnd += chk->send_size; in sctp_mark_all_for_resend()
677 stcb->asoc.peers_rwnd += SCTP_BASE_SYSCTL(sctp_peer_chunk_oh); in sctp_mark_all_for_resend()
700 if (TAILQ_EMPTY(&stcb->asoc.send_queue)) { in sctp_mark_all_for_resend()
701 chk->rec.data.fast_retran_tsn = stcb->asoc.sending_seq; in sctp_mark_all_for_resend()
703 chk->rec.data.fast_retran_tsn = (TAILQ_FIRST(&stcb->asoc.send_queue))->rec.data.tsn; in sctp_mark_all_for_resend()
709 if (stcb->asoc.sctp_cmt_on_off > 0) { in sctp_mark_all_for_resend()
722 if ((orig_flight - net->flight_size) != (orig_tf - stcb->asoc.total_flight)) { in sctp_mark_all_for_resend()
736 stcb->asoc.peers_rwnd); in sctp_mark_all_for_resend()
745 TAILQ_FOREACH(chk, &stcb->asoc.control_send_queue, sctp_next) { in sctp_mark_all_for_resend()
756 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_mark_all_for_resend()
763 if ((stcb->asoc.sent_queue_retran_cnt == 0) && (could_be_sent)) { in sctp_mark_all_for_resend()
765 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_mark_all_for_resend()
770 if (stcb->asoc.sent_queue_retran_cnt != cnt_mk) { in sctp_mark_all_for_resend()
773 cnt_mk, stcb->asoc.sent_queue_retran_cnt, num_mk); in sctp_mark_all_for_resend()
776 stcb->asoc.sent_queue_retran_cnt = cnt_mk; in sctp_mark_all_for_resend()
783 stcb->asoc.total_flight = 0; in sctp_mark_all_for_resend()
784 stcb->asoc.total_flight_count = 0; in sctp_mark_all_for_resend()
786 TAILQ_FOREACH(lnets, &stcb->asoc.nets, sctp_next) { in sctp_mark_all_for_resend()
792 TAILQ_FOREACH(chk, &stcb->asoc.sent_queue, sctp_next) { in sctp_mark_all_for_resend()
803 sctp_total_flight_increase(stcb, chk); in sctp_mark_all_for_resend()
813 struct sctp_tcb *stcb, in sctp_t3rxt_timer() argument
825 TAILQ_FOREACH(lnet, &stcb->asoc.nets, sctp_next) { in sctp_t3rxt_timer()
827 sctp_log_cwnd(stcb, lnet, 1, SCTP_CWND_LOG_FROM_T3); in sctp_t3rxt_timer()
829 sctp_log_cwnd(stcb, lnet, 0, SCTP_CWND_LOG_FROM_T3); in sctp_t3rxt_timer()
834 if ((stcb->asoc.peers_rwnd == 0) && in sctp_t3rxt_timer()
835 (stcb->asoc.total_flight < net->mtu)) { in sctp_t3rxt_timer()
844 if (sctp_threshold_management(inp, stcb, net, in sctp_t3rxt_timer()
845 stcb->asoc.max_send_times)) { in sctp_t3rxt_timer()
849 if (net != stcb->asoc.primary_destination) { in sctp_t3rxt_timer()
867 sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); in sctp_t3rxt_timer()
879 if (sctp_threshold_management(inp, stcb, NULL, in sctp_t3rxt_timer()
880 stcb->asoc.max_send_times)) { in sctp_t3rxt_timer()
885 if (stcb->asoc.sctp_cmt_on_off > 0) { in sctp_t3rxt_timer()
887 alt = sctp_find_alternate_net(stcb, net, 2); in sctp_t3rxt_timer()
894 alt = sctp_find_alternate_net(stcb, net, 1); in sctp_t3rxt_timer()
905 alt = sctp_find_alternate_net(stcb, net, 0); in sctp_t3rxt_timer()
910 (void)sctp_mark_all_for_resend(stcb, net, alt, win_probe, in sctp_t3rxt_timer()
913 stcb->asoc.fast_retran_loss_recovery = 0; in sctp_t3rxt_timer()
917 if ((stcb->asoc.cc_functions.sctp_cwnd_new_transmission_begins) && in sctp_t3rxt_timer()
919 (*stcb->asoc.cc_functions.sctp_cwnd_new_transmission_begins) (stcb, net); in sctp_t3rxt_timer()
925 stcb->asoc.sat_t3_loss_recovery = 1; in sctp_t3rxt_timer()
926 stcb->asoc.sat_t3_recovery_tsn = stcb->asoc.sending_seq; in sctp_t3rxt_timer()
929 sctp_backoff_on_timeout(stcb, net, win_probe, num_mk, num_abandoned); in sctp_t3rxt_timer()
933 sctp_move_chunks_from_net(stcb, net); in sctp_t3rxt_timer()
949 if ((stcb->asoc.primary_destination == net) && (alt != net)) { in sctp_t3rxt_timer()
957 if (stcb->asoc.alternate != NULL) { in sctp_t3rxt_timer()
958 sctp_free_remote_addr(stcb->asoc.alternate); in sctp_t3rxt_timer()
960 stcb->asoc.alternate = alt; in sctp_t3rxt_timer()
961 atomic_add_int(&stcb->asoc.alternate->ref_count, 1); in sctp_t3rxt_timer()
968 if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) { in sctp_t3rxt_timer()
973 sctp_timer_start(SCTP_TIMER_TYPE_SEND, inp, stcb, net); in sctp_t3rxt_timer()
976 if (stcb->asoc.prsctp_supported) { in sctp_t3rxt_timer()
979 lchk = sctp_try_advance_peer_ack_point(stcb, &stcb->asoc); in sctp_t3rxt_timer()
981 if (SCTP_TSN_GT(stcb->asoc.advanced_peer_ack_point, stcb->asoc.last_acked_seq)) { in sctp_t3rxt_timer()
982 send_forward_tsn(stcb, &stcb->asoc); in sctp_t3rxt_timer()
990 sctp_timer_start(SCTP_TIMER_TYPE_SEND, stcb->sctp_ep, stcb, lchk->whoTo); in sctp_t3rxt_timer()
995 sctp_log_cwnd(stcb, net, net->cwnd, SCTP_CWND_LOG_FROM_RTX); in sctp_t3rxt_timer()
1002 struct sctp_tcb *stcb, in sctp_t1init_timer() argument
1006 if (stcb->asoc.delayed_connection) { in sctp_t1init_timer()
1011 stcb->asoc.delayed_connection = 0; in sctp_t1init_timer()
1012 sctp_send_initiate(inp, stcb, SCTP_SO_NOT_LOCKED); in sctp_t1init_timer()
1015 if (SCTP_GET_STATE(stcb) != SCTP_STATE_COOKIE_WAIT) { in sctp_t1init_timer()
1018 if (sctp_threshold_management(inp, stcb, net, in sctp_t1init_timer()
1019 stcb->asoc.max_init_times)) { in sctp_t1init_timer()
1023 stcb->asoc.dropped_special_cnt = 0; in sctp_t1init_timer()
1024 sctp_backoff_on_timeout(stcb, stcb->asoc.primary_destination, 1, 0, 0); in sctp_t1init_timer()
1025 if (stcb->asoc.initial_init_rto_max < net->RTO) { in sctp_t1init_timer()
1026 net->RTO = stcb->asoc.initial_init_rto_max; in sctp_t1init_timer()
1028 if (stcb->asoc.numnets > 1) { in sctp_t1init_timer()
1032 alt = sctp_find_alternate_net(stcb, stcb->asoc.primary_destination, 0); in sctp_t1init_timer()
1033 if (alt != stcb->asoc.primary_destination) { in sctp_t1init_timer()
1034 sctp_move_chunks_from_net(stcb, stcb->asoc.primary_destination); in sctp_t1init_timer()
1035 stcb->asoc.primary_destination = alt; in sctp_t1init_timer()
1039 sctp_send_initiate(inp, stcb, SCTP_SO_NOT_LOCKED); in sctp_t1init_timer()
1050 struct sctp_tcb *stcb, in sctp_cookie_timer() argument
1057 TAILQ_FOREACH(cookie, &stcb->asoc.control_send_queue, sctp_next) { in sctp_cookie_timer()
1063 if (SCTP_GET_STATE(stcb) == SCTP_STATE_COOKIE_ECHOED) { in sctp_cookie_timer()
1070 sctp_abort_an_association(inp, stcb, op_err, false, SCTP_SO_NOT_LOCKED); in sctp_cookie_timer()
1075 …CTP_PRINTF("Strange in state %d not cookie-echoed yet c-e timer expires?\n", SCTP_GET_STATE(stcb)); in sctp_cookie_timer()
1082 if (sctp_threshold_management(inp, stcb, cookie->whoTo, in sctp_cookie_timer()
1083 stcb->asoc.max_init_times)) { in sctp_cookie_timer()
1091 stcb->asoc.dropped_special_cnt = 0; in sctp_cookie_timer()
1092 sctp_backoff_on_timeout(stcb, cookie->whoTo, 1, 0, 0); in sctp_cookie_timer()
1093 alt = sctp_find_alternate_net(stcb, cookie->whoTo, 0); in sctp_cookie_timer()
1101 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_cookie_timer()
1114 sctp_strreset_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb) in sctp_strreset_timer() argument
1119 if (stcb->asoc.stream_reset_outstanding == 0) { in sctp_strreset_timer()
1123 (void)sctp_find_stream_reset(stcb, stcb->asoc.str_reset_seq_out, &strrst); in sctp_strreset_timer()
1129 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { in sctp_strreset_timer()
1137 sctp_backoff_on_timeout(stcb, net, 1, 0, 0); in sctp_strreset_timer()
1138 alt = sctp_find_alternate_net(stcb, net, 0); in sctp_strreset_timer()
1143 TAILQ_FOREACH(chk, &stcb->asoc.control_send_queue, sctp_next) { in sctp_strreset_timer()
1150 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_strreset_timer()
1161 sctp_move_chunks_from_net(stcb, net); in sctp_strreset_timer()
1167 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_strreset_timer()
1172 sctp_timer_start(SCTP_TIMER_TYPE_STRRESET, inp, stcb, alt); in sctp_strreset_timer()
1177 sctp_asconf_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, in sctp_asconf_timer() argument
1184 if (TAILQ_EMPTY(&stcb->asoc.asconf_send_queue)) { in sctp_asconf_timer()
1186 sctp_send_asconf(stcb, net, SCTP_ADDR_NOT_LOCKED); in sctp_asconf_timer()
1193 asconf = TAILQ_FIRST(&stcb->asoc.asconf_send_queue); in sctp_asconf_timer()
1199 if (sctp_threshold_management(inp, stcb, net, in sctp_asconf_timer()
1200 stcb->asoc.max_send_times)) { in sctp_asconf_timer()
1204 if (asconf->snd_count > stcb->asoc.max_send_times) { in sctp_asconf_timer()
1213 sctp_asconf_cleanup(stcb); in sctp_asconf_timer()
1220 sctp_backoff_on_timeout(stcb, net, 1, 0, 0); in sctp_asconf_timer()
1221 alt = sctp_find_alternate_net(stcb, net, 0); in sctp_asconf_timer()
1228 TAILQ_FOREACH(chk, &stcb->asoc.control_send_queue, sctp_next) { in sctp_asconf_timer()
1236 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_asconf_timer()
1241 TAILQ_FOREACH(chk, &stcb->asoc.asconf_send_queue, sctp_next) { in sctp_asconf_timer()
1248 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_asconf_timer()
1257 sctp_move_chunks_from_net(stcb, net); in sctp_asconf_timer()
1263 sctp_ucount_incr(stcb->asoc.sent_queue_retran_cnt); in sctp_asconf_timer()
1268 sctp_send_asconf(stcb, alt, SCTP_ADDR_NOT_LOCKED); in sctp_asconf_timer()
1275 sctp_delete_prim_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb) in sctp_delete_prim_timer() argument
1277 if (stcb->asoc.deleted_primary == NULL) { in sctp_delete_prim_timer()
1283 SCTPDBG_ADDR(SCTP_DEBUG_ASCONF1, &stcb->asoc.deleted_primary->ro._l_addr.sa); in sctp_delete_prim_timer()
1284 sctp_free_remote_addr(stcb->asoc.deleted_primary); in sctp_delete_prim_timer()
1285 stcb->asoc.deleted_primary = NULL; in sctp_delete_prim_timer()
1297 sctp_shutdown_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, in sctp_shutdown_timer() argument
1303 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { in sctp_shutdown_timer()
1307 sctp_backoff_on_timeout(stcb, net, 1, 0, 0); in sctp_shutdown_timer()
1309 alt = sctp_find_alternate_net(stcb, net, 0); in sctp_shutdown_timer()
1312 sctp_send_shutdown(stcb, alt); in sctp_shutdown_timer()
1315 sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWN, inp, stcb, alt); in sctp_shutdown_timer()
1320 sctp_shutdownack_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, in sctp_shutdownack_timer() argument
1326 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { in sctp_shutdownack_timer()
1330 sctp_backoff_on_timeout(stcb, net, 1, 0, 0); in sctp_shutdownack_timer()
1332 alt = sctp_find_alternate_net(stcb, net, 0); in sctp_shutdownack_timer()
1335 sctp_send_shutdown_ack(stcb, alt); in sctp_shutdownack_timer()
1338 sctp_timer_start(SCTP_TIMER_TYPE_SHUTDOWNACK, inp, stcb, alt); in sctp_shutdownack_timer()
1343 sctp_audit_stream_queues_for_size(struct sctp_inpcb *inp, struct sctp_tcb *stcb) in sctp_audit_stream_queues_for_size() argument
1350 KASSERT(stcb != NULL, ("stcb is NULL")); in sctp_audit_stream_queues_for_size()
1351 SCTP_TCB_LOCK_ASSERT(stcb); in sctp_audit_stream_queues_for_size()
1352 KASSERT(TAILQ_EMPTY(&stcb->asoc.send_queue), ("send_queue not empty")); in sctp_audit_stream_queues_for_size()
1353 KASSERT(TAILQ_EMPTY(&stcb->asoc.sent_queue), ("sent_queue not empty")); in sctp_audit_stream_queues_for_size()
1355 if (stcb->asoc.sent_queue_retran_cnt) { in sctp_audit_stream_queues_for_size()
1357 stcb->asoc.sent_queue_retran_cnt); in sctp_audit_stream_queues_for_size()
1358 stcb->asoc.sent_queue_retran_cnt = 0; in sctp_audit_stream_queues_for_size()
1360 if (stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, &stcb->asoc)) { in sctp_audit_stream_queues_for_size()
1362 stcb->asoc.ss_functions.sctp_ss_init(stcb, &stcb->asoc); in sctp_audit_stream_queues_for_size()
1363 if (!stcb->asoc.ss_functions.sctp_ss_is_empty(stcb, &stcb->asoc)) { in sctp_audit_stream_queues_for_size()
1368 stcb->asoc.total_output_queue_size = 0; in sctp_audit_stream_queues_for_size()
1372 for (i = 0; i < stcb->asoc.streamoutcnt; i++) { in sctp_audit_stream_queues_for_size()
1373 if (!TAILQ_EMPTY(&stcb->asoc.strmout[i].outqueue)) { in sctp_audit_stream_queues_for_size()
1374 TAILQ_FOREACH(sp, &stcb->asoc.strmout[i].outqueue, next) { in sctp_audit_stream_queues_for_size()
1381 if (chks_in_queue != stcb->asoc.stream_queue_cnt) { in sctp_audit_stream_queues_for_size()
1383 stcb->asoc.stream_queue_cnt, chks_in_queue); in sctp_audit_stream_queues_for_size()
1387 sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_T3, SCTP_SO_NOT_LOCKED); in sctp_audit_stream_queues_for_size()
1388 if ((TAILQ_EMPTY(&stcb->asoc.send_queue)) && in sctp_audit_stream_queues_for_size()
1389 (TAILQ_EMPTY(&stcb->asoc.sent_queue))) { in sctp_audit_stream_queues_for_size()
1401 (u_long)stcb->asoc.total_output_queue_size); in sctp_audit_stream_queues_for_size()
1402 stcb->asoc.total_output_queue_size = 0; in sctp_audit_stream_queues_for_size()
1407 sctp_heartbeat_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb, in sctp_heartbeat_timer() argument
1423 sctp_backoff_on_timeout(stcb, net, 1, 0, 0); in sctp_heartbeat_timer()
1424 if (sctp_threshold_management(inp, stcb, net, stcb->asoc.max_send_times)) { in sctp_heartbeat_timer()
1433 if ((stcb->asoc.total_output_queue_size > 0) && in sctp_heartbeat_timer()
1434 (TAILQ_EMPTY(&stcb->asoc.send_queue)) && in sctp_heartbeat_timer()
1435 (TAILQ_EMPTY(&stcb->asoc.sent_queue))) { in sctp_heartbeat_timer()
1436 sctp_audit_stream_queues_for_size(inp, stcb); in sctp_heartbeat_timer()
1461 sctp_send_hb(stcb, net, SCTP_SO_NOT_LOCKED); in sctp_heartbeat_timer()
1469 struct sctp_tcb *stcb, in sctp_pathmtu_timer() argument
1495 stcb, in sctp_pathmtu_timer()
1497 net, 0, stcb->asoc.vrf_id); in sctp_pathmtu_timer()
1524 sctp_timer_start(SCTP_TIMER_TYPE_PATHMTURAISE, inp, stcb, net); in sctp_pathmtu_timer()
1528 sctp_autoclose_timer(struct sctp_inpcb *inp, struct sctp_tcb *stcb) in sctp_autoclose_timer() argument
1535 if (stcb->asoc.sctp_autoclose_ticks > 0 && in sctp_autoclose_timer()
1538 asoc = &stcb->asoc; in sctp_autoclose_timer()
1556 sctp_chunk_output(inp, stcb, SCTP_OUTPUT_FROM_AUTOCLOSE_TMR, SCTP_SO_NOT_LOCKED); in sctp_autoclose_timer()
1564 if (SCTP_GET_STATE(stcb) != SCTP_STATE_SHUTDOWN_SENT) { in sctp_autoclose_timer()
1568 if ((SCTP_GET_STATE(stcb) == SCTP_STATE_OPEN) || in sctp_autoclose_timer()
1569 (SCTP_GET_STATE(stcb) == SCTP_STATE_SHUTDOWN_RECEIVED)) { in sctp_autoclose_timer()
1572 SCTP_SET_STATE(stcb, SCTP_STATE_SHUTDOWN_SENT); in sctp_autoclose_timer()
1573 sctp_stop_timers_for_shutdown(stcb); in sctp_autoclose_timer()
1574 if (stcb->asoc.alternate) { in sctp_autoclose_timer()
1575 net = stcb->asoc.alternate; in sctp_autoclose_timer()
1577 net = stcb->asoc.primary_destination; in sctp_autoclose_timer()
1579 sctp_send_shutdown(stcb, net); in sctp_autoclose_timer()
1581 stcb->sctp_ep, stcb, net); in sctp_autoclose_timer()
1583 stcb->sctp_ep, stcb, NULL); in sctp_autoclose_timer()
1596 sctp_timer_start(SCTP_TIMER_TYPE_AUTOCLOSE, inp, stcb, NULL); in sctp_autoclose_timer()