Skip to content

Commit 5dcff89

Browse files
Paolo Abenikuba-moo
authored andcommitted
selftests: mptcp: explicitly tests aggregate counters
Update the existing sockopt test-case to do some basic checks on the newly added counters. Link: multipath-tcp/mptcp_net-next#385 Signed-off-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent 38967f4 commit 5dcff89

File tree

1 file changed

+26
-1
lines changed

1 file changed

+26
-1
lines changed

tools/testing/selftests/net/mptcp/mptcp_sockopt.c

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ struct mptcp_info {
5151
__u8 mptcpi_local_addr_used;
5252
__u8 mptcpi_local_addr_max;
5353
__u8 mptcpi_csum_enabled;
54+
__u32 mptcpi_retransmits;
55+
__u64 mptcpi_bytes_retrans;
56+
__u64 mptcpi_bytes_sent;
57+
__u64 mptcpi_bytes_received;
58+
__u64 mptcpi_bytes_acked;
5459
};
5560

5661
struct mptcp_subflow_data {
@@ -83,8 +88,10 @@ struct mptcp_subflow_addrs {
8388

8489
struct so_state {
8590
struct mptcp_info mi;
91+
struct mptcp_info last_sample;
8692
uint64_t mptcpi_rcv_delta;
8793
uint64_t tcpi_rcv_delta;
94+
bool pkt_stats_avail;
8895
};
8996

9097
#ifndef MIN
@@ -322,8 +329,9 @@ static void do_getsockopt_mptcp_info(struct so_state *s, int fd, size_t w)
322329
if (ret < 0)
323330
die_perror("getsockopt MPTCP_INFO");
324331

325-
assert(olen == sizeof(i));
332+
s->pkt_stats_avail = olen >= sizeof(i);
326333

334+
s->last_sample = i;
327335
if (s->mi.mptcpi_write_seq == 0)
328336
s->mi = i;
329337

@@ -562,6 +570,23 @@ static void process_one_client(int fd, int pipefd)
562570
do_getsockopts(&s, fd, ret, ret2);
563571
if (s.mptcpi_rcv_delta != (uint64_t)ret + 1)
564572
xerror("mptcpi_rcv_delta %" PRIu64 ", expect %" PRIu64, s.mptcpi_rcv_delta, ret + 1, s.mptcpi_rcv_delta - ret);
573+
574+
/* be nice when running on top of older kernel */
575+
if (s.pkt_stats_avail) {
576+
if (s.last_sample.mptcpi_bytes_sent != ret2)
577+
xerror("mptcpi_bytes_sent %" PRIu64 ", expect %" PRIu64,
578+
s.last_sample.mptcpi_bytes_sent, ret2,
579+
s.last_sample.mptcpi_bytes_sent - ret2);
580+
if (s.last_sample.mptcpi_bytes_received != ret)
581+
xerror("mptcpi_bytes_received %" PRIu64 ", expect %" PRIu64,
582+
s.last_sample.mptcpi_bytes_received, ret,
583+
s.last_sample.mptcpi_bytes_received - ret);
584+
if (s.last_sample.mptcpi_bytes_acked != ret)
585+
xerror("mptcpi_bytes_acked %" PRIu64 ", expect %" PRIu64,
586+
s.last_sample.mptcpi_bytes_acked, ret2,
587+
s.last_sample.mptcpi_bytes_acked - ret2);
588+
}
589+
565590
close(fd);
566591
}
567592

0 commit comments

Comments
 (0)