Changeset View
Changeset View
Standalone View
Standalone View
netinet/tcp_timer.c
Context not available. | |||||
tp->t_flags |= TF_ACKNOW; | tp->t_flags |= TF_ACKNOW; | ||||
TCPSTAT_INC(tcps_delack); | TCPSTAT_INC(tcps_delack); | ||||
(void) tcp_output(tp); | (void) tp->t_fb->tcp_output(tp); | ||||
INP_WUNLOCK(inp); | INP_WUNLOCK(inp); | ||||
CURVNET_RESTORE(); | CURVNET_RESTORE(); | ||||
} | } | ||||
Context not available. | |||||
} | } | ||||
tcp_setpersist(tp); | tcp_setpersist(tp); | ||||
tp->t_flags |= TF_FORCEDATA; | tp->t_flags |= TF_FORCEDATA; | ||||
(void) tcp_output(tp); | (void) tp->t_fb->tcp_output(tp); | ||||
tp->t_flags &= ~TF_FORCEDATA; | tp->t_flags &= ~TF_FORCEDATA; | ||||
out: | out: | ||||
Context not available. | |||||
cc_cong_signal(tp, NULL, CC_RTO); | cc_cong_signal(tp, NULL, CC_RTO); | ||||
(void) tcp_output(tp); | (void) tp->t_fb->tcp_output(tp); | ||||
out: | out: | ||||
#ifdef TCPDEBUG | #ifdef TCPDEBUG | ||||
Context not available. | |||||
f_reset = TT_2MSL_RST; | f_reset = TT_2MSL_RST; | ||||
break; | break; | ||||
default: | default: | ||||
if (tp->t_fb->tcp_timer_activate) { | |||||
tcp_timer_activate(tp, timer_type, delta); | |||||
return; | |||||
} | |||||
panic("tp %p bad timer_type %#x", tp, timer_type); | panic("tp %p bad timer_type %#x", tp, timer_type); | ||||
} | } | ||||
if (delta == 0) { | if (delta == 0) { | ||||
Context not available. | |||||
t_callout = &tp->t_timers->tt_2msl; | t_callout = &tp->t_timers->tt_2msl; | ||||
break; | break; | ||||
default: | default: | ||||
if (tp->t_fb->tcp_timer_active) { | |||||
return(tp->t_fb->tcp_timer_active(tp, timer_type)); | |||||
} | |||||
panic("tp %p bad timer_type %#x", tp, timer_type); | panic("tp %p bad timer_type %#x", tp, timer_type); | ||||
} | } | ||||
return callout_active(t_callout); | return callout_active(t_callout); | ||||
Context not available. | |||||
f_reset = TT_2MSL_RST; | f_reset = TT_2MSL_RST; | ||||
break; | break; | ||||
default: | default: | ||||
if (tp->t_fb->tcp_timer_stop) { | |||||
/* | |||||
* XXXrrs we need to look at this with the | |||||
* stop case below (flags). | |||||
*/ | |||||
tp->t_fb->tcp_timer_stop(tp, timer_type); | |||||
return; | |||||
} | |||||
panic("tp %p bad timer_type %#x", tp, timer_type); | panic("tp %p bad timer_type %#x", tp, timer_type); | ||||
} | } | ||||
Context not available. |