FD.io VPP  v21.01.1
Vector Packet Processing
tcp_sack.h File Reference
+ Include dependency graph for tcp_sack.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define tcp_scoreboard_trace_add(_tc, _ack)
 

Functions

static u32 scoreboard_hole_index (sack_scoreboard_t *sb, sack_scoreboard_hole_t *hole)
 
static u32 scoreboard_hole_bytes (sack_scoreboard_hole_t *hole)
 
static sack_scoreboard_hole_tscoreboard_get_hole (sack_scoreboard_t *sb, u32 index)
 
static sack_scoreboard_hole_tscoreboard_next_hole (sack_scoreboard_t *sb, sack_scoreboard_hole_t *hole)
 
static sack_scoreboard_hole_tscoreboard_prev_hole (sack_scoreboard_t *sb, sack_scoreboard_hole_t *hole)
 
static sack_scoreboard_hole_tscoreboard_first_hole (sack_scoreboard_t *sb)
 
static sack_scoreboard_hole_tscoreboard_last_hole (sack_scoreboard_t *sb)
 
sack_scoreboard_hole_tscoreboard_next_rxt_hole (sack_scoreboard_t *sb, sack_scoreboard_hole_t *start, u8 have_sent_1_smss, u8 *can_rescue, u8 *snd_limited)
 Figure out the next hole to retransmit. More...
 
void scoreboard_clear (sack_scoreboard_t *sb)
 
void scoreboard_clear_reneging (sack_scoreboard_t *sb, u32 start, u32 end)
 
void scoreboard_init (sack_scoreboard_t *sb)
 
void scoreboard_init_rxt (sack_scoreboard_t *sb, u32 snd_una)
 
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)
 
void tcp_rcv_sacks (tcp_connection_t *tc, u32 ack)
 
u8tcp_scoreboard_replay (u8 *s, tcp_connection_t *tc, u8 verbose)
 
u8 tcp_scoreboard_is_sane_post_recovery (tcp_connection_t *tc)
 Test that scoreboard is sane after recovery. More...
 

Variables

format_function_t format_tcp_scoreboard
 

Macro Definition Documentation

◆ tcp_scoreboard_trace_add

#define tcp_scoreboard_trace_add (   _tc,
  _ack 
)

Definition at line 96 of file tcp_sack.h.

Function Documentation

◆ scoreboard_clear()

void scoreboard_clear ( sack_scoreboard_t sb)

Definition at line 277 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 297 of file tcp_sack.c.

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

◆ scoreboard_first_hole()

static sack_scoreboard_hole_t* scoreboard_first_hole ( sack_scoreboard_t sb)
inlinestatic

Definition at line 59 of file tcp_sack.h.

+ Here is the caller graph for this function:

◆ scoreboard_get_hole()

static sack_scoreboard_hole_t* scoreboard_get_hole ( sack_scoreboard_t sb,
u32  index 
)
inlinestatic

Definition at line 35 of file tcp_sack.h.

+ Here is the caller graph for this function:

◆ scoreboard_hole_bytes()

static u32 scoreboard_hole_bytes ( sack_scoreboard_hole_t hole)
inlinestatic

Definition at line 29 of file tcp_sack.h.

+ Here is the caller graph for this function:

◆ scoreboard_hole_index()

static u32 scoreboard_hole_index ( sack_scoreboard_t sb,
sack_scoreboard_hole_t hole 
)
inlinestatic

Definition at line 22 of file tcp_sack.h.

+ Here is the caller graph for this function:

◆ scoreboard_init()

void scoreboard_init ( sack_scoreboard_t sb)

Definition at line 268 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 254 of file tcp_sack.c.

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

◆ scoreboard_last_hole()

static sack_scoreboard_hole_t* scoreboard_last_hole ( sack_scoreboard_t sb)
inlinestatic

Definition at line 67 of file tcp_sack.h.

+ Here is the caller graph for this function:

◆ scoreboard_next_hole()

static sack_scoreboard_hole_t* scoreboard_next_hole ( sack_scoreboard_t sb,
sack_scoreboard_hole_t hole 
)
inlinestatic

Definition at line 43 of file tcp_sack.h.

+ 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 194 of file tcp_sack.c.

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

◆ scoreboard_prev_hole()

static sack_scoreboard_hole_t* scoreboard_prev_hole ( sack_scoreboard_t sb,
sack_scoreboard_hole_t hole 
)
inlinestatic

Definition at line 51 of file tcp_sack.h.

+ Here is the caller graph for this function:

◆ tcp_rcv_sacks()

void tcp_rcv_sacks ( tcp_connection_t tc,
u32  ack 
)

Definition at line 326 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 617 of file tcp_sack.c.

◆ 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 317 of file tcp_sack.c.

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

◆ tcp_scoreboard_replay()

u8* tcp_scoreboard_replay ( u8 s,
tcp_connection_t tc,
u8  verbose 
)

Definition at line 687 of file tcp_cli.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 568 of file tcp_sack.c.

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

Variable Documentation

◆ format_tcp_scoreboard

format_function_t format_tcp_scoreboard

Definition at line 109 of file tcp_sack.h.