SNMP_MIB_ITEM("RmSubflow", MPTCP_MIB_RMSUBFLOW),
        SNMP_MIB_ITEM("MPPrioTx", MPTCP_MIB_MPPRIOTX),
        SNMP_MIB_ITEM("MPPrioRx", MPTCP_MIB_MPPRIORX),
+       SNMP_MIB_ITEM("MPFailTx", MPTCP_MIB_MPFAILTX),
+       SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
        SNMP_MIB_ITEM("RcvPruned", MPTCP_MIB_RCVPRUNED),
        SNMP_MIB_ITEM("SubflowStale", MPTCP_MIB_SUBFLOWSTALE),
        SNMP_MIB_ITEM("SubflowRecover", MPTCP_MIB_SUBFLOWRECOVER),
 
        MPTCP_MIB_RMSUBFLOW,            /* Remove a subflow */
        MPTCP_MIB_MPPRIOTX,             /* Transmit a MP_PRIO */
        MPTCP_MIB_MPPRIORX,             /* Received a MP_PRIO */
+       MPTCP_MIB_MPFAILTX,             /* Transmit a MP_FAIL */
+       MPTCP_MIB_MPFAILRX,             /* Received a MP_FAIL */
        MPTCP_MIB_RCVPRUNED,            /* Incoming packet dropped due to memory limit */
        MPTCP_MIB_SUBFLOWSTALE,         /* Subflows entered 'stale' status */
        MPTCP_MIB_SUBFLOWRECOVER,       /* Subflows returned to active status after being stale */
 
 
        if (mp_opt.mp_fail) {
                mptcp_pm_mp_fail_received(sk, mp_opt.fail_seq);
+               MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFAILRX);
                mp_opt.mp_fail = 0;
        }
 
 
        if (unlikely(csum_fold(csum))) {
                MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_DATACSUMERR);
                subflow->send_mp_fail = 1;
+               MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_MPFAILTX);
                return subflow->mp_join ? MAPPING_INVALID : MAPPING_DUMMY;
        }