mptcp: add the mibs for MP_FASTCLOSE
This patch added two more mibs for MP_FASTCLOSE, MPTCP_MIB_MPFASTCLOSETX for the MP_FASTCLOSE sending and MPTCP_MIB_MPFASTCLOSERX for receiving. Also added a debug log for MP_FASTCLOSE receiving, printed out the recv_key of MP_FASTCLOSE in mptcp_parse_option to show that MP_RST is received. Signed-off-by: Geliang Tang <geliang.tang@suse.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9a0a93672c
commit
1e75629cb9
@ -48,6 +48,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
|
|||||||
SNMP_MIB_ITEM("MPPrioRx", MPTCP_MIB_MPPRIORX),
|
SNMP_MIB_ITEM("MPPrioRx", MPTCP_MIB_MPPRIORX),
|
||||||
SNMP_MIB_ITEM("MPFailTx", MPTCP_MIB_MPFAILTX),
|
SNMP_MIB_ITEM("MPFailTx", MPTCP_MIB_MPFAILTX),
|
||||||
SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
|
SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
|
||||||
|
SNMP_MIB_ITEM("MPFastcloseTx", MPTCP_MIB_MPFASTCLOSETX),
|
||||||
|
SNMP_MIB_ITEM("MPFastcloseRx", MPTCP_MIB_MPFASTCLOSERX),
|
||||||
SNMP_MIB_ITEM("RcvPruned", MPTCP_MIB_RCVPRUNED),
|
SNMP_MIB_ITEM("RcvPruned", MPTCP_MIB_RCVPRUNED),
|
||||||
SNMP_MIB_ITEM("SubflowStale", MPTCP_MIB_SUBFLOWSTALE),
|
SNMP_MIB_ITEM("SubflowStale", MPTCP_MIB_SUBFLOWSTALE),
|
||||||
SNMP_MIB_ITEM("SubflowRecover", MPTCP_MIB_SUBFLOWRECOVER),
|
SNMP_MIB_ITEM("SubflowRecover", MPTCP_MIB_SUBFLOWRECOVER),
|
||||||
|
@ -41,6 +41,8 @@ enum linux_mptcp_mib_field {
|
|||||||
MPTCP_MIB_MPPRIORX, /* Received a MP_PRIO */
|
MPTCP_MIB_MPPRIORX, /* Received a MP_PRIO */
|
||||||
MPTCP_MIB_MPFAILTX, /* Transmit a MP_FAIL */
|
MPTCP_MIB_MPFAILTX, /* Transmit a MP_FAIL */
|
||||||
MPTCP_MIB_MPFAILRX, /* Received a MP_FAIL */
|
MPTCP_MIB_MPFAILRX, /* Received a MP_FAIL */
|
||||||
|
MPTCP_MIB_MPFASTCLOSETX, /* Transmit a MP_FASTCLOSE */
|
||||||
|
MPTCP_MIB_MPFASTCLOSERX, /* Received a MP_FASTCLOSE */
|
||||||
MPTCP_MIB_RCVPRUNED, /* Incoming packet dropped due to memory limit */
|
MPTCP_MIB_RCVPRUNED, /* Incoming packet dropped due to memory limit */
|
||||||
MPTCP_MIB_SUBFLOWSTALE, /* Subflows entered 'stale' status */
|
MPTCP_MIB_SUBFLOWSTALE, /* Subflows entered 'stale' status */
|
||||||
MPTCP_MIB_SUBFLOWRECOVER, /* Subflows returned to active status after being stale */
|
MPTCP_MIB_SUBFLOWRECOVER, /* Subflows returned to active status after being stale */
|
||||||
|
@ -323,6 +323,7 @@ static void mptcp_parse_option(const struct sk_buff *skb,
|
|||||||
mp_opt->rcvr_key = get_unaligned_be64(ptr);
|
mp_opt->rcvr_key = get_unaligned_be64(ptr);
|
||||||
ptr += 8;
|
ptr += 8;
|
||||||
mp_opt->suboptions |= OPTION_MPTCP_FASTCLOSE;
|
mp_opt->suboptions |= OPTION_MPTCP_FASTCLOSE;
|
||||||
|
pr_debug("MP_FASTCLOSE: recv_key=%llu", mp_opt->rcvr_key);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MPTCPOPT_RST:
|
case MPTCPOPT_RST:
|
||||||
@ -832,6 +833,7 @@ bool mptcp_established_options(struct sock *sk, struct sk_buff *skb,
|
|||||||
mptcp_established_options_mp_fail(sk, &opt_size, remaining, opts)) {
|
mptcp_established_options_mp_fail(sk, &opt_size, remaining, opts)) {
|
||||||
*size += opt_size;
|
*size += opt_size;
|
||||||
remaining -= opt_size;
|
remaining -= opt_size;
|
||||||
|
MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFASTCLOSETX);
|
||||||
}
|
}
|
||||||
/* MP_RST can be used with MP_FASTCLOSE and MP_FAIL if there is room */
|
/* MP_RST can be used with MP_FASTCLOSE and MP_FAIL if there is room */
|
||||||
if (mptcp_established_options_rst(sk, skb, &opt_size, remaining, opts)) {
|
if (mptcp_established_options_rst(sk, skb, &opt_size, remaining, opts)) {
|
||||||
@ -1124,6 +1126,7 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
|
|||||||
msk->local_key == mp_opt.rcvr_key) {
|
msk->local_key == mp_opt.rcvr_key) {
|
||||||
WRITE_ONCE(msk->rcv_fastclose, true);
|
WRITE_ONCE(msk->rcv_fastclose, true);
|
||||||
mptcp_schedule_work((struct sock *)msk);
|
mptcp_schedule_work((struct sock *)msk);
|
||||||
|
MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFASTCLOSERX);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) &&
|
if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) &&
|
||||||
|
Loading…
Reference in New Issue
Block a user