From nobody Fri Oct 10 09:48:03 2025 Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.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 D5C0B1E3DCF; Tue, 17 Jun 2025 08:19:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.46 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148349; cv=none; b=XazHkIltYP20Yp+pAHDPSUi22/xEqziDvH0/Z+9CtD3KgkvnJv3QlqfDQnvLNUtGy9BfSPvCMhONbH5r8Z6TvHJhjFteLYeH7eoenx2wRKai7qN1cg6q/mjoMVLJGI61uG/Xlxp0U6jsILVK5Vk3LyYKoHFbVfjnwUWyDbcfhHk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148349; c=relaxed/simple; bh=Ya02A6KSQP7IifJw9ze9oqhqSpeNuf34AYwn/7z5joU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=pRw8/mpZGFEbz5Rp0X6/7wBkkWNa6Q7VeY5vAi4vBwEHjzC+ONsvUKdfrbr7j0UYExJYDKy3q/ilJPNTMshmX/FHsIW9ocV7xculEpdvjAo330IlitOLvgsz3zQCtiNpXuYA8TFRucyEOE12DGG5lshxnTlJ3H+jWW69XdTYFaI= 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.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-ej1-f46.google.com with SMTP id a640c23a62f3a-adeaa4f3d07so1070642866b.0; Tue, 17 Jun 2025 01:19:07 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750148346; x=1750753146; 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=pMLgqbRrE7xIOGb+JaoTUokEHujLWKiZlvWiSoiM+tY2+P3vJWx6SIEDZZQr3PQEs5 lWzBR+1k2ehPTQ7vaVhjpedyFQVnmCJ/AgIleRTzwXbjea+3QBLRd0AZ5wAY8oBTTsFq w9MhT+ajM9dDWVKMgFOFBYhjI6mWHZ3gMp/pnVXX7uGQ1XtbKpaprjsZtZBonxVxGFAC KrXAcF8w6mZwfunKznws60rqI9wjx11IlgDdaPLkPZPVyylNt9cuvMz4Ryn3THnOOGx6 pPiY1H87NEGd889DIxpr0FrDsmsg+U0yf9Z8YMmqXbqLQCUemnj4Mrt6V9UcO6Lea2Yc D7cw== X-Forwarded-Encrypted: i=1; AJvYcCUwKzcGybmHhLUBTw5yKMKqwxXsR2xjcD2CDWStX4IervD3qovt9nYe00ezCMiDjb2nTPR53Q48X2goRw3ObvPH@vger.kernel.org, AJvYcCWzAe9f0KzVvr21bL1f9AEgVWuke9UPf3zBA/8fsP1LHXsyvqKOmHFHEG6nsI/flI10BCRyWnzeeJabHe8=@vger.kernel.org X-Gm-Message-State: AOJu0Yy6VJFsIxHeCU2TMVf4T4pJsqd/YntfNTgvu5G/3E97OdeL+QEi hWIJG+t6QvYzJPPzgp003EGWVeNZyTq1NBcoyQwVFQumU8Kys8T725M/ X-Gm-Gg: ASbGncuQfGS/EJB4VU4GgNEAhHLgwDy5jdWFSSp9HKLjMFaSvQiA+ZkdiCDCQkgyhVn gfogdZ7pYwRaQ3WgY++CU9Q1fFB+MfBQhQ8gYblOkjH49r0pUwV2O1D15gylyOZb8hoIoX6IZEq E4cLUxR9qboT2dKqZFLHTiihhjo+bGXvHgilW+xQQSepEZnw6pCTmZs5auxyftsq7hY29Ig7c5O Ge2rGXN/WpoKVeLD/hFjhHMl7gjrNrJgqEf6H1cJoC0beQlEK5WbdmwZ1TNVHQu3kmjOSWPB4ma 3y0XqnLvN99cHeNhDrBxo67VOv9M9JT+Li54+i2wXZZTkWM9hOzMnw== X-Google-Smtp-Source: AGHT+IGVxg/b/s61sSSlHJNpQGVeO8ZLLS75RaoNkCLs9NKEjRrxbuyAWU10ZTFr8ZXjpnxLoQyG7A== X-Received: by 2002:a17:907:d02:b0:ad8:9b5d:2c19 with SMTP id a640c23a62f3a-adfad3eacbbmr1067488166b.9.1750148345803; Tue, 17 Jun 2025 01:19:05 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:72::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adec81be674sm825822166b.53.2025.06.17.01.19.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:19:05 -0700 (PDT) From: Breno Leitao Date: Tue, 17 Jun 2025 01:18:57 -0700 Subject: [PATCH net-next v3 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: <20250617-netdevsim_stat-v3-1-afe4bdcbf237@debian.org> References: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@debian.org> In-Reply-To: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@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/8eHdtAcsmYgBoUST2WkQTO6BE4yvfqsg1+vBmR/Z6+znHdvlmw IzgQolGczaJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFEk9gAKCRA1o5Of/Hh3 bWXwD/9qh9a+WtDElz7YP+VjICkofXQ4apyY+rXmHjhWU4927DNllnfSE64cGOMCn/KBAiwBQUQ Il9/hR22EgWkDewhQXlWaH6/jJwnsSxRU+s8FKNNSzFyl9/ZqTYY5aAskfl7PkMlkmOsD6sUWSh k883bBHdnuxn64rFQiT55LysR7vulDtcDgdjAr5tneInTu+x/bJHDXoNySsXJG9N/7PsJqXPo9t gaZBTxKn11LaGVnCnFKB/sZa1NYnf8vM09YhDUCyZ3EA9RHkgQT5VYucutHBE5Xjy2wMnLzKvVD rr7/J8ucI3ZvJHaWcxG1TgmY09I5V0n2FuW0L8yOrz5nICAlkiRJACjeOgrgsXDdtbRMWWXOiHG A0vqQBrM+Du05DxO+c9BflKb2jx3Ni7cIQ7RxoNbClMaDHHrV5xhwrVsTEWyglBdHQQYzfRCZu2 5fwRnMs0tkWvsbkrCU+ojAdf+ilj5h7/K1TSnTJFg5WvXuy1kOj41B9LTg5TQCfKbLlXg3vni7U uDyoJOEFJd32O3yylVKxtTY8FzUKcMViRmQFF01jrU3LB5lK4QXTBd12VZASW6SfftHKKMQX0W1 jL6eGsSn4FC0X2k1fzhWtne899Dox8TImjqgsVCe8zX1aR1czPFES5IPns3Wkselj5+ru5/s2GO VFdLGtR6dKwmc3g== 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 Fri Oct 10 09:48:03 2025 Received: from mail-ej1-f48.google.com (mail-ej1-f48.google.com [209.85.218.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 1F36A28FA85; Tue, 17 Jun 2025 08:19:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148350; cv=none; b=MeQ7fiPG6Cx4j8vcXHNfe2E1eIABoFf9xRFcIBy/amnYV/mIfyl/wqAYoq+Fxs+YBQqU0DNO1JiFLqVKOIADNzthLAjZXcZAwudTdfxh0uoERaa+qCCFzC2sd5d6VfTr3WxUxJgmg8QtGE8YeSQ/kmJwIXbcmvNT+C/8vl1jSyk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148350; c=relaxed/simple; bh=zSahHAyNc5DOSjDOrc5CjUcgeEcPOt9C4NT28ZOvawA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=IcjEAp/jruo3VCC8EIkNS5YfdtASo7pEycOSgJPePwnRYG/9rlVnAt39TMh0wMJ36OvKCZO6y82H2fhM+b1rLvah6GU2XMv5lmbRDUtqQcL6z1c8ts3KgjZv9UZSY2ZmKRc0PoNIvWCSyh/aQNjTQn4Emsf5HiGoQrLPxEdgtGo= 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.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-ej1-f48.google.com with SMTP id a640c23a62f3a-adb2bb25105so924541066b.0; Tue, 17 Jun 2025 01:19:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750148347; x=1750753147; 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=giTW7znVD69XBZeoGL/PUt22VKtB6t0VkznScyniKDxkD6aRiDCMNglRpuAACX2SOu UO0FuXdYPimFlRt92d6GEfk9cMzvgVZOn9Z8gGGA4HAdeqt0qhKjgmW1SRy7lI2J52pl BD8T62ExblZ6g+qunvrOVRn2f+0+px4Zb61dUlwLmckkntwrxETEq2B2hFDS+7YuKhgE ls7JTghJKhw1ibdyI0LftEBY0iaZFt8vYmIsEvju4LvsrLTj3QNSWwyKTfwSryVyupIW PiOSufPXvyhaJR4If3n8iEO1IKoKpnFhhzpjhbs3eHzeebt44zTAvCAbiuLlqGs03Njv /CCg== X-Forwarded-Encrypted: i=1; AJvYcCVfXKHk5Gkl3nBgPq3ypSlJFfm7fZCzQMGkX8RXsvlePbXSY1VhLub0+8lqK9rm7PGcG2RJxMSowr8UtpZ641GL@vger.kernel.org, AJvYcCXw5x7hp70t5HP1kRTOboxzaleXRvdkb3dpfg+sP57um1CiyRbIGTxngJ1sdzJk+xe9xVgKykdne8SUaAI=@vger.kernel.org X-Gm-Message-State: AOJu0YyTOiP3+dv3Dvs9kjB+zOlBtRXOCVLlUIM5UULuV3WUNyCc6b2a CPJSwR+/DYnK8hfeuYZU5e2NtclfRJ2DID1FkevXB5+hjqIyQElsmf0JPxlvHA== X-Gm-Gg: ASbGncv5aGgmE34IIEHgh11GbM0tFPl/1lQWNxMbuBBHbGrsBi+EdS71xVcb9AkWwS2 /KOoGk5o6vWBWi6AFuW6UOdtXDpZ4T3hkQyYsfIeP7SEW5dynLZsumKwYiFqMuPilUm2vMTlLD3 mGDwmcMEu9pjj7uDxXP0E82gsNoNUYxrplJ2xlXiFIcBPHCwnqa3HkwpJBstSL1TdBOiNwRtZH/ B8cfWvNa/vBjSJKTdB1V+F6pusZsDDBBsWGGO8+mHsTlS6LDZH8RWJ+J6JiNgcx7iGcB2Z+J+rp FuQy8pFzeSY/lyL3EjJEkxBMrjtaGNi7M3txT+IQaTMI+7NJXQrZDuEIIqDCMgg= X-Google-Smtp-Source: AGHT+IE6do/tauMsh593lKnCKN/UhMYGoMcr2fi8w9aKtlP8oACRmL0Vnl1YvCwuWQPQw/y0z+yZtw== X-Received: by 2002:a17:906:f587:b0:adb:45eb:7d0b with SMTP id a640c23a62f3a-adfad320f5amr1156169066b.15.1750148347183; Tue, 17 Jun 2025 01:19:07 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:4::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adec88fed6esm818235766b.103.2025.06.17.01.19.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:19:06 -0700 (PDT) From: Breno Leitao Date: Tue, 17 Jun 2025 01:18:58 -0700 Subject: [PATCH net-next v3 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: <20250617-netdevsim_stat-v3-2-afe4bdcbf237@debian.org> References: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@debian.org> In-Reply-To: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@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=1307; i=leitao@debian.org; h=from:subject:message-id; bh=zSahHAyNc5DOSjDOrc5CjUcgeEcPOt9C4NT28ZOvawA=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoUST29i8ZdzNuLthjSAm8ILxp/8HE4N03WuDmh EsJ33cWIqSJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFEk9gAKCRA1o5Of/Hh3 beAtD/9zpxcfZ/37WLYRBVMHXk/C/Te8pEh0t9sKzN9nhwFLcIaTIzRFQfc8WrDMQBhCCWPQ3j4 XWp3aULBm2+MEriEIH1QpCP9bayQ/3xvI9f8tYyd/6eWSAXgb16bWGfEqI0FSvNjrmyYvd+3W9w TLFQe8aQXSR4Hz37SKYjePhIYcD6qdSYpR+QntfLCdKPLLhGg0QhTvyCskykbOvwUwRHUusj2a5 a2z+vdhXzFLkUMLQ0qE+dR4HQ0E4Ge/GF6G7k0t/+AZtY+mwStm4fb70j5ebHkN8Zetgc3YHgzg 3eOurnPgPpcJUKxxzfZlnLWpKdOxeRf4mEPAwhC7uG6khX8/wCLwiPNmuwogQPUvrnNtVe9sTyV lsabNtGiy86KYRjeaNkwKsEgeyikPGRRgoVPxJDYQbMUDY384Y+Gr00owpo8bZmzO5PUVuUtEEn lbLKgTcuGnP1JEwuGY9L4L+cY5Z2O62rqNPLROaPguUx+K09yM22h1rcMPlb/uRRP0MHlD9Lhqq 6GszUqvhQO1XtV2atsAycDmK+cQ9y5TeoijCiti2Y1e5z421LuM4Em+UVav2ykPzMFPjIxbLq9W oX2yVzYsuUshP9WNiWWtr/zd6ZeZJLc4mJE1CHJF6tGz2J7u8uRjE69DcYBogcwRctfJfJ0Og6N XUtoMb03C9NYJMg== 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 Reviewed-by: Joe Damato --- 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 Fri Oct 10 09:48:03 2025 Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.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 95F3D29009A; Tue, 17 Jun 2025 08:19:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148352; cv=none; b=ME6516n66YEtSZZYGyozndHa8vutTyc3PB959VMe/qQdtCvlELdXEWviAn2P632U7VXd8TIGDBz92xXDiSQPK3RRmZxP1FMSlTPAIEkbG11Jzy2NWNxyQ2fZAhoJuGumAFNNAW8rBTHsV/T0sWsyXMWYSSklcIir/lcGMtrDJGo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148352; c=relaxed/simple; bh=6KqcuxofpPsD8Kfi3BaEJDLfN4REYeQs+F9WSLu+yZI=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=M8p+aNtAGLLW5qHBquTchxXpyecdxlerwVrXSZ0/KpA5OQ7LemtKPrPeJM3obP9OYeefcG480gF5gK8yNoyf+I9tQhpjO4svZpwtbUILa0mz89RLmZPVjFXF5msGw637q/m2EM93sV7S1ixY2kW2MUz6EavmHjfDBDF7sfvA2/0= 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.49 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-f49.google.com with SMTP id a640c23a62f3a-ad891bb0957so963520466b.3; Tue, 17 Jun 2025 01:19:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750148349; x=1750753149; 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=LK3wuFiZffMBcWK/Hg3C4XwuR6uKDvuDVe6hhGIvxWQ=; b=Ky4jjrGmm6pdzRZV4V+JTnjIZO7Tjv+77XtNbs9s1xSsn4cLIm3Xl1D6RU/NL8Ww33 CcLbqT61mq4MkUdsDZ3IYgr91juBQFPDn/W+fkvV4pim35IxJ99RvymjHpF4FqNAOXwc UDB4CFuZcVMth8hJ4rvlwWfAuWEqAEu7ltV0Q/Xu9mrxQU2Y5kH4SsToNXwyMi3NXqt2 1lI7Kw3PAuPLsbS9ZPKp/rzqJ1gqmLmsVZvd9ZDcfPXL3+PbQU1MVSfudXxNbkvRz8NC 1ca4cTthQqKopM/BmrfDNSJ4HjDCNJ9c0os4z/4WPsqQ/fsCUmiW6FUSMYBoUXASYTG/ /wCg== X-Forwarded-Encrypted: i=1; AJvYcCWBoPaUeC0h2B+EFIAD54RD1iY0bBnP4FmRbALlwSTnyqi5J8/fIARLeW+/lJGTzhenvsamoDlKbVYnRoQ5Fi+t@vger.kernel.org, AJvYcCWHfEYve/oCD1O6pIt1DLzOHCmxZ0DX2Q+mFcmZwHfPuWQVdnn8VT+1smwpAZGnwksod2TggGqjpULDuqY=@vger.kernel.org X-Gm-Message-State: AOJu0Yy0iaajNPs1Vk6Ih+VJW4+pByptvdQy1/Sw9LVAO0m8BRsYUF6b GeINFAMX/vUnnJoQfR65iA5QJsc4+YTIQnSgBq7WwA2s3rhdgW6yhOGi X-Gm-Gg: ASbGncsaUgh54Ob1UC3rKSn7FzfMGfD5hj3A2QQkT6zAGAmN5/V7HyHIkcWP0oA3ZPU toG+WRCVpLx8THQvfGFo/WH+k41LJucQPl8J9YQfxF/jCqnTaKgEmuSYSCTZK/ICSoK4rUZmnac tEMoGAmGKINMHXR2NYwg00p23+YI89s+ZLz6fsDnQYxRUZ8L/M0oHir75QFOQdaZdKKrt+/Zgzn KNAhNRXxTNxgCrWcRLiMJkMHaPR2mNpHdMvl9EkMlfmOtihC04ZQRT7BGS5xnIOgdTjz6+RtNeA ySiQAgC5RKXVMrNEz3wz6omjThV5NLTOg3KxrjgMry7goZrQm5cm X-Google-Smtp-Source: AGHT+IGPd9RrwLh6ClBJ9coVRwCRPH367olEReknIBJhEd6TWHx/Nbn6BexdTmRqYDEIk2dJkP7zhg== X-Received: by 2002:a17:907:d94:b0:ad8:8621:9241 with SMTP id a640c23a62f3a-adfad4f6509mr1278161466b.54.1750148348523; Tue, 17 Jun 2025 01:19:08 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:8::]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-adfbfe03b0csm503498166b.121.2025.06.17.01.19.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:19:08 -0700 (PDT) From: Breno Leitao Date: Tue, 17 Jun 2025 01:18:59 -0700 Subject: [PATCH net-next v3 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: <20250617-netdevsim_stat-v3-3-afe4bdcbf237@debian.org> References: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@debian.org> In-Reply-To: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@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=1158; i=leitao@debian.org; h=from:subject:message-id; bh=6KqcuxofpPsD8Kfi3BaEJDLfN4REYeQs+F9WSLu+yZI=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoUST29Z8RkYLuaV2yrqsTuSaxEgrEcpqeY77sU BcwYCTM6mOJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFEk9gAKCRA1o5Of/Hh3 bX0rEACXKAVC/yqIK3b6PQsl04gX7XSZoEsOrV/UGQ9i78wG/5hRBk5jEepDr19A097lQCn6pl1 c7xjAv5njSAOgsw3fn7OIpYvDcnxgL5gKWO47dD3/VLo7emj/GP0amuiABQ5RQUDHxBW8aR3uXk n9QmDyFckAIijATZO5ZQQ3ZHujnO8sovbODHUGubZNxMvaRd9Q/mscUT+byaC5BJZADzt5veVT0 lea89PMzVSO+qDI8F4iiP2tdU3OifD8Kw8Xzjb08eRIz0ZVYT6Ngfq5gniHXf7Y2735QRai6sDw ocr9bkeGezHPn4/U0Qm+bMno0UVNpDImSSAdvdkjCFrJjrGm5fk4zg1mP3tAYSQWWOckJjPOH7+ 6u+AjbdHpZg7b1a4TbO19d5QrD+mUWvCwUzuliRALGrUK8Tp+zxJ3T40nbwnijBgt0Sz+PjfdTH IvwsbhHt1npEpftiBdWcACaOXL61nRCaL6wcbuyM0aQaWuch9uK5bUFxqn7kJRKwSo7yElXVNZy MCYI+lnhWeRu2prd/99tA/0Ql3IVLhqWkFIVdXPIyzHlhHDU4nZxI9QNsBU4QteKTNkbQ12zdVo kGZedgltJcJdwGybEgf3WjQoBa2g9cv7zFIoxn2PwGvlA+kGY9xubh/kKpBx+tWLq+RpOsbFts/ Hdnj68Hien6eVoA== 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 Reviewed-by: Joe Damato --- 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 Fri Oct 10 09:48:03 2025 Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) (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 DC47D291157; Tue, 17 Jun 2025 08:19:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148353; cv=none; b=EEQoXcK7eCptmJm4gySBJEw0bggVc/OvDjncoF5fq6B8xAG81D8nJJr/S4StEa+UjrGh4MCjsuSJ3UXkufzQS2WR4nx1dkj8gQ5r8VmdxGsBVlT6+84IU425E5Lz65/jREECSO8ovhFS1SvV29kqWyei5xrEzHmoqO1+Ge4p+8w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1750148353; c=relaxed/simple; bh=7bTE/G7XUwA/kVf5XxBEU/9ZUs5UqQAeJdICImaJLPY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=StV7Xe1y1jbc1+ILfwABYJJsLd6Nb+hIVVaiIkgfLdusev+gOVlmZCVyYpIpiOrxZNmPqDN8J0hTAO/+r5qu63J1eq/UbSuzTUwdbM+ltyP880Mip46qWoF3up3fbB1GsvUsQShsj44tCc4NXI+2wg/mEXGfDVYPeC10lLest2s= 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.43 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-f43.google.com with SMTP id a640c23a62f3a-ad89333d603so1003322066b.2; Tue, 17 Jun 2025 01:19:11 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750148350; x=1750753150; 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=LeajAKYpoows+g4P7650D8aOy+Pi3G5qwSfEQ3Y1fI8=; b=SRCoAnEBzTx2pfVRqjmRlmJLz2WS/nCkgdSe484TGg3SaHIvkuCVQKmV0ey2K499bG 6bMGxd07mBPXIqS9jK3/QPAfCfOMRT23HMu3nz6lI30E1AtKwdgIqjFJIUsTkOaWgWJp W4ebGJMTK26Fwzncq8EEG+DopGyClN2HB1M38kkuKXHYN5oVXcBl7JYt74lIqcM2eTMP UdytsGXGoVKx9YlQrp1VSu38N0sNiJSOyPTk6R8wgxs5Hd62I9iVfUgfpnMKg7HOTJZ0 2Lz2+5DtDtuMVaUIgJOQKUgLrE+pP0vmqbJuH5n7yir5qLHsIC9cbXrlCY+hDPFmNpKR tizQ== X-Forwarded-Encrypted: i=1; AJvYcCVE7qKSSmRJQ5JzbaCGHfihrx5by+eKqyZkUYULC5nvUDhB+NjoShPX84bhLb4hNFoXFmxhIN9vnAwHORNCL0Yr@vger.kernel.org, AJvYcCXbFBIcsp+XglSO/1BeS+XcmSzgnr4at3K8Qo/9AgJlQq8AwgfxsPF0qigjyQeHkBdugL0Djt2mEp6Ut1o=@vger.kernel.org X-Gm-Message-State: AOJu0YxeUNkOl3HR2ER/VzWAxVR9TxNYgkYVQGfQosm/Q0KgaL4tDtk1 joqp+84/gWp033MCVEHwhI6EWnwSVgQet1rW4dNeQTN0+gyyBv9ArzLu X-Gm-Gg: ASbGncviqmguTB/zCfKCNZ9AYrd5Tnl57pPfKyT5t/1MvqETixhvRMJoCa5Iv+FBV4F ukVlxSHH+pCYKVWOUsUvzXi8wSlCigXpezgk1Jjr/POkXS7WJrzY9i00uHHDikbUj2s0aR9b9sw Q34aiTKofcdO3mt5LS0MoVrPQFaJq8jnQNdDu64hVTWZysJ4NEgG3QCYm1ZgK2QtS+HdEtOg+MW tzY0tgqjMpSfmJzpP4lBuMHqGSWXaxQA8BApMWzWn5mEwyzux4r81EHp8RElJKhs8OpwwfwaeeM q9hsYFVNP1aygKakb6aEzKAo26meJ9eBQJAnHqMrgLpZrRgFdl6/ X-Google-Smtp-Source: AGHT+IF0mLEPQrvM663gaZ8FaaBbSS2col1J40tAb3DaS7Lz7DmEBxKbo3aAuqpplB49aCZ4TGoybA== X-Received: by 2002:a17:906:c105:b0:ad8:8529:4f7e with SMTP id a640c23a62f3a-adfad5d023amr1097081566b.53.1750148350038; Tue, 17 Jun 2025 01:19:10 -0700 (PDT) Received: from localhost ([2a03:2880:30ff:7::]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-60992edde8dsm513899a12.23.2025.06.17.01.19.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Jun 2025 01:19:09 -0700 (PDT) From: Breno Leitao Date: Tue, 17 Jun 2025 01:19:00 -0700 Subject: [PATCH net-next v3 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: <20250617-netdevsim_stat-v3-4-afe4bdcbf237@debian.org> References: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@debian.org> In-Reply-To: <20250617-netdevsim_stat-v3-0-afe4bdcbf237@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=1770; i=leitao@debian.org; h=from:subject:message-id; bh=7bTE/G7XUwA/kVf5XxBEU/9ZUs5UqQAeJdICImaJLPY=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBoUST3PrLTzP3psEvjdg5T0ylUHZIFtN2Bjmecu KNlL35baYeJAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaFEk9wAKCRA1o5Of/Hh3 bQVID/4hMQtm+luiiBqD6qkSR92UwcTtZYmySSKba4eQkLE996vNi8E9ow1WBxfuDFDyCYiLIhP h6Y2wpJsHZQ45G3dES+u44D+hdA6olGC58Pb4I9bWxoXh3Ak9Altws4x2XWctOtUjrQpp/unVUT CJLsAfDqM7j7TqNezss79EA/N+jOdFzHzb/aKO/obA/T4ahT0YfBcpohxTVGqofZahZyGq1rzEw 37wbHhgriYSBNLyjmDTl5XHCDvojfbVek0Or8YS92Oy2khnxAUf0ITukyIKh6LN3OexInOyb9iN AX04d6yCOwdDLpzUVTxENzUl90YKPbptpdIIJKtSm9Hd21dDYlJ3UwEZtdNGCjEFLuz18YC5A3O 61WH/3HDsjIG4uYoCwitO7ISbuu5ZBAHopEMDLeWjgqmC+HxwHcLGIStDMdJn7Wd7plZFR9tnfS ympRhYXcYAFvQCzk/Q72JHhuRqHnEP75QABkNVrYNbIuBgr9nOp0iRrXtjiLs3byzv3w/+l27CD vlaywv/AmOWZeMEFfgh7qfLVyN71ObNJdN9eg8cPH4JmR24kZo6HTHnK93gKvH+BOU/MlrQa8ha qioUx0mOSfbqy3Lrv8T3/4an0eGLVAYvysA2aVCc/YOG3rch82SwTGQoaXgv+kRlM47lhTMyQvW lVb77YIC0jGJbkw== 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 | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/net/netdevsim/netdev.c b/drivers/net/netdevsim/netdev.c index de309ff69e43e..5d0b801e81129 100644 --- a/drivers/net/netdevsim/netdev.c +++ b/drivers/net/netdevsim/netdev.c @@ -632,9 +632,10 @@ 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); + dev_dstats_rx_dropped_add(dev, rq->skb_queue.qlen); skb_queue_purge_reason(&rq->skb_queue, SKB_DROP_REASON_QUEUE_PURGE); kfree(rq); } @@ -681,7 +682,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 +696,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 +914,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