diff options
author | Richard Scheffenegger <rscheff@FreeBSD.org> | 2023-06-20 21:27:11 +0000 |
---|---|---|
committer | Richard Scheffenegger <rscheff@FreeBSD.org> | 2023-06-20 21:48:56 +0000 |
commit | 04682968c3f7993cf9c07d091c9411d38fb5540b (patch) | |
tree | 3066d64924d991780f21d3e7cb8c6e80afe89be0 | |
parent | 7ea8d02798055068682e80d8791556d3f81bda82 (diff) | |
download | src-04682968c3f7993cf9c07d091c9411d38fb5540b.tar.gz src-04682968c3f7993cf9c07d091c9411d38fb5540b.zip |
tcp: expose AccECN mode and TCP FastOpen (TFO) in TCPI
Reviewed By: tuexen, #transport
Sponsored by: NetApp, Inc.
Differential Revision: https://reviews.freebsd.org/D40621
-rw-r--r-- | sys/netinet/tcp.h | 1 | ||||
-rw-r--r-- | sys/netinet/tcp_usrreq.c | 16 |
2 files changed, 15 insertions, 2 deletions
diff --git a/sys/netinet/tcp.h b/sys/netinet/tcp.h index 3c3086eabaf4..dbafc96927b2 100644 --- a/sys/netinet/tcp.h +++ b/sys/netinet/tcp.h @@ -336,6 +336,7 @@ struct tcphdr { #define TCPI_OPT_ECN 0x08 #define TCPI_OPT_TOE 0x10 #define TCPI_OPT_TFO 0x20 +#define TCPI_OPT_ACE 0x40 /* Maximum length of log ID. */ #define TCP_LOG_ID_LEN 64 diff --git a/sys/netinet/tcp_usrreq.c b/sys/netinet/tcp_usrreq.c index a9aee98f1332..629b47f04142 100644 --- a/sys/netinet/tcp_usrreq.c +++ b/sys/netinet/tcp_usrreq.c @@ -1556,8 +1556,20 @@ tcp_fill_info(struct tcpcb *tp, struct tcp_info *ti) ti->tcpi_snd_wscale = tp->snd_scale; ti->tcpi_rcv_wscale = tp->rcv_scale; } - if (tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) - ti->tcpi_options |= TCPI_OPT_ECN; + switch (tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) { + case TF2_ECN_PERMIT: + ti->tcpi_options |= TCPI_OPT_ECN; + break; + case TF2_ACE_PERMIT: + /* FALLTHROUGH */ + case TF2_ECN_PERMIT | TF2_ACE_PERMIT: + ti->tcpi_options |= TCPI_OPT_ACE; + break; + default: + break; + } + if (IS_FASTOPEN(tp->t_flags)) + ti->tcpi_options |= TCPI_OPT_TFO; ti->tcpi_rto = tp->t_rxtcur * tick; ti->tcpi_last_data_recv = ((uint32_t)ticks - tp->t_rcvtime) * tick; |