FD.io VPP  v20.05-21-gb1500e9ff
Vector Packet Processing
tcp_sack.c File Reference
+ Include dependency graph for tcp_sack.c:

Go to the source code of this file.

Functions

static void scoreboard_remove_hole (sack_scoreboard_t *sb, sack_scoreboard_hole_t *hole)
 
static sack_scoreboard_hole_tscoreboard_insert_hole (sack_scoreboard_t *sb, u32 prev_index, u32 start, u32 end)
 
static void scoreboard_update_sacked_rxt (sack_scoreboard_t *sb, u32 start, u32 end, u8 has_rxt)
 
static void scoreboard_update_bytes (sack_scoreboard_t *sb, u32 ack, u32 snd_mss)
 
sack_scoreboard_hole_tscoreboard_next_rxt_hole (sack_scoreboard_t *sb, sack_scoreboard_hole_t *start, u8 have_unsent, u8 *can_rescue, u8 *snd_limited)
 Figure out the next hole to retransmit. More...
 
void scoreboard_init_rxt (sack_scoreboard_t *sb, u32 snd_una)
 
void scoreboard_init (sack_scoreboard_t *sb)
 
void scoreboard_clear (sack_scoreboard_t *sb)
 
void scoreboard_clear_reneging (sack_scoreboard_t *sb, u32 start, u32 end)
 
u8 tcp_scoreboard_is_sane_post_recovery (tcp_connection_t *tc)
 Test that scoreboard is sane after recovery. More...
 
void tcp_rcv_sacks (tcp_connection_t *tc, u32 ack)
 
static u8 tcp_sack_vector_is_sane (sack_block_t *sacks)
 
void tcp_update_sack_list (tcp_connection_t *tc, u32 start, u32 end)
 Build SACK list as per RFC2018. More...
 
u32 tcp_sack_list_bytes (tcp_connection_t *tc)
 

Function Documentation

◆ scoreboard_clear()

void scoreboard_clear ( sack_scoreboard_t sb)

Definition at line 257 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scoreboard_clear_reneging()

void scoreboard_clear_reneging ( sack_scoreboard_t sb,
u32  start,
u32  end 
)

Definition at line 276 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scoreboard_init()

void scoreboard_init ( sack_scoreboard_t sb)

Definition at line 249 of file tcp_sack.c.

+ Here is the caller graph for this function:

◆ scoreboard_init_rxt()

void scoreboard_init_rxt ( sack_scoreboard_t sb,
u32  snd_una 
)

Definition at line 235 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scoreboard_insert_hole()

static sack_scoreboard_hole_t* scoreboard_insert_hole ( sack_scoreboard_t sb,
u32  prev_index,
u32  start,
u32  end 
)
static

Definition at line 54 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scoreboard_next_rxt_hole()

sack_scoreboard_hole_t* scoreboard_next_rxt_hole ( sack_scoreboard_t sb,
sack_scoreboard_hole_t start,
u8  have_unsent,
u8 can_rescue,
u8 snd_limited 
)

Figure out the next hole to retransmit.

Follows logic proposed in RFC6675 Sec. 4, NextSeg()

Definition at line 175 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scoreboard_remove_hole()

static void scoreboard_remove_hole ( sack_scoreboard_t sb,
sack_scoreboard_hole_t hole 
)
static

Definition at line 19 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scoreboard_update_bytes()

static void scoreboard_update_bytes ( sack_scoreboard_t sb,
u32  ack,
u32  snd_mss 
)
inlinestatic

Definition at line 102 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ scoreboard_update_sacked_rxt()

static void scoreboard_update_sacked_rxt ( sack_scoreboard_t sb,
u32  start,
u32  end,
u8  has_rxt 
)
inlinestatic

Definition at line 91 of file tcp_sack.c.

+ Here is the caller graph for this function:

◆ tcp_rcv_sacks()

void tcp_rcv_sacks ( tcp_connection_t tc,
u32  ack 
)

Definition at line 305 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tcp_sack_list_bytes()

u32 tcp_sack_list_bytes ( tcp_connection_t tc)

Definition at line 593 of file tcp_sack.c.

◆ tcp_sack_vector_is_sane()

static u8 tcp_sack_vector_is_sane ( sack_block_t sacks)
static

Definition at line 521 of file tcp_sack.c.

+ Here is the caller graph for this function:

◆ tcp_scoreboard_is_sane_post_recovery()

u8 tcp_scoreboard_is_sane_post_recovery ( tcp_connection_t tc)

Test that scoreboard is sane after recovery.

Returns 1 if scoreboard is empty or if first hole beyond snd_una.

Definition at line 296 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ tcp_update_sack_list()

void tcp_update_sack_list ( tcp_connection_t tc,
u32  start,
u32  end 
)

Build SACK list as per RFC2018.

Makes sure the first block contains the segment that generated the current ACK and the following ones are the ones most recently reported in SACK blocks.

Parameters
tcTCP connection for which the SACK list is updated
startStart sequence number of the newest SACK block
endEnd sequence of the newest SACK block

Definition at line 544 of file tcp_sack.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function: