Message ID | 20240603170217.6243-3-kerneljasonxing@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 9633e9377e6af0244f7381e86b9aac5276f5be97 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | tcp/mptcp: count CLOSE-WAIT for CurrEstab | expand |
Hi Jason, On 03/06/2024 19:02, Jason Xing wrote: > From: Jason Xing <kernelxing@tencent.com> > > Like previous patch does in TCP, we need to adhere to RFC 1213: > > "tcpCurrEstab OBJECT-TYPE > ... > The number of TCP connections for which the current state > is either ESTABLISHED or CLOSE- WAIT." > > So let's consider CLOSE-WAIT sockets. > > The logic of counting > When we increment the counter? > a) Only if we change the state to ESTABLISHED. > > When we decrement the counter? > a) if the socket leaves ESTABLISHED and will never go into CLOSE-WAIT, > say, on the client side, changing from ESTABLISHED to FIN-WAIT-1. > b) if the socket leaves CLOSE-WAIT, say, on the server side, changing > from CLOSE-WAIT to LAST-ACK. Thank you for the update! Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Cheers, Matt
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c index 7d44196ec5b6..96b113854bd3 100644 --- a/net/mptcp/protocol.c +++ b/net/mptcp/protocol.c @@ -2916,9 +2916,14 @@ void mptcp_set_state(struct sock *sk, int state) if (oldstate != TCP_ESTABLISHED) MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_CURRESTAB); break; - + case TCP_CLOSE_WAIT: + /* Unlike TCP, MPTCP sk would not have the TCP_SYN_RECV state: + * MPTCP "accepted" sockets will be created later on. So no + * transition from TCP_SYN_RECV to TCP_CLOSE_WAIT. + */ + break; default: - if (oldstate == TCP_ESTABLISHED) + if (oldstate == TCP_ESTABLISHED || oldstate == TCP_CLOSE_WAIT) MPTCP_DEC_STATS(sock_net(sk), MPTCP_MIB_CURRESTAB); }