From: Stephen Hemminger <stephen@networkplumber.org>
To: dev@dpdk.org
Cc: Stephen Hemminger <stephen@networkplumber.org>,
Maxime Coquelin <maxime.coquelin@redhat.com>,
Chenbo Xia <chenbox@nvidia.com>
Subject: [PATCH v2 19/61] net/virtio: use kvargs numeric helpers
Date: Tue, 29 Sep 2026 09:36:22 -0700 [thread overview]
Message-ID: <20260929163800.1108305-20-stephen@networkplumber.org> (raw)
In-Reply-To: <20260929163800.1108305-1-stephen@networkplumber.org>
get_integer_arg() checks only errno, so "queues=foo" was silently taken
as zero, and since the store is skipped on failure but zero is returned,
the argument was accepted while leaving the default in place. It also
uses base 0, so a leading zero selects octal.
link_speed_handler() checks neither errno nor the end pointer before
validating the result against the speed capabilities.
The boolean arguments become bool and use rte_kvargs_handle_bool():
server, cq, packed_vq, vectorized, mrg_rxbuf and in_order for
virtio_user, and vectorized for virtio. They are passed by value into
virtio_user_dev_init(), whose parameters stay int.
vectorized_check_handler() treated anything other than "1" as false, so
"vectorized=y" silently disabled it and a typo did the same. It is now
a boolean like the rest: the usual spellings work, a bare key enables
the option, and anything else is rejected instead of being read as
false.
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
---
drivers/net/virtio/virtio_ethdev.c | 36 ++++++---------
drivers/net/virtio/virtio_user_ethdev.c | 59 +++++++++----------------
2 files changed, 34 insertions(+), 61 deletions(-)
diff --git a/drivers/net/virtio/virtio_ethdev.c b/drivers/net/virtio/virtio_ethdev.c
index a6fe4f3023..556e4bfede 100644
--- a/drivers/net/virtio/virtio_ethdev.c
+++ b/drivers/net/virtio/virtio_ethdev.c
@@ -47,7 +47,7 @@ static int virtio_dev_allmulticast_disable(struct rte_eth_dev *dev);
static uint32_t virtio_dev_speed_capa_get(uint32_t speed);
static int virtio_dev_devargs_parse(struct rte_devargs *devargs,
uint32_t *speed,
- int *vectorized);
+ bool *vectorized);
static int virtio_dev_info_get(struct rte_eth_dev *dev,
struct rte_eth_dev_info *dev_info);
static int virtio_dev_link_update(struct rte_eth_dev *dev,
@@ -2029,7 +2029,7 @@ eth_virtio_dev_init(struct rte_eth_dev *eth_dev)
{
struct virtio_hw *hw = eth_dev->data->dev_private;
uint32_t speed = RTE_ETH_SPEED_NUM_UNKNOWN;
- int vectorized = 0;
+ bool vectorized = false;
int ret;
if (sizeof(struct virtio_net_hdr_hash_report) > RTE_PKTMBUF_HEADROOM) {
@@ -2128,20 +2128,6 @@ virtio_dev_speed_capa_get(uint32_t speed)
}
}
-static int vectorized_check_handler(__rte_unused const char *key,
- const char *value, void *ret_val)
-{
- if (value == NULL || ret_val == NULL)
- return -EINVAL;
-
- if (strcmp(value, "1") == 0)
- *(int *)ret_val = 1;
- else
- *(int *)ret_val = 0;
-
- return 0;
-}
-
#define VIRTIO_ARG_SPEED "speed"
#define VIRTIO_ARG_VECTORIZED "vectorized"
@@ -2149,21 +2135,25 @@ static int
link_speed_handler(const char *key __rte_unused,
const char *value, void *ret_val)
{
- uint32_t val;
- if (!value || !ret_val)
+ uint64_t val;
+
+ if (ret_val == NULL)
+ return -EINVAL;
+
+ if (rte_kvargs_to_uint(value, 0, UINT32_MAX, &val) < 0)
return -EINVAL;
- val = strtoul(value, NULL, 0);
+
/* validate input */
if (virtio_dev_speed_capa_get(val) == 0)
return -EINVAL;
- *(uint32_t *)ret_val = val;
+ *(uint32_t *)ret_val = val;
return 0;
}
static int
-virtio_dev_devargs_parse(struct rte_devargs *devargs, uint32_t *speed, int *vectorized)
+virtio_dev_devargs_parse(struct rte_devargs *devargs, uint32_t *speed, bool *vectorized)
{
struct rte_kvargs *kvlist;
int ret = 0;
@@ -2190,9 +2180,9 @@ virtio_dev_devargs_parse(struct rte_devargs *devargs, uint32_t *speed, int *vect
if (vectorized &&
rte_kvargs_count(kvlist, VIRTIO_ARG_VECTORIZED) == 1) {
- ret = rte_kvargs_process(kvlist,
+ ret = rte_kvargs_process_opt(kvlist,
VIRTIO_ARG_VECTORIZED,
- vectorized_check_handler, vectorized);
+ rte_kvargs_handle_bool, vectorized);
if (ret < 0) {
PMD_INIT_LOG(ERR, "Failed to parse %s",
VIRTIO_ARG_VECTORIZED);
diff --git a/drivers/net/virtio/virtio_user_ethdev.c b/drivers/net/virtio/virtio_user_ethdev.c
index 747dddeb2e..4925924211 100644
--- a/drivers/net/virtio/virtio_user_ethdev.c
+++ b/drivers/net/virtio/virtio_user_ethdev.c
@@ -387,23 +387,6 @@ get_string_arg(const char *key __rte_unused,
return 0;
}
-static int
-get_integer_arg(const char *key __rte_unused,
- const char *value, void *extra_args)
-{
- uint64_t integer = 0;
- if (!value || !extra_args)
- return -EINVAL;
- errno = 0;
- integer = strtoull(value, NULL, 0);
- /* extra_args keeps default value, it should be replaced
- * only in case of successful parsing of the 'value' arg
- */
- if (errno == 0)
- *(uint64_t *)extra_args = integer;
- return -errno;
-}
-
static uint32_t
vdpa_dynamic_major_num(void)
{
@@ -508,13 +491,13 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
struct virtio_user_dev *dev;
enum virtio_user_backend_type backend_type = VIRTIO_USER_BACKEND_UNKNOWN;
uint64_t queues = VIRTIO_USER_DEF_Q_NUM;
- uint64_t cq = VIRTIO_USER_DEF_CQ_EN;
+ bool cq = VIRTIO_USER_DEF_CQ_EN;
uint64_t queue_size = VIRTIO_USER_DEF_Q_SZ;
- uint64_t server_mode = VIRTIO_USER_DEF_SERVER_MODE;
- uint64_t mrg_rxbuf = 1;
- uint64_t in_order = 1;
- uint64_t packed_vq = 0;
- uint64_t vectorized = 0;
+ bool server_mode = VIRTIO_USER_DEF_SERVER_MODE;
+ bool mrg_rxbuf = true;
+ bool in_order = true;
+ bool packed_vq = false;
+ bool vectorized = false;
char *path = NULL;
char *ifname = NULL;
char *mac_addr = NULL;
@@ -602,7 +585,7 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_QUEUE_SIZE) == 1) {
if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_QUEUE_SIZE,
- &get_integer_arg, &queue_size) < 0) {
+ rte_kvargs_handle_u64, &queue_size) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_QUEUE_SIZE);
goto end;
@@ -611,7 +594,7 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_QUEUES_NUM) == 1) {
if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_QUEUES_NUM,
- &get_integer_arg, &queues) < 0) {
+ rte_kvargs_handle_u64, &queues) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_QUEUES_NUM);
goto end;
@@ -619,8 +602,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
}
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_SERVER_MODE) == 1) {
- if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_SERVER_MODE,
- &get_integer_arg, &server_mode) < 0) {
+ if (rte_kvargs_process_opt(kvlist, VIRTIO_USER_ARG_SERVER_MODE,
+ rte_kvargs_handle_bool, &server_mode) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_SERVER_MODE);
goto end;
@@ -628,8 +611,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
}
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_CQ_NUM) == 1) {
- if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_CQ_NUM,
- &get_integer_arg, &cq) < 0) {
+ if (rte_kvargs_process_opt(kvlist, VIRTIO_USER_ARG_CQ_NUM,
+ rte_kvargs_handle_bool, &cq) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_CQ_NUM);
goto end;
@@ -637,8 +620,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
}
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_PACKED_VQ) == 1) {
- if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_PACKED_VQ,
- &get_integer_arg, &packed_vq) < 0) {
+ if (rte_kvargs_process_opt(kvlist, VIRTIO_USER_ARG_PACKED_VQ,
+ rte_kvargs_handle_bool, &packed_vq) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_PACKED_VQ);
goto end;
@@ -646,8 +629,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
}
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_VECTORIZED) == 1) {
- if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_VECTORIZED,
- &get_integer_arg, &vectorized) < 0) {
+ if (rte_kvargs_process_opt(kvlist, VIRTIO_USER_ARG_VECTORIZED,
+ rte_kvargs_handle_bool, &vectorized) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_VECTORIZED);
goto end;
@@ -655,8 +638,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
}
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_MRG_RXBUF) == 1) {
- if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_MRG_RXBUF,
- &get_integer_arg, &mrg_rxbuf) < 0) {
+ if (rte_kvargs_process_opt(kvlist, VIRTIO_USER_ARG_MRG_RXBUF,
+ rte_kvargs_handle_bool, &mrg_rxbuf) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_MRG_RXBUF);
goto end;
@@ -664,8 +647,8 @@ virtio_user_pmd_probe(struct rte_vdev_device *vdev)
}
if (rte_kvargs_count(kvlist, VIRTIO_USER_ARG_IN_ORDER) == 1) {
- if (rte_kvargs_process(kvlist, VIRTIO_USER_ARG_IN_ORDER,
- &get_integer_arg, &in_order) < 0) {
+ if (rte_kvargs_process_opt(kvlist, VIRTIO_USER_ARG_IN_ORDER,
+ rte_kvargs_handle_bool, &in_order) < 0) {
PMD_INIT_LOG(ERR, "error to parse %s",
VIRTIO_USER_ARG_IN_ORDER);
goto end;
@@ -816,7 +799,7 @@ RTE_PMD_REGISTER_ALIAS(net_virtio_user, virtio_user);
RTE_PMD_REGISTER_PARAM_STRING(net_virtio_user,
"path=<path> "
"mac=<mac addr> "
- "cq=<int> "
+ "cq=<0|1> "
"queue_size=<int> "
"queues=<int> "
"iface=<string> "
--
2.53.0
next prev 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 ` Stephen Hemminger [this message]
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 ` [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-20-stephen@networkplumber.org \
--to=stephen@networkplumber.org \
--cc=chenbox@nvidia.com \
--cc=dev@dpdk.org \
--cc=maxime.coquelin@redhat.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