Lines Matching refs:sctp
100 sctp_timer(sctp_t *sctp, mblk_t *mp, clock_t tim) in sctp_timer() argument
105 ASSERT(sctp != NULL && mp != NULL); in sctp_timer()
131 SCTP_REFHOLD(sctp); in sctp_timer()
157 sctp_timer_alloc(sctp_t *sctp, pfv_t func, int sleep) in sctp_timer_alloc() argument
162 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_timer_alloc()
179 sctpt->sctpt_sctp = sctp; in sctp_timer_alloc()
199 sctp_t *sctp; in sctp_timer_fire() local
207 sctp = sctpt->sctpt_sctp; in sctp_timer_fire()
208 ASSERT(sctp != NULL); in sctp_timer_fire()
210 mutex_enter(&sctp->sctp_lock); in sctp_timer_fire()
211 if (sctp->sctp_running) { in sctp_timer_fire()
217 if (sctp->sctp_timer_mp == NULL) { in sctp_timer_fire()
218 SCTP_REFHOLD(sctp); in sctp_timer_fire()
219 sctp->sctp_timer_mp = mp; in sctp_timer_fire()
221 linkb(sctp->sctp_timer_mp, mp); in sctp_timer_fire()
224 mutex_exit(&sctp->sctp_lock); in sctp_timer_fire()
226 sctp->sctp_running = B_TRUE; in sctp_timer_fire()
227 mutex_exit(&sctp->sctp_lock); in sctp_timer_fire()
229 sctp_timer_call(sctp, mp); in sctp_timer_fire()
230 WAKE_SCTP(sctp); in sctp_timer_fire()
232 SCTP_REFRELE(sctp); in sctp_timer_fire()
365 sctp_timer_call(sctp_t *sctp, mblk_t *mp) in sctp_timer_call() argument
370 (*sctpt->sctpt_pfv)(sctp, sctpt->sctpt_faddr); in sctp_timer_call()
378 sctp_ack_timer(sctp_t *sctp) in sctp_ack_timer() argument
380 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_ack_timer()
382 sctp->sctp_ack_timer_running = 0; in sctp_ack_timer()
383 sctp->sctp_sack_toggle = sctps->sctps_deferred_acks_max; in sctp_ack_timer()
385 (void) sctp_sack(sctp, NULL); in sctp_ack_timer()
392 sctp_heartbeat_timer(sctp_t *sctp) in sctp_heartbeat_timer() argument
398 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_heartbeat_timer()
401 if (sctp->sctp_strikes >= sctp->sctp_pa_max_rxt) { in sctp_heartbeat_timer()
410 if (sctps->sctps_reclaim || !sctp_is_a_faddr_clean(sctp)) { in sctp_heartbeat_timer()
414 sctp_assoc_event(sctp, SCTP_COMM_LOST, 0, NULL); in sctp_heartbeat_timer()
415 sctp_clean_death(sctp, sctp->sctp_client_errno ? in sctp_heartbeat_timer()
416 sctp->sctp_client_errno : ETIMEDOUT); in sctp_heartbeat_timer()
422 if (sctp->sctp_state != SCTPS_ESTABLISHED) { in sctp_heartbeat_timer()
436 for (fp = sctp->sctp_faddrs; fp != NULL; fp = fp->sf_next) { in sctp_heartbeat_timer()
453 sctp_get_dest(sctp, fp); in sctp_heartbeat_timer()
457 sctp_faddr_dead(sctp, fp, in sctp_heartbeat_timer()
499 sctp->sctp_strikes++; in sctp_heartbeat_timer()
509 if (sctp_faddr_dead(sctp, fp, in sctp_heartbeat_timer()
519 sctp->sctp_rto_initial; in sctp_heartbeat_timer()
522 SCTP_CALC_RXT(sctp, fp, in sctp_heartbeat_timer()
523 sctp->sctp_rto_max); in sctp_heartbeat_timer()
561 sctp_send_heartbeat(sctp, fp); in sctp_heartbeat_timer()
567 if (sctp->sctp_autoclose != 0) { in sctp_heartbeat_timer()
570 expire = sctp->sctp_active + sctp->sctp_autoclose; in sctp_heartbeat_timer()
574 sctp_send_shutdown(sctp, 0); in sctp_heartbeat_timer()
584 sctp_timer(sctp, sctp->sctp_heartbeat_mp, earliest_expiry); in sctp_heartbeat_timer()
588 sctp_rexmit_timer(sctp_t *sctp, sctp_faddr_t *fp) in sctp_rexmit_timer() argument
591 uint32_t rto_max = sctp->sctp_rto_max; in sctp_rexmit_timer()
592 sctp_stack_t *sctps = sctp->sctp_sctps; in sctp_rexmit_timer()
604 pa_max_retr = sctp->sctp_pa_max_rxt; in sctp_rexmit_timer()
608 pa_max_retr = MIN(sctp_pa_early_abort, sctp->sctp_pa_max_rxt); in sctp_rexmit_timer()
612 if (sctp->sctp_state < SCTPS_ESTABLISHED) { in sctp_rexmit_timer()
613 if (fp->sf_strikes >= sctp->sctp_max_init_rxt) { in sctp_rexmit_timer()
617 sctp_assoc_event(sctp, SCTP_CANT_STR_ASSOC, 0, NULL); in sctp_rexmit_timer()
618 sctp_clean_death(sctp, sctp->sctp_client_errno ? in sctp_rexmit_timer()
619 sctp->sctp_client_errno : ETIMEDOUT); in sctp_rexmit_timer()
622 } else if (sctp->sctp_state >= SCTPS_ESTABLISHED) { in sctp_rexmit_timer()
623 if (sctp->sctp_strikes >= pa_max_retr) { in sctp_rexmit_timer()
627 sctp_assoc_event(sctp, SCTP_COMM_LOST, 0, NULL); in sctp_rexmit_timer()
628 sctp_clean_death(sctp, sctp->sctp_client_errno ? in sctp_rexmit_timer()
629 sctp->sctp_client_errno : ETIMEDOUT); in sctp_rexmit_timer()
635 if (sctp_faddr_dead(sctp, fp, SCTP_FADDRS_DOWN) == -1) { in sctp_rexmit_timer()
640 switch (sctp->sctp_state) { in sctp_rexmit_timer()
642 (void) sctp_shutdown_received(sctp, NULL, B_FALSE, B_TRUE, in sctp_rexmit_timer()
648 if (sctp->sctp_xmit_head == NULL && in sctp_rexmit_timer()
649 sctp->sctp_xmit_unsent == NULL) { in sctp_rexmit_timer()
651 if (sctp->sctp_state == SCTPS_SHUTDOWN_PENDING) { in sctp_rexmit_timer()
652 sctp_send_shutdown(sctp, 1); in sctp_rexmit_timer()
659 sctp_rexmit(sctp, fp); in sctp_rexmit_timer()
666 BUMP_LOCAL(sctp->sctp_T1expire); in sctp_rexmit_timer()
674 mp = sctp_init_mp(sctp, fp); in sctp_rexmit_timer()
678 BUMP_LOCAL(sctp->sctp_opkts); in sctp_rexmit_timer()
680 rto_max = sctp->sctp_rto_max_init; in sctp_rexmit_timer()
683 BUMP_LOCAL(sctp->sctp_T1expire); in sctp_rexmit_timer()
684 if (sctp->sctp_cookie_mp == NULL) { in sctp_rexmit_timer()
685 sctp->sctp_state = SCTPS_COOKIE_WAIT; in sctp_rexmit_timer()
688 mp = dupmsg(sctp->sctp_cookie_mp); in sctp_rexmit_timer()
692 BUMP_LOCAL(sctp->sctp_opkts); in sctp_rexmit_timer()
694 rto_max = sctp->sctp_rto_max_init; in sctp_rexmit_timer()
697 BUMP_LOCAL(sctp->sctp_T2expire); in sctp_rexmit_timer()
698 sctp_send_shutdown(sctp, 1); in sctp_rexmit_timer()
703 ASSERT(sctp->sctp_xmit_head == NULL); in sctp_rexmit_timer()
704 ASSERT(sctp->sctp_xmit_unsent == NULL); in sctp_rexmit_timer()
706 BUMP_LOCAL(sctp->sctp_T2expire); in sctp_rexmit_timer()
707 (void) sctp_shutdown_received(sctp, NULL, B_FALSE, B_TRUE, in sctp_rexmit_timer()
717 sctp->sctp_strikes++; in sctp_rexmit_timer()
718 SCTP_CALC_RXT(sctp, fp, rto_max); in sctp_rexmit_timer()
720 SCTP_FADDR_TIMER_RESTART(sctp, fp, fp->sf_rto); in sctp_rexmit_timer()
727 sctp_update_rtt(sctp_t *sctp, sctp_faddr_t *fp, clock_t delta) in sctp_update_rtt() argument
762 if (fp->sf_rto < sctp->sctp_rto_min) { in sctp_update_rtt()
763 fp->sf_rto = sctp->sctp_rto_min; in sctp_update_rtt()
765 if (fp->sf_rto > sctp->sctp_rto_max) { in sctp_update_rtt()
766 fp->sf_rto = sctp->sctp_rto_max; in sctp_update_rtt()
769 SCTP_MAX_RTO(sctp, fp); in sctp_update_rtt()
774 sctp_free_faddr_timers(sctp_t *sctp) in sctp_free_faddr_timers() argument
778 for (fp = sctp->sctp_faddrs; fp != NULL; fp = fp->sf_next) { in sctp_free_faddr_timers()
793 sctp_stop_faddr_timers(sctp_t *sctp) in sctp_stop_faddr_timers() argument
797 for (fp = sctp->sctp_faddrs; fp != NULL; fp = fp->sf_next) { in sctp_stop_faddr_timers()
804 sctp_process_timer(sctp_t *sctp) in sctp_process_timer() argument
808 ASSERT(sctp->sctp_running); in sctp_process_timer()
809 ASSERT(MUTEX_HELD(&sctp->sctp_lock)); in sctp_process_timer()
810 while ((mp = sctp->sctp_timer_mp) != NULL) { in sctp_process_timer()
816 sctp->sctp_timer_mp = mp->b_cont; in sctp_process_timer()
823 mutex_exit(&sctp->sctp_lock); in sctp_process_timer()
824 sctp_timer_call(sctp, mp); in sctp_process_timer()
825 mutex_enter(&sctp->sctp_lock); in sctp_process_timer()
827 SCTP_REFRELE(sctp); in sctp_process_timer()