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>,
	Bruce Richardson <bruce.richardson@intel.com>,
	Anatoly Burakov <anatoly.burakov@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>, Ke Zhang <ke1x.zhang@intel.com>,
	Kevin Liu <kevinx.liu@intel.com>
Subject: [PATCH v2 23/61] net/ice: use kvargs numeric helpers
Date: Tue, 29 Sep 2026 09:36:26 -0700	[thread overview]
Message-ID: <20260929163800.1108305-24-stephen@networkplumber.org> (raw)
In-Reply-To: <20260929163800.1108305-1-stephen@networkplumber.org>

parse_u32() open codes the errno, end pointer and range checks that the
helper does.

parse_tx_sched_levels() assigns before validating and uses base 0, so a
leading zero silently selects octal.

handle_field_offs_arg() converts with atoi(), which reports no error,
and stores the result through a uint8_t pointer while the caller passes
&xtr_field_offs, which is an int. Only one byte of a four byte field
was written. Convert with rte_kvargs_to_int() and store through an int
pointer instead. The range starts at zero, which keeps the old isdigit()
rejection of a negative value: -1 is used internally to mean that no
extraction field is configured.

The debug_mask parser is converted separately, later in this series,
since it needs the hexadecimal handler rather than a decimal one.

parse_bool() stored an int through the pointer it was given, but three
of its five callers pass the address of a uint8_t field in struct
ice_devargs: default_mac_disable, ddp_load_sched and source_prune.
Each of those parsed four bytes over a one byte field and corrupted
whatever followed it. default_mac_disable is the worst of the three,
since it is immediately followed by proto_xtr[ICE_MAX_QUEUE_NUM], which
ice_parse_devargs() has just initialized when the argument is parsed.

All five arguments are booleans, so make the fields bool and use
rte_kvargs_handle_bool(), which removes the mismatch along with the
hand written parser. A bare key such as "safe-mode-support" now enables
the option, and the usual spellings are accepted.

Bugzilla ID: 2037
Bugzilla ID: 2038
Fixes: 66214b547c65 ("net/ice: add option to disable default MAC")
Fixes: df539aaf35cb ("net/ice: refactor flex descriptor protocol field extraction")

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
 drivers/net/intel/ice/ice_ethdev.c | 102 +++++++++--------------------
 drivers/net/intel/ice/ice_ethdev.h |  10 +--
 2 files changed, 36 insertions(+), 76 deletions(-)

diff --git a/drivers/net/intel/ice/ice_ethdev.c b/drivers/net/intel/ice/ice_ethdev.c
index dfee07c457..4c3db27812 100644
--- a/drivers/net/intel/ice/ice_ethdev.c
+++ b/drivers/net/intel/ice/ice_ethdev.c
@@ -8,6 +8,7 @@
 
 #include <ctype.h>
 #include <fcntl.h>
+#include <limits.h>
 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -15,6 +16,7 @@
 #include <math.h>
 
 #include <rte_tailq.h>
+#include <rte_kvargs.h>
 #include <rte_os_shim.h>
 
 #include "eal_firmware.h"
@@ -738,18 +740,20 @@ handle_proto_xtr_arg(__rte_unused const char *key, const char *value,
 }
 
 static int
-handle_field_offs_arg(__rte_unused const char *key, const char *value,
-				void *offs_args)
+handle_field_offs_arg(const char *key, const char *value, void *offs_args)
 {
-	uint8_t *offset = offs_args;
+	int64_t offset;
 
-	if (value == NULL || offs_args == NULL)
+	if (offs_args == NULL)
 		return -EINVAL;
 
-	if (!isdigit(*value))
-		return -1;
+	/* A negative offset is reserved: -1 means no field is configured. */
+	if (rte_kvargs_to_int(value, 0, INT_MAX, &offset) < 0) {
+		PMD_DRV_LOG(ERR, "Invalid %s, must be a positive offset", key);
+		return -EINVAL;
+	}
 
-	*offset = atoi(value);
+	*(int *)offs_args = offset;
 
 	return 0;
 }
@@ -1089,7 +1093,7 @@ ice_init_mac_address(struct rte_eth_dev *dev)
 		return -ENOMEM;
 	}
 	/* store it to dev data */
-	if (ad->devargs.default_mac_disable != 1)
+	if (!ad->devargs.default_mac_disable)
 		rte_ether_addr_copy((struct rte_ether_addr *)hw->port_info[0].mac.perm_addr,
 			&dev->data->mac_addrs[0]);
 	return 0;
@@ -1119,7 +1123,7 @@ ice_add_mac_filter(struct ice_vsi *vsi, struct rte_ether_addr *mac_addr)
 	struct ice_adapter *ad = (struct ice_adapter *)hw->back;
 	int ret = 0;
 
-	if (ad->devargs.default_mac_disable == 1 && rte_is_same_ether_addr(mac_addr,
+	if (ad->devargs.default_mac_disable && rte_is_same_ether_addr(mac_addr,
 			(struct rte_ether_addr *)hw->port_info[0].mac.perm_addr)) {
 		PMD_DRV_LOG(ERR, "This Default MAC filter is disabled.");
 		return 0;
@@ -1769,7 +1773,7 @@ ice_setup_vsi(struct ice_pf *pf, enum ice_vsi_type type)
 		 */
 		vsi_ctx.info.sw_id = hw->port_info->sw_id;
 		/* Source Prune */
-		if (ad->devargs.source_prune != 1) {
+		if (!ad->devargs.source_prune) {
 			/* Disable source prune to support VRRP
 			 * when source-prune devarg is not set
 			 */
@@ -2140,25 +2144,6 @@ ice_base_queue_get(struct ice_pf *pf)
 	}
 }
 
-static int
-parse_bool(const char *key, const char *value, void *args)
-{
-	int *i = args;
-
-	if (value == NULL || value[0] == '\0') {
-		PMD_DRV_LOG(WARNING, "key:\"%s\", requires a value, which must be 0 or 1", key);
-		return -1;
-	}
-	if (value[1] != '\0' || (value[0] != '0' && value[0] != '1')) {
-		PMD_DRV_LOG(WARNING, "invalid value:\"%s\" for key:\"%s\", value must be 0 or 1",
-			value, key);
-		return -1;
-	}
-
-	*i = (value[0] == '1');
-	return 0;
-}
-
 static int
 parse_u64(const char *key, const char *value, void *args)
 {
@@ -2178,45 +2163,19 @@ parse_u64(const char *key, const char *value, void *args)
 	return 0;
 }
 
-static int
-parse_u32(const char *key, const char *value, void *args)
-{
-	uint32_t *num = args;
-	unsigned long tmp;
-	char *endptr;
-
-	errno = 0;
-	tmp = strtoul(value, &endptr, 0);
-	if (errno != 0 || endptr == value || *endptr != '\0') {
-		PMD_DRV_LOG(WARNING, "%s: \"%s\" is not a valid u32", key, value);
-		return -1;
-	}
-	if (tmp > UINT32_MAX) {
-		PMD_DRV_LOG(WARNING, "%s: value \"%s\" is out of range", key, value);
-		return -1;
-	}
-
-	*num = (uint32_t)tmp;
-
-	return 0;
-}
-
 static int
 parse_tx_sched_levels(const char *key, const char *value, void *args)
 {
 	uint8_t *num = args;
-	long tmp;
-	char *endptr;
+	uint64_t tmp;
 
-	errno = 0;
-	tmp = strtol(value, &endptr, 0);
 	/* the value needs two stage validation, since the actual number of available
 	 * levels is not known at this point. Initially just validate that it is in
 	 * the correct range, between 3 and 8. Later validation will check that the
 	 * available layers on a particular port is higher than the value specified here.
 	 */
-	if (errno || *endptr != '\0' ||
-			tmp < (ICE_VSI_LAYER_OFFSET - 1) || tmp >= ICE_TM_MAX_LAYERS) {
+	if (rte_kvargs_to_uint(value, ICE_VSI_LAYER_OFFSET - 1,
+			       ICE_TM_MAX_LAYERS - 1, &tmp) < 0) {
 		PMD_DRV_LOG(WARNING, "%s: Invalid value \"%s\", should be in range [%d, %d]",
 			    key, value, ICE_VSI_LAYER_OFFSET - 1, ICE_TM_MAX_LAYERS - 1);
 		return -1;
@@ -2457,13 +2416,13 @@ static int ice_parse_devargs(struct rte_eth_dev *dev)
 	if (ret)
 		goto bail;
 
-	ret = rte_kvargs_process(kvlist, ICE_SAFE_MODE_SUPPORT_ARG,
-				 &parse_bool, &ad->devargs.safe_mode_support);
+	ret = rte_kvargs_process_opt(kvlist, ICE_SAFE_MODE_SUPPORT_ARG,
+				 rte_kvargs_handle_bool, &ad->devargs.safe_mode_support);
 	if (ret)
 		goto bail;
 
-	ret = rte_kvargs_process(kvlist, ICE_DEFAULT_MAC_DISABLE,
-				&parse_bool, &ad->devargs.default_mac_disable);
+	ret = rte_kvargs_process_opt(kvlist, ICE_DEFAULT_MAC_DISABLE,
+				rte_kvargs_handle_bool, &ad->devargs.default_mac_disable);
 	if (ret)
 		goto bail;
 
@@ -2482,8 +2441,8 @@ static int ice_parse_devargs(struct rte_eth_dev *dev)
 	if (ret)
 		goto bail;
 
-	ret = rte_kvargs_process(kvlist, ICE_RX_LOW_LATENCY_ARG,
-				 &parse_bool, &ad->devargs.rx_low_latency);
+	ret = rte_kvargs_process_opt(kvlist, ICE_RX_LOW_LATENCY_ARG,
+				 rte_kvargs_handle_bool, &ad->devargs.rx_low_latency);
 	if (ret)
 		goto bail;
 
@@ -2492,8 +2451,8 @@ static int ice_parse_devargs(struct rte_eth_dev *dev)
 	if (ret)
 		goto bail;
 
-	ret = rte_kvargs_process(kvlist, ICE_DDP_LOAD_SCHED_ARG,
-				 &parse_bool, &ad->devargs.ddp_load_sched);
+	ret = rte_kvargs_process_opt(kvlist, ICE_DDP_LOAD_SCHED_ARG,
+				 rte_kvargs_handle_bool, &ad->devargs.ddp_load_sched);
 	if (ret)
 		goto bail;
 
@@ -2503,12 +2462,12 @@ static int ice_parse_devargs(struct rte_eth_dev *dev)
 		goto bail;
 
 	ret = rte_kvargs_process(kvlist, ICE_RL_BURST_SIZE_ARG,
-				 &parse_u32, &ad->devargs.rl_burst_size);
+				 rte_kvargs_handle_u32, &ad->devargs.rl_burst_size);
 	if (ret)
 		goto bail;
 
-	ret = rte_kvargs_process(kvlist, ICE_SOURCE_PRUNE_ARG,
-				 &parse_bool, &ad->devargs.source_prune);
+	ret = rte_kvargs_process_opt(kvlist, ICE_SOURCE_PRUNE_ARG,
+				 rte_kvargs_handle_bool, &ad->devargs.source_prune);
 	if (ret)
 		goto bail;
 
@@ -2762,7 +2721,7 @@ ice_dev_init(struct rte_eth_dev *dev)
 	}
 
 	if (ret) {
-		if (ad->devargs.safe_mode_support == 0) {
+		if (!ad->devargs.safe_mode_support) {
 			PMD_INIT_LOG(ERR, "Failed to load the DDP package,"
 					"Use safe-mode-support=1 to enter Safe Mode");
 			goto err_init_fw;
@@ -4313,7 +4272,8 @@ __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect,
 {
 	struct ice_hw *hw = ICE_VSI_TO_HW(vsi);
 	uint32_t val, val_tx;
-	int rx_low_latency, i;
+	bool rx_low_latency;
+	int i;
 
 	rx_low_latency = vsi->adapter->devargs.rx_low_latency;
 	for (i = 0; i < nb_queue; i++) {
diff --git a/drivers/net/intel/ice/ice_ethdev.h b/drivers/net/intel/ice/ice_ethdev.h
index e39757e842..39583cff38 100644
--- a/drivers/net/intel/ice/ice_ethdev.h
+++ b/drivers/net/intel/ice/ice_ethdev.h
@@ -627,16 +627,16 @@ struct ice_pf {
  * Cache devargs parse result.
  */
 struct ice_devargs {
-	int rx_low_latency;
-	int safe_mode_support;
+	bool rx_low_latency;
+	bool safe_mode_support;
 	uint8_t proto_xtr_dflt;
-	uint8_t default_mac_disable;
+	bool default_mac_disable;
 	uint8_t proto_xtr[ICE_MAX_QUEUE_NUM];
 	uint8_t pin_idx;
 	uint8_t pps_out_ena;
-	uint8_t ddp_load_sched;
+	bool ddp_load_sched;
 	uint8_t tm_exposed_levels;
-	uint8_t source_prune;
+	bool source_prune;
 	uint32_t rl_burst_size;
 	int link_state_on_close;
 	int xtr_field_offs;
-- 
2.53.0


  parent reply	other threads:[~2026-09-29 16:40 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   ` Stephen Hemminger [this message]
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   ` [PATCH v3 45/65] net/bnxt: " Stephen Hemminger
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=20260929163800.1108305-24-stephen@networkplumber.org \
    --to=stephen@networkplumber.org \
    --cc=anatoly.burakov@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ke1x.zhang@intel.com \
    --cc=kevinx.liu@intel.com \
    --cc=qi.z.zhang@intel.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