mptcp: add MIB counter for invalid mapping
authorPaolo Abeni <pabeni@redhat.com>
Mon, 21 Jun 2021 22:54:37 +0000 (15:54 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 22 Jun 2021 16:57:45 +0000 (09:57 -0700)
Account this exceptional events for better introspection.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/mptcp/mib.c
net/mptcp/mib.h
net/mptcp/subflow.c

index e7e60bc..52ea251 100644 (file)
@@ -25,6 +25,7 @@ static const struct snmp_mib mptcp_snmp_list[] = {
        SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC),
        SNMP_MIB_ITEM("DSSNotMatching", MPTCP_MIB_DSSNOMATCH),
        SNMP_MIB_ITEM("InfiniteMapRx", MPTCP_MIB_INFINITEMAPRX),
+       SNMP_MIB_ITEM("DSSNoMatchTCP", MPTCP_MIB_DSSTCPMISMATCH),
        SNMP_MIB_ITEM("DataCsumErr", MPTCP_MIB_DATACSUMERR),
        SNMP_MIB_ITEM("OFOQueueTail", MPTCP_MIB_OFOQUEUETAIL),
        SNMP_MIB_ITEM("OFOQueue", MPTCP_MIB_OFOQUEUE),
index 92e56c0..193466c 100644 (file)
@@ -18,6 +18,7 @@ enum linux_mptcp_mib_field {
        MPTCP_MIB_JOINACKMAC,           /* HMAC was wrong on ACK + MP_JOIN */
        MPTCP_MIB_DSSNOMATCH,           /* Received a new mapping that did not match the previous one */
        MPTCP_MIB_INFINITEMAPRX,        /* Received an infinite mapping */
+       MPTCP_MIB_DSSTCPMISMATCH,       /* DSS-mapping did not map with TCP's sequence numbers */
        MPTCP_MIB_DATACSUMERR,          /* The data checksum fail */
        MPTCP_MIB_OFOQUEUETAIL, /* Segments inserted into OoO queue tail */
        MPTCP_MIB_OFOQUEUE,             /* Segments inserted into OoO queue */
index 8976ff5..585951e 100644 (file)
@@ -1046,8 +1046,10 @@ validate_seq:
        /* we revalidate valid mapping on new skb, because we must ensure
         * the current skb is completely covered by the available mapping
         */
-       if (!validate_mapping(ssk, skb))
+       if (!validate_mapping(ssk, skb)) {
+               MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DSSTCPMISMATCH);
                return MAPPING_INVALID;
+       }
 
        skb_ext_del(skb, SKB_EXT_MPTCP);