Implement sack based tcp loss recovery (RFC 6675)
[vpp.git] / src / vnet / tcp / tcp_debug.h
old mode 100644 (file)
new mode 100755 (executable)
index eaca672..3a16cf6
@@ -50,6 +50,7 @@
   _(CC_EVT, "cc event")                        \
   _(CC_PACK, "cc partial ack")         \
   _(SEG_INVALID, "invalid segment")    \
+  _(PAWS_FAIL, "failed paws check")    \
   _(ACK_RCV_ERR, "invalid ack")                \
   _(RCV_WND_SHRUNK, "shrunk rcv_wnd")  \
 
@@ -337,7 +338,8 @@ typedef enum _tcp_dbg_evt
 #define TCP_EVT_TIMER_POP_HANDLER(_tc_index, _timer_id, ...)            \
 {                                                                      \
   tcp_connection_t *_tc;                                               \
-  if (_timer_id == TCP_TIMER_RETRANSMIT_SYN)                                   \
+  if (_timer_id == TCP_TIMER_RETRANSMIT_SYN                            \
+    || _timer_id == TCP_TIMER_ESTABLISH)                               \
     {                                                                  \
       _tc = tcp_half_open_connection_get (_tc_index);                  \
     }                                                                  \
@@ -381,6 +383,20 @@ typedef enum _tcp_dbg_evt
   ed->data[4] = _tc->rcv_wnd;                                          \
 }
 
+#define TCP_EVT_PAWS_FAIL_HANDLER(_tc, _seq, _end, ...)                        \
+{                                                                      \
+  ELOG_TYPE_DECLARE (_e) =                                             \
+  {                                                                    \
+    .format = "paws fail: seq %u end %u tsval %u tsval_recent %u",     \
+    .format_args = "i4i4i4i4",                                         \
+  };                                                                   \
+  DECLARE_ETD(_tc, _e, 4);                                             \
+  ed->data[0] = _seq - _tc->irs;                                       \
+  ed->data[1] = _end - _tc->irs;                                       \
+  ed->data[2] = _tc->rcv_opts.tsval;                                   \
+  ed->data[3] = _tc->tsval_recent;                                     \
+}
+
 #define TCP_EVT_ACK_RCV_ERR_HANDLER(_tc, _type, _ack, ...)             \
 {                                                                      \
   ELOG_TYPE_DECLARE (_e) =                                             \
@@ -411,27 +427,27 @@ typedef enum _tcp_dbg_evt
 {                                                                      \
   ELOG_TYPE_DECLARE (_e) =                                             \
   {                                                                    \
-    .format = "rtx: snd_nxt %u offset %u snd %u rtx %u",               \
+    .format = "rxt: snd_nxt %u offset %u snd %u rxt %u",               \
     .format_args = "i4i4i4i4",                                         \
   };                                                                   \
   DECLARE_ETD(_tc, _e, 4);                                             \
   ed->data[0] = _tc->snd_nxt - _tc->iss;                               \
   ed->data[1] = offset;                                                        \
   ed->data[2] = n_bytes;                                               \
-  ed->data[3] = _tc->rtx_bytes;                                                \
+  ed->data[3] = _tc->snd_rxt_bytes;                                    \
 }
 
 #define TCP_EVT_CC_EVT_HANDLER(_tc, _sub_evt, ...)                     \
 {                                                                      \
   ELOG_TYPE_DECLARE (_e) =                                             \
   {                                                                    \
-    .format = "cc: %s wnd %u snd_cong %u rtx_bytes %u",                        \
+    .format = "cc: %s wnd %u snd_cong %u rxt_bytes %u",                        \
     .format_args = "t4i4i4i4",                                         \
     .n_enum_strings = 5,                                               \
     .enum_strings = {                                                  \
-      "fast-rtx",                                                      \
-      "rtx-timeout",                                                   \
-      "first-rtx",                                                     \
+      "fast-rxt",                                                      \
+      "rxt-timeout",                                                   \
+      "first-rxt",                                                     \
       "recovered",                                                     \
       "congestion",                                                    \
     },                                                                 \
@@ -440,7 +456,7 @@ typedef enum _tcp_dbg_evt
   ed->data[0] = _sub_evt;                                              \
   ed->data[1] = tcp_available_snd_space (_tc);                         \
   ed->data[2] = _tc->snd_congestion - _tc->iss;                                \
-  ed->data[3] = _tc->rtx_bytes;                                                \
+  ed->data[3] = _tc->snd_rxt_bytes;                                    \
 }
 
 #define TCP_EVT_CC_PACK_HANDLER(_tc, ...)                              \