From: Edward Tomasz Napierala <tr...@freebsd.org>

This makes it possible to retrieve per-connection statistical
information such as the receive window size, RTT, or goodput,
using a newly added TCP_STATS getsockopt(3) option, and extract
them using the stats_voistat_fetch(3) API.

See the net/tcprtt port for an example consumer of this API.

Compared to the existing TCP_INFO system, the main differences
are that this mechanism is easy to extend without breaking ABI,
and provides statistical information instead of raw "snapshots"
of values at a given point in time.  stats(3) is more generic
and can be used in both userland and the kernel.

Reviewed by:    thj
Tested by:      thj
Obtained from:  Netflix
Relnotes:       yes
Sponsored by:   Klara Inc, Netflix
Differential Revision:  https://reviews.freebsd.org/D20655
---
 newlib/libc/sys/rtems/include/netinet/tcp.h | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/newlib/libc/sys/rtems/include/netinet/tcp.h 
b/newlib/libc/sys/rtems/include/netinet/tcp.h
index 125cacb28..4e06c9792 100644
--- a/newlib/libc/sys/rtems/include/netinet/tcp.h
+++ b/newlib/libc/sys/rtems/include/netinet/tcp.h
@@ -168,6 +168,7 @@ struct tcphdr {
 #define TCP_NOOPT      8       /* don't use TCP options */
 #define TCP_MD5SIG     16      /* use MD5 digests (RFC2385) */
 #define        TCP_INFO        32      /* retrieve tcp_info structure */
+#define        TCP_STATS       33      /* retrieve stats blob structure */
 #define        TCP_LOG         34      /* configure event logging for 
connection */
 #define        TCP_LOGBUF      35      /* retrieve event log for connection */
 #define        TCP_LOGID       36      /* configure log ID to correlate 
connections */
@@ -364,4 +365,18 @@ struct tcp_function_set {
  */
 #define        TLS_SET_RECORD_TYPE     1
 
+/*
+ * TCP specific variables of interest for tp->t_stats stats(9) accounting.
+ */
+#define        VOI_TCP_TXPB            0 /* Transmit payload bytes */
+#define        VOI_TCP_RETXPB          1 /* Retransmit payload bytes */
+#define        VOI_TCP_FRWIN           2 /* Foreign receive window */
+#define        VOI_TCP_LCWIN           3 /* Local congesiton window */
+#define        VOI_TCP_RTT             4 /* Round trip time */
+#define        VOI_TCP_CSIG            5 /* Congestion signal */
+#define        VOI_TCP_GPUT            6 /* Goodput */
+#define        VOI_TCP_CALCFRWINDIFF   7 /* Congestion avoidance LCWIN - FRWIN 
*/
+#define        VOI_TCP_GPUT_ND         8 /* Goodput normalised delta */
+#define        VOI_TCP_ACKLEN          9 /* Average ACKed bytes per ACK */
+
 #endif /* !_NETINET_TCP_H_ */
-- 
2.35.3

_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to