Changeset View
Changeset View
Standalone View
Standalone View
sys/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->tfb_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->tfb_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->tfb_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->tfb_tcp_timer_activate) { | |||||
tp->t_fb->tfb_tcp_timer_activate(tp, timer_type, delta); | |||||
jtl: should call tp->t_fb->tcp_timer_activate. | |||||
Not Done Inline Actionsgood catch. rrs: good catch. | |||||
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->tfb_tcp_timer_active) { | |||||
return(tp->t_fb->tfb_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->tfb_tcp_timer_stop) { | |||||
/* | |||||
* XXXrrs we need to look at this with the | |||||
Not Done Inline ActionsI think it is up to the author of the alternate TCP stack to code appropriate logic into their function. We just need to document this. jtl: I think it is up to the author of the alternate TCP stack to code appropriate logic into their… | |||||
Not Done Inline ActionsI am going to fix all this code, the whole stop case is kludgy due to the rrs: I am going to fix all this code, the whole stop case is kludgy due to the
lack of a… | |||||
* stop case below (flags). | |||||
*/ | |||||
tp->t_fb->tfb_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. |
should call tp->t_fb->tcp_timer_activate.