Files
linux/include/uapi/linux
Geliang Tang 18d82cde74 mptcp: add last time fields in mptcp_info
This patch adds "last time" fields last_data_sent, last_data_recv and
last_ack_recv in struct mptcp_sock to record the last time data_sent,
data_recv and ack_recv happened. They all are initialized as
tcp_jiffies32 in __mptcp_init_sock(), and updated as tcp_jiffies32 too
when data is sent in __subflow_push_pending(), data is received in
__mptcp_move_skbs_from_subflow(), and ack is received in ack_update_msk().

Similar to tcpi_last_data_sent, tcpi_last_data_recv and tcpi_last_ack_recv
exposed with TCP, this patch exposes the last time "an action happened" for
MPTCP in mptcp_info, named mptcpi_last_data_sent, mptcpi_last_data_recv and
mptcpi_last_ack_recv, calculated in mptcp_diag_fill_info() as the time
deltas between now and the newly added last time fields in mptcp_sock.

Since msk->last_ack_recv needs to be protected by mptcp_data_lock/unlock,
and lock_sock_fast can sleep and be quite slow, move the entire
mptcp_data_lock/unlock block after the lock/unlock_sock_fast block.
Then mptcpi_last_data_sent and mptcpi_last_data_recv are set in
lock/unlock_sock_fast block, while mptcpi_last_ack_recv is set in
mptcp_data_lock/unlock block, which is protected by a spinlock and
should not block for too long.

Also add three reserved bytes in struct mptcp_info not to have holes in
this structure exposed to userspace.

Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/446
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Link: https://lore.kernel.org/r/20240410-upstream-net-next-20240405-mptcp-last-time-info-v2-1-f95bd6b33e51@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2024-04-11 08:19:54 -07:00
..
2023-05-14 16:05:28 +01:00
2023-05-30 15:20:08 +01:00
2022-08-11 10:31:19 -07:00
2023-12-07 12:44:19 -08:00
2023-01-20 09:33:22 +00:00
2024-04-08 14:10:45 +01:00
2023-03-06 15:49:07 -06:00
2024-03-07 17:14:53 +00:00
2023-03-16 21:20:32 -07:00
2023-09-21 19:22:05 +02:00
2022-08-10 13:49:50 +01:00
2023-10-24 12:02:02 +02:00
2024-04-01 10:49:28 +01:00
2024-02-08 08:41:06 -05:00
2022-09-20 09:13:38 +02:00
2024-02-15 23:43:47 -05:00
2024-03-01 12:23:37 +01:00
2023-12-15 17:01:30 +01:00
2023-06-09 16:25:16 -07:00
2023-12-14 11:49:17 +01:00
2023-04-27 19:15:11 -06:00
2022-09-07 16:46:03 +02:00
2023-11-28 19:05:16 +00:00
2023-10-28 13:31:05 -05:00
2024-04-01 10:49:28 +01:00
2023-12-20 19:26:31 -05:00
2023-11-18 14:56:16 +01:00
2023-10-27 10:35:46 +01:00
2022-11-17 11:04:23 -08:00
2022-09-27 17:29:09 -07:00
2023-06-05 09:36:35 +02:00
2024-02-28 18:47:08 -07:00
2023-12-29 11:58:24 -08:00
2023-03-23 17:25:46 +01:00
2024-02-05 12:57:45 +01:00