Page MenuHomeFreeBSD

D37314.id112801.diff
No OneTemporary

D37314.id112801.diff

diff --git a/sys/netinet/tcp_ecn.c b/sys/netinet/tcp_ecn.c
--- a/sys/netinet/tcp_ecn.c
+++ b/sys/netinet/tcp_ecn.c
@@ -121,7 +121,6 @@
void
tcp_ecn_input_syn_sent(struct tcpcb *tp, uint16_t thflags, int iptos)
{
-
if (V_tcp_do_ecn == 0)
return;
if ((V_tcp_do_ecn == 1) ||
@@ -288,19 +287,19 @@
{
int delta_cep = 0;
- if (tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) {
- switch (iptos & IPTOS_ECN_MASK) {
- case IPTOS_ECN_CE:
- TCPSTAT_INC(tcps_ecn_ce);
- break;
- case IPTOS_ECN_ECT0:
- TCPSTAT_INC(tcps_ecn_ect0);
- break;
- case IPTOS_ECN_ECT1:
- TCPSTAT_INC(tcps_ecn_ect1);
- break;
- }
+ switch (iptos & IPTOS_ECN_MASK) {
+ case IPTOS_ECN_CE:
+ TCPSTAT_INC(tcps_ecn_rcvce);
+ break;
+ case IPTOS_ECN_ECT0:
+ TCPSTAT_INC(tcps_ecn_rcvect0);
+ break;
+ case IPTOS_ECN_ECT1:
+ TCPSTAT_INC(tcps_ecn_rcvect1);
+ break;
+ }
+ if (tp->t_flags2 & (TF2_ECN_PERMIT | TF2_ACE_PERMIT)) {
if (tp->t_flags2 & TF2_ACE_PERMIT) {
if ((iptos & IPTOS_ECN_MASK) == IPTOS_ECN_CE)
tp->t_rcep += 1;
@@ -413,10 +412,10 @@
if (newdata) {
if (tp->t_flags2 & TF2_ECN_USE_ECT1) {
ipecn = IPTOS_ECN_ECT1;
- TCPSTAT_INC(tcps_ecn_ect1);
+ TCPSTAT_INC(tcps_ecn_sndect1);
} else {
ipecn = IPTOS_ECN_ECT0;
- TCPSTAT_INC(tcps_ecn_ect0);
+ TCPSTAT_INC(tcps_ecn_sndect0);
}
}
/*
@@ -497,6 +496,18 @@
{
int scflags = 0;
+ switch (iptos & IPTOS_ECN_MASK) {
+ case IPTOS_ECN_CE:
+ TCPSTAT_INC(tcps_ecn_rcvce);
+ break;
+ case IPTOS_ECN_ECT0:
+ TCPSTAT_INC(tcps_ecn_rcvect0);
+ break;
+ case IPTOS_ECN_ECT1:
+ TCPSTAT_INC(tcps_ecn_rcvect1);
+ break;
+ }
+
switch (thflags & (TH_AE|TH_CWR|TH_ECE)) {
/* no ECN */
case (0|0|0):
diff --git a/sys/netinet/tcp_var.h b/sys/netinet/tcp_var.h
--- a/sys/netinet/tcp_var.h
+++ b/sys/netinet/tcp_var.h
@@ -787,9 +787,9 @@
uint64_t tcps_sack_sboverflow; /* times scoreboard overflowed */
/* ECN related stats */
- uint64_t tcps_ecn_ce; /* ECN Congestion Experienced */
- uint64_t tcps_ecn_ect0; /* ECN Capable Transport */
- uint64_t tcps_ecn_ect1; /* ECN Capable Transport */
+ uint64_t tcps_ecn_rcvce; /* ECN Congestion Experienced */
+ uint64_t tcps_ecn_rcvect0; /* ECN Capable Transport */
+ uint64_t tcps_ecn_rcvect1; /* ECN Capable Transport */
uint64_t tcps_ecn_shs; /* ECN successful handshakes */
uint64_t tcps_ecn_rcwnd; /* # times ECN reduced the cwnd */
@@ -824,7 +824,11 @@
uint64_t tcps_ace_ect0; /* ACE SYN packet with ECT0 */
uint64_t tcps_ace_ce; /* ACE SYN packet with CE */
- uint64_t _pad[6]; /* 6 TBD placeholder for STABLE */
+ /* ECN related stats */
+ uint64_t tcps_ecn_sndect0; /* ECN Capable Transport */
+ uint64_t tcps_ecn_sndect1; /* ECN Capable Transport */
+
+ uint64_t _pad[3]; /* 3 TBD placeholder for STABLE */
};
#define tcps_rcvmemdrop tcps_rcvreassfull /* compat */
diff --git a/usr.bin/netstat/inet.c b/usr.bin/netstat/inet.c
--- a/usr.bin/netstat/inet.c
+++ b/usr.bin/netstat/inet.c
@@ -818,12 +818,16 @@
xo_close_container("sack");
xo_open_container("ecn");
- p(tcps_ecn_ce, "\t{:ce-packets/%ju} "
- "{N:/packet%s with ECN CE bit set}\n");
- p(tcps_ecn_ect0, "\t{:ect0-packets/%ju} "
- "{N:/packet%s with ECN ECT(0) bit set}\n");
- p(tcps_ecn_ect1, "\t{:ect1-packets/%ju} "
- "{N:/packet%s with ECN ECT(1) bit set}\n");
+ p(tcps_ecn_rcvce, "\t{:ce-packets/%ju} "
+ "{N:/packet%s received with ECN CE bit set}\n");
+ p(tcps_ecn_rcvect0, "\t{:ect0-packets/%ju} "
+ "{N:/packet%s received with ECN ECT(0) bit set}\n");
+ p(tcps_ecn_rcvect1, "\t{:ect1-packets/%ju} "
+ "{N:/packet%s received with ECN ECT(1) bit set}\n");
+ p(tcps_ecn_sndect0, "\t{:ect0-packets/%ju} "
+ "{N:/packet%s sent with ECN ECT(0) bit set}\n");
+ p(tcps_ecn_sndect1, "\t{:ect1-packets/%ju} "
+ "{N:/packet%s sent with ECN ECT(1) bit set}\n");
p(tcps_ecn_shs, "\t{:handshakes/%ju} "
"{N:/successful ECN handshake%s}\n");
p(tcps_ecn_rcwnd, "\t{:congestion-reductions/%ju} "

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 12:42 PM (7 h, 35 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28580528
Default Alt Text
D37314.id112801.diff (3 KB)

Event Timeline