Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_sack.c
Show First 20 Lines • Show All 826 Lines • ▼ Show 20 Lines | tcp_sack_partialack(struct tcpcb *tp, struct tcphdr *th) | ||||
* is available for sending. | * is available for sending. | ||||
*/ | */ | ||||
if ((V_tcp_do_rfc6675_pipe) && | if ((V_tcp_do_rfc6675_pipe) && | ||||
SEQ_LT(th->th_ack, tp->snd_recover) && | SEQ_LT(th->th_ack, tp->snd_recover) && | ||||
(tp->snd_recover == tp->snd_max) && | (tp->snd_recover == tp->snd_max) && | ||||
TAILQ_EMPTY(&tp->snd_holes) && | TAILQ_EMPTY(&tp->snd_holes) && | ||||
(tp->sackhint.delivered_data > 0)) { | (tp->sackhint.delivered_data > 0)) { | ||||
struct sackhole *hole; | struct sackhole *hole; | ||||
int maxseg = tcp_maxseg(tp); | |||||
tuexen: Is this change part of the fix or just an unrelated cleanup (in which case it should be… | |||||
hole = tcp_sackhole_insert(tp, SEQ_MAX(th->th_ack, tp->snd_max - maxseg), tp->snd_max, NULL); | hole = tcp_sackhole_insert(tp, SEQ_MAX(th->th_ack, tp->snd_max - maxseg), tp->snd_max, NULL); | ||||
} | } | ||||
(void) tp->t_fb->tfb_tcp_output(tp); | (void) tp->t_fb->tfb_tcp_output(tp); | ||||
} | } | ||||
#if 0 | #if 0 | ||||
/* | /* | ||||
* Debug version of tcp_sack_output() that walks the scoreboard. Used for | * Debug version of tcp_sack_output() that walks the scoreboard. Used for | ||||
▲ Show 20 Lines • Show All 94 Lines • Show Last 20 Lines |
Is this change part of the fix or just an unrelated cleanup (in which case it should be committed separately).