DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
	Kishore Padmanabha <kishore.padmanabha@broadcom.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>
Subject: [PATCH v3 45/65] net/bnxt: use kvargs numeric helpers
Date: Wed, 30 Sep 2026 15:41:03 -0700	[thread overview]
Message-ID: <20260930224340.58580-46-stephen@networkplumber.org> (raw)
In-Reply-To: <20260930224340.58580-1-stephen@networkplumber.org>

All fourteen handlers repeat the same open coded conversion, testing
errno for ERANGE without ever clearing it first. A stale ERANGE left by
earlier code therefore rejects a valid value, and the test only fires at
all when the result happens to be ULONG_MAX.

The per-argument range checks are left as they are, since they carry the
documented limits for each devarg.

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 drivers/net/bnxt/bnxt_ethdev.c | 106 ++++++++++-----------------------
 1 file changed, 32 insertions(+), 74 deletions(-)

diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c
index 4d4349457c..2942482579 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -5872,8 +5872,7 @@ bnxt_parse_devarg_flow_xstat(__rte_unused const char *key,
 			     const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long flow_xstat;
-	char *end = NULL;
+	uint64_t flow_xstat;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -5881,9 +5880,7 @@ bnxt_parse_devarg_flow_xstat(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	flow_xstat = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (flow_xstat == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &flow_xstat) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to flow_xstat devarg.");
 		return -EINVAL;
@@ -5907,8 +5904,7 @@ bnxt_parse_devarg_max_num_kflows(__rte_unused const char *key,
 					const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long max_num_kflows;
-	char *end = NULL;
+	uint64_t max_num_kflows;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -5916,9 +5912,7 @@ bnxt_parse_devarg_max_num_kflows(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	max_num_kflows = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-		(max_num_kflows == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &max_num_kflows) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			"Invalid parameter passed to max_num_kflows devarg.");
 		return -EINVAL;
@@ -5932,8 +5926,8 @@ bnxt_parse_devarg_max_num_kflows(__rte_unused const char *key,
 
 	bp->max_num_kflows = max_num_kflows;
 	if (bp->max_num_kflows)
-		PMD_DRV_LOG_LINE(INFO, "max_num_kflows set as %ldK.",
-				max_num_kflows);
+		PMD_DRV_LOG_LINE(INFO, "max_num_kflows set as %uK.",
+				(unsigned int)max_num_kflows);
 
 	return 0;
 }
@@ -5943,8 +5937,7 @@ bnxt_parse_devarg_cqe_mode(__rte_unused const char *key,
 			   const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long cqe_mode;
-	char *end = NULL;
+	uint64_t cqe_mode;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -5953,9 +5946,7 @@ bnxt_parse_devarg_cqe_mode(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	cqe_mode = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (cqe_mode == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &cqe_mode) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to cqe-mode "
 			    "devargs.");
@@ -5980,8 +5971,7 @@ bnxt_parse_devarg_app_instance_id(__rte_unused const char *key,
 				  const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long app_instance_id;
-	char *end = NULL;
+	uint64_t app_instance_id;
 
 	if (!opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -5989,9 +5979,7 @@ bnxt_parse_devarg_app_instance_id(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	app_instance_id = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (app_instance_id == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &app_instance_id) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 				 "Invalid parameter passed to instance devargs");
 		return -EINVAL;
@@ -6014,8 +6002,7 @@ bnxt_parse_devarg_app_id(__rte_unused const char *key,
 				 const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long app_id;
-	char *end = NULL;
+	uint64_t app_id;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6024,9 +6011,7 @@ bnxt_parse_devarg_app_id(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	app_id = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (app_id == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &app_id) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to app_id "
 			    "devargs.");
@@ -6050,8 +6035,7 @@ bnxt_parse_devarg_ieee_1588(__rte_unused const char *key,
 			    const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long ieee_1588;
-	char *end = NULL;
+	uint64_t ieee_1588;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6060,9 +6044,7 @@ bnxt_parse_devarg_ieee_1588(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	ieee_1588 = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (ieee_1588 == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &ieee_1588) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to ieee_1588 "
 			    "devargs.");
@@ -6094,8 +6076,7 @@ bnxt_parse_devarg_rep_is_pf(__rte_unused const char *key,
 			    const char *value, void *opaque_arg)
 {
 	struct bnxt_representor *vfr_bp = opaque_arg;
-	unsigned long rep_is_pf;
-	char *end = NULL;
+	uint64_t rep_is_pf;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6103,9 +6084,7 @@ bnxt_parse_devarg_rep_is_pf(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep_is_pf = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep_is_pf == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep_is_pf) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to rep_is_pf devargs.");
 		return -EINVAL;
@@ -6131,8 +6110,7 @@ bnxt_parse_devarg_rep_based_pf(__rte_unused const char *key,
 			       const char *value, void *opaque_arg)
 {
 	struct bnxt_representor *vfr_bp = opaque_arg;
-	unsigned long rep_based_pf;
-	char *end = NULL;
+	uint64_t rep_based_pf;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6141,9 +6119,7 @@ bnxt_parse_devarg_rep_based_pf(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep_based_pf = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep_based_pf == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep_based_pf) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to rep_based_pf "
 			    "devargs.");
@@ -6169,8 +6145,7 @@ bnxt_parse_devarg_rep_q_r2f(__rte_unused const char *key,
 			    const char *value, void *opaque_arg)
 {
 	struct bnxt_representor *vfr_bp = opaque_arg;
-	unsigned long rep_q_r2f;
-	char *end = NULL;
+	uint64_t rep_q_r2f;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6179,9 +6154,7 @@ bnxt_parse_devarg_rep_q_r2f(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep_q_r2f = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep_q_r2f == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep_q_r2f) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to rep_q_r2f "
 			    "devargs.");
@@ -6206,8 +6179,7 @@ bnxt_parse_devarg_rep_q_f2r(__rte_unused const char *key,
 			    const char *value, void *opaque_arg)
 {
 	struct bnxt_representor *vfr_bp = opaque_arg;
-	unsigned long rep_q_f2r;
-	char *end = NULL;
+	uint64_t rep_q_f2r;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6216,9 +6188,7 @@ bnxt_parse_devarg_rep_q_f2r(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep_q_f2r = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep_q_f2r == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep_q_f2r) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to rep_q_f2r "
 			    "devargs.");
@@ -6243,8 +6213,7 @@ bnxt_parse_devarg_rep_fc_r2f(__rte_unused const char *key,
 			     const char *value, void *opaque_arg)
 {
 	struct bnxt_representor *vfr_bp = opaque_arg;
-	unsigned long rep_fc_r2f;
-	char *end = NULL;
+	uint64_t rep_fc_r2f;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6253,9 +6222,7 @@ bnxt_parse_devarg_rep_fc_r2f(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep_fc_r2f = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep_fc_r2f == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep_fc_r2f) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to rep_fc_r2f "
 			    "devargs.");
@@ -6270,7 +6237,7 @@ bnxt_parse_devarg_rep_fc_r2f(__rte_unused const char *key,
 
 	vfr_bp->flags |= BNXT_REP_FC_R2F_VALID;
 	vfr_bp->rep_fc_r2f = rep_fc_r2f;
-	PMD_DRV_LOG_LINE(INFO, "rep-fc-r2f = %lu", rep_fc_r2f);
+	PMD_DRV_LOG_LINE(INFO, "rep-fc-r2f = %u", (unsigned int)rep_fc_r2f);
 
 	return 0;
 }
@@ -6280,8 +6247,7 @@ bnxt_parse_devarg_rep_fc_f2r(__rte_unused const char *key,
 			     const char *value, void *opaque_arg)
 {
 	struct bnxt_representor *vfr_bp = opaque_arg;
-	unsigned long rep_fc_f2r;
-	char *end = NULL;
+	uint64_t rep_fc_f2r;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6290,9 +6256,7 @@ bnxt_parse_devarg_rep_fc_f2r(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep_fc_f2r = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep_fc_f2r == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep_fc_f2r) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 			    "Invalid parameter passed to rep_fc_f2r "
 			    "devargs.");
@@ -6307,7 +6271,7 @@ bnxt_parse_devarg_rep_fc_f2r(__rte_unused const char *key,
 
 	vfr_bp->flags |= BNXT_REP_FC_F2R_VALID;
 	vfr_bp->rep_fc_f2r = rep_fc_f2r;
-	PMD_DRV_LOG_LINE(INFO, "rep-fc-f2r = %lu", rep_fc_f2r);
+	PMD_DRV_LOG_LINE(INFO, "rep-fc-f2r = %u", (unsigned int)rep_fc_f2r);
 
 	return 0;
 }
@@ -6317,8 +6281,7 @@ bnxt_parse_devarg_representor_mode(__rte_unused const char *key,
 				   const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long rep;
-	char *end = NULL;
+	uint64_t rep;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6326,9 +6289,7 @@ bnxt_parse_devarg_representor_mode(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 				 "Invalid param passed to rep mode in devargs");
 		return -EINVAL;
@@ -6346,8 +6307,7 @@ bnxt_parse_devarg_scalar_mode(__rte_unused const char *key,
 			      const char *value, void *opaque_arg)
 {
 	struct bnxt *bp = opaque_arg;
-	unsigned long rep;
-	char *end = NULL;
+	uint64_t rep;
 
 	if (!value || !opaque_arg) {
 		PMD_DRV_LOG_LINE(ERR,
@@ -6355,9 +6315,7 @@ bnxt_parse_devarg_scalar_mode(__rte_unused const char *key,
 		return -EINVAL;
 	}
 
-	rep = strtoul(value, &end, 10);
-	if (end == NULL || *end != '\0' ||
-	    (rep == ULONG_MAX && errno == ERANGE)) {
+	if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &rep) < 0) {
 		PMD_DRV_LOG_LINE(ERR,
 				 "Invalid param passed to scalar mode in devargs");
 		return -EINVAL;
-- 
2.53.0


  parent reply	other threads:[~2026-09-30 22:48 UTC|newest]

Thread overview: 198+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-14  5:46 [PATCH 00/62] kvargs: add numeric conversion helpers and use them Stephen Hemminger
2026-09-14  5:46 ` [PATCH 01/62] net/txgbe: fix FDIR devarg integer width Stephen Hemminger
2026-09-14  5:46 ` [PATCH 02/62] kvargs: add numeric conversion helpers Stephen Hemminger
2026-09-14  5:46 ` [PATCH 03/62] kvargs: add a socket ID handler Stephen Hemminger
2026-09-14  5:46 ` [PATCH 04/62] kvargs: add hexadecimal conversion helpers Stephen Hemminger
2026-09-14  5:46 ` [PATCH 05/62] eal: validate memory size arguments Stephen Hemminger
2026-09-14  5:46 ` [PATCH 06/62] net/null: use kvargs numeric helpers Stephen Hemminger
2026-09-14  5:46 ` [PATCH 07/62] net/vhost: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 08/62] vdpa/ifc: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 09/62] net/softnic: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 10/62] dma/skeleton: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 11/62] raw/skeleton: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 12/62] baseband/null: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 13/62] net/memif: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 14/62] net/af_packet: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 15/62] net/pcap: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 16/62] net/ring: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 17/62] net/af_xdp: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 18/62] net/ark: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 19/62] net/failsafe: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 20/62] net/virtio: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 21/62] net/bonding: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 22/62] net/ena: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 23/62] net/netvsc: " Stephen Hemminger
2026-09-14 12:43   ` [EXTERNAL] " Wei Hu
2026-09-14  5:46 ` [PATCH 24/62] net/ice: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 25/62] net/iavf: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 26/62] net/i40e: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 27/62] net/idpf: " Stephen Hemminger
2026-09-14  5:46 ` [PATCH 28/62] net/cpfl: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 29/62] net/ixgbe: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 30/62] net/txgbe: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 31/62] net/octeontx: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 32/62] net/octeon_ep: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 33/62] net/qede: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 34/62] net/nfb: " Stephen Hemminger
2026-09-14 14:44   ` Martin Spinler
2026-09-14  5:47 ` [PATCH 35/62] net/thunderx: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 36/62] net/i40e: propagate VF queue number parse errors Stephen Hemminger
2026-09-14  5:47 ` [PATCH 37/62] net/cnxk: use kvargs numeric helpers Stephen Hemminger
2026-09-14  5:47 ` [PATCH 38/62] net/xsc: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 39/62] net/hns3: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 40/62] net/enetc: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 41/62] event/dlb2: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 42/62] net/nfp: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 43/62] drivers/crypto: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 44/62] event/sw: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 45/62] net/bnxt: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 46/62] net/bnxt: propagate devargs parsing errors Stephen Hemminger
2026-09-14  5:47 ` [PATCH 47/62] net/mlx4: use kvargs numeric helpers Stephen Hemminger
2026-09-14  5:47 ` [PATCH 48/62] net/sfc: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 49/62] crypto/mvsam: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 50/62] ml/cnxk: use kvargs numeric helpers in cn10k Stephen Hemminger
2026-09-14  5:47 ` [PATCH 51/62] ml/cnxk: use kvargs numeric helpers in mvtvm Stephen Hemminger
2026-09-14  5:47 ` [PATCH 52/62] event/opdl: use kvargs numeric helpers Stephen Hemminger
2026-09-14  5:47 ` [PATCH 53/62] mempool/cnxk: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 54/62] event/octeontx: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 55/62] baseband/turbo_sw: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 56/62] baseband/la12xx: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 57/62] dma/hisi_acc: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 58/62] crypto/virtio: " Stephen Hemminger
2026-09-14  5:47 ` [PATCH 59/62] net/ice: use kvargs hex helper for debug mask Stephen Hemminger
2026-09-14  5:47 ` [PATCH 60/62] net/hns3: use kvargs hex helper for capability mask Stephen Hemminger
2026-09-14  5:47 ` [PATCH 61/62] net/cxgbe: use kvargs numeric helpers Stephen Hemminger
2026-09-14  5:47 ` [PATCH 62/62] doc: note kvargs devargs conversion in release notes Stephen Hemminger
2026-09-29 16:36 ` [PATCH v2 00/61] kvargs: add numeric conversion helpers Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 01/61] " Stephen Hemminger
2026-09-30  0:49     ` fengchengwen
2026-09-29 16:36   ` [PATCH v2 02/61] kvargs: add a socket ID handler Stephen Hemminger
2026-09-30  1:01     ` fengchengwen
2026-09-29 16:36   ` [PATCH v2 03/61] kvargs: add hexadecimal conversion helpers Stephen Hemminger
2026-09-30  1:07     ` fengchengwen
2026-09-29 16:36   ` [PATCH v2 04/61] eal: validate memory size arguments Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 05/61] net/null: use kvargs numeric helpers Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 06/61] net/vhost: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 07/61] vdpa/ifc: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 08/61] net/softnic: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 09/61] dma/skeleton: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 10/61] raw/skeleton: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 11/61] baseband/null: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 12/61] net/memif: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 13/61] net/af_packet: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 14/61] net/pcap: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 15/61] net/ring: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 16/61] net/af_xdp: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 17/61] net/ark: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 18/61] net/failsafe: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 19/61] net/virtio: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 20/61] net/bonding: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 21/61] net/ena: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 22/61] net/netvsc: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 23/61] net/ice: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 24/61] net/iavf: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 25/61] net/i40e: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 26/61] net/idpf: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 27/61] net/cpfl: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 28/61] net/ixgbe: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 29/61] net/txgbe: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 30/61] net/octeontx: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 31/61] net/octeon_ep: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 32/61] net/qede: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 33/61] net/nfb: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 34/61] net/thunderx: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 35/61] net/i40e: propagate VF queue number parse errors Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 36/61] net/cnxk: use kvargs numeric helpers Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 37/61] net/xsc: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 38/61] net/hns3: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 39/61] net/enetc: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 40/61] event/dlb2: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 41/61] net/nfp: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 42/61] drivers/crypto: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 43/61] event/sw: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 44/61] net/bnxt: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 45/61] net/bnxt: propagate devargs parsing errors Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 46/61] net/mlx4: use kvargs numeric helpers Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 47/61] net/sfc: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 48/61] crypto/mvsam: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 49/61] ml/cnxk: use kvargs numeric helpers in cn10k Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 50/61] ml/cnxk: use kvargs numeric helpers in mvtvm Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 51/61] event/opdl: use kvargs numeric helpers Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 52/61] mempool/cnxk: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 53/61] event/octeontx: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 54/61] baseband/turbo_sw: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 55/61] baseband/la12xx: " Stephen Hemminger
2026-09-29 16:36   ` [PATCH v2 56/61] dma/hisi_acc: " Stephen Hemminger
2026-09-29 16:37   ` [PATCH v2 57/61] crypto/virtio: " Stephen Hemminger
2026-09-29 16:37   ` [PATCH v2 58/61] net/ice: use kvargs hex helper for debug mask Stephen Hemminger
2026-09-29 16:37   ` [PATCH v2 59/61] net/hns3: use kvargs hex helper for capability mask Stephen Hemminger
2026-09-29 16:37   ` [PATCH v2 60/61] net/cxgbe: use kvargs numeric helpers Stephen Hemminger
2026-09-29 16:37   ` [PATCH v2 61/61] doc: note kvargs devargs conversion in release notes Stephen Hemminger
2026-09-30  1:14   ` [PATCH v2 00/61] kvargs: add numeric conversion helpers fengchengwen
2026-09-30 15:21     ` Stephen Hemminger
2026-09-30 22:40 ` [PATCH v3 00/65] " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 01/65] net/ring: make numa node signed Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 02/65] kvargs: add numeric conversion helpers Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 03/65] kvargs: add a socket ID handler Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 04/65] kvargs: add hexadecimal conversion helpers Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 05/65] eal: validate memory size arguments Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 06/65] net/null: use kvargs numeric helpers Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 07/65] net/vhost: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 08/65] vdpa/ifc: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 09/65] net/softnic: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 10/65] dma/skeleton: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 11/65] raw/skeleton: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 12/65] baseband/null: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 13/65] net/memif: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 14/65] net/af_packet: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 15/65] net/pcap: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 16/65] net/ring: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 17/65] net/af_xdp: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 18/65] net/ark: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 19/65] net/failsafe: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 20/65] net/virtio: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 21/65] net/bonding: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 22/65] net/ena: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 23/65] net/netvsc: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 24/65] net/ice: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 25/65] net/iavf: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 26/65] net/i40e: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 27/65] net/idpf: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 28/65] net/cpfl: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 29/65] net/ixgbe: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 30/65] net/txgbe: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 31/65] net/octeontx: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 32/65] net/octeon_ep: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 33/65] net/qede: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 34/65] net/nfb: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 35/65] net/thunderx: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 36/65] net/i40e: propagate VF queue number parse errors Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 37/65] net/cnxk: use kvargs numeric helpers Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 38/65] net/xsc: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 39/65] net/hns3: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 40/65] net/enetc: " Stephen Hemminger
2026-09-30 22:40   ` [PATCH v3 41/65] event/dlb2: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 42/65] net/nfp: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 43/65] drivers/crypto: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 44/65] event/sw: " Stephen Hemminger
2026-09-30 22:41   ` Stephen Hemminger [this message]
2026-09-30 22:41   ` [PATCH v3 46/65] net/bnxt: propagate devargs parsing errors Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 47/65] net/mlx4: use kvargs numeric helpers Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 48/65] net/sfc: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 49/65] crypto/mvsam: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 50/65] ml/cnxk: use kvargs numeric helpers in cn10k Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 51/65] ml/cnxk: use kvargs numeric helpers in mvtvm Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 52/65] event/opdl: use kvargs numeric helpers Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 53/65] mempool/cnxk: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 54/65] event/octeontx: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 55/65] baseband/turbo_sw: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 56/65] baseband/la12xx: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 57/65] dma/hisi_acc: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 58/65] crypto/virtio: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 59/65] net/ice: use kvargs hex helper for debug mask Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 60/65] net/hns3: use kvargs hex helper for capability mask Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 61/65] net/cxgbe: use kvargs numeric helpers Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 62/65] kvargs: add range conversion handlers Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 63/65] event/sw: use kvargs range handlers Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 64/65] net/cnxk: " Stephen Hemminger
2026-09-30 22:41   ` [PATCH v3 65/65] doc: note kvargs devargs conversion in release notes Stephen Hemminger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260930224340.58580-46-stephen@networkplumber.org \
    --to=stephen@networkplumber.org \
    --cc=ajit.khaparde@broadcom.com \
    --cc=dev@dpdk.org \
    --cc=kishore.padmanabha@broadcom.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox