Changeset View
Changeset View
Standalone View
Standalone View
head/sys/netinet/tcp_stacks/rack.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 8,757 Lines • ▼ Show 20 Lines | #ifdef NETFLIX_SB_LIMITS | ||||
counter_u64_add(tcp_sb_shlim_fails, 1); | counter_u64_add(tcp_sb_shlim_fails, 1); | ||||
m_freem(m); | m_freem(m); | ||||
return (0); | return (0); | ||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
rack_handle_delayed_ack(tp, rack, tlen, tfo_syn); | rack_handle_delayed_ack(tp, rack, tlen, tfo_syn); | ||||
tp->rcv_nxt += tlen; | tp->rcv_nxt += tlen; | ||||
if (tlen && | |||||
((tp->t_flags2 & TF2_FBYTES_COMPLETE) == 0) && | |||||
(tp->t_fbyte_in == 0)) { | |||||
tp->t_fbyte_in = ticks; | |||||
if (tp->t_fbyte_in == 0) | |||||
tp->t_fbyte_in = 1; | |||||
if (tp->t_fbyte_out && tp->t_fbyte_in) | |||||
tp->t_flags2 |= TF2_FBYTES_COMPLETE; | |||||
} | |||||
thflags = th->th_flags & TH_FIN; | thflags = th->th_flags & TH_FIN; | ||||
KMOD_TCPSTAT_ADD(tcps_rcvpack, nsegs); | KMOD_TCPSTAT_ADD(tcps_rcvpack, nsegs); | ||||
KMOD_TCPSTAT_ADD(tcps_rcvbyte, tlen); | KMOD_TCPSTAT_ADD(tcps_rcvbyte, tlen); | ||||
SOCKBUF_LOCK(&so->so_rcv); | SOCKBUF_LOCK(&so->so_rcv); | ||||
if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { | if (so->so_rcv.sb_state & SBS_CANTRCVMORE) { | ||||
m_freem(m); | m_freem(m); | ||||
} else | } else | ||||
#ifdef NETFLIX_SB_LIMITS | #ifdef NETFLIX_SB_LIMITS | ||||
▲ Show 20 Lines • Show All 207 Lines • ▼ Show 20 Lines | if (so->so_rcv.sb_shlim) { | ||||
} | } | ||||
} | } | ||||
#endif | #endif | ||||
/* Clean receiver SACK report if present */ | /* Clean receiver SACK report if present */ | ||||
if (tp->rcv_numsacks) | if (tp->rcv_numsacks) | ||||
tcp_clean_sackreport(tp); | tcp_clean_sackreport(tp); | ||||
KMOD_TCPSTAT_INC(tcps_preddat); | KMOD_TCPSTAT_INC(tcps_preddat); | ||||
tp->rcv_nxt += tlen; | tp->rcv_nxt += tlen; | ||||
if (tlen && | |||||
((tp->t_flags2 & TF2_FBYTES_COMPLETE) == 0) && | |||||
(tp->t_fbyte_in == 0)) { | |||||
tp->t_fbyte_in = ticks; | |||||
if (tp->t_fbyte_in == 0) | |||||
tp->t_fbyte_in = 1; | |||||
if (tp->t_fbyte_out && tp->t_fbyte_in) | |||||
tp->t_flags2 |= TF2_FBYTES_COMPLETE; | |||||
} | |||||
/* | /* | ||||
* Pull snd_wl1 up to prevent seq wrap relative to th_seq. | * Pull snd_wl1 up to prevent seq wrap relative to th_seq. | ||||
*/ | */ | ||||
tp->snd_wl1 = th->th_seq; | tp->snd_wl1 = th->th_seq; | ||||
/* | /* | ||||
* Pull rcv_up up to prevent seq wrap relative to rcv_nxt. | * Pull rcv_up up to prevent seq wrap relative to rcv_nxt. | ||||
*/ | */ | ||||
tp->rcv_up = tp->rcv_nxt; | tp->rcv_up = tp->rcv_nxt; | ||||
▲ Show 20 Lines • Show All 6,125 Lines • Show Last 20 Lines |