Commit d9734847 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

selftests: drv-net: gro: always wait for FIN in the capacity test



The new capacity/order test exits as soon as it sees the expected
packet sequence. This may allow the "flushing" FIN packet to spill
over to the next test. Let's always wait for the FIN before exiting.

Reviewed-by: default avatarWillem de Bruijn <willemb@google.com>
Link: https://patch.msgid.link/20260402210000.1512696-4-kuba@kernel.org


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 436ea8a1
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -1154,7 +1154,7 @@ static void check_capacity_pkts(int fd)
	memset(coalesced, 0, sizeof(coalesced));
	memset(flow_order, -1, sizeof(flow_order));

	while (total_data < num_flows * CAPACITY_PAYLOAD_LEN * 2) {
	while (1) {
		ip_ext_len = 0;
		pkt_size = recv(fd, buffer, IP_MAXPACKET + ETH_HLEN + 1, 0);
		if (pkt_size < 0)
@@ -1167,7 +1167,6 @@ static void check_capacity_pkts(int fd)

		tcph = (struct tcphdr *)(buffer + tcp_offset + ip_ext_len);

		/* FIN packet terminates reception */
		if (tcph->fin)
			break;

@@ -1189,7 +1188,13 @@ static void check_capacity_pkts(int fd)
			data_len = pkt_size - total_hdr_len - ip_ext_len;
		}

		if (num_pkt < num_flows * 2) {
			flow_order[num_pkt] = flow_id;
		} else if (num_pkt == num_flows * 2) {
			vlog("More packets than expected (%d)\n",
			     num_flows * 2);
			fail_reason = fail_reason ?: "too many packets";
		}
		coalesced[flow_id] = data_len;

		if (data_len == CAPACITY_PAYLOAD_LEN * 2) {