From nobody Sun Jun 14 12:46:10 2026 Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2A752386C09 for ; Thu, 2 Apr 2026 23:22:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775172163; cv=none; b=IrhZzLAtzu6Urk/icF7uzDdRulEQ7Xmj01vIMFvqqVQWBXKFSPVN1Xgv+hfsblCOezyWfJesR81Rri5aHq95BTmXxEdZsyVNYutCKIJORbo/DlohwJ5K8ddHatg3zVJ1wsCJgjtaz+YBM+btMfDy+8lO/NdqqY/VWKs0ogp437c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775172163; c=relaxed/simple; bh=J4kk90yuxxA42SHtt+Ov+rBowYEAkbWXfw9oGJun+BU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=snrWt+5z9WC3jdDUd6EUbl/sG9dirwWTE7btY4EyqQdk0hy4TkIbLp5/Bq1v13IwpjXMobXW6Zh6pTU4Kw0NAArZaOunkI+DNpyCdey7gh3nSTb15ae6XGKoBhqcz8lDzYjSdbMjKe+dlPzXSMbjUPWZfPjmCZXMfalogAtDeqI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to; spf=none smtp.mailfrom=dama.to; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b=L5mvlOXp; arc=none smtp.client-ip=209.85.210.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=dama.to Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b="L5mvlOXp" Received: by mail-pf1-f171.google.com with SMTP id d2e1a72fcca58-82cef263bedso714311b3a.0 for ; Thu, 02 Apr 2026 16:22:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dama-to.20251104.gappssmtp.com; s=20251104; t=1775172161; x=1775776961; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=+/znVnDeXjnXzaaF0D3QPKaN1Wp2D3MlfOCy7zxinTk=; b=L5mvlOXpo9GuRB05+CefSLJG3fY4naXPL3ScsMnISrrTzV5IQMMMHvlhhVWX3mGemi nJ4jis/WGryHwy968WFzyeeKdfHO4W5aZpmrev7AErr3CPuTBECIUA8sR352izBCJrXT VbGvS3iw6RfqkcpxORbYnUcitgR4OwNpP3BT70th6YB+3AZ0MeEg/shCpGj7+douarjs tFTJKZ+fvb+WstHQ++LeMFS/xGOOLxx+/BrHG9PdiK9F/e9dBQkGgtZsDjwAg53MnH08 tkeuwK08ztU1Pnw6BwTPwq9SMojKnGtHbxREPdUB/iNOYQStaD1GZdMecGR0183ZI0eQ orFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775172161; x=1775776961; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=+/znVnDeXjnXzaaF0D3QPKaN1Wp2D3MlfOCy7zxinTk=; b=ooazEzaFSP3l76a9HbpBvNS5tAUAc6y+au96yOI7Pe3Y3csIQtrtHIBjFf2lP0GuBw fTBk/KfEVWnuUzOkG80cX+ld9UlCUULnN2yW7DqB30t0jjDHg0d1BuKy6Nzp/JG96eZj LW/ppZDI1eBPkVane4jl6NCmvgLzYJ4lgo0+k2ePyDNKLn/m0TJQ6lFMSVQ1hS/y89Yw z/25xZ0TnuzKvc4KULNubIBIgrzFZXctkjrCw4IXyDTrr3pFIdL6MKNJJP8WnsR3DlKM kLpq8ArZp9IjqPoZne/Hp3t1kqLy7US2Dt1B1I/AnH+KYsm80r62WZyY9vEudZxOqCtY y7XQ== X-Forwarded-Encrypted: i=1; AJvYcCXEzjtc1jHnvQkc0fdrl0YjaPuL+kCaE4LkCLu1KTF95Hu1ldDjInIexT4zDAeouSR091CsJ8/W4pAwrDI=@vger.kernel.org X-Gm-Message-State: AOJu0YyukMCwuFQ3E+BDX5K3OCFJGAn9icGbuS2m9eLYavEK+4O01zVz 9Em6nUKoRS78C4mo8LqmtW86KdVljQSm4E1MnuM1f+q6hIbLGE55CKx+RDdLKRISKHc= X-Gm-Gg: ATEYQzzPPfEECgE9Bgcn9y2z2cRZRsFup7G/4eVtp4E6AD1lo7qm5049p29Jb3/JGF6 OegjDl031Kn3RLZAErQRnVtL3TIFOVbYsdqUr97wm7Ki90zCkmI6D4TLCKY9H7ocb3YPMKKKzLY DenIzgI/oDs7r1+hzL3XZvVXB3zJULaYlbw7sL9sOn2B77ManqwDr5PVl0swPcsZeDEVTAQ18FB qRUg/LDodSqsJ1PCcuEEO+Ez/fUN+A3zbQmDEI8hs2b9hyM+eD8RtcMZUuLOYWJujfmAbPU3Wb7 Qs+S2/fUVl+uRGVZkOBKmFaCjVEt+jd7UEbd+x52bX/58ZFSpN1x121UUx4NJ9MKaKeVbHl68J0 VPaFdcZ56wMEHDPJYwuiFCP8g7BMmYOeGA8jjDa8ReVqXfs2iscbYrSkLe66JHCUw82Y4YLdcMD AzZ+b0 X-Received: by 2002:a05:6a00:2d18:b0:829:7b0f:c9de with SMTP id d2e1a72fcca58-82d0db4f7efmr788927b3a.35.1775172161583; Thu, 02 Apr 2026 16:22:41 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:49::]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82cf9b27313sm4052568b3a.5.2026.04.02.16.22.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2026 16:22:40 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: andrew+netdev@lunn.ch, linux-kernel@vger.kernel.org, willemb@google.com, Joe Damato , linux-kselftest@vger.kernel.org Subject: [net-next 1/3] selftests/net: Test PACKET_STATISTICS Date: Thu, 2 Apr 2026 16:21:57 -0700 Message-ID: <20260402232203.2004496-2-joe@dama.to> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260402232203.2004496-1-joe@dama.to> References: <20260402232203.2004496-1-joe@dama.to> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Update the existing packet socket test to include a test for the sockopt PACKET_STATISTICS. Signed-off-by: Joe Damato --- tools/testing/selftests/net/psock_snd.c | 32 ++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/psock_snd.c b/tools/testing/selfte= sts/net/psock_snd.c index edf1e6f80d41..5be481a3d2bd 100644 --- a/tools/testing/selftests/net/psock_snd.c +++ b/tools/testing/selftests/net/psock_snd.c @@ -359,6 +359,34 @@ static void parse_opts(int argc, char **argv) error(1, 0, "option gso (-g) requires csum offload (-c)"); } =20 +static void check_packet_stats(int fd) +{ + struct tpacket_stats st =3D {}; + socklen_t len =3D sizeof(st); + + if (getsockopt(fd, SOL_PACKET, PACKET_STATISTICS, &st, &len)) + error(1, errno, "getsockopt packet statistics"); + + if (st.tp_packets !=3D 1) + error(1, 0, "stats: tp_packets %u !=3D 1", st.tp_packets); + + if (st.tp_drops !=3D 0) + error(1, 0, "stats: tp_drops %u !=3D 0", st.tp_drops); + + /* verify clear on read */ + memset(&st, 0xff, sizeof(st)); + len =3D sizeof(st); + + if (getsockopt(fd, SOL_PACKET, PACKET_STATISTICS, &st, &len)) + error(1, errno, "getsockopt packet statistics"); + + if (st.tp_packets !=3D 0) + error(1, 0, "stats: tp_packets %u !=3D 0 after clear", st.tp_packets); + + if (st.tp_drops !=3D 0) + error(1, 0, "stats: tp_drops %u !=3D 0 after clear", st.tp_drops); +} + static void run_test(void) { int fdr, fds, total_len; @@ -369,9 +397,11 @@ static void run_test(void) total_len =3D do_tx(); =20 /* BPF filter accepts only this length, vlan changes MAC */ - if (cfg_payload_len =3D=3D DATA_LEN && !cfg_use_vlan) + if (cfg_payload_len =3D=3D DATA_LEN && !cfg_use_vlan) { do_rx(fds, total_len - sizeof(struct virtio_net_hdr), tbuf + sizeof(struct virtio_net_hdr)); + check_packet_stats(fds); + } =20 do_rx(fdr, cfg_payload_len, tbuf + total_len - cfg_payload_len); =20 --=20 2.52.0 From nobody Sun Jun 14 12:46:10 2026 Received: from mail-pf1-f169.google.com (mail-pf1-f169.google.com [209.85.210.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 05B8339EF29 for ; Thu, 2 Apr 2026 23:22:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775172165; cv=none; b=jzzc2mWQbQInp1+tzaVAx39DSeQddWwwinknVP3lNE+yd6zR+wW4rLT7o+goE5QNN17ODG4CJGQjt5vUsvUjdiY8927dwJWEU1Qob0lTy7oNwog52CLKzQi5ixcI1DMtYCpJqdiZt4pOV8xpp1yYAKPJ0uEJRmo7dH+vwzkOCjM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775172165; c=relaxed/simple; bh=Tjl8imYH1OqXLWE1hPP3jcyr3QCjzn5ejtwy1XlU14c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FqOusMeTJLEWHlv1NEpxS9v+DTZa+YXf5TIqjJjGqkeQhs97uNu4LfM4GhGXLnXFJdwTRZrPgoGsMRo9D4L9OcA0CtyA4vMPpRmQ53FNjyGymoIMzHJQcjOLxToa8dbkl6sklEqesYkhgUVsvp7D+E5Gk27o9LRewBZAVMoMS5o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to; spf=none smtp.mailfrom=dama.to; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b=CNJijNab; arc=none smtp.client-ip=209.85.210.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=dama.to Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b="CNJijNab" Received: by mail-pf1-f169.google.com with SMTP id d2e1a72fcca58-82d0b68837aso247817b3a.2 for ; Thu, 02 Apr 2026 16:22:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dama-to.20251104.gappssmtp.com; s=20251104; t=1775172163; x=1775776963; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Syye3jGbYJUGP9iil2Gf3tWEkqi92NaZ66fdyleX4E8=; b=CNJijNabvExYIGaObQNLzgv9yFh6J2hhDbMpfvlv3j0cS0QRWRFj+PLaRkHdimwYOA xxnihqq0KFrDxQywV6mcf9y5w1BJKKF4ISFqJFlutgpeQUwo7d/x0gulT0cpoTbSyF7o LSeFvKi4oIxHr2F3ZsRymVTqN6eTOWJapchTz8JY60gx7363UK7TVIsyXia0MbGEnPIo kdmDTPlWD7pqacX9ZMoOFkwr//XfRxDnBdiT4NXsR1JWo019XLYx01hIZ99E/ctfdeq6 SHuElnk9jxHPhsryLNqn9QfSIWOeYhIJeqAXpq0Ze6S+dMWehlRDqjfDrk0pu2ZDAqhT py7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775172163; x=1775776963; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Syye3jGbYJUGP9iil2Gf3tWEkqi92NaZ66fdyleX4E8=; b=DcgGVtLD0WdVf5k9JurXhCeAZGpugk0mjEyxwzP8mEAdVqfRJoOY/6GuMdY5D+aLCP GnLijUIrI9/fAWPWPFXP/N95n0w+KRcuNtvjVJiRCG9Nm8avHa5xehOC3Eqvbcv8Jcz3 FJIMc0MTNjP0Bi5HqvZEZHtT/aOTo9+ggJz6oGI2pBNxUOWO0U/jb5E4P81xYEFrCa+R 1g4pXTxInHS77bNr3nE4PA/C00pLRNimFN25hidj5Pq6rFfVEqErMWfsa1O6Ah83LmW6 rjYvdeCcO1wNIZPOXKwX88HW9J2eqwjPryTXnmju/d4IMV7TMblOnDPRt0qimS4u1Uwx tvhA== X-Forwarded-Encrypted: i=1; AJvYcCVTeKkUxrzo2cTWTsZvRDb7LyjFEhov+iv1buBX3kSz0T0wJ2VeteZ/+lMjYOB+0bn9GkPYyiGpVzpoAcM=@vger.kernel.org X-Gm-Message-State: AOJu0YzLFDqzzjObHPsglFOBPzRZdkGIagctHk6B9aKnDkTqC1NTU/2v 89z1c9m6ulhjsJLJNUsA9vOlf9kvxYX32B8ln6cY2pOqy+YR4qfu0Tt2pYvUIkrwucE= X-Gm-Gg: ATEYQzxS6bMiJVbeCFU23p0fNR4SzrWq8ztr2p3WqekRGCcxEP9sNEj/Fx3KD0Le7SN Tv8yXqRNL0n+0ML7JP1seXK/YExaEjBkplM+GDlSmopQUjhcucvtOm82VutfEsovrK7wjEAoQAV Gr9+fn4/smKWSsPf5TeBuhXuGvpovc9A1qZPG8tsxrupLFADaxUsF04MG7VqYRoRVmLjxcLualt JQauBcGpOlvporfBRnkDbE/BnF7LYDoBF0VcKoW/rRoK6Zah/Xk6JCIKCxb4J8PxBYmT7BeQJDw ZJl+6EhkbJ+FvHlmES+OBselzillRcf2Ihv1JeSivY+8G79UrB81n/n3FJnlfv9LGYGFxjoDKSb iFDjM5vj2bNY0ikU0AOseg8RUOFCZJuvefHIcMaykx0nBPCd+tuDDhU3ZfHEHvYZISfIUeS+siA /MOw0P X-Received: by 2002:a05:6a00:4b53:b0:82c:e1a3:986f with SMTP id d2e1a72fcca58-82d0db93629mr734500b3a.43.1775172163414; Thu, 02 Apr 2026 16:22:43 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:47::]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-82cf9b3ccc8sm5445968b3a.19.2026.04.02.16.22.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2026 16:22:43 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: andrew+netdev@lunn.ch, linux-kernel@vger.kernel.org, willemb@google.com, Joe Damato , linux-kselftest@vger.kernel.org Subject: [net-next 2/3] selftests/net: Test PACKET_STATISTICS drops Date: Thu, 2 Apr 2026 16:21:58 -0700 Message-ID: <20260402232203.2004496-3-joe@dama.to> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260402232203.2004496-1-joe@dama.to> References: <20260402232203.2004496-1-joe@dama.to> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Extend psock_snd to test drops by setting a tiny receive buffer and sending a large burst of packets. Signed-off-by: Joe Damato --- tools/testing/selftests/net/psock_snd.c | 52 ++++++++++++++++++++---- tools/testing/selftests/net/psock_snd.sh | 5 +++ 2 files changed, 48 insertions(+), 9 deletions(-) diff --git a/tools/testing/selftests/net/psock_snd.c b/tools/testing/selfte= sts/net/psock_snd.c index 5be481a3d2bd..7bbce274b9f0 100644 --- a/tools/testing/selftests/net/psock_snd.c +++ b/tools/testing/selftests/net/psock_snd.c @@ -39,6 +39,7 @@ static bool cfg_use_gso; static bool cfg_use_qdisc_bypass; static bool cfg_use_vlan; static bool cfg_use_vnet; +static bool cfg_drop; =20 static char *cfg_ifname =3D "lo"; static int cfg_mtu =3D 1500; @@ -49,6 +50,8 @@ static uint16_t cfg_port =3D 8000; /* test sending up to max mtu + 1 */ #define TEST_SZ (sizeof(struct virtio_net_hdr) + ETH_HLEN + ETH_MAX_MTU + = 1) =20 +#define BURST_CNT (1000) + static char tbuf[TEST_SZ], rbuf[TEST_SZ]; =20 static unsigned long add_csum_hword(const uint16_t *start, int num_u16) @@ -212,13 +215,14 @@ static void do_send(int fd, char *buf, int len) if (ret !=3D len) error(1, 0, "write: %u %u", ret, len); =20 - fprintf(stderr, "tx: %u\n", ret); + if (!cfg_drop) + fprintf(stderr, "tx: %u\n", ret); } =20 -static int do_tx(void) +static int do_tx(bool burst) { const int one =3D 1; - int fd, len; + int i, fd, len; =20 fd =3D socket(PF_PACKET, cfg_use_dgram ? SOCK_DGRAM : SOCK_RAW, 0); if (fd =3D=3D -1) @@ -242,6 +246,10 @@ static int do_tx(void) =20 do_send(fd, tbuf, len); =20 + if (burst) + for (i =3D 0; i < BURST_CNT; i++) + do_send(fd, tbuf, len); + if (close(fd)) error(1, errno, "close t"); =20 @@ -290,6 +298,7 @@ static void do_rx(int fd, int expected_len, char *expec= ted) static int setup_sniffer(void) { struct timeval tv =3D { .tv_usec =3D 100 * 1000 }; + const int one =3D 1; int fd; =20 fd =3D socket(PF_PACKET, SOCK_RAW, 0); @@ -299,6 +308,10 @@ static int setup_sniffer(void) if (setsockopt(fd, SOL_SOCKET, SO_RCVTIMEO, &tv, sizeof(tv))) error(1, errno, "setsockopt rcv timeout"); =20 + if (cfg_drop) + if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &one, sizeof(one))) + error(1, errno, "setsockopt SO_RCVBUF"); + pair_udp_setfilter(fd); do_bind(fd); =20 @@ -309,7 +322,7 @@ static void parse_opts(int argc, char **argv) { int c; =20 - while ((c =3D getopt(argc, argv, "bcCdgl:qt:vV")) !=3D -1) { + while ((c =3D getopt(argc, argv, "bcCdDgl:qt:vV")) !=3D -1) { switch (c) { case 'b': cfg_use_bind =3D true; @@ -323,6 +336,9 @@ static void parse_opts(int argc, char **argv) case 'd': cfg_use_dgram =3D true; break; + case 'D': + cfg_drop =3D true; + break; case 'g': cfg_use_gso =3D true; break; @@ -367,11 +383,23 @@ static void check_packet_stats(int fd) if (getsockopt(fd, SOL_PACKET, PACKET_STATISTICS, &st, &len)) error(1, errno, "getsockopt packet statistics"); =20 - if (st.tp_packets !=3D 1) - error(1, 0, "stats: tp_packets %u !=3D 1", st.tp_packets); + if (cfg_drop) { + /* PACKET_STATISTICS reports all packets seen (including + * drops) in tp_packets + */ + if (st.tp_packets < st.tp_drops) + error(1, 0, "stats: tp_packets %u < tp_drops %u", + st.tp_packets, st.tp_drops); =20 - if (st.tp_drops !=3D 0) - error(1, 0, "stats: tp_drops %u !=3D 0", st.tp_drops); + if (st.tp_drops =3D=3D 0) + error(1, 0, "stats: expected drops but tp_drops =3D=3D 0"); + } else { + if (st.tp_packets !=3D 1) + error(1, 0, "stats: tp_packets %u !=3D 1", st.tp_packets); + + if (st.tp_drops !=3D 0) + error(1, 0, "stats: tp_drops %u !=3D 0", st.tp_drops); + } =20 /* verify clear on read */ memset(&st, 0xff, sizeof(st)); @@ -394,7 +422,12 @@ static void run_test(void) fdr =3D setup_rx(); fds =3D setup_sniffer(); =20 - total_len =3D do_tx(); + total_len =3D do_tx(cfg_drop); + + if (cfg_drop) { + check_packet_stats(fds); + goto out; + } =20 /* BPF filter accepts only this length, vlan changes MAC */ if (cfg_payload_len =3D=3D DATA_LEN && !cfg_use_vlan) { @@ -405,6 +438,7 @@ static void run_test(void) =20 do_rx(fdr, cfg_payload_len, tbuf + total_len - cfg_payload_len); =20 +out: if (close(fds)) error(1, errno, "close s"); if (close(fdr)) diff --git a/tools/testing/selftests/net/psock_snd.sh b/tools/testing/selft= ests/net/psock_snd.sh index 1cbfeb5052ec..b6ef12fad5d5 100755 --- a/tools/testing/selftests/net/psock_snd.sh +++ b/tools/testing/selftests/net/psock_snd.sh @@ -92,4 +92,9 @@ echo "raw gso max size" echo "raw gso max size + 1 (expected to fail)" (! ./in_netns.sh ./psock_snd -v -c -g -l "${max_mss_exceeds}") =20 +# test drops statistics + +echo "test drops statistics" +./in_netns.sh ./psock_snd -D + echo "OK. All tests passed" --=20 2.52.0 From nobody Sun Jun 14 12:46:10 2026 Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 103AA3A3E7E for ; Thu, 2 Apr 2026 23:22:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.181 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775172168; cv=none; b=uw8lRdT4R8Q1qNgeYqA0KbYti7BHyVQU2kMAJef7RkMF/UxuzD8lUgqj4dDpdeYo6PA7RmLsk4WvnZ0xl+Y7g/5pBDe3OAbOebsFzyq1jggMI0XaKn/bf/rkd++o/olh8cn10cphAGZquQTkCYQVf65x77DW8jg2Yk514oKjvBs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775172168; c=relaxed/simple; bh=DTdy0wGHn9nJPdYwvVneV3WjcTxwCTyqAhd+aFkuiNE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=bO4yEtBEQqsKwZEdYNTQo4W1xjOJgMyMjoXnOBOQtYJfLoEtRW8nFIRSTjc7XSmnx2wQvyFf3pHuLD6hC6jCPHa3hlue3IWXzSDaKHoRX05CvVADBYVUZ7lQi7wtD28T4XWq9CT3PuPzo8kMAZ2HSY/2e3FApcRh/el0yVUpdF8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to; spf=none smtp.mailfrom=dama.to; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b=UjhHxjKB; arc=none smtp.client-ip=209.85.215.181 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=dama.to Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=dama.to Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=dama-to.20251104.gappssmtp.com header.i=@dama-to.20251104.gappssmtp.com header.b="UjhHxjKB" Received: by mail-pg1-f181.google.com with SMTP id 41be03b00d2f7-c76cce85bd9so406499a12.1 for ; Thu, 02 Apr 2026 16:22:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dama-to.20251104.gappssmtp.com; s=20251104; t=1775172165; x=1775776965; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=tPx/23GDUuRn7oQUGbzWX+WqVXLgjJ891p+NWHhkBJw=; b=UjhHxjKB4J/ucIQj7IzKGn5JTn6iaN1jQ2phJYbD3qQjYP3JQNZYyzgsUzemltU19P LAXcC448YSqCnrv378IUKrc06/+7EZss4kPEeExTjLgRaRsSZoJCu30Vc8rsfIPXksnw FWFIxiNGRf5AQbpBfM9HZiEbqnarvsRND0AlXI5/FPN7ByZQlJ13/BUYMP8y2panWQ0X pGxjjZ3sEUpnqkmefTmf26MqjtBLDsZ6waPPPc3yS4/yIgXoTLoevSIsDtH2Frj8crek ggjn21Nq73noJsTwpOZaHJVZ4mt3H+LnQRtqm/ac0WYHeUPy4U7UPkyPizYauOkGg13H iQWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775172165; x=1775776965; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=tPx/23GDUuRn7oQUGbzWX+WqVXLgjJ891p+NWHhkBJw=; b=aH8j5g80JMjFrR/H92OM5n4iYrPxX5LOhCdVjB8G7TDtUeVuQZJiNi0L+7RgYVjfIW uVWETgpC87wjtxc1OXbBJOWgN9jiDVnk52RQSg9G3aRmiJkV0aHDvpnTT9wE70BXHHqT XeKN9sooIsvJbcvJUoPIrtGkyLdUsjsgzungrC02wZUBeA7RLNW/R1RXGri8Q/r9KmoH MRqMVWiIcULYk6oOBep2A9xCQ5Osmt8b4QBgdnDOxCVP0RX1mafB0AHvwt7Q+Xd5TpGm d7FNT93P12xtnQy/x+u1jiOZ9PN9SYY8fUcjReT/OHzgo9tWIVmsyNt9egRg7cEGPo8m EcXw== X-Forwarded-Encrypted: i=1; AJvYcCW/XVXcWFSe4mamu743DmsQ6OM6kwMMJvYU3t6pupFALuY98OdwoMi7+OoQhP9sGExkWtbjQmKt6hDIMRA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw2qUGzOdmvwJRgU05hC8rddMZvtci63la0Ost59pZX2EOjso9x 30ttBAo5FU6evEGzbxDsHh8INoizmKvvbGc1yWR5KVU+dVlCG/CZm0R1qtYHMzrVQdmRB7s2UA4 qQKZL0IE= X-Gm-Gg: AeBDies9LfdD3FqWTQDZaMVdU1S5equFNJFXdo2Qc07aKMhqgDTNJ3qet2PBBm6D9FR UfJhQy4K5kR4jqxjxBAZPnlzhcnygz2X04XNUm8V4Fts7EVEtAySy1X501VwXUQ6AED+Cv+3QsK RF9GhalA5O1P1/Tyr8QjWvWj/xppFuugMYT9FVw2sfiFTtK3/OD4XDvI6EPbUVw7KkaXQm+Noqn 9zr6R/46nKmKTwpDzdZsdCRSPvPpPcHR+tA1Xf1kuqQdAkiY3EOMpBc7fudxEQlzQIiaVSnrKHa RzOyU1mok0KU7uOrfMxI6Kh4ra1HsFMHk7bhDyOjmxrTwv5YZx5tVHeLyXCBthi6JZYqsZNgRnf CDq/RLjtQ+FU67vKZedLx6TWSHs6twCQDE/XsASWi0Tcimysra/xIB7c+hfQ5F1/nW2BgRiZYie PFEeVAqrK52IkO7iE= X-Received: by 2002:a17:902:f611:b0:2b2:65db:8c51 with SMTP id d9443c01a7336-2b28164cba3mr11916705ad.8.1775172165399; Thu, 02 Apr 2026 16:22:45 -0700 (PDT) Received: from localhost ([2a03:2880:2ff:5d::]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b2749794e8sm42617235ad.53.2026.04.02.16.22.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 02 Apr 2026 16:22:44 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org, "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Shuah Khan Cc: andrew+netdev@lunn.ch, linux-kernel@vger.kernel.org, willemb@google.com, Joe Damato , linux-kselftest@vger.kernel.org Subject: [net-next 3/3] selftests/net: Test PACKET_AUXDATA Date: Thu, 2 Apr 2026 16:21:59 -0700 Message-ID: <20260402232203.2004496-4-joe@dama.to> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260402232203.2004496-1-joe@dama.to> References: <20260402232203.2004496-1-joe@dama.to> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Extend the packet socket selftest, adding a recvmsg path, to test PACKET_AUXDATA. Check basic attributes of tpacket_auxdata. Signed-off-by: Joe Damato --- tools/testing/selftests/net/psock_snd.c | 57 ++++++++++++++++++++++-- tools/testing/selftests/net/psock_snd.sh | 5 +++ 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/tools/testing/selftests/net/psock_snd.c b/tools/testing/selfte= sts/net/psock_snd.c index 7bbce274b9f0..682e0afe364d 100644 --- a/tools/testing/selftests/net/psock_snd.c +++ b/tools/testing/selftests/net/psock_snd.c @@ -40,6 +40,7 @@ static bool cfg_use_qdisc_bypass; static bool cfg_use_vlan; static bool cfg_use_vnet; static bool cfg_drop; +static bool cfg_aux_data; =20 static char *cfg_ifname =3D "lo"; static int cfg_mtu =3D 1500; @@ -281,9 +282,26 @@ static int setup_rx(void) =20 static void do_rx(int fd, int expected_len, char *expected) { + char cmsg_buf[1024] =3D {}; + struct msghdr msg =3D {}; + struct iovec iov[1]; int ret; =20 - ret =3D recv(fd, rbuf, sizeof(rbuf), 0); + if (cfg_aux_data) { + iov[0].iov_base =3D rbuf; + iov[0].iov_len =3D sizeof(rbuf); + + msg.msg_iov =3D iov; + msg.msg_iovlen =3D 1; + + msg.msg_control =3D cmsg_buf; + msg.msg_controllen =3D sizeof(cmsg_buf); + + ret =3D recvmsg(fd, &msg, 0); + } else { + ret =3D recv(fd, rbuf, sizeof(rbuf), 0); + } + if (ret =3D=3D -1) error(1, errno, "recv"); if (ret !=3D expected_len) @@ -292,6 +310,31 @@ static void do_rx(int fd, int expected_len, char *expe= cted) if (memcmp(rbuf, expected, ret)) error(1, 0, "recv: data mismatch"); =20 + if (cfg_aux_data) { + struct cmsghdr *cmsg =3D CMSG_FIRSTHDR(&msg); + struct tpacket_auxdata *adata; + + if (!cmsg) + error(1, 0, "auxdata null"); + + if (cmsg->cmsg_level !=3D SOL_PACKET) + error(1, 0, "cmsg_level !=3D SOL_PACKET"); + + if (cmsg->cmsg_type !=3D PACKET_AUXDATA) + error(1, 0, "cmsg_type !=3D PACKET_AUXDATA"); + + adata =3D (struct tpacket_auxdata *)CMSG_DATA(cmsg); + + if (adata->tp_net !=3D ETH_HLEN) + error(1, 0, "cmsg tp_net !=3D ETH_HLEN"); + + if (adata->tp_len !=3D expected_len) + error(1, 0, "cmsg tp_len !=3D %u", expected_len); + + if (adata->tp_snaplen !=3D expected_len) + error(1, 0, "cmsg tp_snaplen !=3D %u", expected_len); + } + fprintf(stderr, "rx: %u\n", ret); } =20 @@ -312,6 +355,10 @@ static int setup_sniffer(void) if (setsockopt(fd, SOL_SOCKET, SO_RCVBUF, &one, sizeof(one))) error(1, errno, "setsockopt SO_RCVBUF"); =20 + if (cfg_aux_data) + if (setsockopt(fd, SOL_PACKET, PACKET_AUXDATA, &one, sizeof(one))) + error(1, errno, "setsockopt PACKET_AUXDATA"); + pair_udp_setfilter(fd); do_bind(fd); =20 @@ -322,8 +369,11 @@ static void parse_opts(int argc, char **argv) { int c; =20 - while ((c =3D getopt(argc, argv, "bcCdDgl:qt:vV")) !=3D -1) { + while ((c =3D getopt(argc, argv, "abcCdDgl:qt:vV")) !=3D -1) { switch (c) { + case 'a': + cfg_aux_data =3D true; + break; case 'b': cfg_use_bind =3D true; break; @@ -436,7 +486,8 @@ static void run_test(void) check_packet_stats(fds); } =20 - do_rx(fdr, cfg_payload_len, tbuf + total_len - cfg_payload_len); + if (!cfg_aux_data) + do_rx(fdr, cfg_payload_len, tbuf + total_len - cfg_payload_len); =20 out: if (close(fds)) diff --git a/tools/testing/selftests/net/psock_snd.sh b/tools/testing/selft= ests/net/psock_snd.sh index b6ef12fad5d5..111c9e2f0d21 100755 --- a/tools/testing/selftests/net/psock_snd.sh +++ b/tools/testing/selftests/net/psock_snd.sh @@ -97,4 +97,9 @@ echo "raw gso max size + 1 (expected to fail)" echo "test drops statistics" ./in_netns.sh ./psock_snd -D =20 +# test aux data + +echo "test aux data" +./in_netns.sh ./psock_snd -a + echo "OK. All tests passed" --=20 2.52.0