From nobody Thu Oct 9 10:00:49 2025 Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) (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 014571EEA40; Wed, 18 Jun 2025 08:32:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750235580; cv=none; b=FHUdS+YxpbQ7G91l1M6jiRiVlxNd0K5+z0BCli4ybI8tPpoEs//DbXWEbCPFEfR+FbvunA88Xaba3UFm4UMrvbd2AEgjZaG/HCo066tT4cuRU+vlXuKJwlZR8eBNJjJWzBQ26GKZ7O9GWEfTgERxok1mwo3ZeZB0F/aDlbkTHC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750235580; c=relaxed/simple; bh=Ya02A6KSQP7IifJw9ze9oqhqSpeNuf34AYwn/7z5joU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=UEIAArZfGCLdU2ECSqMGtLWFTiH/AYyByByenDU+r83Igq1Pf/TB/EhFWnrmGH0h/tr7/reTyhEHLDGvNL0kr6PSJbAl2moU5E6l3jwLbD9C8EyQ3uxM9Vr1ASJKkJKqLChFAC/Ox5i1HhjKQ1lYfLoHkLKgHc97TFXTE1kCWEw= 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.52 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-f52.google.com with SMTP id a640c23a62f3a-ad883afdf0cso1301329766b.0; Wed, 18 Jun 2025 01:32:58 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750235577; x=1750840377; 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=oezVzWkmLjFn+I/Q9gjyBzSSjxJsytgD2bUQu75LG4Y3C1VXS/7g0IIiv2MKG7WNf5 cv+fOBBARAXNW5F9ik3bRxf4JZMeoL0VkAVYKLTs8Nt7noMW2Tn2zwjV6ShVX9rTx2fb w3boStA9E5BLKQwTVf1/QOQ/q7fH69yqBK3npdQH6yBr9VSs+NB5EzHjpav07+dmNu9t 6zbNGhMhzs6QGQI43evzs4qViW//9QgDFSLxdXvObBpjp13ChrV77WxUDBuF4P7czuM+ 0rIAocJaNEJ72dE3X5rLefsEFulE6wU7dnISNMHmsn8wxVKzaUUIijD6+4CHb0Pjiy0H q1ew== X-Forwarded-Encrypted: i=1; AJvYcCWcVmP4coTKMbIV7ugjehAAZK910dpgSTgcj+/zzSYMLi6/KWRXJ5er51uzvHhs2FgpTvsu7aKcHiUBOzM=@vger.kernel.org, AJvYcCX5brsDeDZA5N9b3y1FtbqRuwdJt8xP5+EXUPtN5G64wfgUSn8feTPY+kO5lKMfVlKdRbKQ0J72vGNGXCh5qEYo@vger.kernel.org X-Gm-Message-State: AOJu0YwUkVhhMnkAaB/mRcGxUKIVch7xf76nn9ENACWEI3DGrhzQhqKb Pjqhs/JGD4JC/B2W+H7683x8DRz7Kj37jlwN5Btb7e3vHjpBWpP5rtMn X-Gm-Gg: ASbGncsxSU8SlpQPgJUeOu+KkMIMCsQNLWhOcV1kQiGgfkr5qlKPZ23SW/l2qR8QtQI ioZYGjyPol/8fX/0/Trwc5aPzwpSCMVvG3YE7pBbREwjtx2si4s1CMnM/tUwZMtU2VwKfXc2d6O r+K6s2cyohK5RFUUXT7K8TAlq09MDYc+6q1+mjpKmfHBJXzz67v8rD/FBOFjN1emEX+TuTRX4tP MA95/YYqMkbl83LES62A/2fYc2rylwsPsMRrisOTk5pjwr78XidDRlzRLbVwWwJ0jeAgGvbv1i2 z3QknxupEg+pi/hrjj/6LWi/55DEjlgU2yFArx6hGcVjprCGDX0wgg== X-Google-Smtp-Source: AGHT+IH9+K3XVhXg1nTZyGPs4R0Oq2xdoVDSJwYCAIwGXBVGtboeQwWRzQuh0LpeJom2RA72Ua7PPw== X-Received: by 2002:a17:907:920a:b0:ae0:1b44:43c9 with SMTP id a640c23a62f3a-ae01b44480emr119285166b.60.1750235576819; Wed, 18 Jun 2025 01:32:56 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:72::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adec892ab29sm1000223866b.114.2025.06.18.01.32.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 01:32:56 -0700 (PDT) From: Breno Leitao Date: Wed, 18 Jun 2025 01:32:42 -0700 Subject: [PATCH net-next v4 1/4] netdevsim: migrate to dstats stats collection Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-netdevsim_stat-v4-1-19fe0d35e28e@debian.org> References: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> In-Reply-To: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , gustavold@gmail.com, Joe Damato 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/8eHdtAcsmYgBoUnm1GhmHtd/d4WZp8ub6yCIp901Fk7R4m/2Nt 3hqhrwkSAyJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFJ5tQAKCRA1o5Of/Hh3 bUStEACldGbIVFpgyJ1IDyFif97TLe2MFkPCf2d0h+JsSs3+Pn+gNT5N0S0dfNXMRsyf2NimVzq d/e+neWBtPlNjbBP/w6Zx/5IHQJwFSSClltVfqkoxarEWBbq3jbVlitxshaIEQ5GoaVYgchG0s5 8PDyr65urBbnGdqXewKUFwLPCFxcGEC+jJvR1DtRH2YafFOYAPB2TKNFkY5/jXD7WyStAaLtph1 /P31yQzdizUKKy5tBa/Pd+MoUIF90ZklOx+FqZVSGiGcvz8WuXX/DWz8naKj1GmXP8l+bx70J3l 3ptalNXfd0/de/1N9crPSs1+yplZe8CJb5oeIHjNNnSZTfi7XPmK8qqhCgLmpmB77eATZQAPfUU 03NgI9SrmeHjS4j9NUJSblxiLSpPtVGPRjv8S89tyqAjtQrIVc8wFFz7qAtXX4vfIi2EAb+eY9h JUXZeWfAj5XQHB4cj/BvBerKLlKA+cdZEEOuaDP5HVaSj66imhUplXna2sH3SvMYvpK2VK1SY1J pyWb04FHWKKN9+nKoyUdaUK8fQsWkdPV4Y8Sl/Tnf0GUX1J4kmbyI6ihvrl8N/NOIe34Wd/ZmY8 6LBxXYxwzESlVFtbz6ZqHVvIJm5ORrN8fbzNIwId/cuj26AvSoGI54Gvc9OItwv7Z4tE9OtoFpj li+TXlggYCCFhDg== 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 =3D 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); =20 rcu_read_unlock(); - u64_stats_update_begin(&ns->syncp); - ns->tx_packets++; - ns->tx_bytes +=3D len; - u64_stats_update_end(&ns->syncp); + dev_dstats_tx_add(dev, skb->len); return NETDEV_TX_OK; =20 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; } =20 @@ -126,20 +121,6 @@ static int nsim_change_mtu(struct net_device *dev, int= new_mtu) return 0; } =20 -static void -nsim_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats) -{ - struct netdevsim *ns =3D netdev_priv(dev); - unsigned int start; - - do { - start =3D u64_stats_fetch_begin(&ns->syncp); - stats->tx_bytes =3D ns->tx_bytes; - stats->tx_packets =3D ns->tx_packets; - stats->tx_dropped =3D 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 =3D { .ndo_set_mac_address =3D eth_mac_addr, .ndo_validate_addr =3D eth_validate_addr, .ndo_change_mtu =3D nsim_change_mtu, - .ndo_get_stats64 =3D nsim_get_stats64, .ndo_set_vf_mac =3D nsim_set_vf_mac, .ndo_set_vf_vlan =3D nsim_set_vf_vlan, .ndo_set_vf_rate =3D nsim_set_vf_rate, @@ -580,7 +560,6 @@ static const struct net_device_ops nsim_vf_netdev_ops = =3D { .ndo_set_mac_address =3D eth_mac_addr, .ndo_validate_addr =3D eth_validate_addr, .ndo_change_mtu =3D nsim_change_mtu, - .ndo_get_stats64 =3D nsim_get_stats64, .ndo_setup_tc =3D nsim_setup_tc, .ndo_set_features =3D 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 =3D {}; =20 if (!idx) - nsim_get_stats64(dev, &rtstats); + dev_get_stats(dev, &rtstats); =20 stats->packets =3D rtstats.rx_packets - !!rtstats.rx_packets; stats->bytes =3D 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 =3D {}; =20 if (!idx) - nsim_get_stats64(dev, &rtstats); + dev_get_stats(dev, &rtstats); =20 stats->packets =3D rtstats.tx_packets - !!rtstats.tx_packets; stats->bytes =3D rtstats.tx_bytes; @@ -618,7 +597,7 @@ static void nsim_get_base_stats(struct net_device *dev, { struct rtnl_link_stats64 rtstats =3D {}; =20 - nsim_get_stats64(dev, &rtstats); + dev_get_stats(dev, &rtstats); =20 rx->packets =3D !!rtstats.rx_packets; rx->bytes =3D 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 =3D NETDEV_PCPU_STAT_DSTATS; dev->max_mtu =3D ETH_MAX_MTU; dev->xdp_features =3D NETDEV_XDP_ACT_HW_OFFLOAD; } @@ -1022,7 +1002,6 @@ nsim_create(struct nsim_dev *nsim_dev, struct nsim_de= v_port *nsim_dev_port) dev_net_set(dev, nsim_dev_net(nsim_dev)); ns =3D netdev_priv(dev); ns->netdev =3D dev; - u64_stats_init(&ns->syncp); ns->nsim_dev =3D nsim_dev; ns->nsim_dev_port =3D nsim_dev_port; ns->nsim_bus_dev =3D nsim_dev->nsim_bus_dev; diff --git a/drivers/net/netdevsim/netdevsim.h b/drivers/net/netdevsim/netd= evsim.h index d04401f0bdf79..343b8f19dbed6 100644 --- a/drivers/net/netdevsim/netdevsim.h +++ b/drivers/net/netdevsim/netdevsim.h @@ -108,11 +108,6 @@ struct netdevsim { =20 int rq_reset_mode; =20 - u64 tx_packets; - u64 tx_bytes; - u64 tx_dropped; - struct u64_stats_sync syncp; - struct nsim_bus_dev *nsim_bus_dev; =20 struct bpf_prog *bpf_offloaded; --=20 2.47.1 From nobody Thu Oct 9 10:00:49 2025 Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) (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 3B22727FB01; Wed, 18 Jun 2025 08:32:59 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750235581; cv=none; b=mWjp6Qh198n1G31z2KOlHCwxQuior0Ny4XDXiIbzaArqAVJm2ymwp01Ub4gp7W28gj5kCN7JnOSOvNgoyn/kzJnXVPr9jIoxK9rUTV3hxUkHAoVr3wQ+I3CMBf77OyG1xRuy6W0HRNaiWlwW3Dh0Mjqy64IuPzRJB3V65wZ+5u0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750235581; c=relaxed/simple; bh=5XMFG3vfJ8oR1819aaGpibVmrBL7u7fC6somW9XJGN8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=srAduZ2h41Mf38ITH3/auoqfQwkauPh3riFAnQpua+w/iPWueacVEKUN4fx9VweE3Z+AgL7hLNoOvqM7Bxa5IquEmF9dfAO9GMP7Kl49/BpkEVYzyLXWd6Gkaq/I58XFijpoMbV9IaDN3lHUSuvXTSOiu231SMbUkAVZh21MEbE= 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.51 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-f51.google.com with SMTP id a640c23a62f3a-ad8a8da2376so1087269166b.3; Wed, 18 Jun 2025 01:32:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750235578; x=1750840378; 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=2xnMBVq33gXIc9LYivha/soR9GpiA0xG3owR1CxH/A4=; b=O/uIu5nfXwatuRZi6qNHVAkcxk0foDPoRQrdg03CGpI1iPF0aYgKdsBVAUoXDe32cO 6gNQH08mbYXk+ADPD/XWyFJWTpj+BF9C9Mnqp7faOm95tmUubX8/8M85Gd51epjcQc96 47RoEqyXyQr5YHwOlxFfpNdr2KqKkUKbm92VOCvuN0rjTeYpuZx1Ui5eendI7cgqqLO1 UilICLlzGMzoDaQy6MOc/HDte5CgIxoK9TgVgRKmtiEdXEGfsOa+kQ3DLo8PZ/A1sv3v oBR1Gljt9FQhPkV1kEd69+19kKDaXtQTD9VvfjZUsTEXF/xlhQwamD7iSeRoYy/c/pbZ KTHg== X-Forwarded-Encrypted: i=1; AJvYcCX1XNH4bnzTZz5nW8zmew5qnxpI1ZE76VGEMd5SSJy7mW0Iw6kEdlx3UA5L031fgLs7vOoArARzUKbLeGo=@vger.kernel.org, AJvYcCXKWiXo+DKThG53ta6OWh7rVzRqsaN+wASITqMAx5HvNQkIglBZ/5+GDmszbw8hk9frgBiJkJU7gmL1Af7xxSCf@vger.kernel.org X-Gm-Message-State: AOJu0YzeledkTKmk0FXx9RG5AJHW61XQjnOor/YQjFutpIRf3VHt6/fM YIDaMKZNVhPok7YiH3zWrnXgkiCMWA102pD0kE+Y7bGKMDZWFspBesgv X-Gm-Gg: ASbGnctl04qr6DuP4qRWfS7PgwxKeCEO8AC3HYx6VmDK1DloeiYk/l0a7AmivCIQbrx HASOCa7V+rTwKsU9XpoqYahZgfCW+MH5tZc3uNqRMj1QZXNcfpy06WZBomkNpVX0k7IqcfYKI/5 WtoHMkjyJNmEjkURk1ruGYMRuPm6Cje72242QR/kdfkOr5RueWyvEaynEq4e9r8HlCSBR9LtDBO pn89t8VzDN46/TPT+/Cje+JFxaJ4dE4u+ZVKUHkId58gRntxGgqWTLW7Rl29pTNglMJUes03/VY L/T1tXDFHsATkKwvrjFfhFpb0cBYFF8ovWj+9Wq2aOZ+DCnD+ZNAOg== X-Google-Smtp-Source: AGHT+IFDIXeOAJtGZAN04LqmAEg5sQOnOdrtOT8uLSYCPsHsZ/luA6U9O+LRKMHx4Gd0M7BZnN0/Tw== X-Received: by 2002:a17:906:c14c:b0:ade:c643:62ce with SMTP id a640c23a62f3a-adfad530b00mr1753843366b.56.1750235578289; Wed, 18 Jun 2025 01:32:58 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:72::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adfeaed2d10sm435100066b.105.2025.06.18.01.32.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 01:32:57 -0700 (PDT) From: Breno Leitao Date: Wed, 18 Jun 2025 01:32:43 -0700 Subject: [PATCH net-next v4 2/4] netdevsim: collect statistics at RX side Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-netdevsim_stat-v4-2-19fe0d35e28e@debian.org> References: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> In-Reply-To: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , gustavold@gmail.com, Joe Damato X-Mailer: b4 0.15-dev-42535 X-Developer-Signature: v=1; a=openpgp-sha256; l=1346; i=leitao@debian.org; h=from:subject:message-id; bh=5XMFG3vfJ8oR1819aaGpibVmrBL7u7fC6somW9XJGN8=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoUnm1w/sUKRh0SEmr+3keje7qNIgQKBuzhq64g ELmMwteQvWJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFJ5tQAKCRA1o5Of/Hh3 baKMEACqOe5oLcGnQfFubQq3ZQbbngQshutioFomFRc9/SnnmjNvM3+BkMrZrqQbfUVW47hk+mB b4SXKt/DtiLeHNak5AIYeBt+FnSSDVmqljrDuLu17rQVPDOrRZkhl/rYivbvoOIlWzP0mmgJaC/ ZowAs3b95syq9iE46XuIozBF3DtC0yCqvBJ4Ksgo2cVus072r/9DAbFyAw1TyWIoyE/ZFxpQVOY ZtHleo/iPAneSXRjXpUvYwR6Uk4VpYgPCAAe74M1Gd51UVq90zU1DBxQe8aIGWtkJr+fJu9ueEy UvBONMS+hnhqyZrsagpO2MePiqNfRyR+XouscqB9idcJKV8c/M03XmmPMcj6gkUGCB3MXHlslIh tOgj1BDoAfx4+4wIxTT+xAjjUsRNwvcsn643IjT4etMByd6CsQwSFDHZp6TTWi82CCBbFMKv5XH PtbBZWiPU8AFNiUfC8W7sN9/hqXYqIz+6rtyeX+wstOA9Dv9EkPUnucBzN1pWKnxe0MBluMp+xL Qu9Crn4IKh7sHOUHxRv9ext/TgU3iJkrHK82jdqYr+jMGOfgkayzOd/94K0BNeJp4yTvnhOXaTw 0xim2UmJRdjzlB68WHg00BFWJqxPcPbb7eH8jZMjEc/grrn9vODDeHJ21t6itQ+No5gDK/ViAvS DJhBuYxUVsr2hMA== 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. Reviewed-by: Joe Damato 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 *d= ev) =20 static int nsim_rcv(struct nsim_rq *rq, int budget) { + struct net_device *dev =3D rq->napi.dev; struct sk_buff *skb; - int i; + unsigned int skblen; + int i, ret; =20 for (i =3D 0; i < budget; i++) { if (skb_queue_empty(&rq->skb_queue)) break; =20 skb =3D skb_dequeue(&rq->skb_queue); + /* skb might be discard at netif_receive_skb, save the len */ + skblen =3D skb->len; skb_mark_napi_id(skb, &rq->napi); - netif_receive_skb(skb); + ret =3D netif_receive_skb(skb); + if (ret =3D=3D NET_RX_SUCCESS) + dev_dstats_rx_add(dev, skblen); + else + dev_dstats_rx_dropped(dev); } =20 return i; --=20 2.47.1 From nobody Thu Oct 9 10:00:49 2025 Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) (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 9D3C727FD5A; Wed, 18 Jun 2025 08:33:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.47 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750235583; cv=none; b=srkTMDV6oJL92c/4xqMvUnIZRvZt5cWNO28QjSh/nbydgx2obfdxwNI4wkfzPm0s336YtiP029zGmehTJKbiP14cYzTLEOfzLO3NM5Kl59SD3sj2kM4y0QqD+8F5EQGNCY6aUaTJVUYidvwow5PwBCu6/56EirI/3o1TzILh9C8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750235583; c=relaxed/simple; bh=pun+ai7i9KoSJwqGh21Y7Vt3za1e9TA2aXklqAhyP90=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=P+kC/vX5kwl3dPKfsZAoduloMjxVKMd4+rxMBsmz5zct3kBtK0SnXIncKxod6f7kSKS9ojATMen0iG/XvAcOZWRZob7duZOfelpO82l+fULHz8Pj+1bVa3yCAFqshCW9P7XsXSn2TzWyPUCkjmmhFGfZgsFHMlB6oLMhRbcp+iU= 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.47 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-f47.google.com with SMTP id a640c23a62f3a-ad883afdf0cso1301336266b.0; Wed, 18 Jun 2025 01:33:01 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750235580; x=1750840380; 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=QvxHENa/I/iZADWNuu1fWoBxTp31OAQX5sQQgeuscxo=; b=KsaIYXmaMjsFzabScEhO69doE/iICY5wSetiqBokeeQZ/vtrrlg9vCSVmlDJlWEBOz UKbUc5UVEKdekYV6+Wu80A+ljzDQ44OxSgPqmjU45G0ITTdZCZzSPNNNusHqPbAvJYlC WyoTdFQ14KfCLeV8LoxluiM5ePwsak/jORXqN5MWWa+P4xDmVZz7Dq2/ixVEz4iPpyfM oOBqT8PNqmrlYRZfyjTKEjFHu6XI7pm1vMptwuekSJNfJmAT/IaJaa1gzLl1ghmXjjUs nVc4vzHDEW0AwfJcdme11qN4AIF7hMAMTek3hQxW2kAg5Vc031u17T13VDfOb6rVHAJe I60Q== X-Forwarded-Encrypted: i=1; AJvYcCU9WUCT0eENHV4NRPwumSEonPrHiJRwc0iidwvY3XRQa+IlfqX5bKmKjzVucaRdLy+qJeYM4b/n09ynkf8=@vger.kernel.org, AJvYcCXQQX60Nry3mEZmfOxQT1FMDjLBT5LDQiwKMtL0Cyt1hK/tcyshqm1Tx7RlXgRLQaaIDxhzD3oxTR4B4POUhEuc@vger.kernel.org X-Gm-Message-State: AOJu0YyJzxvKOqdXnBNd64tCYjWtAbccUPxOAgihSMGkjrmnNqfsnTC4 yfxvOu9SIpOSTTDsUYwL81QajMrcDLiASEwQuRE1NxPqljMWqIpRTlZ7jR8kBQ== X-Gm-Gg: ASbGncuMFBRDXQ56JJvfcOClfsV6g+W/QZoyz788zSusPhfTh+mKTQtwuuU4SwRwZtU wXM676y3f6FWCQ/5PFLdG3GpB23wLs4FSsCh9ROi7N9kP14kFb9C9aLBjP9FljhRMATDhR3eUO8 6schj4ay/I5T56q3zycJxAw3mC3rMzM260OLClZGngUsSjNHdCZ6Bl11rRmTpg8YOfyhkRQEhug RKb9LAEpik4HM2FuEBknH0AjVd8947QRaLg9ehM0Up9vVC2g+i4KQMQMRLyz36/+I14lG/wNU1O rkOrAvYc8Xt5jgMda/lc3wwIizfnV2RlbgFcpmjiMyt1a0NpHWFa X-Google-Smtp-Source: AGHT+IEOLy3dKbnVwV5DkJBjEBfns4jt3+wb82Urf/sw5HVMmm7KmqELH2iM50rsdibQrqj0CwsYug== X-Received: by 2002:a17:907:7ba0:b0:ad8:9ff4:c02f with SMTP id a640c23a62f3a-adfad35906dmr1721122566b.19.1750235579671; Wed, 18 Jun 2025 01:32:59 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:2::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adec892b024sm1000863366b.130.2025.06.18.01.32.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 01:32:59 -0700 (PDT) From: Breno Leitao Date: Wed, 18 Jun 2025 01:32:44 -0700 Subject: [PATCH net-next v4 3/4] net: add dev_dstats_rx_dropped_add() helper Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-netdevsim_stat-v4-3-19fe0d35e28e@debian.org> References: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> In-Reply-To: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , gustavold@gmail.com, Joe Damato X-Mailer: b4 0.15-dev-42535 X-Developer-Signature: v=1; a=openpgp-sha256; l=1197; i=leitao@debian.org; h=from:subject:message-id; bh=pun+ai7i9KoSJwqGh21Y7Vt3za1e9TA2aXklqAhyP90=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoUnm1mwbJrwv0YDwYDDNXccLkbOic+BzOVdpdn WMtG5PmJCOJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFJ5tQAKCRA1o5Of/Hh3 beAJEACvhn0olRdl4m8biKIukOMbdjGI/RjV2lIT17X1e2VOxAlVLUVdpVmSgwswF4kb1BmlqZM EAHJ4/JlsRdikQkZbAbZoHA4RsVR1revLnqgNDmo8eKI9okA19uH0KWW9Ln+QdURnkbdAVH1Acb g2f+oaDq/d1SCJysg6UrHM2wzezFDKVUUrh6UkjXZQIYAlZWvNYjNkeEzmGYzLQSbvfGmh3xtH6 3H5+kkcbLus8lLcCw/q65OU53+rMTYJ6kesvmDwyhYOChkThE+5W6dtcjpetB0JJDxR+LilMSIT qLvjt74Cb9psQBR9XYgro2zHxOKM4HlUmENh/IZg2H+mHovtt+bBpI3CT+Kiy03MD5wJyG6ir1G qaPF5nPpyO7RXm2xTrUF8cv0RZ3OvopKqwGxiQov2mIx7mKuk7GmDaK+Pv1vgvyZ5MlEg79C/cX uM8T0uAO74Mzxn0SozhEFkb6kxXTGPspYrW3kcd+Y3F+CroielSPUlK+ZhHw5G36s1+b5JMZLbT zK3gbv4XwyHit9H+9WQ55Adcf+rlHOuCjSypjM4HAKDH1Zcb0MuoePofSQlV/BnAMnKGoTViHtE LjdbdS+o/PLe7qFX7cTH7ZLZZ6jIzq85FDda5x4ihe+NouMqMPgud/LLzD1iR5hXmX0gZE7Kuu1 ODvwXKGjWHHebsQ== 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. Reviewed-by: Joe Damato 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 9cbc4e54b7e4a..03c26bb0fbbef 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); } =20 +static inline void dev_dstats_rx_dropped_add(struct net_device *dev, + unsigned int packets) +{ + struct pcpu_dstats *dstats =3D 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) { --=20 2.47.1 From nobody Thu Oct 9 10:00:49 2025 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 3140D280A5E; Wed, 18 Jun 2025 08:33:02 +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=1750235585; cv=none; b=p1WrKmBIkHpxfWu3rQxci2gAcxvkpNQGGkse+6y1E+zjVLzR6BsxCOpmDbiVRs8euPwlE6F6bxilitxnOWS8+sf8lJRxKFqaD6axQIXVAz4CaW8w1AOTSaL/iTEPVeYQHLGik8nXo3aaDuwHgzwTNaqrU1KSbKAzDnW3hNY6Lpo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750235585; c=relaxed/simple; bh=IxDaiUHf7Z4U8Z5WO/QsWUnQL9pxC4qsiCIvomywaYY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=OKM1lblSMkXCZi1td4NMQCuXMNG7d1RXJaayClOMVztB+f8GLZW98CW+4dwqwEYSzmrNND6hCWcLb3poofnAIr6nZ4RUngZKc+l/XkGCxuqGvwHI8LrTFWv+31FdRtwckv9vLH/Eoo5OO1xXVqqKMzfty44ehDnB6AcPHHroBOQ= 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-ade33027bcfso1091495066b.1; Wed, 18 Jun 2025 01:33:02 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750235581; x=1750840381; 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=CDofrZxQJK7TRalX2xX6XRULh/jbQyPTf/PiTffP/g4=; b=rW+YIRO88R3qVpyr4deWyC34Ew1bwhxG1Sd8SWTmEMGC1noKdnDZWGCAbouFfjQ7S1 uatDvaSgPR+0BrYJjFL50gnHT69nR4w2JCuYnvBw4+eH32FKeJgacTBc1boUo4LPgxad qIba3RA43nWp51LinHvKcBdghHhR0VQ0htRnfIAOBMUl80IlKvvV5cGvOoHRBhr+unO3 JUeydSw9RjxoS4TZ9m3COpUjsYj4PByPTdxWQP3L7/mmX+eWv7Ikdh5X9VWVduX4ugVA kKX9AtL2901hVLUn3JUXwjvC0jNKS96LJ1aS+3gKMme0ade0rmAcUh13+KH5PP/qZu9Y j24w== X-Forwarded-Encrypted: i=1; AJvYcCXOqGO48mXMyI8YH04SOuXVgMDmxmqj5gyG5OPa4xMaTZ0L6lDRgW2jJ1Xceob4PcQ9BLUdhttgtodaGdo=@vger.kernel.org, AJvYcCXkeleujUefoUEVlgcKOSJsglgdclr1ljmt3Hda6sl5Sd8X2CBYUFcwQiXkiL6oZDiY+IADtPs9XzKimB/T+1Wj@vger.kernel.org X-Gm-Message-State: AOJu0YyK87An8+LHHy0bI8Ke/+KJgWHU1EmlngWm7Lqw93TZEyYhSdYS cgGaASAXEQsuV08WUXeV6HtjUUOGKXEbCCCQ+7PLFE3vwsNH1UBaqLIS X-Gm-Gg: ASbGncsZ719vztFCXzhpXmRAJIJD97RPcFVwwrOOvYb6rbhve+7Zp8Uwh+liM3MJNbH DipbA32eAUyRNDEF/OlNDq8CE2C/OtcY8XWFi5ZnMW4iJ3cMN8HOQirAvYUHZQL8N0soUOH84La tpGgK/c2Wn0+BwF02PwMbDvYMUeYFop96hFlv/n0X1S4tlqFXO+Kv8ajj2r43S2nLZ+4avjB1pF 9WOWLR3KdhE9/+BxSeMRYzHjGLSiy6O0tcxLgIeQ2pAUADtD0AGZo7W/O9d5ZBbKswHNDef9psg UKwabI5HpYCVBDVssqJUTRFVJhTasZ/sWKD1HU1KClinUJjkOaah X-Google-Smtp-Source: AGHT+IGpDAiL+bPgtttXdIS4xC1X7eTKg8ENkBlTt5BVg38XjKc2Mnk+aapAFu5GWm49xnmgY2dIVA== X-Received: by 2002:a17:906:9f91:b0:ad5:840c:dda7 with SMTP id a640c23a62f3a-adfad331583mr1444026266b.21.1750235581122; Wed, 18 Jun 2025 01:33:01 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:8::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adec81c5be2sm1008087466b.64.2025.06.18.01.33.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 18 Jun 2025 01:33:00 -0700 (PDT) From: Breno Leitao Date: Wed, 18 Jun 2025 01:32:45 -0700 Subject: [PATCH net-next v4 4/4] netdevsim: account dropped packet length in stats on queue free Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250618-netdevsim_stat-v4-4-19fe0d35e28e@debian.org> References: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> In-Reply-To: <20250618-netdevsim_stat-v4-0-19fe0d35e28e@debian.org> To: Jakub Kicinski , Andrew Lunn , "David S. Miller" , Eric Dumazet , Paolo Abeni , David Wei , Shuah Khan , Simon Horman Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, Breno Leitao , gustavold@gmail.com X-Mailer: b4 0.15-dev-42535 X-Developer-Signature: v=1; a=openpgp-sha256; l=2070; i=leitao@debian.org; h=from:subject:message-id; bh=IxDaiUHf7Z4U8Z5WO/QsWUnQL9pxC4qsiCIvomywaYY=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoUnm1xoD7CfA8U+5RhDI/AQvcPoqPt6/kNi/vi OeGn2HZG+qJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFJ5tQAKCRA1o5Of/Hh3 bUhMD/9mE93RrHPUHWx7lQIfw8olDDA7viOhnT9ubI/vy1hli7uFVHUpyc8lWPjcEui7GLYfBnC kt03b8v7ei2ngYIwwYHnHr5tEDuQIFLzJXs/OvcA/TTd8F8TnIN36rhpqk1mhcO92wKwwVkL2fG O+8cB1DviPBz1MXOsTCyb9mSpqv02ApUUGOvPv1x4f6/q+QwKUNEC1yuF0EjILu7Gn20Z7/a0k4 03Af1PImKdM1kR4NUfWXxBYcTBohGH7ilyaAMC0ZiG6f4/KAbXT2AljQZhscJbZpWw4ITx2r46K c32Pfumiwp55F6jetZT2fL+8MZxwiS3+4Gv//DtwfqBsIUeQgumFGKhQSX+p8vVrKftifeS2Dro h56BmFJAM9i7nEmKtMpR1/OWegrko78XdCsss/9rHZtGMHFqMx9t0Zuu7ByODrX4AtI+hqx1Y4r LFTZwlB6MucI7y37nyBwG63VQW0JnKg/UGjcRRkRW6GUVsooM37l96ewKsBLbOfL5h/xTIVjMV5 mHDPhLpylLpLKuG1B7u0usRSPzXKmr4FyFBdeIDVAGLiJ/KYLTCPLE5pIOL8rkswVaps8Z4JBVw Lh16dtj172ac7q/CpwNf93e7FiuQUayuxiAATGyIINVGsnpZV7RaAxZpM5mj9S3Dtwz/CzLQ+// zh05boud7Pz8qDQ== 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. local_bh_{disable, enable}() protection is used to disable preemption, which is necessary given that dev_dstats_rx_dropped_add() access this_cpu_ptr(). See discussion in [1]. Link: https://lore.kernel.org/all/20250617055934.3fd9d322@kernel.org/ [1] Suggested-by: Jakub Kicinski Signed-off-by: Breno Leitao --- drivers/net/netdevsim/netdev.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index de309ff69e43e..07171cf8b07ee 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -632,9 +632,12 @@ static struct nsim_rq *nsim_queue_alloc(void) return rq; } =20 -static void nsim_queue_free(struct nsim_rq *rq) +static void nsim_queue_free(struct net_device *dev, struct nsim_rq *rq) { hrtimer_cancel(&rq->napi_timer); + local_bh_disable(); + dev_dstats_rx_dropped_add(dev, rq->skb_queue.qlen); + local_bh_enable(); skb_queue_purge_reason(&rq->skb_queue, SKB_DROP_REASON_QUEUE_PURGE); kfree(rq); } @@ -681,7 +684,7 @@ nsim_queue_mem_alloc(struct net_device *dev, void *per_= queue_mem, int idx) return 0; =20 err_free: - nsim_queue_free(qmem->rq); + nsim_queue_free(dev, qmem->rq); return err; } =20 @@ -695,7 +698,7 @@ static void nsim_queue_mem_free(struct net_device *dev,= void *per_queue_mem) if (!ns->rq_reset_mode) netif_napi_del_locked(&qmem->rq->napi); page_pool_destroy(qmem->rq->page_pool); - nsim_queue_free(qmem->rq); + nsim_queue_free(dev, qmem->rq); } } =20 @@ -913,7 +916,7 @@ static void nsim_queue_uninit(struct netdevsim *ns) int i; =20 for (i =3D 0; i < dev->num_rx_queues; i++) - nsim_queue_free(ns->rq[i]); + nsim_queue_free(dev, ns->rq[i]); =20 kfree(ns->rq); ns->rq =3D NULL; --=20 2.47.1