tcp: avoid fr segments less than mss if possible
[vpp.git] / src / vnet / tcp / tcp_types.h
index c476431..f9a9ff9 100644 (file)
@@ -32,7 +32,6 @@
 #define TCP_FIB_RECHECK_PERIOD 1 * THZ /**< Recheck every 1s */
 #define TCP_MAX_OPTION_SPACE 40
 #define TCP_CC_DATA_SZ 24
-#define TCP_MAX_GSO_SZ 65536
 #define TCP_RXT_MAX_BURST 10
 
 #define TCP_DUPACK_THRESHOLD   3
@@ -157,7 +156,7 @@ typedef struct _scoreboard_trace_elt
   u32 start;
   u32 end;
   u32 ack;
-  u32 snd_una_max;
+  u32 snd_nxt;
   u32 group;
 } scoreboard_trace_elt_t;
 
@@ -294,7 +293,6 @@ typedef struct _tcp_connection
 
   /** Send sequence variables RFC793 */
   u32 snd_una;         /**< oldest unacknowledged sequence number */
-  u32 snd_una_max;     /**< newest unacknowledged sequence number + 1*/
   u32 snd_wnd;         /**< send window */
   u32 snd_wl1;         /**< seq number used for last snd.wnd update */
   u32 snd_wl2;         /**< ack number used for last snd.wnd update */
@@ -309,20 +307,19 @@ typedef struct _tcp_connection
   u32 rcv_wnd;         /**< receive window we expect */
 
   u32 rcv_las;         /**< rcv_nxt at last ack sent/rcv_wnd update */
-  u32 iss;             /**< initial sent sequence */
-  u32 irs;             /**< initial remote sequence */
 
   /* Options */
   u8 snd_opts_len;             /**< Tx options len */
+  u8 snd_sack_pos;             /**< Position in vec of first block to send */
   u8 rcv_wscale;               /**< Window scale to advertise to peer */
   u8 snd_wscale;               /**< Window scale to use when sending */
   u32 tsval_recent;            /**< Last timestamp received */
   u32 tsval_recent_age;                /**< When last updated tstamp_recent*/
+  u32 timestamp_delta;         /**< Offset for timestamp */
   tcp_options_t snd_opts;      /**< Tx options for connection */
   tcp_options_t rcv_opts;      /**< Rx options for connection */
 
   sack_block_t *snd_sacks;     /**< Vector of SACKs to send. XXX Fixed size? */
-  u8 snd_sack_pos;             /**< Position in vec of first block to send */
   sack_block_t *snd_sacks_fl;  /**< Vector for building new list */
   sack_scoreboard_t sack_sb;   /**< SACK "scoreboard" that tracks holes */
 
@@ -346,7 +343,7 @@ typedef struct _tcp_connection
   u32 rxt_delivered;   /**< Rxt bytes delivered during current cc event */
   u32 rxt_head;                /**< snd_una last time we re rxted the head */
   u32 tsecr_last_ack;  /**< Timestamp echoed to us in last healthy ACK */
-  u32 snd_congestion;  /**< snd_una_max when congestion is detected */
+  u32 snd_congestion;  /**< snd_nxt when congestion is detected */
   u32 tx_fifo_size;    /**< Tx fifo size. Used to constrain cwnd */
   tcp_cc_algorithm_t *cc_algo; /**< Congestion control algorithm */
   u8 cc_data[TCP_CC_DATA_SZ];  /**< Congestion control algo private data */
@@ -382,16 +379,16 @@ typedef struct _tcp_connection
 
   tcp_errors_t errors; /**< Soft connection errors */
 
+  u32 iss;             /**< initial sent sequence */
+  u32 irs;             /**< initial remote sequence */
   f64 start_ts;                /**< Timestamp when connection initialized */
   u32 last_fib_check;  /**< Last time we checked fib route for peer */
   u16 mss;             /**< Our max seg size that includes options */
-  u32 timestamp_delta; /**< Offset for timestamp */
   u32 ipv6_flow_label; /**< flow label for ipv6 header */
 
 #define rst_state snd_wl1
 } tcp_connection_t;
 
-/* *INDENT-OFF* */
 struct _tcp_cc_algorithm
 {
   const char *name;
@@ -408,7 +405,6 @@ struct _tcp_cc_algorithm
   void (*event) (tcp_connection_t *tc, tcp_cc_event_t evt);
   u64 (*get_pacing_rate) (tcp_connection_t *tc);
 };
-/* *INDENT-ON* */
 
 #define tcp_fastrecovery_on(tc) (tc)->flags |= TCP_CONN_FAST_RECOVERY
 #define tcp_fastrecovery_off(tc) (tc)->flags &= ~TCP_CONN_FAST_RECOVERY