From patchwork Fri Jun 13 10:39:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Breno Leitao X-Patchwork-Id: 896562 Received: from mail-ed1-f46.google.com (mail-ed1-f46.google.com [209.85.208.46]) (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 216402C15B9; Fri, 13 Jun 2025 10:40:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811212; cv=none; b=MYKHD7lYyS0JzrIPlZ2ZgdYS+/CiQVsu8jpSDvCFgJIgdB+lYB5+pN7JTOewjOCHz7UC5Dpq7fI09o1okv7hbAHNcbIvuT5fIG0sMYcEyDToIBymagv8cgRhQ7SRKB/PVp0cPZnf4lzLPgENLl/1dAFLh4M4dlbGXHkdTOmu+68= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811212; c=relaxed/simple; bh=Ya02A6KSQP7IifJw9ze9oqhqSpeNuf34AYwn/7z5joU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qqnDkA4wlJWNj+KHVqFW2As/7sZgdDMd8WVL39rLne/Qu7sUyAgsK7Y1LnPYvkWiDyMQ24DC8HCLyxosd8oLD6ey9UnFTgeIdhTQneKbkhxZPLtqyWQvBKraAdlUFMDsPkxZm/Rh5ImVOXMq6Fn5c05zwGCOxn+fDi9ga26H35Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.208.46 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-f46.google.com with SMTP id 4fb4d7f45d1cf-607ea238c37so4082240a12.2; Fri, 13 Jun 2025 03:40:09 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749811208; x=1750416008; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dBnJcIZF2UCEJDwnnA5SfZDnvEUhOFTZwy3JCGcNINI=; b=tO/kXTzfZTn+ctY+Cnn3wS6izTfHzr/+83QsGOB6OyE0wGoj1GhlG/C5sX1tpupRBf 5yUl8TU2HsCNQwjQAV/HtIxiYBqpjsdfHxyiFCOEIiIgY03QpM+x4kyEQgQbjwtwjg+E O0P+7xnboTuJRXAtJ4WBbYY68ojzNhIV1DwvPhWPamsAAdyoYFBNt+dbtGRyy9A33hIl 7Iy9fRnTKrKAageHoR0XoNDKsCykJVNzM/tR5Fj+PZkoGFygEib60xEXQpekYbK4loY+ Top6fXqjnyy/8+pv6C3eFZg3GFjzCovsOmPEXLByUB2xcl8QxEF/6CP0bYRF40RieIae Ouhw== X-Forwarded-Encrypted: i=1; AJvYcCUraiYLBg45rJ5R7u1sxa6djR6e2sT0AvQoIe+Js7DoOhqsd3YsfBlKtoUVeJeJanw6psRq9nB8HYpvlXo5VjMh@vger.kernel.org, AJvYcCVq4Q9UKDN1RyLCB4E1Cvr/4r6VX9BdlLygsjmXYtFSp6ST4/jwn9bEw+NzymkcRZwXoVLSje5fxa3V6Dc=@vger.kernel.org X-Gm-Message-State: AOJu0YwTEf3VMOEk5USXDKD9NZaSfpT+Yx1NnHcPBd8Y7qp5uqyvHqe5 lVTUpdakOQbtC93IhTx+g4vf28tr4XORj6iXge1M3ewICZASv8QbLhkB X-Gm-Gg: ASbGnctw+uqFOtND9R9h7NkW48e12uwRYqTiqcpLKRquWWfI18B0lrVVQZI9emwOvFN jbqjPmpbpO5TWDLt1l4uyAtKFZ+I046IWGPGAALzVCpmP3k3AT1f5wUK+FiX1FpWgPYoTyp3zCL HNq1NswHu1E4SKKW/Hq2VLJkiyF8Cue3md0RDuTMmmpCB8gCMqVvLDYLXJSJC7QD9F6gx/9T0S6 XRU7/veZhFkQi0c53q3eGuC/j4MSXKHhy9k3cN3GwRx+dW3nJfi8OnE0hsuFyz2XlzNJ+rZnlzV N4f/jaW/xecrGlIeZubAu/nnN9b6F+5xEHVMrOnBRud/lZsqJiDkWw== X-Google-Smtp-Source: AGHT+IEZ31K/q168BxmKVo6zXsSdU68snMlPe7e636po4guk+DVQCiuyT/KjVXk4PDHV+QzruwuDtQ== X-Received: by 2002:a05:6402:2787:b0:606:aea6:15d6 with SMTP id 4fb4d7f45d1cf-608b492a36dmr2035522a12.9.1749811208100; Fri, 13 Jun 2025 03:40:08 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:71::]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-608b48cd687sm1030080a12.18.2025.06.13.03.40.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jun 2025 03:40:07 -0700 (PDT) From: Breno Leitao Date: Fri, 13 Jun 2025 03:39:58 -0700 Subject: [PATCH net-next v2 1/4] netdevsim: migrate to dstats stats collection Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250613-netdevsim_stat-v2-1-98fa38836c48@debian.org> References: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> In-Reply-To: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman , joe@dama.to Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.15-dev-42535 X-Developer-Signature: v=1; a=openpgp-sha256; l=4957; i=leitao@debian.org; h=from:subject:message-id; bh=Ya02A6KSQP7IifJw9ze9oqhqSpeNuf34AYwn/7z5joU=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoTAAERrFUdRqPkaJ3V2hlkCU1PJ9swKb/ygWzd cif/Egzk0CJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaEwABAAKCRA1o5Of/Hh3 bRBcD/9hIvSHV3GaEEGsaq40I+sD2dy4u529mwHO4e55fz89yZ+fH84TFSV5PyQusfBaTFdwyRm aIjMDKIC+kcgRgO0HEKQXYJpWkgYTTuBR6MSSNTDwyMSPDXwAY4c+K9a4Caw3xz6TZ+TBLxxTCG 4ymgeAp+IqT1y0a7G7HEEOgFO9CC14SBe5+NhM+vE4OtUGumSfneldAKz6bQqLcSn3aiZOusI0O 8E9wamvKMMS2kBIe6YR5cf8YXErMhmRrJwiT2/fjBd8zoJXSva/9ghTChN5e7e15AKk+Mg3L0BS Y+Wzm3nWMtI+RIngtIyp7a9R/4XqlxFdMvRfpqBN2QA2DB2aBTbwnmgBaDx1MsIwf3oUV0iDe/T SsAvAp0kXitR7YoeCHryDCJgMES9Irnop36hhNFZOjwrCljE0gJQLP4Eeec/pOSBpcy66firODc ADzkEUS4EZa8yYEENWO7wTBdZBIfVDtylI8axXZv6XV1XGt2O++3gXcHD568pUqCgGHaOLaQlvw HNnEwY8quvMlvUL0t328X7brfS/HY8jiZ2aTwqBLhPj3a0DKGOTZBZ50zTGQxWmS2anrironUBH yO6RPqS6uX73Fh3ObL3+xiIFl609sDtm/hY5NVkM2s3MqC9o8pEHnWjYLfHGOj6FBZJVvUGXDyc 4YqAzB7YMnvtRsg== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Replace custom statistics tracking with the kernel's dstats infrastructure to simplify code and improve consistency with other network drivers. This change: - Sets dev->pcpu_stat_type = NETDEV_PCPU_STAT_DSTATS for automatic automatic allocation and deallocation. - Removes manual stats fields and their update - Replaces custom nsim_get_stats64() with dev_get_stats() - Uses dev_dstats_tx_add() and dev_dstats_tx_dropped() helpers - Eliminates the need for manual synchronization primitives The dstats framework provides the same functionality with less code. Suggested-by: Jakub Kicinski Reviewed-by: Joe Damato Signed-off-by: Breno Leitao --- drivers/net/netdevsim/netdev.c | 33 ++++++--------------------------- drivers/net/netdevsim/netdevsim.h | 5 ----- 2 files changed, 6 insertions(+), 32 deletions(-) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index fa5fbd97ad69e..5010d8eefc854 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -93,19 +93,14 @@ static netdev_tx_t nsim_start_xmit(struct sk_buff *skb, struct net_device *dev) hrtimer_start(&rq->napi_timer, us_to_ktime(5), HRTIMER_MODE_REL); rcu_read_unlock(); - u64_stats_update_begin(&ns->syncp); - ns->tx_packets++; - ns->tx_bytes += len; - u64_stats_update_end(&ns->syncp); + dev_dstats_tx_add(dev, skb->len); return NETDEV_TX_OK; out_drop_free: dev_kfree_skb(skb); out_drop_cnt: rcu_read_unlock(); - u64_stats_update_begin(&ns->syncp); - ns->tx_dropped++; - u64_stats_update_end(&ns->syncp); + dev_dstats_tx_dropped(dev); return NETDEV_TX_OK; } @@ -126,20 +121,6 @@ static int nsim_change_mtu(struct net_device *dev, int new_mtu) return 0; } -static void -nsim_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) -{ - struct netdevsim *ns = netdev_priv(dev); - unsigned int start; - - do { - start = u64_stats_fetch_begin(&ns->syncp); - stats->tx_bytes = ns->tx_bytes; - stats->tx_packets = ns->tx_packets; - stats->tx_dropped = ns->tx_dropped; - } while (u64_stats_fetch_retry(&ns->syncp, start)); -} - static int nsim_setup_tc_block_cb(enum tc_setup_type type, void *type_data, void *cb_priv) { @@ -556,7 +537,6 @@ static const struct net_device_ops nsim_netdev_ops = { .ndo_set_mac_address = eth_mac_addr, .ndo_validate_addr = eth_validate_addr, .ndo_change_mtu = nsim_change_mtu, - .ndo_get_stats64 = nsim_get_stats64, .ndo_set_vf_mac = nsim_set_vf_mac, .ndo_set_vf_vlan = nsim_set_vf_vlan, .ndo_set_vf_rate = nsim_set_vf_rate, @@ -580,7 +560,6 @@ static const struct net_device_ops nsim_vf_netdev_ops = { .ndo_set_mac_address = eth_mac_addr, .ndo_validate_addr = eth_validate_addr, .ndo_change_mtu = nsim_change_mtu, - .ndo_get_stats64 = nsim_get_stats64, .ndo_setup_tc = nsim_setup_tc, .ndo_set_features = nsim_set_features, }; @@ -594,7 +573,7 @@ static void nsim_get_queue_stats_rx(struct net_device *dev, int idx, struct rtnl_link_stats64 rtstats = {}; if (!idx) - nsim_get_stats64(dev, &rtstats); + dev_get_stats(dev, &rtstats); stats->packets = rtstats.rx_packets - !!rtstats.rx_packets; stats->bytes = rtstats.rx_bytes; @@ -606,7 +585,7 @@ static void nsim_get_queue_stats_tx(struct net_device *dev, int idx, struct rtnl_link_stats64 rtstats = {}; if (!idx) - nsim_get_stats64(dev, &rtstats); + dev_get_stats(dev, &rtstats); stats->packets = rtstats.tx_packets - !!rtstats.tx_packets; stats->bytes = rtstats.tx_bytes; @@ -618,7 +597,7 @@ static void nsim_get_base_stats(struct net_device *dev, { struct rtnl_link_stats64 rtstats = {}; - nsim_get_stats64(dev, &rtstats); + dev_get_stats(dev, &rtstats); rx->packets = !!rtstats.rx_packets; rx->bytes = 0; @@ -890,6 +869,7 @@ static void nsim_setup(struct net_device *dev) NETIF_F_HW_CSUM | NETIF_F_LRO | NETIF_F_TSO; + dev->pcpu_stat_type = NETDEV_PCPU_STAT_DSTATS; dev->max_mtu = ETH_MAX_MTU; dev->xdp_features = NETDEV_XDP_ACT_HW_OFFLOAD; } @@ -1022,7 +1002,6 @@ nsim_create(struct nsim_dev *nsim_dev, struct nsim_dev_port *nsim_dev_port) dev_net_set(dev, nsim_dev_net(nsim_dev)); ns = netdev_priv(dev); ns->netdev = dev; - u64_stats_init(&ns->syncp); ns->nsim_dev = nsim_dev; ns->nsim_dev_port = nsim_dev_port; ns->nsim_bus_dev = nsim_dev->nsim_bus_dev; diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netdevsim.h index d04401f0bdf79..343b8f19dbed6 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -108,11 +108,6 @@ struct netdevsim { int rq_reset_mode; - u64 tx_packets; - u64 tx_bytes; - u64 tx_dropped; - struct u64_stats_sync syncp; - struct nsim_bus_dev *nsim_bus_dev; struct bpf_prog *bpf_offloaded; From patchwork Fri Jun 13 10:39:59 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Breno Leitao X-Patchwork-Id: 897212 Received: from mail-ed1-f54.google.com (mail-ed1-f54.google.com [209.85.208.54]) (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 5C3F32D5C75; Fri, 13 Jun 2025 10:40:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811214; cv=none; b=p4+V4Kx7PMhlzy/oIQIzdigZ+hheRyfslnEJSmVi6nPCHWDFQYbug8Rg6sjmsow0bOmejeAINkx4gEy3eC1quDOyPs2f2sbnv0SWpoXoiV8dw3rDuMr8FLIMNN6s9ki/MtgZVHjCGN3M9EYx45qLfzia3iUDyW6OYFNTcdqNlIU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811214; c=relaxed/simple; bh=zSahHAyNc5DOSjDOrc5CjUcgeEcPOt9C4NT28ZOvawA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=p7OEUhAOLOYU1ZIA3Z/R9cO0df5f/H2KJ5PfP1CSQzoXmARvKHp0u4ITU2CACdT5H8MLxXwgJTnptme+MdZeETsrqIJP7dPB9tF2V2P7FFHiWocjoZg/jDNzbBl/auzJWHOGIcPp+NUPCXx+DlsTUtKYOT824XOGxkx1Nsl1FwU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.208.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-f54.google.com with SMTP id 4fb4d7f45d1cf-60707b740a6so2975623a12.0; Fri, 13 Jun 2025 03:40:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749811210; x=1750416010; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=GlVblHQijd++iGoJb0guuLbpbR8TvW/TOOZWY1DJSx8=; b=PG/iW0YRC8qT7Dba3xfiIGdUrTI+Bw5LLcCVa0cma0yvzATYnhK7wUhqAiJMefZza9 XX+8/wKQVu8jAwWJsn+jYbEM0e0tu01rhG9gNm//ah0BS4x2zzajYXj5s6StqQBUU1A7 ikbxD4AuFJeM1NsGoWZWhXKZyNtYk+BbqsAG0eJ8ziTqYdePJq6AFb4c9mFP021ilpyR AG8QiNfQWIkXT/1eiorFdyKfvyipOBy7lKXvMygoIEMwj7oC3RxFMGQ+5nYR4YuQRVaK NvbR2f4/eSl7EGNyQFXaxZ0sPntaFqumXM6EiQnAVzhklk76Q8YdTs8ot2G84+KZOs1w ZjWQ== X-Forwarded-Encrypted: i=1; AJvYcCUhtXB5iF07ByqZZGEhmNJkd3J3zR+Hy3dOHb47mCQ01FT7w4TA2ES6OhBQHSA43l369haC7EzvxGzf2an5A08h@vger.kernel.org, AJvYcCXW3+ce/0yfRZw3B9sXkUVhjV/zAgEibs/DePbTzxH9/r/49On8ywIw2jjJFUnqARhMaPMKa9oeESRGWok=@vger.kernel.org X-Gm-Message-State: AOJu0YzO6aUP/tM/OftNcZK5KbEcrrEGP2NXUCtgLlzMHSMKADYRMUGh MNuwb6aabJ0+z03bfeSTkSRnjwdxH3ClN4Z4mSNgzQdespf38SviWqBA X-Gm-Gg: ASbGncuWDwJ7gTelGjYG1STBv+xehOCBnH4z/4MRJdMNlHO4mGkUzrSHGQxHhFPg9lX rbTbpElgnuKzNzK+pLYAGf3AFLdJ4SF+7Q5JDx8voq5HK+NRjg/y620dJQbrrzLZm1ZJP3NpP/d HvGPN9rCYcB0VIMnHMo/bzLa3TAOLWhxHb/dJxt5dGaJbMpCZpnc1Lbw6Hp3HVfA0iKRQEFoXze o7I+8FWvgBS02ELddvDFKBlK6gRDU8o4mOzEnSXem4vi35he4Vp6yky7nSw1ZJ7FQMPfilSozih A7EF+jglW2VtnNoCFi4NGOVmtvWmbZah7H/4NRY8UIcjMIVeMAZp X-Google-Smtp-Source: AGHT+IF/WkC5WjulJfTGXwmTsJfOj+XCL9sqQhkMsmLB1yclgbLvaZSi3vctB0k0QTHL4T1RZ6jeVA== X-Received: by 2002:a17:907:96a9:b0:ade:3b84:8ef6 with SMTP id a640c23a62f3a-adec55a9bebmr221865466b.23.1749811209516; Fri, 13 Jun 2025 03:40:09 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:9::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adec81bff9fsm110155466b.52.2025.06.13.03.40.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jun 2025 03:40:09 -0700 (PDT) From: Breno Leitao Date: Fri, 13 Jun 2025 03:39:59 -0700 Subject: [PATCH net-next v2 2/4] netdevsim: collect statistics at RX side Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250613-netdevsim_stat-v2-2-98fa38836c48@debian.org> References: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> In-Reply-To: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman , joe@dama.to Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.15-dev-42535 X-Developer-Signature: v=1; a=openpgp-sha256; l=1307; i=leitao@debian.org; h=from:subject:message-id; bh=zSahHAyNc5DOSjDOrc5CjUcgeEcPOt9C4NT28ZOvawA=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoTAAFUG2gfDv3upypiuacq6IiKhNjEjy3MOghP 2H+LlgjCb+JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaEwABQAKCRA1o5Of/Hh3 bUfpD/4rMX2bZgxxyiDtLKhWuF+vloXxZn9fc4761du/Q78rW5SGAtFEoXmad1GliVWCJ9Oo+uI xj7h7alV4BNh3U0Ul+YPS6r7aTXpvFp8QtUUan6xzIlUK0ayull2afoiuBnWtF+FJsqVrnJmpvF qs/ctszt1hbHdw4p7xAHNlKDnBIB8yw09Z+kOi8ylhyqWES3zOok+5oB2I7OnejhKiLKt+LUaF8 y0u944xMf+lhZtfasWUuwj4ZrnnOrYnc5b9Br4PDnPKlNRNrAEdWkuaqRpln14DkRBPuaejQYF1 KdVV3Gd/ns6GcZN/sgV0lcBpA0pJBErwrXCvbiewoB6OM4iOt24pCJUAWxK8H+YXDewsfJOTGFs 5AlJw4gPy2hZqCi4Ipunu8yw77YBxIHq36MA82naxPzAt2kShyOnEew1WRa9FSpn2ydm76BTiD5 9fTZ4MkAvZY9BH47V49fTHg6M5yJlQQUtWtcNAnT2YQ9oACL/janstEqtGzifnvZlfepF7Duiah SQohCq+NTXT4QofTxoByxYRXoN9CzuJUa5VaCdCorUMmnlk/yomn6OOJ5Zw2jdl/IZoB4fyYaqm 5Krd/PHy/Cw5TYLFCEDdZ6GvZzgyoli7HK6vAChJ92mJxrXEzGk2TywnJHuuA3tldF4WK3DOG6A ExyYaHosC62NRjA== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D When the RX side of netdevsim was added, the RX statistics were missing, making the driver unusable for GenerateTraffic() test framework. This patch adds proper statistics tracking on RX side, complementing the TX path. Signed-off-by: Breno Leitao --- drivers/net/netdevsim/netdev.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index 5010d8eefc854..de309ff69e43e 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -331,16 +331,24 @@ static int nsim_get_iflink(const struct net_device *dev) static int nsim_rcv(struct nsim_rq *rq, int budget) { + struct net_device *dev = rq->napi.dev; struct sk_buff *skb; - int i; + unsigned int skblen; + int i, ret; for (i = 0; i < budget; i++) { if (skb_queue_empty(&rq->skb_queue)) break; skb = skb_dequeue(&rq->skb_queue); + /* skb might be discard at netif_receive_skb, save the len */ + skblen = skb->len; skb_mark_napi_id(skb, &rq->napi); - netif_receive_skb(skb); + ret = netif_receive_skb(skb); + if (ret == NET_RX_SUCCESS) + dev_dstats_rx_add(dev, skblen); + else + dev_dstats_rx_dropped(dev); } return i; From patchwork Fri Jun 13 10:40:00 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Breno Leitao X-Patchwork-Id: 896561 Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) (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 186E22D5C8D; Fri, 13 Jun 2025 10:40:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811214; cv=none; b=LnE08Jt1oTDAbXwdsnHXIeIzeh2tHX4fQzjYD87f5bMQ/oZH7PZ9W+zk0VVppj8QUf7wIpk8aJdNx6Hfy+HVZ6WuC8a/jWCeeKA8QPZcS/GPa8/Gn5jD4m/Yg909cW0Z9S5p31GJRnyMM7buzbUfQa3nFc43/e7UkW2DAjcY5NQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811214; c=relaxed/simple; bh=AqfV1NX8BoGe0GJPQwQ8UbZPxGhH4fkElCqTTnkr9HE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=PEvdKiwKmfIJU867jRfSgudvJboi/dUNLApqmM8s3Nqy5WkOX94jOT0h/a4Fd3lqJUY1YpoHSgknHz3J0s6BeYOtBH7Z3iZLtwTiHD5qrm/6WfxVYIoUqpKX6ggknVjAI6F+bseEdfDFVnvgafrlJEPGImny2bfNdizQzD/vJCc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.218.44 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ej1-f44.google.com with SMTP id a640c23a62f3a-ade33027bcfso313228166b.1; Fri, 13 Jun 2025 03:40:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749811211; x=1750416011; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sbZuricXHXpmfe23rN2nXUlOFLjB6q4uFGOuojOrd4k=; b=vUgCTIrJ3m6pZYMl+UdbfS+yIgZKJoNznWnWqYmBzmq8ow5oto+bNaa0W06IvPT3WL P4UCJ/8gyzPnGN5ZMCjaz+f9TSxMui47wboYYyPw7Qk/N/a7zjMJvzsUNlrKdTTZlt42 U6mNlrpoNsbCa9SLizy10gfEEeggIIBo4uXXYzdBqyQj5xBuUInOICLVJR+hsPpz3smi H7Fa2Y4r+R8ZFBB9HOKz1jtwmRh49KxVhNNMG/rYVbdJYjQo11qZgrgFxEXKlezNwzRr xAVFemtriIoD4Ph3Q46+dB7e4vOcaHy6x6kaoe5kDay/3DFtiyff3A58shbgWUTs3dvz AayQ== X-Forwarded-Encrypted: i=1; AJvYcCWAEzTUc81kfVSb8KV1Lut5ONSMYDXNYHRhLSM044tvua2h3HdpiWrTCbQ19ylWueNXvjpQEl8y718/GUQ=@vger.kernel.org, AJvYcCXZ3HzijWIjAwmdt5zAmWhK7ZWXqnvtMdIwLtiSSC4ZKehGa8FfInjZebQFci/pcuFS4xMS/PtjIC9TyjYqWpgD@vger.kernel.org X-Gm-Message-State: AOJu0YywSwj/rfomYVssFEitSknFMqIsb6g3j1toLtqZ7aARvPydX5Fa yvNYw4OrIY4px2Iufg0oLBj+6kv0i+P64SesLu2mLc0OvMPQfk1f92BT X-Gm-Gg: ASbGncsrjWgSdEcD1zWTqfa1TiW0r5ZQ6FPWYm+AWZlPZTg9rbZuuh08UqeYEwtotcV PxEnLA/SlGWmoAVhDATGVO/yy08CcAt/gPNNgfHzfDVu+skYbWvCfFxYHUQfVh6z3u9TBEVpNc4 H8U+k+R8EHrjK9qvaZQ/ngKHoKQftBIUF8fKa/Yz55Rf7LPMdv1+ZP+smf36RPRMujy61xOOHe6 hrvZqlibSwi/nLvQH8TZrSrD8gHXzSpXP9Ao/hsM5S6p6WBJdXboXNakygnIetCPYGir6f1+ped IcO2M42CuTHhshPI4WL0DFSlZVeVqZWBV0vsWdeqz+Y8MJioSCGfxw== X-Google-Smtp-Source: AGHT+IEMOEBEgYcwbWI/CUEMyy6ZYVwCR7SfjEdslIEKCEfXZv3uU/TRPE0OYTdz6lC4UmYskjD5ZA== X-Received: by 2002:a17:907:6ea2:b0:acb:5c83:25b with SMTP id a640c23a62f3a-adec54ae7e7mr279550166b.7.1749811211005; Fri, 13 Jun 2025 03:40:11 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:7c::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adec88fe540sm106658466b.84.2025.06.13.03.40.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jun 2025 03:40:10 -0700 (PDT) From: Breno Leitao Date: Fri, 13 Jun 2025 03:40:00 -0700 Subject: [PATCH net-next v2 3/4] net: add dev_dstats_rx_dropped_add() helper Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250613-netdevsim_stat-v2-3-98fa38836c48@debian.org> References: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> In-Reply-To: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman , joe@dama.to Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.15-dev-42535 X-Developer-Signature: v=1; a=openpgp-sha256; l=1158; i=leitao@debian.org; h=from:subject:message-id; bh=AqfV1NX8BoGe0GJPQwQ8UbZPxGhH4fkElCqTTnkr9HE=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoTAAFXsDxkit1JQsFcaI9zZp7AchuenA3nvPuc I6E9xtXCgCJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaEwABQAKCRA1o5Of/Hh3 ba2lD/0fiu+9joQWp+P247v4pPuuOyIrNXr1bwsiUBnxUJwJEccZG+zglTOSJkggWK/zEl+x4pU UIjf3wqR0Ch/M5BdUfkdo8U9iYzF0j8s2zxjiGLajiApcRbrZUElE6pOOVsuW4qX0y/Y0kFwu+J c9g2jV/bXI/VuicJH6DKRj1ftz3a9mFM0YzMrYXq0S/rmoG/9lj1Y+WJe1JXV+5JxohdtdM9H9M xy9p9g2NBnIw4K4GxIn4F2kCRwmVKu8Ne3WjfpxBuGihs8DiSpnUxxhXwd3tn1vKzeLBIXXwY1z v0RUKOEgGgNFCUemGraCLLV5zw2AmMZxp4vn8KCvZbrGf3PURAuiBiYE3vMbD6je7WdzYqh90mA rDRkycT4QhQthMw7qi/L8Z7r4PxA/ayJmamCjZ6whPee7DZXwoopmy4obPVr7zc1JGp0/cL3ZJP VJYrrYR9e7X1Qhc7C7h0+ootqsBEn6XxiHDjHYYURyZnjSjMErTxeNORA+TXCmJAeIEbnMalgwL VnfLGiPlCqR0dRwIc5Bf4ipUU3sf4o5E6hZVtc9Lcm4Ytp9bI0m4hOe6dSzujzhd5DBzvMp2bBq 9ot9FP9/qQdY+VU7cDZP3GSbaRsjYs0KFqyiAkYXivHNGrzYhRE3iJ51+bYxRpu54/C6i/NK5Ra V96qt+UVZtft+4g== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Introduce the dev_dstats_rx_dropped_add() helper to allow incrementing the rx_drops per-CPU statistic by an arbitrary value, rather than just one. This is useful for drivers or code paths that need to account for multiple dropped packets at once, such as when dropping entire queues. Signed-off-by: Breno Leitao --- include/linux/netdevice.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index adb14db257984..2e9100468e1af 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -3016,6 +3016,16 @@ static inline void dev_dstats_rx_dropped(struct net_device *dev) u64_stats_update_end(&dstats->syncp); } +static inline void dev_dstats_rx_dropped_add(struct net_device *dev, + unsigned int packets) +{ + struct pcpu_dstats *dstats = this_cpu_ptr(dev->dstats); + + u64_stats_update_begin(&dstats->syncp); + u64_stats_add(&dstats->rx_drops, packets); + u64_stats_update_end(&dstats->syncp); +} + static inline void dev_dstats_tx_add(struct net_device *dev, unsigned int len) { From patchwork Fri Jun 13 10:40:01 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Breno Leitao X-Patchwork-Id: 897211 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.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 439FD2D6626; Fri, 13 Jun 2025 10:40:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811216; cv=none; b=FvLFIOwzO9tY/U4/8tJ244CoczIHxJzFal/qPzD6kVVj2toObankPBK3vIqNeivCgTdzUSEDfIfjhK8NHasjGrHOs447af1xvRvTzn86uZ6unI1aUTrUDRap2ZJavdzWa27XrfF6hMsMPUJ+wwU9YKF+gLFy1B4SBTZ0SkE5AQ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1749811216; c=relaxed/simple; bh=dAmZ3qugqm+tiM4ynpTDxe/j00JCVxfOXyXsbGJgpmk=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=u3cWAw+cQaOB+UniiAJm4nyHK14GMENbEeMqgEv3LQprI0wX5THwOQOANEY/OZkOqXK3+vuAey2Sl3dB/15wnQQu0Hqdjon6jXB6ZgVCHdpxdjbrlfJr6EDkLF5GRwxXuz4qDk/8jQIpYyA0zsRMhoT0Hwoqc8C4kUnuXeajRnc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-606ddbda275so3961770a12.1; Fri, 13 Jun 2025 03:40:13 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1749811212; x=1750416012; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TIftDfMkceMxkxLhUUGaa3UujsACegogYhkf66yFFwY=; b=rwhMcQQdo3uskliG4Du3XDp3cqUANNCFyrOnp3WguspWMwt8SPPOWSQ0BNk6/pfRkC Hv9Dm0ndLtQylKWX74yg982H+V9wC0Btv0IzhFRYe7y8Fww4hgaC1gjnjj8pVdhqPwMH zhY5fA30d+snfYjUz9dtA2KDKlUGWvUkuUZMH7E1tB37UHcIbZkomtrAzI3LkiJq9k/P Qx8MIGoTR7A/pYEePwPjAVrYulbF6laxlvVJdLnXdA1PFdVMZNfbxjz/QFhS5SgzstY+ zU0rVkMva0qKTEbZ593SuoZljpO7JJ+Em8AU4dEQc2KcfUSlq8yaoOFlUphx3wbrIYWz rIgw== X-Forwarded-Encrypted: i=1; AJvYcCWL+uLM98j+r5J+bBfa6xUCwTX8dmIW5ZIX9kOyRTVS1DbVbT+3ypRLV7h5i4GURAa20vTsdN1JolQ4U8lvwXyw@vger.kernel.org, AJvYcCWfOKJMok1Mi9y5HG1WxBlJ8uxIF/lHi4ug1y/ly43zMGkOlRf0jqCCi7rBDGcW9nKRJB33Ze/CUnASOeA=@vger.kernel.org X-Gm-Message-State: AOJu0YwGlg7DvgsEnza8r+txzS6um4A8Z9bWy8OOQ2ch/ZDcgPZndOBp wDsphYqtidNgX7XiMQxPVDsCn4m99uVDKQ8UFcvYJ8KwQDcpgfN2Ejhh X-Gm-Gg: ASbGncsB+bcUostEP4FHEsCyV8E4orfYLXl3UL+GIwgqLN0cprjPD95JiqkvMUlSakc 8tZ1giCfLBINBO1pCv3ElAVFopgk+wbskFtPKQc+K3oFvCKea+CVbVc25btX498M3kGLhOl90vd uIvLVfCS65PNn4p5k1M/oMsAKT4pmxb4IFQG+Fqkqx5/f96vt+gJs3nmHMOO9J1ma7YAoHSo/2O pw4Qis5cdt/cP2T6MasW2Z0j14J/FpxR9Er7cTL0nnIlTKkpcneBRl4Llr/AVYtj52Fgr7vD5SY pLCS0udC1hlJyNAo3Ys8s9w8/Jdlpy45TXgR1y2Txv6ezbwgdcrY X-Google-Smtp-Source: AGHT+IHHLSxc+xUJPuRayRXWCFW4lX+3QUdIMVKbHCIL/fvUFW5YJUU3X6gP/F5kK5iSyPTfIl+CHA== X-Received: by 2002:a05:6402:350e:b0:608:3f9c:c69d with SMTP id 4fb4d7f45d1cf-608b4a7c399mr2332923a12.33.1749811212380; Fri, 13 Jun 2025 03:40:12 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:8::]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-608b4a5e6dbsm1003566a12.51.2025.06.13.03.40.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Jun 2025 03:40:11 -0700 (PDT) From: Breno Leitao Date: Fri, 13 Jun 2025 03:40:01 -0700 Subject: [PATCH net-next v2 4/4] netdevsim: account dropped packet length in stats on queue free Precedence: bulk X-Mailing-List: linux-kselftest@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20250613-netdevsim_stat-v2-4-98fa38836c48@debian.org> References: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> In-Reply-To: <20250613-netdevsim_stat-v2-0-98fa38836c48@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman , joe@dama.to Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , kernel-team@meta.com X-Mailer: b4 0.15-dev-42535 X-Developer-Signature: v=1; a=openpgp-sha256; l=958; i=leitao@debian.org; h=from:subject:message-id; bh=dAmZ3qugqm+tiM4ynpTDxe/j00JCVxfOXyXsbGJgpmk=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoTAAFO2iWF/G4Co1VLP3kJ/3FmBGSs+dhxvnm9 X/32O2iMy2JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaEwABQAKCRA1o5Of/Hh3 bYceD/9RSs3B2x6tkmwgOaxcn7t6EGV6Aax2U2pXKenLOuor0s4TGqDgAXDsd7Kj4K/Wa5Aaz2H eHRp6jlqFwBzBwm5HXOxJvMcE8RAkTmsXuHEE2H0FhZXDM/wlMTrEiWEe61e71/ZjOKMECqCtrJ BqmUJ4Sqf7gD3U0nNt5BEFtytSkchlOykttP1Ngv9xWL6cTVw8Cv/0+obnHxcuRiCO5phuoDhhy v5ddD3sQJ3FZTHtFOFZ+SOGTIfmdWKrF5Aqh4b0pLe9NAkcbkA/kIoWBZrhrtqpe7RzKb2o2Pmr +gVYcG0JnGt47tjGmmav3YRVI0S7RMq2sH2NLz69hFEzX49j+PXueGhPIi5cqO0BwgdhwvyHF4A RWoo5/Y0RIDqrAaFM9wvpiyKlyhdskSmZoMUmfpkrfC9Uf9i2qKY7Rt9sE/04ZXkuiGWzSQeFOK oJ07oVPuAI3IRE1Gfq0rYg38/3UX3nrX1cEgvAnUkTKLeJq+/UeSpRjN6P0pI8SBrp6H0sB2ar9 qt10icejHZ+Dw001S6aLwJwHmr5mB15A+KBmmFRMg1uARrpOm+hgRscdn6qfMLAkLNZJ2Khecz+ oXuD8qORBVpfYBaHZruyD7wnys4+CDFjSTkVoAhTfdzp8FbJC68c0L6kXHQVks0T0fglydbmEXI 4vZGlxTdxGfCoow== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D Add a call to dev_dstats_rx_dropped_add() in nsim_queue_free() to account for the number of packets dropped when purging the skb queue. This improves the accuracy of RX drop statistics reported by netdevsim. Suggested-by: Jakub Kicinski Signed-off-by: Breno Leitao --- drivers/net/netdevsim/netdev.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index de309ff69e43e..6e8fb8922ace2 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -634,7 +634,10 @@ static struct nsim_rq *nsim_queue_alloc(void) static void nsim_queue_free(struct nsim_rq *rq) { + struct net_device *dev = rq->napi.dev; + hrtimer_cancel(&rq->napi_timer); + dev_dstats_rx_dropped_add(dev, rq->skb_queue.qlen); skb_queue_purge_reason(&rq->skb_queue, SKB_DROP_REASON_QUEUE_PURGE); kfree(rq); }