- uint32_t th_last_access;
-
- struct tcp_heuristic_key th_key;
-
- char th_val_start[0]; /* Marker for memsetting to 0 */
-
- uint8_t th_tfo_data_loss; /* The number of times a SYN+data has been lost */
- uint8_t th_tfo_req_loss; /* The number of times a SYN+cookie-req has been lost */
- uint8_t th_tfo_data_rst; /* The number of times a SYN+data has received a RST */
- uint8_t th_tfo_req_rst; /* The number of times a SYN+cookie-req has received a RST */
- uint8_t th_mptcp_loss; /* The number of times a SYN+MP_CAPABLE has been lost */
- uint8_t th_ecn_loss; /* The number of times a SYN+ecn has been lost */
- uint8_t th_ecn_aggressive; /* The number of times we did an aggressive fallback */
- uint8_t th_ecn_droprst; /* The number of times ECN connections received a RST after first data pkt */
- uint8_t th_ecn_droprxmt; /* The number of times ECN connection is dropped after multiple retransmits */
- uint8_t th_ecn_synrst; /* number of times RST was received in response to an ECN enabled SYN */
- uint32_t th_tfo_enabled_time; /* The moment when we reenabled TFO after backing off */
- uint32_t th_tfo_backoff_until; /* Time until when we should not try out TFO */
- uint32_t th_tfo_backoff; /* Current backoff timer */
- uint32_t th_mptcp_backoff; /* Time until when we should not try out MPTCP */
- uint32_t th_ecn_backoff; /* Time until when we should not try out ECN */
-
- uint8_t th_tfo_in_backoff:1, /* Are we avoiding TFO due to the backoff timer? */
- th_mptcp_in_backoff:1; /* Are we avoiding MPTCP due to the backoff timer? */
-
- char th_val_end[0]; /* Marker for memsetting to 0 */
+ uint32_t th_last_access;
+
+ struct tcp_heuristic_key th_key;
+
+ char th_val_start[0]; /* Marker for memsetting to 0 */
+
+ uint8_t th_tfo_data_loss; /* The number of times a SYN+data has been lost */
+ uint8_t th_tfo_req_loss; /* The number of times a SYN+cookie-req has been lost */
+ uint8_t th_tfo_data_rst; /* The number of times a SYN+data has received a RST */
+ uint8_t th_tfo_req_rst; /* The number of times a SYN+cookie-req has received a RST */
+ uint8_t th_mptcp_loss; /* The number of times a SYN+MP_CAPABLE has been lost */
+ uint8_t th_mptcp_success; /* The number of times MPTCP-negotiation has been successful */
+ uint8_t th_ecn_loss; /* The number of times a SYN+ecn has been lost */
+ uint8_t th_ecn_aggressive; /* The number of times we did an aggressive fallback */
+ uint8_t th_ecn_droprst; /* The number of times ECN connections received a RST after first data pkt */
+ uint8_t th_ecn_droprxmt; /* The number of times ECN connection is dropped after multiple retransmits */
+ uint8_t th_ecn_synrst; /* number of times RST was received in response to an ECN enabled SYN */
+ uint32_t th_tfo_enabled_time; /* The moment when we reenabled TFO after backing off */
+ uint32_t th_tfo_backoff_until; /* Time until when we should not try out TFO */
+ uint32_t th_tfo_backoff; /* Current backoff timer */
+ uint32_t th_mptcp_backoff; /* Time until when we should not try out MPTCP */
+ uint32_t th_ecn_backoff; /* Time until when we should not try out ECN */
+
+ uint8_t th_tfo_in_backoff:1, /* Are we avoiding TFO due to the backoff timer? */
+ th_mptcp_in_backoff:1, /* Are we avoiding MPTCP due to the backoff timer? */
+ th_mptcp_heuristic_disabled:1; /* Are heuristics disabled? */
+
+ char th_val_end[0]; /* Marker for memsetting to 0 */