tcp: Warning cleanup from new compiler.
The clang compiler recently got an update that generates warnings of unused variables where they were set, and then never used. This revision goes through the tcp stack and cleans all of those up. Reviewed by: Michael Tuexen, Gleb Smirnoff Sponsored by: Netflix Inc. Differential Revision:
This commit is contained in:
parent
e0516c7553
commit
aac52f94ea
@ -1229,7 +1229,7 @@ tcp_hptsi(struct tcp_hpts_entry *hpts, int from_callout)
|
|||||||
struct inpcb *inp, *ninp;
|
struct inpcb *inp, *ninp;
|
||||||
TAILQ_HEAD(, inpcb) head = TAILQ_HEAD_INITIALIZER(head);
|
TAILQ_HEAD(, inpcb) head = TAILQ_HEAD_INITIALIZER(head);
|
||||||
struct hptsh *hptsh;
|
struct hptsh *hptsh;
|
||||||
uint32_t runningslot, gencnt;
|
uint32_t runningslot;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Calculate our delay, if there are no extra ticks there
|
* Calculate our delay, if there are no extra ticks there
|
||||||
@ -1243,7 +1243,7 @@ tcp_hptsi(struct tcp_hpts_entry *hpts, int from_callout)
|
|||||||
TAILQ_SWAP(&head, &hptsh->head, inpcb, inp_hpts);
|
TAILQ_SWAP(&head, &hptsh->head, inpcb, inp_hpts);
|
||||||
hpts->p_on_queue_cnt -= hptsh->count;
|
hpts->p_on_queue_cnt -= hptsh->count;
|
||||||
hptsh->count = 0;
|
hptsh->count = 0;
|
||||||
gencnt = hptsh->gencnt++;
|
hptsh->gencnt++;
|
||||||
|
|
||||||
HPTS_UNLOCK(hpts);
|
HPTS_UNLOCK(hpts);
|
||||||
|
|
||||||
|
@ -1529,10 +1529,8 @@ tcp_log_pacing_size(struct tcpcb *tp, uint64_t bw, uint32_t segsiz, uint32_t new
|
|||||||
if (tp->t_logstate != TCP_LOG_STATE_OFF) {
|
if (tp->t_logstate != TCP_LOG_STATE_OFF) {
|
||||||
union tcp_log_stackspecific log;
|
union tcp_log_stackspecific log;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
uint32_t cts;
|
|
||||||
|
|
||||||
memset(&log, 0, sizeof(log));
|
memset(&log, 0, sizeof(log));
|
||||||
cts = tcp_get_usecs(&tv);
|
|
||||||
log.u_bbr.flex1 = segsiz;
|
log.u_bbr.flex1 = segsiz;
|
||||||
log.u_bbr.flex2 = new_tso;
|
log.u_bbr.flex2 = new_tso;
|
||||||
log.u_bbr.flex3 = time_between;
|
log.u_bbr.flex3 = time_between;
|
||||||
|
@ -1013,7 +1013,7 @@ void
|
|||||||
tcp_sack_lost_retransmission(struct tcpcb *tp, struct tcphdr *th)
|
tcp_sack_lost_retransmission(struct tcpcb *tp, struct tcphdr *th)
|
||||||
{
|
{
|
||||||
struct sackhole *temp;
|
struct sackhole *temp;
|
||||||
uint32_t prev_cwnd;
|
|
||||||
if (IN_RECOVERY(tp->t_flags) &&
|
if (IN_RECOVERY(tp->t_flags) &&
|
||||||
SEQ_GT(tp->snd_fack, tp->snd_recover) &&
|
SEQ_GT(tp->snd_fack, tp->snd_recover) &&
|
||||||
((temp = TAILQ_FIRST(&tp->snd_holes)) != NULL) &&
|
((temp = TAILQ_FIRST(&tp->snd_holes)) != NULL) &&
|
||||||
@ -1037,7 +1037,6 @@ tcp_sack_lost_retransmission(struct tcpcb *tp, struct tcphdr *th)
|
|||||||
* prior to invoking another cwnd reduction by the CC
|
* prior to invoking another cwnd reduction by the CC
|
||||||
* module, to not shrink it excessively.
|
* module, to not shrink it excessively.
|
||||||
*/
|
*/
|
||||||
prev_cwnd = tp->snd_cwnd;
|
|
||||||
tp->snd_cwnd = tp->snd_ssthresh;
|
tp->snd_cwnd = tp->snd_ssthresh;
|
||||||
/*
|
/*
|
||||||
* Formally exit recovery, and let the CC module adjust
|
* Formally exit recovery, and let the CC module adjust
|
||||||
|
@ -6492,7 +6492,7 @@ bbr_nf_measurement(struct tcp_bbr *bbr, struct bbr_sendmap *rsm, uint32_t rtt, u
|
|||||||
/* We log only when not in persist */
|
/* We log only when not in persist */
|
||||||
/* Translate to a Bytes Per Second */
|
/* Translate to a Bytes Per Second */
|
||||||
uint64_t tim, bw, ts_diff, ts_bw;
|
uint64_t tim, bw, ts_diff, ts_bw;
|
||||||
uint32_t upper, lower, delivered;
|
uint32_t delivered;
|
||||||
|
|
||||||
if (TSTMP_GT(bbr->r_ctl.rc_del_time, rsm->r_del_time))
|
if (TSTMP_GT(bbr->r_ctl.rc_del_time, rsm->r_del_time))
|
||||||
tim = (uint64_t)(bbr->r_ctl.rc_del_time - rsm->r_del_time);
|
tim = (uint64_t)(bbr->r_ctl.rc_del_time - rsm->r_del_time);
|
||||||
@ -6511,8 +6511,6 @@ bbr_nf_measurement(struct tcp_bbr *bbr, struct bbr_sendmap *rsm, uint32_t rtt, u
|
|||||||
/* We must have a calculatable amount */
|
/* We must have a calculatable amount */
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
upper = (bw >> 32) & 0x00000000ffffffff;
|
|
||||||
lower = bw & 0x00000000ffffffff;
|
|
||||||
/*
|
/*
|
||||||
* If we are using this b/w shove it in now so we
|
* If we are using this b/w shove it in now so we
|
||||||
* can see in the trace viewer if it gets over-ridden.
|
* can see in the trace viewer if it gets over-ridden.
|
||||||
@ -6608,7 +6606,7 @@ bbr_google_measurement(struct tcp_bbr *bbr, struct bbr_sendmap *rsm, uint32_t rt
|
|||||||
/* We log only when not in persist */
|
/* We log only when not in persist */
|
||||||
/* Translate to a Bytes Per Second */
|
/* Translate to a Bytes Per Second */
|
||||||
uint64_t tim, bw;
|
uint64_t tim, bw;
|
||||||
uint32_t upper, lower, delivered;
|
uint32_t delivered;
|
||||||
int no_apply = 0;
|
int no_apply = 0;
|
||||||
|
|
||||||
if (TSTMP_GT(bbr->r_ctl.rc_del_time, rsm->r_del_time))
|
if (TSTMP_GT(bbr->r_ctl.rc_del_time, rsm->r_del_time))
|
||||||
@ -6630,8 +6628,6 @@ bbr_google_measurement(struct tcp_bbr *bbr, struct bbr_sendmap *rsm, uint32_t rt
|
|||||||
|
|
||||||
no_apply = 1;
|
no_apply = 1;
|
||||||
}
|
}
|
||||||
upper = (bw >> 32) & 0x00000000ffffffff;
|
|
||||||
lower = bw & 0x00000000ffffffff;
|
|
||||||
/*
|
/*
|
||||||
* If we are using this b/w shove it in now so we
|
* If we are using this b/w shove it in now so we
|
||||||
* can see in the trace viewer if it gets over-ridden.
|
* can see in the trace viewer if it gets over-ridden.
|
||||||
@ -6999,12 +6995,11 @@ bbr_proc_sack_blk(struct tcpcb *tp, struct tcp_bbr *bbr, struct sackblk *sack,
|
|||||||
struct tcpopt *to, struct bbr_sendmap **prsm, uint32_t cts)
|
struct tcpopt *to, struct bbr_sendmap **prsm, uint32_t cts)
|
||||||
{
|
{
|
||||||
int32_t times = 0;
|
int32_t times = 0;
|
||||||
uint32_t start, end, maxseg, changed = 0;
|
uint32_t start, end, changed = 0;
|
||||||
struct bbr_sendmap *rsm, *nrsm;
|
struct bbr_sendmap *rsm, *nrsm;
|
||||||
int32_t used_ref = 1;
|
int32_t used_ref = 1;
|
||||||
uint8_t went_back = 0, went_fwd = 0;
|
uint8_t went_back = 0, went_fwd = 0;
|
||||||
|
|
||||||
maxseg = tp->t_maxseg - bbr->rc_last_options;
|
|
||||||
start = sack->start;
|
start = sack->start;
|
||||||
end = sack->end;
|
end = sack->end;
|
||||||
rsm = *prsm;
|
rsm = *prsm;
|
||||||
@ -10359,10 +10354,9 @@ bbr_substate_change(struct tcp_bbr *bbr, uint32_t cts, int32_t line, int dolog)
|
|||||||
* Now what state are we going into now? Is there adjustments
|
* Now what state are we going into now? Is there adjustments
|
||||||
* needed?
|
* needed?
|
||||||
*/
|
*/
|
||||||
int32_t old_state, old_gain;
|
int32_t old_state;
|
||||||
|
|
||||||
old_state = bbr_state_val(bbr);
|
old_state = bbr_state_val(bbr);
|
||||||
old_gain = bbr->r_ctl.rc_bbr_hptsi_gain;
|
|
||||||
if (bbr_state_val(bbr) == BBR_SUB_LEVEL1) {
|
if (bbr_state_val(bbr) == BBR_SUB_LEVEL1) {
|
||||||
/* Save the lowest srtt we saw in our end of the sub-state */
|
/* Save the lowest srtt we saw in our end of the sub-state */
|
||||||
bbr->rc_hit_state_1 = 0;
|
bbr->rc_hit_state_1 = 0;
|
||||||
@ -11361,7 +11355,6 @@ bbr_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
|||||||
struct bbr_sendmap *rsm;
|
struct bbr_sendmap *rsm;
|
||||||
struct timeval ltv;
|
struct timeval ltv;
|
||||||
int32_t did_out = 0;
|
int32_t did_out = 0;
|
||||||
int32_t in_recovery;
|
|
||||||
uint16_t nsegs;
|
uint16_t nsegs;
|
||||||
int32_t prev_state;
|
int32_t prev_state;
|
||||||
uint32_t lost;
|
uint32_t lost;
|
||||||
@ -11581,7 +11574,6 @@ bbr_do_segment_nounlock(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
|||||||
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_RST_OPENPORT, tlen);
|
ctf_do_dropwithreset_conn(m, tp, th, BANDLIM_RST_OPENPORT, tlen);
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
in_recovery = IN_RECOVERY(tp->t_flags);
|
|
||||||
if (tiwin > bbr->r_ctl.rc_high_rwnd)
|
if (tiwin > bbr->r_ctl.rc_high_rwnd)
|
||||||
bbr->r_ctl.rc_high_rwnd = tiwin;
|
bbr->r_ctl.rc_high_rwnd = tiwin;
|
||||||
#ifdef BBR_INVARIANTS
|
#ifdef BBR_INVARIANTS
|
||||||
@ -11947,7 +11939,6 @@ bbr_output_wtime(struct tcpcb *tp, const struct timeval *tv)
|
|||||||
uint8_t more_to_rxt=0;
|
uint8_t more_to_rxt=0;
|
||||||
int32_t prefetch_so_done = 0;
|
int32_t prefetch_so_done = 0;
|
||||||
int32_t prefetch_rsm = 0;
|
int32_t prefetch_rsm = 0;
|
||||||
uint32_t what_we_can = 0;
|
|
||||||
uint32_t tot_len = 0;
|
uint32_t tot_len = 0;
|
||||||
uint32_t rtr_cnt = 0;
|
uint32_t rtr_cnt = 0;
|
||||||
uint32_t maxseg, pace_max_segs, p_maxseg;
|
uint32_t maxseg, pace_max_segs, p_maxseg;
|
||||||
@ -12428,7 +12419,7 @@ bbr_output_wtime(struct tcpcb *tp, const struct timeval *tv)
|
|||||||
}
|
}
|
||||||
bbr->rc_tlp_new_data = 0;
|
bbr->rc_tlp_new_data = 0;
|
||||||
} else {
|
} else {
|
||||||
what_we_can = len = bbr_what_can_we_send(tp, bbr, sendwin, avail, sb_offset, cts);
|
len = bbr_what_can_we_send(tp, bbr, sendwin, avail, sb_offset, cts);
|
||||||
if ((len < p_maxseg) &&
|
if ((len < p_maxseg) &&
|
||||||
(bbr->rc_in_persist == 0) &&
|
(bbr->rc_in_persist == 0) &&
|
||||||
(ctf_outstanding(tp) >= (2 * p_maxseg)) &&
|
(ctf_outstanding(tp) >= (2 * p_maxseg)) &&
|
||||||
@ -13172,7 +13163,6 @@ bbr_output_wtime(struct tcpcb *tp, const struct timeval *tv)
|
|||||||
*/
|
*/
|
||||||
if (len) {
|
if (len) {
|
||||||
uint32_t moff;
|
uint32_t moff;
|
||||||
uint32_t orig_len;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We place a limit on sending with hptsi.
|
* We place a limit on sending with hptsi.
|
||||||
@ -13276,7 +13266,6 @@ bbr_output_wtime(struct tcpcb *tp, const struct timeval *tv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
orig_len = len;
|
|
||||||
m->m_next = tcp_m_copym(
|
m->m_next = tcp_m_copym(
|
||||||
mb, moff, &len,
|
mb, moff, &len,
|
||||||
if_hw_tsomaxsegcount,
|
if_hw_tsomaxsegcount,
|
||||||
@ -14162,11 +14151,9 @@ bbr_output(struct tcpcb *tp)
|
|||||||
{
|
{
|
||||||
int32_t ret;
|
int32_t ret;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
struct tcp_bbr *bbr;
|
|
||||||
|
|
||||||
NET_EPOCH_ASSERT();
|
NET_EPOCH_ASSERT();
|
||||||
|
|
||||||
bbr = (struct tcp_bbr *)tp->t_fb_ptr;
|
|
||||||
INP_WLOCK_ASSERT(tp->t_inpcb);
|
INP_WLOCK_ASSERT(tp->t_inpcb);
|
||||||
(void)tcp_get_usecs(&tv);
|
(void)tcp_get_usecs(&tv);
|
||||||
ret = bbr_output_wtime(tp, &tv);
|
ret = bbr_output_wtime(tp, &tv);
|
||||||
|
@ -2677,10 +2677,8 @@ rack_log_type_pacing_sizes(struct tcpcb *tp, struct tcp_rack *rack, uint32_t arg
|
|||||||
if (tp->t_logstate != TCP_LOG_STATE_OFF) {
|
if (tp->t_logstate != TCP_LOG_STATE_OFF) {
|
||||||
union tcp_log_stackspecific log;
|
union tcp_log_stackspecific log;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
uint32_t cts;
|
|
||||||
|
|
||||||
memset(&log, 0, sizeof(log));
|
memset(&log, 0, sizeof(log));
|
||||||
cts = tcp_get_usecs(&tv);
|
|
||||||
log.u_bbr.flex1 = rack->r_ctl.rc_pace_min_segs;
|
log.u_bbr.flex1 = rack->r_ctl.rc_pace_min_segs;
|
||||||
log.u_bbr.flex3 = rack->r_ctl.rc_pace_max_segs;
|
log.u_bbr.flex3 = rack->r_ctl.rc_pace_max_segs;
|
||||||
log.u_bbr.flex4 = arg1;
|
log.u_bbr.flex4 = arg1;
|
||||||
@ -6230,8 +6228,9 @@ rack_merge_rsm(struct tcp_rack *rack,
|
|||||||
* is any reason we need to try to find
|
* is any reason we need to try to find
|
||||||
* the oldest (or last oldest retransmitted).
|
* the oldest (or last oldest retransmitted).
|
||||||
*/
|
*/
|
||||||
|
#ifdef INVARIANTS
|
||||||
struct rack_sendmap *rm;
|
struct rack_sendmap *rm;
|
||||||
|
#endif
|
||||||
rack_log_map_chg(rack->rc_tp, rack, NULL,
|
rack_log_map_chg(rack->rc_tp, rack, NULL,
|
||||||
l_rsm, r_rsm, MAP_MERGE, r_rsm->r_end, __LINE__);
|
l_rsm, r_rsm, MAP_MERGE, r_rsm->r_end, __LINE__);
|
||||||
l_rsm->r_end = r_rsm->r_end;
|
l_rsm->r_end = r_rsm->r_end;
|
||||||
@ -6264,8 +6263,10 @@ rack_merge_rsm(struct tcp_rack *rack,
|
|||||||
if (r_rsm == rack->r_ctl.rc_first_appl)
|
if (r_rsm == rack->r_ctl.rc_first_appl)
|
||||||
rack->r_ctl.rc_first_appl = l_rsm;
|
rack->r_ctl.rc_first_appl = l_rsm;
|
||||||
}
|
}
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, r_rsm);
|
||||||
|
#else
|
||||||
rm = RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, r_rsm);
|
rm = RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, r_rsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (rm != r_rsm) {
|
if (rm != r_rsm) {
|
||||||
panic("removing head in rack:%p rsm:%p rm:%p",
|
panic("removing head in rack:%p rsm:%p rm:%p",
|
||||||
rack, r_rsm, rm);
|
rack, r_rsm, rm);
|
||||||
@ -6295,7 +6296,9 @@ rack_timeout_tlp(struct tcpcb *tp, struct tcp_rack *rack, uint32_t cts, uint8_t
|
|||||||
* Tail Loss Probe.
|
* Tail Loss Probe.
|
||||||
*/
|
*/
|
||||||
struct rack_sendmap *rsm = NULL;
|
struct rack_sendmap *rsm = NULL;
|
||||||
|
#ifdef INVARIANTS
|
||||||
struct rack_sendmap *insret;
|
struct rack_sendmap *insret;
|
||||||
|
#endif
|
||||||
struct socket *so;
|
struct socket *so;
|
||||||
uint32_t amm;
|
uint32_t amm;
|
||||||
uint32_t out, avail;
|
uint32_t out, avail;
|
||||||
@ -6456,8 +6459,10 @@ rack_timeout_tlp(struct tcpcb *tp, struct tcp_rack *rack, uint32_t cts, uint8_t
|
|||||||
rack_clone_rsm(rack, nrsm, rsm,
|
rack_clone_rsm(rack, nrsm, rsm,
|
||||||
(rsm->r_end - ctf_fixed_maxseg(tp)));
|
(rsm->r_end - ctf_fixed_maxseg(tp)));
|
||||||
rack_log_map_chg(tp, rack, NULL, rsm, nrsm, MAP_SPLIT, 0, __LINE__);
|
rack_log_map_chg(tp, rack, NULL, rsm, nrsm, MAP_SPLIT, 0, __LINE__);
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
|
#else
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
||||||
nrsm, insret, rack, rsm);
|
nrsm, insret, rack, rsm);
|
||||||
@ -6835,11 +6840,9 @@ static int
|
|||||||
rack_timeout_rxt(struct tcpcb *tp, struct tcp_rack *rack, uint32_t cts)
|
rack_timeout_rxt(struct tcpcb *tp, struct tcp_rack *rack, uint32_t cts)
|
||||||
{
|
{
|
||||||
int32_t rexmt;
|
int32_t rexmt;
|
||||||
struct inpcb *inp;
|
|
||||||
int32_t retval = 0;
|
int32_t retval = 0;
|
||||||
bool isipv6;
|
bool isipv6;
|
||||||
|
|
||||||
inp = tp->t_inpcb;
|
|
||||||
if (tp->t_timers->tt_flags & TT_STOPPED) {
|
if (tp->t_timers->tt_flags & TT_STOPPED) {
|
||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
@ -7342,7 +7345,10 @@ rack_update_entry(struct tcpcb *tp, struct tcp_rack *rack,
|
|||||||
* We (re-)transmitted starting at rsm->r_start for some length
|
* We (re-)transmitted starting at rsm->r_start for some length
|
||||||
* (possibly less than r_end.
|
* (possibly less than r_end.
|
||||||
*/
|
*/
|
||||||
struct rack_sendmap *nrsm, *insret;
|
struct rack_sendmap *nrsm;
|
||||||
|
#ifdef INVARIANTS
|
||||||
|
struct rack_sendmap *insret;
|
||||||
|
#endif
|
||||||
uint32_t c_end;
|
uint32_t c_end;
|
||||||
int32_t len;
|
int32_t len;
|
||||||
|
|
||||||
@ -7389,8 +7395,10 @@ rack_update_entry(struct tcpcb *tp, struct tcp_rack *rack,
|
|||||||
rack_clone_rsm(rack, nrsm, rsm, c_end);
|
rack_clone_rsm(rack, nrsm, rsm, c_end);
|
||||||
nrsm->r_dupack = 0;
|
nrsm->r_dupack = 0;
|
||||||
rack_log_retran_reason(rack, nrsm, __LINE__, 0, 2);
|
rack_log_retran_reason(rack, nrsm, __LINE__, 0, 2);
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
|
#else
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
||||||
nrsm, insret, rack, rsm);
|
nrsm, insret, rack, rsm);
|
||||||
@ -7414,7 +7422,10 @@ rack_log_output(struct tcpcb *tp, struct tcpopt *to, int32_t len,
|
|||||||
struct rack_sendmap *hintrsm, uint16_t add_flag, struct mbuf *s_mb, uint32_t s_moff, int hw_tls)
|
struct rack_sendmap *hintrsm, uint16_t add_flag, struct mbuf *s_mb, uint32_t s_moff, int hw_tls)
|
||||||
{
|
{
|
||||||
struct tcp_rack *rack;
|
struct tcp_rack *rack;
|
||||||
struct rack_sendmap *rsm, *nrsm, *insret, fe;
|
struct rack_sendmap *rsm, *nrsm, fe;
|
||||||
|
#ifdef INVARIANTS
|
||||||
|
struct rack_sendmap *insret;
|
||||||
|
#endif
|
||||||
register uint32_t snd_max, snd_una;
|
register uint32_t snd_max, snd_una;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -7572,8 +7583,10 @@ rack_log_output(struct tcpcb *tp, struct tcpopt *to, int32_t len,
|
|||||||
rack_log_retran_reason(rack, rsm, __LINE__, 0, 2);
|
rack_log_retran_reason(rack, rsm, __LINE__, 0, 2);
|
||||||
/* Log a new rsm */
|
/* Log a new rsm */
|
||||||
rack_log_map_chg(tp, rack, NULL, rsm, NULL, MAP_NEW, 0, __LINE__);
|
rack_log_map_chg(tp, rack, NULL, rsm, NULL, MAP_NEW, 0, __LINE__);
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
|
#else
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
||||||
nrsm, insret, rack, rsm);
|
nrsm, insret, rack, rsm);
|
||||||
@ -7646,9 +7659,11 @@ rack_log_output(struct tcpcb *tp, struct tcpopt *to, int32_t len,
|
|||||||
* to not include this part.
|
* to not include this part.
|
||||||
*/
|
*/
|
||||||
rack_clone_rsm(rack, nrsm, rsm, seq_out);
|
rack_clone_rsm(rack, nrsm, rsm, seq_out);
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
|
||||||
rack_log_map_chg(tp, rack, NULL, rsm, nrsm, MAP_SPLIT, 0, __LINE__);
|
rack_log_map_chg(tp, rack, NULL, rsm, nrsm, MAP_SPLIT, 0, __LINE__);
|
||||||
#ifdef INVARIANTS
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
|
#else
|
||||||
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
||||||
nrsm, insret, rack, rsm);
|
nrsm, insret, rack, rsm);
|
||||||
@ -7775,8 +7790,6 @@ static void
|
|||||||
tcp_rack_xmit_timer_commit(struct tcp_rack *rack, struct tcpcb *tp)
|
tcp_rack_xmit_timer_commit(struct tcp_rack *rack, struct tcpcb *tp)
|
||||||
{
|
{
|
||||||
int32_t delta;
|
int32_t delta;
|
||||||
uint32_t o_srtt, o_var;
|
|
||||||
int32_t hrtt_up = 0;
|
|
||||||
int32_t rtt;
|
int32_t rtt;
|
||||||
|
|
||||||
if (rack->r_ctl.rack_rs.rs_flags & RACK_RTT_EMPTY)
|
if (rack->r_ctl.rack_rs.rs_flags & RACK_RTT_EMPTY)
|
||||||
@ -7819,7 +7832,6 @@ tcp_rack_xmit_timer_commit(struct tcp_rack *rack, struct tcpcb *tp)
|
|||||||
*/
|
*/
|
||||||
if (rack->r_ctl.rc_highest_us_rtt < rack->r_ctl.rack_rs.rs_us_rtt) {
|
if (rack->r_ctl.rc_highest_us_rtt < rack->r_ctl.rack_rs.rs_us_rtt) {
|
||||||
rack->r_ctl.rc_highest_us_rtt = rack->r_ctl.rack_rs.rs_us_rtt;
|
rack->r_ctl.rc_highest_us_rtt = rack->r_ctl.rack_rs.rs_us_rtt;
|
||||||
hrtt_up = 1;
|
|
||||||
}
|
}
|
||||||
if (rack->rc_highly_buffered == 0) {
|
if (rack->rc_highly_buffered == 0) {
|
||||||
/*
|
/*
|
||||||
@ -7850,8 +7862,6 @@ tcp_rack_xmit_timer_commit(struct tcp_rack *rack, struct tcpcb *tp)
|
|||||||
rack->r_ctl.rc_lowest_us_rtt = 1;
|
rack->r_ctl.rc_lowest_us_rtt = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
o_srtt = tp->t_srtt;
|
|
||||||
o_var = tp->t_rttvar;
|
|
||||||
rack = (struct tcp_rack *)tp->t_fb_ptr;
|
rack = (struct tcp_rack *)tp->t_fb_ptr;
|
||||||
if (tp->t_srtt != 0) {
|
if (tp->t_srtt != 0) {
|
||||||
/*
|
/*
|
||||||
@ -8402,7 +8412,10 @@ rack_proc_sack_blk(struct tcpcb *tp, struct tcp_rack *rack, struct sackblk *sack
|
|||||||
{
|
{
|
||||||
uint32_t start, end, changed = 0;
|
uint32_t start, end, changed = 0;
|
||||||
struct rack_sendmap stack_map;
|
struct rack_sendmap stack_map;
|
||||||
struct rack_sendmap *rsm, *nrsm, fe, *insret, *prev, *next;
|
struct rack_sendmap *rsm, *nrsm, fe, *prev, *next;
|
||||||
|
#ifdef INVARIANTS
|
||||||
|
struct rack_sendmap *insret;
|
||||||
|
#endif
|
||||||
int32_t used_ref = 1;
|
int32_t used_ref = 1;
|
||||||
int moved = 0;
|
int moved = 0;
|
||||||
|
|
||||||
@ -8593,8 +8606,10 @@ rack_proc_sack_blk(struct tcpcb *tp, struct tcp_rack *rack, struct sackblk *sack
|
|||||||
counter_u64_add(rack_sack_splits, 1);
|
counter_u64_add(rack_sack_splits, 1);
|
||||||
rack_clone_rsm(rack, nrsm, rsm, start);
|
rack_clone_rsm(rack, nrsm, rsm, start);
|
||||||
rsm->r_just_ret = 0;
|
rsm->r_just_ret = 0;
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
|
#else
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
||||||
nrsm, insret, rack, rsm);
|
nrsm, insret, rack, rsm);
|
||||||
@ -8889,8 +8904,10 @@ rack_proc_sack_blk(struct tcpcb *tp, struct tcp_rack *rack, struct sackblk *sack
|
|||||||
rack_clone_rsm(rack, nrsm, rsm, end);
|
rack_clone_rsm(rack, nrsm, rsm, end);
|
||||||
rsm->r_flags &= (~RACK_HAS_FIN);
|
rsm->r_flags &= (~RACK_HAS_FIN);
|
||||||
rsm->r_just_ret = 0;
|
rsm->r_just_ret = 0;
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
|
#else
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
||||||
nrsm, insret, rack, rsm);
|
nrsm, insret, rack, rsm);
|
||||||
@ -9041,9 +9058,11 @@ rack_do_decay(struct tcp_rack *rack)
|
|||||||
* we want all SAD detection metrics to
|
* we want all SAD detection metrics to
|
||||||
* decay 1/4 per second (or more) passed.
|
* decay 1/4 per second (or more) passed.
|
||||||
*/
|
*/
|
||||||
|
#ifdef NETFLIX_EXP_DETECTION
|
||||||
uint32_t pkt_delta;
|
uint32_t pkt_delta;
|
||||||
|
|
||||||
pkt_delta = rack->r_ctl.input_pkt - rack->r_ctl.saved_input_pkt;
|
pkt_delta = rack->r_ctl.input_pkt - rack->r_ctl.saved_input_pkt;
|
||||||
|
#endif
|
||||||
/* Update our saved tracking values */
|
/* Update our saved tracking values */
|
||||||
rack->r_ctl.saved_input_pkt = rack->r_ctl.input_pkt;
|
rack->r_ctl.saved_input_pkt = rack->r_ctl.input_pkt;
|
||||||
rack->r_ctl.rc_last_time_decay = rack->r_ctl.act_rcv_time;
|
rack->r_ctl.rc_last_time_decay = rack->r_ctl.act_rcv_time;
|
||||||
@ -9074,7 +9093,10 @@ rack_do_decay(struct tcp_rack *rack)
|
|||||||
static void
|
static void
|
||||||
rack_process_to_cumack(struct tcpcb *tp, struct tcp_rack *rack, register uint32_t th_ack, uint32_t cts, struct tcpopt *to)
|
rack_process_to_cumack(struct tcpcb *tp, struct tcp_rack *rack, register uint32_t th_ack, uint32_t cts, struct tcpopt *to)
|
||||||
{
|
{
|
||||||
struct rack_sendmap *rsm, *rm;
|
struct rack_sendmap *rsm;
|
||||||
|
#ifdef INVARIANTS
|
||||||
|
struct rack_sendmap *rm;
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The ACK point is advancing to th_ack, we must drop off
|
* The ACK point is advancing to th_ack, we must drop off
|
||||||
@ -9218,8 +9240,10 @@ rack_process_to_cumack(struct tcpcb *tp, struct tcp_rack *rack, register uint32_
|
|||||||
rsm->r_rtr_bytes = 0;
|
rsm->r_rtr_bytes = 0;
|
||||||
/* Record the time of highest cumack sent */
|
/* Record the time of highest cumack sent */
|
||||||
rack->r_ctl.rc_gp_cumack_ts = rsm->r_tim_lastsent[(rsm->r_rtr_cnt-1)];
|
rack->r_ctl.rc_gp_cumack_ts = rsm->r_tim_lastsent[(rsm->r_rtr_cnt-1)];
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
|
#else
|
||||||
rm = RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
rm = RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (rm != rsm) {
|
if (rm != rsm) {
|
||||||
panic("removing head in rack:%p rsm:%p rm:%p",
|
panic("removing head in rack:%p rsm:%p rm:%p",
|
||||||
rack, rsm, rm);
|
rack, rsm, rm);
|
||||||
@ -9623,7 +9647,7 @@ rack_log_ack(struct tcpcb *tp, struct tcpopt *to, struct tcphdr *th, int entered
|
|||||||
struct sackblk sack, sack_blocks[TCP_MAX_SACK + 1];
|
struct sackblk sack, sack_blocks[TCP_MAX_SACK + 1];
|
||||||
register uint32_t th_ack;
|
register uint32_t th_ack;
|
||||||
int32_t i, j, k, num_sack_blks = 0;
|
int32_t i, j, k, num_sack_blks = 0;
|
||||||
uint32_t cts, acked, ack_point, sack_changed = 0;
|
uint32_t cts, acked, ack_point;
|
||||||
int loop_start = 0, moved_two = 0;
|
int loop_start = 0, moved_two = 0;
|
||||||
uint32_t tsused;
|
uint32_t tsused;
|
||||||
|
|
||||||
@ -9800,7 +9824,6 @@ rack_log_ack(struct tcpcb *tp, struct tcpopt *to, struct tcphdr *th, int entered
|
|||||||
if (acked) {
|
if (acked) {
|
||||||
rack->r_wanted_output = 1;
|
rack->r_wanted_output = 1;
|
||||||
changed += acked;
|
changed += acked;
|
||||||
sack_changed += acked;
|
|
||||||
}
|
}
|
||||||
if (num_sack_blks == 1) {
|
if (num_sack_blks == 1) {
|
||||||
/*
|
/*
|
||||||
@ -9864,7 +9887,6 @@ rack_log_ack(struct tcpcb *tp, struct tcpopt *to, struct tcphdr *th, int entered
|
|||||||
if (acked) {
|
if (acked) {
|
||||||
rack->r_wanted_output = 1;
|
rack->r_wanted_output = 1;
|
||||||
changed += acked;
|
changed += acked;
|
||||||
sack_changed += acked;
|
|
||||||
}
|
}
|
||||||
if (moved_two) {
|
if (moved_two) {
|
||||||
/*
|
/*
|
||||||
@ -10342,7 +10364,7 @@ rack_process_ack(struct mbuf *m, struct tcphdr *th, struct socket *so,
|
|||||||
|
|
||||||
acked = BYTES_THIS_ACK(tp, th);
|
acked = BYTES_THIS_ACK(tp, th);
|
||||||
if (acked) {
|
if (acked) {
|
||||||
/*
|
/*
|
||||||
* Any time we move the cum-ack forward clear
|
* Any time we move the cum-ack forward clear
|
||||||
* keep-alive tied probe-not-answered. The
|
* keep-alive tied probe-not-answered. The
|
||||||
* persists clears its own on entry.
|
* persists clears its own on entry.
|
||||||
@ -10511,7 +10533,10 @@ rack_collapsed_window(struct tcp_rack *rack)
|
|||||||
* did not send those segments something
|
* did not send those segments something
|
||||||
* won't work.
|
* won't work.
|
||||||
*/
|
*/
|
||||||
struct rack_sendmap *rsm, *nrsm, fe, *insret;
|
struct rack_sendmap *rsm, *nrsm, fe;
|
||||||
|
#ifdef INVARIANTS
|
||||||
|
struct rack_sendmap *insret;
|
||||||
|
#endif
|
||||||
tcp_seq max_seq;
|
tcp_seq max_seq;
|
||||||
|
|
||||||
max_seq = rack->rc_tp->snd_una + rack->rc_tp->snd_wnd;
|
max_seq = rack->rc_tp->snd_una + rack->rc_tp->snd_wnd;
|
||||||
@ -10537,8 +10562,10 @@ rack_collapsed_window(struct tcp_rack *rack)
|
|||||||
}
|
}
|
||||||
/* Clone it */
|
/* Clone it */
|
||||||
rack_clone_rsm(rack, nrsm, rsm, max_seq);
|
rack_clone_rsm(rack, nrsm, rsm, max_seq);
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
|
#else
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree of %p fails ret:%p rack:%p rsm:%p",
|
||||||
nrsm, insret, rack, rsm);
|
nrsm, insret, rack, rsm);
|
||||||
@ -12607,7 +12634,9 @@ static int
|
|||||||
rack_init(struct tcpcb *tp)
|
rack_init(struct tcpcb *tp)
|
||||||
{
|
{
|
||||||
struct tcp_rack *rack = NULL;
|
struct tcp_rack *rack = NULL;
|
||||||
|
#ifdef INVARIANTS
|
||||||
struct rack_sendmap *insret;
|
struct rack_sendmap *insret;
|
||||||
|
#endif
|
||||||
uint32_t iwin, snt, us_cts;
|
uint32_t iwin, snt, us_cts;
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
@ -12810,8 +12839,10 @@ rack_init(struct tcpcb *tp)
|
|||||||
rsm->orig_m_len = 0;
|
rsm->orig_m_len = 0;
|
||||||
rsm->soff = 0;
|
rsm->soff = 0;
|
||||||
}
|
}
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
|
#else
|
||||||
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
insret = RB_INSERT(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (insret != NULL) {
|
if (insret != NULL) {
|
||||||
panic("Insert in rb tree fails ret:%p rack:%p rsm:%p",
|
panic("Insert in rb tree fails ret:%p rack:%p rsm:%p",
|
||||||
insret, rack, rsm);
|
insret, rack, rsm);
|
||||||
@ -12935,7 +12966,10 @@ rack_fini(struct tcpcb *tp, int32_t tcb_is_purged)
|
|||||||
|
|
||||||
if (tp->t_fb_ptr) {
|
if (tp->t_fb_ptr) {
|
||||||
struct tcp_rack *rack;
|
struct tcp_rack *rack;
|
||||||
struct rack_sendmap *rsm, *nrsm, *rm;
|
struct rack_sendmap *rsm, *nrsm;
|
||||||
|
#ifdef INVARIANTS
|
||||||
|
struct rack_sendmap *rm;
|
||||||
|
#endif
|
||||||
|
|
||||||
rack = (struct tcp_rack *)tp->t_fb_ptr;
|
rack = (struct tcp_rack *)tp->t_fb_ptr;
|
||||||
if (tp->t_in_pkt) {
|
if (tp->t_in_pkt) {
|
||||||
@ -13057,8 +13091,10 @@ rack_fini(struct tcpcb *tp, int32_t tcb_is_purged)
|
|||||||
tcp_log_flowend(tp);
|
tcp_log_flowend(tp);
|
||||||
#endif
|
#endif
|
||||||
RB_FOREACH_SAFE(rsm, rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm) {
|
RB_FOREACH_SAFE(rsm, rack_rb_tree_head, &rack->r_ctl.rc_mtree, nrsm) {
|
||||||
|
#ifndef INVARIANTS
|
||||||
|
(void)RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
|
#else
|
||||||
rm = RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
rm = RB_REMOVE(rack_rb_tree_head, &rack->r_ctl.rc_mtree, rsm);
|
||||||
#ifdef INVARIANTS
|
|
||||||
if (rm != rsm) {
|
if (rm != rsm) {
|
||||||
panic("At fini, rack:%p rsm:%p rm:%p",
|
panic("At fini, rack:%p rsm:%p rm:%p",
|
||||||
rack, rsm, rm);
|
rack, rsm, rm);
|
||||||
@ -13513,7 +13549,9 @@ rack_do_compressed_ack_processing(struct tcpcb *tp, struct socket *so, struct mb
|
|||||||
uint32_t tiwin, ms_cts, cts, acked, acked_amount, high_seq, win_seq, the_win, win_upd_ack;
|
uint32_t tiwin, ms_cts, cts, acked, acked_amount, high_seq, win_seq, the_win, win_upd_ack;
|
||||||
int cnt, i, did_out, ourfinisacked = 0;
|
int cnt, i, did_out, ourfinisacked = 0;
|
||||||
struct tcpopt to_holder, *to = NULL;
|
struct tcpopt to_holder, *to = NULL;
|
||||||
|
#ifdef TCP_ACCOUNTING
|
||||||
int win_up_req = 0;
|
int win_up_req = 0;
|
||||||
|
#endif
|
||||||
int nsegs = 0;
|
int nsegs = 0;
|
||||||
int under_pacing = 1;
|
int under_pacing = 1;
|
||||||
int recovery = 0;
|
int recovery = 0;
|
||||||
@ -13719,7 +13757,9 @@ rack_do_compressed_ack_processing(struct tcpcb *tp, struct socket *so, struct mb
|
|||||||
rack_handle_probe_response(rack, tiwin,
|
rack_handle_probe_response(rack, tiwin,
|
||||||
tcp_tv_to_usectick(&rack->r_ctl.act_rcv_time));
|
tcp_tv_to_usectick(&rack->r_ctl.act_rcv_time));
|
||||||
}
|
}
|
||||||
|
#ifdef TCP_ACCOUNTING
|
||||||
win_up_req = 1;
|
win_up_req = 1;
|
||||||
|
#endif
|
||||||
win_upd_ack = ae->ack;
|
win_upd_ack = ae->ack;
|
||||||
win_seq = ae->seq;
|
win_seq = ae->seq;
|
||||||
the_win = tiwin;
|
the_win = tiwin;
|
||||||
@ -13800,7 +13840,7 @@ rack_do_compressed_ack_processing(struct tcpcb *tp, struct socket *so, struct mb
|
|||||||
#endif
|
#endif
|
||||||
acked_amount = acked = (high_seq - tp->snd_una);
|
acked_amount = acked = (high_seq - tp->snd_una);
|
||||||
if (acked) {
|
if (acked) {
|
||||||
/*
|
/*
|
||||||
* Clear the probe not answered flag
|
* Clear the probe not answered flag
|
||||||
* since cum-ack moved forward.
|
* since cum-ack moved forward.
|
||||||
*/
|
*/
|
||||||
@ -15624,7 +15664,9 @@ rack_fo_base_copym(struct mbuf *the_m, uint32_t the_off, int32_t *plen,
|
|||||||
{
|
{
|
||||||
#ifdef KERN_TLS
|
#ifdef KERN_TLS
|
||||||
struct ktls_session *tls, *ntls;
|
struct ktls_session *tls, *ntls;
|
||||||
|
#ifdef INVARIANTS
|
||||||
struct mbuf *start;
|
struct mbuf *start;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
struct mbuf *m, *n, **np, *smb;
|
struct mbuf *m, *n, **np, *smb;
|
||||||
struct mbuf *top;
|
struct mbuf *top;
|
||||||
@ -15643,7 +15685,9 @@ rack_fo_base_copym(struct mbuf *the_m, uint32_t the_off, int32_t *plen,
|
|||||||
tls = m->m_epg_tls;
|
tls = m->m_epg_tls;
|
||||||
else
|
else
|
||||||
tls = NULL;
|
tls = NULL;
|
||||||
|
#ifdef INVARIANTS
|
||||||
start = m;
|
start = m;
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
while (len > 0) {
|
while (len > 0) {
|
||||||
if (m == NULL) {
|
if (m == NULL) {
|
||||||
@ -15841,7 +15885,6 @@ rack_fast_rsm_output(struct tcpcb *tp, struct tcp_rack *rack, struct rack_sendma
|
|||||||
u_char opt[TCP_MAXOLEN];
|
u_char opt[TCP_MAXOLEN];
|
||||||
uint32_t hdrlen, optlen;
|
uint32_t hdrlen, optlen;
|
||||||
int32_t slot, segsiz, max_val, tso = 0, error, flags, ulen = 0;
|
int32_t slot, segsiz, max_val, tso = 0, error, flags, ulen = 0;
|
||||||
uint32_t us_cts;
|
|
||||||
uint32_t if_hw_tsomaxsegcount = 0, startseq;
|
uint32_t if_hw_tsomaxsegcount = 0, startseq;
|
||||||
uint32_t if_hw_tsomaxsegsize;
|
uint32_t if_hw_tsomaxsegsize;
|
||||||
|
|
||||||
@ -15952,7 +15995,6 @@ rack_fast_rsm_output(struct tcpcb *tp, struct tcp_rack *rack, struct rack_sendma
|
|||||||
}
|
}
|
||||||
if ((tso == 0) && (len > segsiz))
|
if ((tso == 0) && (len > segsiz))
|
||||||
len = segsiz;
|
len = segsiz;
|
||||||
us_cts = tcp_get_usecs(tv);
|
|
||||||
if ((len == 0) ||
|
if ((len == 0) ||
|
||||||
(len <= MHLEN - hdrlen - max_linkhdr)) {
|
(len <= MHLEN - hdrlen - max_linkhdr)) {
|
||||||
goto failed;
|
goto failed;
|
||||||
@ -16219,7 +16261,7 @@ rack_fast_rsm_output(struct tcpcb *tp, struct tcp_rack *rack, struct rack_sendma
|
|||||||
if ((SEQ_GEQ(rsm->r_end, rack->r_ctl.rc_snd_max_at_rto)) ||
|
if ((SEQ_GEQ(rsm->r_end, rack->r_ctl.rc_snd_max_at_rto)) ||
|
||||||
((rsm->r_flags & RACK_MUST_RXT) == 0)) {
|
((rsm->r_flags & RACK_MUST_RXT) == 0)) {
|
||||||
/*
|
/*
|
||||||
* We have retransmitted all we need. If
|
* We have retransmitted all we need. If
|
||||||
* RACK_MUST_RXT is not set then we need to
|
* RACK_MUST_RXT is not set then we need to
|
||||||
* not retransmit this guy.
|
* not retransmit this guy.
|
||||||
*/
|
*/
|
||||||
@ -16343,7 +16385,7 @@ rack_fast_output(struct tcpcb *tp, struct tcp_rack *rack, uint64_t ts_val,
|
|||||||
uint32_t hdrlen, optlen;
|
uint32_t hdrlen, optlen;
|
||||||
int cnt_thru = 1;
|
int cnt_thru = 1;
|
||||||
int32_t slot, segsiz, len, max_val, tso = 0, sb_offset, error, flags, ulen = 0;
|
int32_t slot, segsiz, len, max_val, tso = 0, sb_offset, error, flags, ulen = 0;
|
||||||
uint32_t us_cts, s_soff;
|
uint32_t s_soff;
|
||||||
uint32_t if_hw_tsomaxsegcount = 0, startseq;
|
uint32_t if_hw_tsomaxsegcount = 0, startseq;
|
||||||
uint32_t if_hw_tsomaxsegsize;
|
uint32_t if_hw_tsomaxsegsize;
|
||||||
uint16_t add_flag = RACK_SENT_FP;
|
uint16_t add_flag = RACK_SENT_FP;
|
||||||
@ -16439,7 +16481,6 @@ rack_fast_output(struct tcpcb *tp, struct tcp_rack *rack, uint64_t ts_val,
|
|||||||
}
|
}
|
||||||
if ((tso == 0) && (len > segsiz))
|
if ((tso == 0) && (len > segsiz))
|
||||||
len = segsiz;
|
len = segsiz;
|
||||||
us_cts = tcp_get_usecs(tv);
|
|
||||||
if ((len == 0) ||
|
if ((len == 0) ||
|
||||||
(len <= MHLEN - hdrlen - max_linkhdr)) {
|
(len <= MHLEN - hdrlen - max_linkhdr)) {
|
||||||
goto failed;
|
goto failed;
|
||||||
@ -17129,7 +17170,7 @@ rack_output(struct tcpcb *tp)
|
|||||||
(doing_tlp == 0) &&
|
(doing_tlp == 0) &&
|
||||||
(rsm == NULL)) {
|
(rsm == NULL)) {
|
||||||
/*
|
/*
|
||||||
* Non-Sack and we had a RTO or Sack/non-Sack and a
|
* Non-Sack and we had a RTO or Sack/non-Sack and a
|
||||||
* MTU change, we need to retransmit until we reach
|
* MTU change, we need to retransmit until we reach
|
||||||
* the former snd_max (rack->r_ctl.rc_snd_max_at_rto).
|
* the former snd_max (rack->r_ctl.rc_snd_max_at_rto).
|
||||||
*/
|
*/
|
||||||
@ -17164,7 +17205,7 @@ rack_output(struct tcpcb *tp)
|
|||||||
sb_offset = rsm->r_start - tp->snd_una;
|
sb_offset = rsm->r_start - tp->snd_una;
|
||||||
if (len >= segsiz)
|
if (len >= segsiz)
|
||||||
len = segsiz;
|
len = segsiz;
|
||||||
/*
|
/*
|
||||||
* Delay removing the flag RACK_MUST_RXT so
|
* Delay removing the flag RACK_MUST_RXT so
|
||||||
* that the fastpath for retransmit will
|
* that the fastpath for retransmit will
|
||||||
* work with this rsm.
|
* work with this rsm.
|
||||||
@ -17218,7 +17259,7 @@ rack_output(struct tcpcb *tp)
|
|||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
if (rsm && (rsm->r_flags & RACK_MUST_RXT)) {
|
if (rsm && (rsm->r_flags & RACK_MUST_RXT)) {
|
||||||
/*
|
/*
|
||||||
* Clear the flag in prep for the send
|
* Clear the flag in prep for the send
|
||||||
* note that if we can't get an mbuf
|
* note that if we can't get an mbuf
|
||||||
* and fail, we won't retransmit this
|
* and fail, we won't retransmit this
|
||||||
|
@ -1935,10 +1935,8 @@ tcp_ctloutput_get(struct inpcb *inp, struct sockopt *sopt)
|
|||||||
int
|
int
|
||||||
tcp_ctloutput(struct socket *so, struct sockopt *sopt)
|
tcp_ctloutput(struct socket *so, struct sockopt *sopt)
|
||||||
{
|
{
|
||||||
int error;
|
|
||||||
struct inpcb *inp;
|
struct inpcb *inp;
|
||||||
|
|
||||||
error = 0;
|
|
||||||
inp = sotoinpcb(so);
|
inp = sotoinpcb(so);
|
||||||
KASSERT(inp != NULL, ("tcp_ctloutput: inp == NULL"));
|
KASSERT(inp != NULL, ("tcp_ctloutput: inp == NULL"));
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user