From nobody Sun Feb 8 11:55:00 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 4ED181494BB for ; Thu, 17 Apr 2025 01:33:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853588; cv=none; b=Y3G0HNq0Ux9tkt3OxprhU7pZ3pYiU+x0QO32bsY7Y//GJ4Qa1u360boNnm9cNDJg6vSjxpUnVtRqXa2sSTCWpJ4n2I29H7Uz5X9wG8x6rSeAM0NaKCzqO042kGbTJ+toNCZEnrJ1Nbl6BYYOvtErQurhJ2CBtDTX66sbxYJNqMk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853588; c=relaxed/simple; bh=peXZjv91qcnXAES8N8mnCKfga6OZjhML/WpesH4NfKc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YKfloZA2n6CuruOsnDX5z2hDNtPV5O1M8EoL7/OiXajx+HdzlcXBjfmGQbZmMpVmyC4kbGEyCpBpv86XxAwpg0t40CDQS0CS6DrU0dZR2KgJly/pj1LNF7pXEu/v7KC5JUb9+RkClGbcgJ9e+9Jjj8GEfp+KD5qfdmoGa/IKYvg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=bxk30Ms2; arc=none smtp.client-ip=209.85.214.179 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="bxk30Ms2" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-22928d629faso2708595ad.3 for ; Wed, 16 Apr 2025 18:33:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1744853586; x=1745458386; 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=h6JaAma8wr++LnPs79mPGowXaCOiBb9Nd8NFNngwV7o=; b=bxk30Ms2EfGd7eBs7o5vLLqLrZTEIjlNZYv7nNvSLAKDvQ98dfGe80N5x21jp71EAc ZVi/7rMKNog16ED2mDVERGgFY/vn/5MElZmctCqZebAc5kxirrvKogDYRo9eXHwzCMQT EgUGXlgWPhIw/S4adGO7F/waCwfomdWl1pg64= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744853586; x=1745458386; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=h6JaAma8wr++LnPs79mPGowXaCOiBb9Nd8NFNngwV7o=; b=q4m3y9sMAZQekeyW8m92w6OGWfCd/fhbqCK6+97cBzKoxF9h6ICF+X6c2BA6YMMjLF SehP8pn01bgP6jP9C7rOSs5/WuTusFHSdUMiAZ8rSgECXdpUR6iLuVHZ1WSMBttNQghS neeTObYXw+5dKPwV8kXApkm/HKLctB+tGFmxUfMPRH173lWGyACqmEYwHqK8ao2dommC Q2wSpVNUcp0sbUPaENukyppIj//5Wlj4283HaRTFlecoJozUoU3La2JNTJRlcvNSETUt 4LNIve3ExKrRPdbRRypIuLZ8h1WwDzl7X7soC3qRbjvRLDlDY0mua3v4+Yk/C9GJptBa 8Lvw== X-Forwarded-Encrypted: i=1; AJvYcCV8VqgMmNokuSrh4dm5fFQSyqb6X45FGmj54mqFt1Fx4f3y6gmcAVK7DgcnxWBPUI5cbUsaVuYm1uN5+ps=@vger.kernel.org X-Gm-Message-State: AOJu0YyBqtAPH/PzeJMzMiW61qjZGs92uqJ8qcBYiHCIFQSKZse68czw vq0CbnEw5hVg6hQDC+2C6tBur8Jg5O1oJSvTR2KEM6a3x2hzViGT8E1uLgHc3VI= X-Gm-Gg: ASbGncv30Aaj1TXgS1qoRFZCn7h+DGTQhq+0y3KVeeuyfO7AjxItaYXZOA9OdJdcgpi uiGtpL6Kb9d5+LsmAo5dxa/kYndmk9ZGI5PCDxMmNB3J5SYhHC4RxzQrgQ/12618rPkPiwVciqW TYnuyeR2NvsQ1edcWhdp3+TuiWokh7sWAju4TqoTDwk6w3OSEslz7VzkMcP7RaWM9dvRzz7tKTR 08K4E5xsKoNiLeiN+0+C1LXpxa2YsFwcTTdOGyORlFk9fOho/e1r+hz+Bu0VTloUqdheu/asx+m +NETImnh+EHt883EueS7P2iezjufiY/KxfxFxZ7bly+PwyHN X-Google-Smtp-Source: AGHT+IHG7ipMCyI6c0/c97Gk3L/+AoJB9ydcVHy1jbC151MdKqezcYzCYtt+B9Ehn2HYIZfDsowUZw== X-Received: by 2002:a17:903:1252:b0:225:b718:4dff with SMTP id d9443c01a7336-22c35983151mr69095555ad.53.1744853586637; Wed, 16 Apr 2025 18:33:06 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c33ef11c7sm21349505ad.37.2025.04.16.18.33.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 18:33:06 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: kuba@kernel.org, Joe Damato , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v2 1/4] netdevsim: Mark NAPI ID on skb in nsim_rcv Date: Thu, 17 Apr 2025 01:32:39 +0000 Message-ID: <20250417013301.39228-2-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417013301.39228-1-jdamato@fastly.com> References: <20250417013301.39228-1-jdamato@fastly.com> 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" Previously, nsim_rcv was not marking the NAPI ID on the skb, leading to applications seeing a napi ID of 0 when using SO_INCOMING_NAPI_ID. To add to the userland confusion, netlink appears to correctly report the NAPI IDs for netdevsim queues but the resulting file descriptor from a call to accept() was reporting a NAPI ID of 0. Signed-off-by: Joe Damato --- drivers/net/netdevsim/netdev.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index 0e0321a7ddd7..2aa999345fe1 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -29,6 +29,7 @@ #include #include #include +#include =20 #include "netdevsim.h" =20 @@ -357,6 +358,7 @@ static int nsim_rcv(struct nsim_rq *rq, int budget) break; =20 skb =3D skb_dequeue(&rq->skb_queue); + skb_mark_napi_id(skb, &rq->napi); netif_receive_skb(skb); } =20 --=20 2.43.0 From nobody Sun Feb 8 11:55:00 2026 Received: from mail-pj1-f49.google.com (mail-pj1-f49.google.com [209.85.216.49]) (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 911511CC8B0 for ; Thu, 17 Apr 2025 01:33:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853592; cv=none; b=s25+HukQ0awrCDFg6foZbdJWJO6BGbPPpVRWC6t5op2bhi6igrv0Hfemm/cYqY+rOOBvougi2eXttvtYTQrLKSIYKL3gTZrsoXkc6/aYqCbOWN9c+fbfvegxgoqmmknZiWH+J5EFGJbdqP12FWHeZ8CV4lkiZo9RPVVu2wwemBE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853592; c=relaxed/simple; bh=iC38gdoHa0iB1zJg2rOXQF/27QGDkW0uzWiTqqa4j3U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AU543kNER2D7V8sFv1J8GvUgCS4b8nIze5kbMgwiE+clQIRm3pryXxqZPkTgkMOWdTDsDPHHtyBDYH+tlBNPM3nGueT6F5+dAeMvF6TcMEZq3A+oBfFJoN2KouIOJ/ZL5W5sKZbO9+X89Ddwfy+OjiLP7aMGpBAps2bYdKtVG2I= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=vSuxi/dE; arc=none smtp.client-ip=209.85.216.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="vSuxi/dE" Received: by mail-pj1-f49.google.com with SMTP id 98e67ed59e1d1-301d6cbbd5bso210758a91.3 for ; Wed, 16 Apr 2025 18:33:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1744853590; x=1745458390; 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=qZCFxUxzlk1WaRej7yGOb8bWsdrrxKB0c/PerPrAolw=; b=vSuxi/dEclKZP/Uw2HlGkujTqUsjwtcgulp4TI8gVBA0qXXl3BYAdL9Mz5dTEo/a4+ 2+LBJF+x26DlKumHooL/iPouP2w27utGceCOFB3ta5FwokuRCNsESkJP7Q1ROiuMqX83 tmO6dYZ4OglgM9ncvu30Un7+EnAziLaQ0Rars= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744853590; x=1745458390; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qZCFxUxzlk1WaRej7yGOb8bWsdrrxKB0c/PerPrAolw=; b=Ar+3auVcr0jqgTX7pPa5Ic2lq4gJ4vF9o8RcvroECWSwbFhvOrRvNx4g+ZTfd5KuME mLCbF7YxkrpWB5GFhz0kEmA5O0UK1HzsM1/3z3ziPydwfI527TOPf5LzgKdndvBYpAA7 T6lmFGwh8DVIYYmY1ZNJ8CUYSu/FSZVcdwvUUw8URADQvhaKUNVvWEec7D9G7DfC3hRc EvB0LBCf3VSNvVFIto0FMZ8jemoEdEadFAGNckUg6byC4eNIDO5XyqL+/5rtlnflbgdW +Jv0jDadLoqkp90i8ghlpsn0Aw5qQ2ySo4BVlzW4YWmFG3s39XQCL7pUODtg2loVOMG/ jlpA== X-Forwarded-Encrypted: i=1; AJvYcCXr1L6tJeJAbaR+WE6kheET9xpDS8kkbZurN1F0xtJakh+KX9FcG0yRl6v9UprPIgL8dX39a+Tqr9IDdTc=@vger.kernel.org X-Gm-Message-State: AOJu0YyPXR20XTdNAEpRC28EvndP/RmCLvpeyvB7njfFlflPZe+MMQXZ fbcvv0mC3E+eHmcsJz1/MlAGDKoToq2qq47R/H3DZZoCabbdaC6BLBZH5AMqpgo= X-Gm-Gg: ASbGncvJtBQDh+S+vIZg7iZSvD5eToY61GocXX+BnQjUfJJYDp7RgEqm62+IkcyThIx kzm79vLsVbsp4Rju3YFE98X+c2qTV9DeQh7TCOXgA7vReRg2IMas5hXXnbKkPOYiXNlu3l+u2ig qJLJVck7K/hKqV/b0AxJcCEoJRQHzPV/iV6D6uoDIBX2+jaQBjP4juJ8zhOlc7tCW19UFzCjxyY oM+tQao7/LBGddip/ORFLN6xLti0+P0cn5aX0luZ7yNSvoqp5Q7zveTnwmVsniUFcbLdWW51v+0 r2/XPcv8ohxFxLwWuEYllSIzVUs+l5guzcfl9U9T1vKY47dD X-Google-Smtp-Source: AGHT+IFURUTFYkzHYQIncz+BfKUAREfkEb0hfHFXyfz2gYFuInISIzikqK/QQxnSU1SXGYMuPoyaZA== X-Received: by 2002:a17:90b:2f4e:b0:2ff:6167:e92d with SMTP id 98e67ed59e1d1-30864173b39mr5158528a91.32.1744853589813; Wed, 16 Apr 2025 18:33:09 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c33ef11c7sm21349505ad.37.2025.04.16.18.33.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 18:33:09 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: kuba@kernel.org, Joe Damato , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Shuah Khan , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , linux-kernel@vger.kernel.org (open list), linux-kselftest@vger.kernel.org (open list:KERNEL SELFTEST FRAMEWORK), bpf@vger.kernel.org (open list:XDP (eXpress Data Path):Keyword:(?:\b|_)xdp(?:\b|_)) Subject: [PATCH net-next v2 2/4] selftests: drv-net: Factor out ksft C helpers Date: Thu, 17 Apr 2025 01:32:40 +0000 Message-ID: <20250417013301.39228-3-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417013301.39228-1-jdamato@fastly.com> References: <20250417013301.39228-1-jdamato@fastly.com> 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" Factor ksft C helpers to a header so they can be used by other C-based tests. Signed-off-by: Joe Damato --- tools/testing/selftests/drivers/net/ksft.h | 56 +++++++++++++++++++ .../selftests/drivers/net/xdp_helper.c | 49 +--------------- 2 files changed, 58 insertions(+), 47 deletions(-) create mode 100644 tools/testing/selftests/drivers/net/ksft.h diff --git a/tools/testing/selftests/drivers/net/ksft.h b/tools/testing/sel= ftests/drivers/net/ksft.h new file mode 100644 index 000000000000..3fd084006a16 --- /dev/null +++ b/tools/testing/selftests/drivers/net/ksft.h @@ -0,0 +1,56 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +#if !defined(__KSFT_H__) +#define __KSFT_H__ + +#include +#include +#include + +static void ksft_ready(void) +{ + const char msg[7] =3D "ready\n"; + char *env_str; + int fd; + + env_str =3D getenv("KSFT_READY_FD"); + if (env_str) { + fd =3D atoi(env_str); + if (!fd) { + fprintf(stderr, "invalid KSFT_READY_FD =3D '%s'\n", + env_str); + return; + } + } else { + fd =3D STDOUT_FILENO; + } + + write(fd, msg, sizeof(msg)); + if (fd !=3D STDOUT_FILENO) + close(fd); +} + +static void ksft_wait(void) +{ + char *env_str; + char byte; + int fd; + + env_str =3D getenv("KSFT_WAIT_FD"); + if (env_str) { + fd =3D atoi(env_str); + if (!fd) { + fprintf(stderr, "invalid KSFT_WAIT_FD =3D '%s'\n", + env_str); + return; + } + } else { + /* Not running in KSFT env, wait for input from STDIN instead */ + fd =3D STDIN_FILENO; + } + + read(fd, &byte, sizeof(byte)); + if (fd !=3D STDIN_FILENO) + close(fd); +} + +#endif diff --git a/tools/testing/selftests/drivers/net/xdp_helper.c b/tools/testi= ng/selftests/drivers/net/xdp_helper.c index aeed25914104..d5bb8ac33efa 100644 --- a/tools/testing/selftests/drivers/net/xdp_helper.c +++ b/tools/testing/selftests/drivers/net/xdp_helper.c @@ -11,56 +11,11 @@ #include #include =20 +#include "ksft.h" + #define UMEM_SZ (1U << 16) #define NUM_DESC (UMEM_SZ / 2048) =20 -/* Move this to a common header when reused! */ -static void ksft_ready(void) -{ - const char msg[7] =3D "ready\n"; - char *env_str; - int fd; - - env_str =3D getenv("KSFT_READY_FD"); - if (env_str) { - fd =3D atoi(env_str); - if (!fd) { - fprintf(stderr, "invalid KSFT_READY_FD =3D '%s'\n", - env_str); - return; - } - } else { - fd =3D STDOUT_FILENO; - } - - write(fd, msg, sizeof(msg)); - if (fd !=3D STDOUT_FILENO) - close(fd); -} - -static void ksft_wait(void) -{ - char *env_str; - char byte; - int fd; - - env_str =3D getenv("KSFT_WAIT_FD"); - if (env_str) { - fd =3D atoi(env_str); - if (!fd) { - fprintf(stderr, "invalid KSFT_WAIT_FD =3D '%s'\n", - env_str); - return; - } - } else { - /* Not running in KSFT env, wait for input from STDIN instead */ - fd =3D STDIN_FILENO; - } - - read(fd, &byte, sizeof(byte)); - if (fd !=3D STDIN_FILENO) - close(fd); -} =20 /* this is a simple helper program that creates an XDP socket and does the * minimum necessary to get bind() to succeed. --=20 2.43.0 From nobody Sun Feb 8 11:55:00 2026 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.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 31A691DA612 for ; Thu, 17 Apr 2025 01:33:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853595; cv=none; b=p/R6/Ej/Tou6BSDi1fvd4+/TP9t0Yp2u7EFwIHz1R6XEoESKrQF2/j5L0nrrwsOzOfnn3Ml/ckhYMP4Ijdr8E7TLv+t+gEmjdpJaweYxzjIEXsok6VE6cjdQS+CK6wJXwXhAYIfKX1UnUEw3Stxcg7r8qETO155hMLbOn859WKo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853595; c=relaxed/simple; bh=HDQGG1Q34BlSkCWW84cNeWYaQgfA3isd36S41ZwwwX8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=O4wHXhSyVvGS5pAKKTFjxwn/+PClUtmFlx1LW50vRbr7MdEYSSc68Vq3IMsVwtt0GdxSkqQ6Hw6JqE50ZU4mdqO5+WfoI3dUlmDJGuqIsbz3ZrSCKa2NM7PZDtJtTuzgPbwOtATL0ccnWSfJLBj6CMSO3ksylsj+WB/pZb3n+qA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=hkUrl3Li; arc=none smtp.client-ip=209.85.214.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="hkUrl3Li" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-226185948ffso2893815ad.0 for ; Wed, 16 Apr 2025 18:33:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1744853593; x=1745458393; 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=T9lrbIvu6zRRiCj4HgSRrtBo19PyxJ2njnhqzeLily8=; b=hkUrl3LiEJHREHfPNkhc2sQgCARPtZWI8yljzopy2FWFpAPbqq4sKtNwsLZe5pvUE3 9IT5cOffJqq0SXyWpZlcz1TX5BHxwDA0KtUXi24A2/sgRUsc2a+NGQYFDyb8aKySkiy7 vILEHcsZod/awwSFn7Z8ixz0BG4KkSowIUvmU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744853593; x=1745458393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=T9lrbIvu6zRRiCj4HgSRrtBo19PyxJ2njnhqzeLily8=; b=vgBuS6zc4YlHxhzMN0GokXDugQq1v2QHzP647noiGqE43xA53MLOnpb+UVZySeZIXY M4riQc3efqwVyc0ZClTyrDJX3Ij5pv7Jg2fm+10hFzk5vhuv8sTQ4ECqxmE+Mjow8ys3 fIs58sG1+cORcTiG49xX9yydXfEbxDE4hcEGfjvsaC2/OUCeswyhm/+RtU5Pz6pn8lji 6jrRkr5ecpuqxG1NkX85OpJW+8ufzCMnyQg2/VKfQtQezNkm9OZrAYpG+5bv7uFhRrjc hONd9TiAsmOt4u6oF3LT74gWW0cuaLOuWYkgnqKTVCl7bZNqtzQhsKGcH2/HorlXO7bo F/Gw== X-Forwarded-Encrypted: i=1; AJvYcCW2xQaGrw3WOCKwsILpgU9PnNzNZJfD+kkUmohvyF6SFI3aq4cNvK/gXezDVCnwZBenCZU01WQaf+HWLrc=@vger.kernel.org X-Gm-Message-State: AOJu0YznLTH2mWiAe7D4/8O3az/DGJg5VpTn5UnjGJ/0+JF5zxCILeqE jB409kC8Eb5pNKoE5jGCcBgn2PFWDxQ4BtCs0qd8ZAalPYxe6wqoQV3rkT19hwo= X-Gm-Gg: ASbGncvXZOoDeKNBDR6GFtWNYI/zURe7+oNk0ecD/MPLdnl6s6v2SyZ7bLJQHBRaH6a t2mcNnOvKRWn5HWrRfQl2BBvogG9GiggWYkvZWpiIH8Uto3gin2EU4XwUcC57C6WkODRMJNdx9L kX2Ip0pLD6xFCTlzVtTrn38SQC+BUUILJjWvjro0Typjy80nr/0VAPQBKuCDrbVeNbk3tLeaPxs zI1G/xdtPRNc7RM6HLRRG7WWlzbAC+LGnxbrOjOlRLTEgPVFWRqfbNmiCngypmew0IMiKVIpE5w wojIyxHHQ8t6Zc1sbfj13zB5ZzeM2iUO0AAMvyGnOHn97DMf X-Google-Smtp-Source: AGHT+IGIfvnYetCCtpkkTem0fvDPcVdKvorATj17pj9pyflpstgaWD/lkjveVAKVWM6ThAFzVxniww== X-Received: by 2002:a17:902:d4ce:b0:220:c63b:d93c with SMTP id d9443c01a7336-22c3598533cmr61830925ad.44.1744853593562; Wed, 16 Apr 2025 18:33:13 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c33ef11c7sm21349505ad.37.2025.04.16.18.33.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 18:33:13 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: kuba@kernel.org, Joe Damato , "David S. Miller" , Eric Dumazet , Paolo Abeni , Simon Horman , Shuah Khan , Xiao Liang , Willem de Bruijn , linux-kselftest@vger.kernel.org (open list:KERNEL SELFTEST FRAMEWORK), linux-kernel@vger.kernel.org (open list) Subject: [PATCH net-next v2 3/4] selftests: net: Allow custom net ns paths Date: Thu, 17 Apr 2025 01:32:41 +0000 Message-ID: <20250417013301.39228-4-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417013301.39228-1-jdamato@fastly.com> References: <20250417013301.39228-1-jdamato@fastly.com> 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 NetNSEnter to allow custom paths in order to support, for example, /proc/self/ns/net. Signed-off-by: Joe Damato --- tools/testing/selftests/net/lib/py/netns.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/testing/selftests/net/lib/py/netns.py b/tools/testing/se= lftests/net/lib/py/netns.py index 8e9317044eef..8d5c26317cb0 100644 --- a/tools/testing/selftests/net/lib/py/netns.py +++ b/tools/testing/selftests/net/lib/py/netns.py @@ -35,8 +35,8 @@ class NetNS: =20 =20 class NetNSEnter: - def __init__(self, ns_name): - self.ns_path =3D f"/run/netns/{ns_name}" + def __init__(self, ns_name, ns_path=3D"/run/netns/"): + self.ns_path =3D f"{ns_path}{ns_name}" =20 def __enter__(self): self.saved =3D open("/proc/thread-self/ns/net") --=20 2.43.0 From nobody Sun Feb 8 11:55:00 2026 Received: from mail-pj1-f48.google.com (mail-pj1-f48.google.com [209.85.216.48]) (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 97C091B0405 for ; Thu, 17 Apr 2025 01:33:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853599; cv=none; b=CxdHPWa9CHsMiCqPlln3A+l8S0Cd4NzQ0VHjlv6ir37wLuNc9Wyj/lS6KAAokWX+kh6QQC9lh5yw2ndiVz18I78me467dsWb92ECSOHrKsny9zCcm5pKpRO3soo9Sz2MSxWkXwlZ7iV5V/z293/UmAqcb+04K0JryNHpsTURo+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744853599; c=relaxed/simple; bh=7/43IpTzeRiEM6Px6bilPKt+XjpfXGEavwRwx/SGMHg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=D7tQTzzjYKweHjPURSt2LrJ2xR4QBmzxaGEW0Ei2UTb4W53ExNQVC3eZ5gGBFEeiE2NJbGOXSstYMLrbFdDwV1Sgeg4I8jVL5VBJdxjUAg0kGp3Wl1ZM8ywqXwmUKVnxqBgMKUOugJB4OdZfw8M7DaoWetGWA8q4gBMBzV16k/U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com; spf=pass smtp.mailfrom=fastly.com; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b=Z14ren/J; arc=none smtp.client-ip=209.85.216.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=fastly.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=fastly.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=fastly.com header.i=@fastly.com header.b="Z14ren/J" Received: by mail-pj1-f48.google.com with SMTP id 98e67ed59e1d1-3081fe5987eso162820a91.3 for ; Wed, 16 Apr 2025 18:33:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastly.com; s=google; t=1744853597; x=1745458397; 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=06V3AHEiTyRxQXWcUBqLLERPc2tH+snQC0VRRM2/tsY=; b=Z14ren/JMi4GWFhzOQNe0vyUdMCPw6kGzhVeVtems/5lF7WmdmNIbQeCP93QqYBdFW +9dpZKdQm4SEo3YsyocQpjhvRm0x7OgDDyHMDb4LO/pyusZPkRxTP6un8mCJW+GnQkKl uNl/OC0YeogNPsYjR35mujRmrEpw1Th0JOeEw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744853597; x=1745458397; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=06V3AHEiTyRxQXWcUBqLLERPc2tH+snQC0VRRM2/tsY=; b=TAB3NfHfO9VErAeEr3SOMQW/1HJyjXVwM9SVvtrAA9yc91LP5oD1/xdYRvzzkjevGw gJlCHgoje3iBb3tZzaFQ6Cfjo+9RRufd/Cl164BK7CCfOL/VdBM8yKvkB+FWJf4X/jJ+ iyRrJisB7KuDGENVR9YNAGVi/wPDtBdLSz6bnkyeQUOV/dvWhwkz3dlfaW4iaM5spjcS oZntq4Gg8LI741NkxypX9+WXauJftPpizr1MFpch/Rw5qjNR7Hpv3sTLwvYLTL+25OOU R9IAZbw6YMoQ/F5yBI/nMkh2QdF9ibnrwNj0LIM8dQkDQDY2e8oLIDB/NBz1lbXNVZ+c WIpw== X-Forwarded-Encrypted: i=1; AJvYcCWJfgv5pTaFsnLEx1WoOnVFbGZVCazz7daN2FRVvij3i9qUk5kC9i/dcfX9rv74Fp5jeBuPXKhM3C/LAN8=@vger.kernel.org X-Gm-Message-State: AOJu0Yy23LiRyAfCUVK4SFOT6x/UoT+SVg0QLa5cs4j75EE7U8yAOaQm cUaoVddX2K5dDeSDdY6MKIMd5v56YtsMhgwcmTmUETxtifADZzuMNN0QgX6r+EI= X-Gm-Gg: ASbGncvEoGFqQxRTEWrnWttVQC98A8HHXtMIsM1B2ivP+YjUFaFF5+c+S6vzNULG/p0 d/85LJgV2XWU+1bIqj2lVy5SgjjKyUj7XApOykJxhEZ5IKjkZ3rZlq1kBFua8DCH9iHybrql6LV yatdjKS/Y/qyCEfWZ7QipMqi4d1SiCZ3LAdCbQyPevHdM+aM6ahcVY+hEqCKKq6J+mJ/CrIbaxp koTqUeByJeKn9e2CSyA7yjMhmHbgjngbWG//RxOWxBJgTb+tsDJbZh2usRvOl3JSa6Tg/M8OwLi a+92Eh0DpcivyElcE0ATPS5Ph21cgbnG0JAg/FDNvpu3JfHe X-Google-Smtp-Source: AGHT+IFwch9vZHyhnlVsQfTQrueevfR77nz+jh/2oHSkFCsSh+vQ8ZBfNCPWGD7K+cO6E4Q2GoQ9ww== X-Received: by 2002:a17:90b:5211:b0:2ee:f22a:61dd with SMTP id 98e67ed59e1d1-3086417cbacmr5223592a91.32.1744853596874; Wed, 16 Apr 2025 18:33:16 -0700 (PDT) Received: from localhost.localdomain ([2620:11a:c019:0:65e:3115:2f58:c5fd]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22c33ef11c7sm21349505ad.37.2025.04.16.18.33.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 16 Apr 2025 18:33:16 -0700 (PDT) From: Joe Damato To: netdev@vger.kernel.org Cc: kuba@kernel.org, Joe Damato , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , Shuah Khan , Alexei Starovoitov , Daniel Borkmann , Jesper Dangaard Brouer , John Fastabend , linux-kernel@vger.kernel.org (open list), linux-kselftest@vger.kernel.org (open list:KERNEL SELFTEST FRAMEWORK), bpf@vger.kernel.org (open list:XDP (eXpress Data Path):Keyword:(?:\b|_)xdp(?:\b|_)) Subject: [PATCH net-next v2 4/4] selftests: drv-net: Test that NAPI ID is non-zero Date: Thu, 17 Apr 2025 01:32:42 +0000 Message-ID: <20250417013301.39228-5-jdamato@fastly.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250417013301.39228-1-jdamato@fastly.com> References: <20250417013301.39228-1-jdamato@fastly.com> 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" Test that the SO_INCOMING_NAPI_ID of a network file descriptor is non-zero. This ensures that either the core networking stack or, in some cases like netdevsim, the driver correctly sets the NAPI ID. Signed-off-by: Joe Damato --- .../testing/selftests/drivers/net/.gitignore | 1 + tools/testing/selftests/drivers/net/Makefile | 6 +- .../testing/selftests/drivers/net/napi_id.py | 24 ++++++ .../selftests/drivers/net/napi_id_helper.c | 83 +++++++++++++++++++ 4 files changed, 113 insertions(+), 1 deletion(-) create mode 100755 tools/testing/selftests/drivers/net/napi_id.py create mode 100644 tools/testing/selftests/drivers/net/napi_id_helper.c diff --git a/tools/testing/selftests/drivers/net/.gitignore b/tools/testing= /selftests/drivers/net/.gitignore index ec746f374e85..71bd7d651233 100644 --- a/tools/testing/selftests/drivers/net/.gitignore +++ b/tools/testing/selftests/drivers/net/.gitignore @@ -1,2 +1,3 @@ # SPDX-License-Identifier: GPL-2.0-only xdp_helper +napi_id_helper diff --git a/tools/testing/selftests/drivers/net/Makefile b/tools/testing/s= elftests/drivers/net/Makefile index 0c95bd944d56..47247c2ef948 100644 --- a/tools/testing/selftests/drivers/net/Makefile +++ b/tools/testing/selftests/drivers/net/Makefile @@ -6,9 +6,13 @@ TEST_INCLUDES :=3D $(wildcard lib/py/*.py) \ ../../net/net_helper.sh \ ../../net/lib.sh \ =20 -TEST_GEN_FILES :=3D xdp_helper +TEST_GEN_FILES :=3D \ + napi_id_helper \ + xdp_helper \ +# end of TEST_GEN_FILES =20 TEST_PROGS :=3D \ + napi_id.py \ netcons_basic.sh \ netcons_fragmented_msg.sh \ netcons_overflow.sh \ diff --git a/tools/testing/selftests/drivers/net/napi_id.py b/tools/testing= /selftests/drivers/net/napi_id.py new file mode 100755 index 000000000000..aee6f90be49b --- /dev/null +++ b/tools/testing/selftests/drivers/net/napi_id.py @@ -0,0 +1,24 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: GPL-2.0 + +from lib.py import ksft_run, ksft_exit +from lib.py import ksft_eq, NetDrvEpEnv +from lib.py import bkg, cmd, rand_port, NetNSEnter + +def test_napi_id(cfg) -> None: + port =3D rand_port() + listen_cmd =3D f'{cfg.test_dir / "napi_id_helper"} {cfg.addr_v['4']} {= port}' + + with bkg(listen_cmd, ksft_wait=3D3) as server: + with NetNSEnter('net', '/proc/self/ns/'): + cmd(f"echo a | socat - TCP:{cfg.addr_v['4']}:{port}", host=3Dcfg= .remote, shell=3DTrue) + + ksft_eq(0, server.ret) + +def main() -> None: + with NetDrvEpEnv(__file__) as cfg: + ksft_run([test_napi_id], args=3D(cfg,)) + ksft_exit() + +if __name__ =3D=3D "__main__": + main() diff --git a/tools/testing/selftests/drivers/net/napi_id_helper.c b/tools/t= esting/selftests/drivers/net/napi_id_helper.c new file mode 100644 index 000000000000..7e8e7d373b61 --- /dev/null +++ b/tools/testing/selftests/drivers/net/napi_id_helper.c @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: GPL-2.0 + +#include +#include +#include +#include +#include +#include +#include + +#include "ksft.h" + +int main(int argc, char *argv[]) +{ + struct sockaddr_in address; + unsigned int napi_id; + unsigned int port; + socklen_t optlen; + char buf[1024]; + int opt =3D 1; + int server; + int client; + int ret; + + server =3D socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); + if (server < 0) { + perror("socket creation failed"); + if (errno =3D=3D EAFNOSUPPORT) + return -1; + return 1; + } + + port =3D atoi(argv[2]); + + if (setsockopt(server, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt))) { + perror("setsockopt"); + return 1; + } + + address.sin_family =3D AF_INET; + inet_pton(AF_INET, argv[1], &address.sin_addr); + address.sin_port =3D htons(port); + + if (bind(server, (struct sockaddr *)&address, sizeof(address)) < 0) { + perror("bind failed"); + return 1; + } + + if (listen(server, 1) < 0) { + perror("listen"); + return 1; + } + + ksft_ready(); + + client =3D accept(server, NULL, 0); + if (client < 0) { + perror("accept"); + return 1; + } + + optlen =3D sizeof(napi_id); + ret =3D getsockopt(client, SOL_SOCKET, SO_INCOMING_NAPI_ID, &napi_id, + &optlen); + if (ret !=3D 0) { + perror("getsockopt"); + return 1; + } + + read(client, buf, 1024); + + ksft_wait(); + + if (napi_id =3D=3D 0) { + fprintf(stderr, "napi ID is 0\n"); + return 1; + } + + close(client); + close(server); + + return 0; +} --=20 2.43.0