Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_sack.c
Context not available. | |||||
&VNET_NAME(tcp_sack_globalholes), 0, | &VNET_NAME(tcp_sack_globalholes), 0, | ||||
"Global number of TCP SACK holes currently allocated"); | "Global number of TCP SACK holes currently allocated"); | ||||
int | |||||
tcp_dsack_block_exists(struct tcpcb *tp) | |||||
{ | |||||
/* Return true if a DSACK block exists */ | |||||
if (tp->rcv_numsacks == 0) | |||||
return (0); | |||||
if (SEQ_LT(tp->sackblks[0].end, tp->rcv_nxt) || | |||||
rscheff: SEQ_LEQ exists | |||||
rrsAuthorUnsubmitted Done Inline ActionsI did not realize someone finally added that.. I will change the code to that :) rrs: I did not realize someone finally added that.. I will change the code to that :) | |||||
rscheffUnsubmitted Not Done Inline Actionswas apparently always available in fbsd tree, ever since @rgrimes added tcp_seq.h - but yes, not all these macros exist in all tcp stacks. :) https://reviews.freebsd.org/R10:df8bae1de4b67ccf57f4afebd4e2bf258c38910d#change-G7qyRTbZw4J4 rscheff: was apparently always available in fbsd tree, ever since @rgrimes added tcp_seq.h - but yes… | |||||
(tp->sackblks[0].end == tp->rcv_nxt)) | |||||
return(1); | |||||
return (0); | |||||
} | |||||
/* | /* | ||||
* This function will find overlaps with the currently stored sackblocks | * This function will find overlaps with the currently stored sackblocks | ||||
* and add any overlap as a dsack block upfront | * and add any overlap as a dsack block upfront | ||||
Context not available. |
SEQ_LEQ exists