[RFC mptcp-next 2/6] mptcp: add mibs for MP_FAIL echo

Geliang Tang posted 6 patches 3 years, 11 months ago
There is a newer version of this series
[RFC mptcp-next 2/6] mptcp: add mibs for MP_FAIL echo
Posted by Geliang Tang 3 years, 11 months ago
Add MP_FAIL echo support.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 net/mptcp/mib.c     | 2 ++
 net/mptcp/mib.h     | 2 ++
 net/mptcp/options.c | 1 +
 net/mptcp/pm.c      | 2 ++
 4 files changed, 7 insertions(+)

diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index d93a8c9996fd..f3070daa013b 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -49,6 +49,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
 	SNMP_MIB_ITEM("MPPrioRx", MPTCP_MIB_MPPRIORX),
 	SNMP_MIB_ITEM("MPFailTx", MPTCP_MIB_MPFAILTX),
 	SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
+	SNMP_MIB_ITEM("MPFailEchoTx", MPTCP_MIB_MPFAILECHOTX),
+	SNMP_MIB_ITEM("MPFailEchoRx", MPTCP_MIB_MPFAILECHORX),
 	SNMP_MIB_ITEM("MPFastcloseTx", MPTCP_MIB_MPFASTCLOSETX),
 	SNMP_MIB_ITEM("MPFastcloseRx", MPTCP_MIB_MPFASTCLOSERX),
 	SNMP_MIB_ITEM("MPRstTx", MPTCP_MIB_MPRSTTX),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 529d07af9e14..83219721d337 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -42,6 +42,8 @@ enum linux_mptcp_mib_field {
 	MPTCP_MIB_MPPRIORX,		/* Received a MP_PRIO */
 	MPTCP_MIB_MPFAILTX,		/* Transmit a MP_FAIL */
 	MPTCP_MIB_MPFAILRX,		/* Received a MP_FAIL */
+	MPTCP_MIB_MPFAILECHOTX,		/* Transmit a MP_FAIL echo */
+	MPTCP_MIB_MPFAILECHORX,		/* Received a MP_FAIL echo */
 	MPTCP_MIB_MPFASTCLOSETX,	/* Transmit a MP_FASTCLOSE */
 	MPTCP_MIB_MPFASTCLOSERX,	/* Received a MP_FASTCLOSE */
 	MPTCP_MIB_MPRSTTX,		/* Transmit a MP_RST */
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index c4d66fca9c5d..67dad62f34f6 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -1171,6 +1171,7 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
 				MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFAILRX);
 			} else {
 				mptcp_pm_mp_fail_echoed(sk, mp_opt.fail_seq);
+				MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFAILECHORX);
 			}
 		}
 
diff --git a/net/mptcp/pm.c b/net/mptcp/pm.c
index d58fddf4d5a2..5e133b249492 100644
--- a/net/mptcp/pm.c
+++ b/net/mptcp/pm.c
@@ -286,12 +286,14 @@ void mptcp_pm_mp_fail_received(struct sock *sk, u64 fail_seq)
 			if (tmp != subflow) {
 				tmp->fail_seq = fail_seq;
 				tmp->send_mp_fail = 1;
+				MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFAILECHOTX);
 			}
 		}
 	} else if (READ_ONCE(msk->allow_infinite_fallback)) {
 		subflow->fail_seq = fail_seq;
 		subflow->send_mp_fail = 1;
 		subflow->send_infinite_map = 1;
+		MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFAILECHOTX);
 	}
 }
 
-- 
2.34.1