DPDK-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Stephen Hemminger <stephen@networkplumber.org>
To: Gagandeep Singh <g.singh@nxp.com>
Cc: dev@dpdk.org, hemant.agrawal@nxp.com
Subject: Re: [PATCH v12 15/15] net/enetc4: add WRR Tx scheduler devarg for VF rings
Date: Mon, 24 Aug 2026 11:10:09 -0700	[thread overview]
Message-ID: <20260824111009.420e4187@phoenix.local> (raw)
In-Reply-To: <20260821055643.1359277-16-g.singh@nxp.com>

On Fri, 21 Aug 2026 11:26:43 +0530
Gagandeep Singh <g.singh@nxp.com> wrote:

> @@ -71,7 +72,46 @@ parse_txq_prior(const char *key __rte_unused, const char *value, void *opaque)
>  
>  	str = strtok(input_str, "|");
>  	while (str != NULL && i < hw->max_tx_queues) {
> -		hw->txq_prior[i++] = (uint32_t)atoi(str);
> +		hw->txq_prior[i++] = atoi(str) & ENETC_TBMR_PRIO_MASK;
> +		str = strtok(NULL, "|");
> +	}
> +
> +	free(input_str);
> +	return 0;
> +}

The arg parsing in this driver has lots of usage of functions that are on
the naughty list like: atoi, atof, and strtok.

Suggest reworking this to use strtok_r and strtoul and strtod.

Not a fan of so many nerd knobs either. These kind of queue configurations really
need to be under ethdev but that is more work.

Something like this?

diff --git a/drivers/net/enetc/enetc4_ethdev.c b/drivers/net/enetc/enetc4_ethdev.c
index bb579a0b90..3e13542302 100644
--- a/drivers/net/enetc/enetc4_ethdev.c
+++ b/drivers/net/enetc/enetc4_ethdev.c
@@ -2,7 +2,9 @@
  * Copyright 2024-2026 NXP
  */
 
+#include <errno.h>
 #include <stdbool.h>
+#include <stdlib.h>
 #include <rte_kvargs.h>
 #include <rte_random.h>
 #include <dpaax_iova_table.h>
@@ -49,85 +51,172 @@ static uint64_t dev_tx_offloads_sup =
 
 #define ENETC4_NC_MEMORY	"nc"
 
+/* Tx ring WRR weight range; ENETC_TBMR_WRR() encodes it as (weight - 1). */
+#define ENETC4_TXQ_WRR_MIN	1
+#define ENETC4_TXQ_WRR_MAX	8
+
+static const char * const enetc4_valid_args[] = {
+	ENETC4_TXQ_PRIORITIES,
+	ENETC4_TXQ_WRR,
+	ENETC4_NC_MEMORY,
+	NULL,
+};
+
+/*
+ * Parse one unsigned decimal value, rejecting empty strings, signs, trailing
+ * garbage and values outside [min, max]. atoi() reports none of these: it
+ * returns 0 for any non-numeric string and is undefined on overflow.
+ */
 static int
-parse_txq_prior(const char *key __rte_unused, const char *value, void *opaque)
+enetc4_parse_uint(const char *str, uint32_t min, uint32_t max, uint32_t *val)
 {
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)opaque;
-	struct enetc_eth_hw *hw =
-				ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-	char *input_str;
-	char *str;
-	uint32_t i = 0;
+	unsigned long res;
+	char *endptr;
+
+	if (str == NULL || *str == '\0')
+		return -EINVAL;
+
+	/* strtoul() silently wraps a leading '-', so reject signs up front. */
+	if (*str == '-' || *str == '+')
+		return -EINVAL;
+
+	errno = 0;
+	res = strtoul(str, &endptr, 10);
+	if (errno != 0 || endptr == str || *endptr != '\0')
+		return -EINVAL;
+
+	if (res < min || res > max)
+		return -ERANGE;
+
+	*val = (uint32_t)res;
+	return 0;
+}
+
+/*
+ * Parse a "v0|v1|..." list into vals[], validating every field against
+ * [min, max]. Returns the number of values parsed, or a negative errno.
+ */
+static int
+enetc4_parse_uint_list(const char *key, const char *value, uint32_t min,
+		       uint32_t max, uint32_t *vals, uint32_t max_vals)
+{
+	char *input_str, *str, *saveptr;
+	uint32_t n = 0;
+	int ret;
+
+	if (value == NULL) {
+		ENETC_PMD_ERR("%s: missing value", key);
+		return -EINVAL;
+	}
 
 	input_str = strdup(value);
-	if (!input_str)
+	if (input_str == NULL)
 		return -ENOMEM;
 
-	rte_free(hw->txq_prior);
-	hw->txq_prior = rte_zmalloc(NULL, hw->max_tx_queues * sizeof(uint32_t), 0);
-	if (!hw->txq_prior) {
-		free(input_str);
-		return -ENOMEM;
+	for (str = strtok_r(input_str, "|", &saveptr); str != NULL;
+	     str = strtok_r(NULL, "|", &saveptr)) {
+		if (n == max_vals) {
+			ENETC_PMD_ERR("%s: too many values, at most %u supported",
+				      key, max_vals);
+			ret = -EINVAL;
+			goto out;
+		}
+
+		ret = enetc4_parse_uint(str, min, max, &vals[n]);
+		if (ret != 0) {
+			ENETC_PMD_ERR("%s: invalid value '%s' at index %u, expected %u..%u",
+				      key, str, n, min, max);
+			goto out;
+		}
+		n++;
 	}
 
-	str = strtok(input_str, "|");
-	while (str != NULL && i < hw->max_tx_queues) {
-		hw->txq_prior[i++] = atoi(str) & ENETC_TBMR_PRIO_MASK;
-		str = strtok(NULL, "|");
+	if (n == 0) {
+		ENETC_PMD_ERR("%s: empty value list", key);
+		ret = -EINVAL;
+		goto out;
 	}
 
+	ret = n;
+out:
 	free(input_str);
+	return ret;
+}
+
+/* Parse enetc4_txq_prior="p0|p1|..." devarg; priority 0..7 per ring. */
+static int
+parse_txq_prior(const char *key, const char *value, void *opaque)
+{
+	struct rte_eth_dev *dev = opaque;
+	struct enetc_eth_hw *hw =
+				ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	uint32_t *prior;
+	int ret;
+
+	prior = rte_zmalloc(NULL, hw->max_tx_queues * sizeof(uint32_t), 0);
+	if (prior == NULL)
+		return -ENOMEM;
+
+	ret = enetc4_parse_uint_list(key, value, 0, ENETC_TBMR_PRIO_MASK,
+				     prior, hw->max_tx_queues);
+	if (ret < 0) {
+		rte_free(prior);
+		return ret;
+	}
+
+	/* Only swap in the new table once the whole list is known good. */
+	rte_free(hw->txq_prior);
+	hw->txq_prior = prior;
+
 	return 0;
 }
 
 /* Parse enetc4_txq_wrr="w0|w1|..." devarg; weight 1..8 per ring. */
-static int parse_txq_wrr(const char *key __rte_unused, const char *value,
-			  void *opaque)
+static int
+parse_txq_wrr(const char *key, const char *value, void *opaque)
 {
-	struct rte_eth_dev *dev = (struct rte_eth_dev *)opaque;
+	struct rte_eth_dev *dev = opaque;
 	struct enetc_eth_hw *hw =
 			ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private);
-	char *input_str;
-	char *str;
-	uint32_t i = 0;
-	int w;
+	uint32_t *wrr;
+	int n, i;
 
-	input_str = strdup(value);
-	if (!input_str)
+	wrr = rte_zmalloc(NULL, hw->max_tx_queues * sizeof(uint32_t), 0);
+	if (wrr == NULL)
 		return -ENOMEM;
 
-	rte_free(hw->txq_wrr);
-	hw->txq_wrr = rte_zmalloc(NULL,
-			hw->max_tx_queues * sizeof(uint32_t), 0);
-	if (!hw->txq_wrr) {
-		free(input_str);
-		return -ENOMEM;
+	n = enetc4_parse_uint_list(key, value, ENETC4_TXQ_WRR_MIN,
+				   ENETC4_TXQ_WRR_MAX, wrr, hw->max_tx_queues);
+	if (n < 0) {
+		rte_free(wrr);
+		return n;
 	}
 
-	str = strtok(input_str, "|");
-	while (str != NULL && i < hw->max_tx_queues) {
-		w = atoi(str);
-		if (w < 1)
-			w = 1;
-		if (w > 8)
-			w = 8;
-		hw->txq_wrr[i++] = ENETC_TBMR_WRR(w);
-		str = strtok(NULL, "|");
-	}
+	for (i = 0; i < n; i++)
+		wrr[i] = ENETC_TBMR_WRR(wrr[i]);
+
+	/* Only swap in the new table once the whole list is known good. */
+	rte_free(hw->txq_wrr);
+	hw->txq_wrr = wrr;
 
-	free(input_str);
 	return 0;
 }
 
 static int
-parse_nc(const char *key __rte_unused, const char *value, void *extra_args)
+parse_nc(const char *key, const char *value, void *extra_args)
 {
 	struct rte_eth_dev *dev = extra_args;
 	struct enetc_eth_hw *hw =
 		ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	uint32_t val;
+
+	if (enetc4_parse_uint(value, 0, 1, &val) != 0) {
+		ENETC_PMD_ERR("%s: invalid value '%s', expected 0 or 1",
+			      key, value ? value : "(null)");
+		return -EINVAL;
+	}
 
-	if (value && atoi(value) == 1)
-		hw->nc_mode = 1;
+	hw->nc_mode = val;
 
 	return 0;
 }
@@ -135,45 +224,41 @@ parse_nc(const char *key __rte_unused, const char *value, void *extra_args)
 static int
 enetc4_get_devargs(struct rte_eth_dev *dev, const char *key)
 {
+	static const struct {
+		const char *key;
+		arg_handler_t handler;
+	} handlers[] = {
+		{ ENETC4_TXQ_PRIORITIES, parse_txq_prior },
+		{ ENETC4_TXQ_WRR,	 parse_txq_wrr	 },
+		{ ENETC4_NC_MEMORY,	 parse_nc	 },
+	};
 	struct rte_devargs *devargs = dev->device->devargs;
 	struct rte_kvargs *kvlist;
+	unsigned int i;
+	int ret = 0;
 
-	if (!devargs)
+	if (devargs == NULL)
 		return 0;
 
-	kvlist = rte_kvargs_parse(devargs->args, NULL);
-	if (!kvlist)
-		return 0;
-
-	if (!rte_kvargs_count(kvlist, key)) {
-		rte_kvargs_free(kvlist);
-		return 0;
+	/* Passing the key list makes a mistyped devarg an error, not a no-op. */
+	kvlist = rte_kvargs_parse(devargs->args, enetc4_valid_args);
+	if (kvlist == NULL) {
+		ENETC_PMD_ERR("Invalid device arguments '%s'", devargs->args);
+		return -EINVAL;
 	}
 
-	if (!strcmp(key, ENETC4_TXQ_PRIORITIES)) {
-		if (rte_kvargs_process(kvlist, key,
-				       parse_txq_prior, (void *)dev) < 0) {
-			rte_kvargs_free(kvlist);
-			return 0;
-		}
-	}
-	if (!strcmp(key, ENETC4_TXQ_WRR)) {
-		if (rte_kvargs_process(kvlist, key,
-				       parse_txq_wrr, (void *)dev) < 0) {
-			rte_kvargs_free(kvlist);
-			return 0;
-		}
-	}
-	if (!strcmp(key, ENETC4_NC_MEMORY)) {
-		if (rte_kvargs_process(kvlist, key,
-				       parse_nc, (void *)dev) < 0) {
-			rte_kvargs_free(kvlist);
-			return 0;
-		}
-	}
+	if (rte_kvargs_count(kvlist, key) == 0)
+		goto out;
 
+	for (i = 0; i < RTE_DIM(handlers); i++) {
+		if (strcmp(key, handlers[i].key) != 0)
+			continue;
+		ret = rte_kvargs_process(kvlist, key, handlers[i].handler, dev);
+		break;
+	}
+out:
 	rte_kvargs_free(kvlist);
-	return 0;
+	return ret;
 }
 
 static int
@@ -1129,9 +1214,13 @@ enetc4_dev_configure(struct rte_eth_dev *dev)
 		enetc4_txbdr_wr(enetc_hw, i, ENETC_TBMR, ENETC_BMR_RESET);
 
 	hw->nc_mode = 0;
-	enetc4_get_devargs(dev, ENETC4_TXQ_PRIORITIES);
-	enetc4_get_devargs(dev, ENETC4_TXQ_WRR);
-	enetc4_get_devargs(dev, ENETC4_NC_MEMORY);
+	ret = enetc4_get_devargs(dev, ENETC4_TXQ_PRIORITIES);
+	if (ret == 0)
+		ret = enetc4_get_devargs(dev, ENETC4_TXQ_WRR);
+	if (ret == 0)
+		ret = enetc4_get_devargs(dev, ENETC4_NC_MEMORY);
+	if (ret != 0)
+		return ret;
 
 	if (dev->data->nb_rx_queues <= 1)
 		return 0;
@@ -1538,8 +1627,13 @@ enetc4_dev_init(struct rte_eth_dev *eth_dev)
 	hw->max_rx_queues = (si_cap >> 16) & ENETC_SICAPR0_BDR_MASK;
 
 	hw->nc_mode = 0;
-	enetc4_get_devargs(eth_dev, ENETC4_TXQ_PRIORITIES);
-	enetc4_get_devargs(eth_dev, ENETC4_NC_MEMORY);
+	error = enetc4_get_devargs(eth_dev, ENETC4_TXQ_PRIORITIES);
+	if (error == 0)
+		error = enetc4_get_devargs(eth_dev, ENETC4_NC_MEMORY);
+	if (error != 0) {
+		ENETC_PMD_ERR("Invalid device arguments");
+		return error;
+	}
 	if (hw->nc_mode) {
 		eth_dev->rx_pkt_burst = &enetc_recv_pkts_nc;
 		eth_dev->tx_pkt_burst = &enetc_xmit_pkts_nc;

  reply	other threads:[~2026-08-24 18:10 UTC|newest]

Thread overview: 199+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-06 11:28 [PATCH 00/14] net/enetc: add new features for ENETC4 VF on i.MX95 Gagandeep Singh
2026-08-06 11:28 ` [PATCH 01/14] net/enetc: add KEEP_CRC offload support for ENETC4 Gagandeep Singh
2026-08-06 11:28 ` [PATCH 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-06 11:28 ` [PATCH 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-06 11:28 ` [PATCH 04/14] net/enetc: extend link speed code field to 8-bit for PF-to-VF message Gagandeep Singh
2026-08-06 11:28 ` [PATCH 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-06 11:28 ` [PATCH 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-06 11:28 ` [PATCH 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-06 11:28 ` [PATCH 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-06 11:28 ` [PATCH 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-06 11:28 ` [PATCH 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-06 11:28 ` [PATCH 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-06 11:28 ` [PATCH 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-06 11:28 ` [PATCH 13/14] net/enetc4: enable TX PAUSE via VF RX congestion mode Gagandeep Singh
2026-08-06 11:28 ` [PATCH 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-06 17:00 ` [PATCH 00/14] net/enetc: add new features for ENETC4 VF on i.MX95 Stephen Hemminger
2026-08-07  3:48 ` [PATCH v2 00/14] net/enetc: add new features for ENETC4 VF on i.MX9 Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 01/14] net/enetc: add KEEP_CRC offload support for ENETC4 Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 04/14] net/enetc: extend link speed code field to 8-bit for PF-to-VF message Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 13/14] net/enetc4: enable TX PAUSE via VF RX congestion mode Gagandeep Singh
2026-08-07  3:48   ` [PATCH v2 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-07  7:02   ` [PATCH v3 00/14] net/enetc: add new features for ENETC4 VF on i.MX9 Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 01/14] net/enetc: add KEEP_CRC offload support for ENETC4 Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 04/14] net/enetc: extend link speed code field to 8-bit for PF-to-VF message Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 13/14] net/enetc4: enable TX PAUSE via VF RX congestion mode Gagandeep Singh
2026-08-07  7:02     ` [PATCH v3 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-07 11:26     ` [PATCH v4 00/14] net/enetc: add new features for ENETC4 on i.MX95 Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 01/14] net/enetc: add KEEP_CRC offload support for ENETC4 Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 04/14] net/enetc: extend link speed code field to 8-bit for PF-to-VF message Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 13/14] net/enetc4: enable TX PAUSE via VF RX congestion mode Gagandeep Singh
2026-08-07 11:26       ` [PATCH v4 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-09 21:00       ` [PATCH v4 00/14] net/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-10 10:58         ` Gagandeep Singh
2026-08-10 10:48       ` [PATCH v5 " Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 01/14] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 04/14] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 13/14] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-10 10:48         ` [PATCH v5 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-10 15:25         ` [PATCH v5 00/14] net/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-10 15:40         ` Stephen Hemminger
2026-08-11  7:40         ` [PATCH v6 00/13] " Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 01/13] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 02/13] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 03/13] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 04/13] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 05/13] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 06/13] net/enetc: support registers dump Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 07/13] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 08/13] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 09/13] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 10/13] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 11/13] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 12/13] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-11  7:40           ` [PATCH v6 13/13] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-11  7:47           ` [PATCH v7 00/14] net/enetc: add new features for ENETC4 on i.MX95 Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 01/14] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 04/14] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 13/14] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-11  7:47             ` [PATCH v7 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-11 15:39             ` [PATCH v7 00/14] net/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-12 11:33             ` [PATCH v8 " Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 01/14] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 04/14] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 13/14] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-12 11:33               ` [PATCH v8 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-13  2:00               ` [PATCH v8 00/14] net/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-13 12:13               ` [PATCH v9-1 " Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 01/14] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 04/14] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 13/14] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-13 12:13                 ` [PATCH v9-1 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-15 15:17                 ` [PATCH v9-1 00/14] net/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-17  6:36                   ` Gagandeep Singh
2026-08-17  6:34                 ` [PATCH v10 " Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 01/14] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 02/14] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 03/14] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 04/14] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 05/14] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 06/14] net/enetc: support registers dump Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 07/14] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 08/14] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 09/14] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 10/14] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 11/14] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 12/14] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 13/14] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-17  6:34                   ` [PATCH v10 14/14] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-18  2:28                   ` [PATCH v10 00/14] net/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-19  5:34                   ` [PATCH v11 00/15] " Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 01/15] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 02/15] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 03/15] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 04/15] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 05/15] net/enetc: add VF supported features file Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 06/15] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 07/15] net/enetc: support registers dump Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 08/15] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 09/15] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 10/15] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 11/15] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 12/15] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 13/15] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 14/15] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-19  5:34                     ` [PATCH v11 15/15] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-19 20:23                     ` [PATCH v11 00/15] net/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-20  5:37                     ` Hemant Agrawal
2026-08-21  5:56                     ` [PATCH v12 00/15] et/enetc: " Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 01/15] net/enetc: add keep-CRC Rx offload for ENETC4 Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 02/15] net/enetc: add TSO support for ENETC4 VF Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 03/15] net/enetc: add RSC (hardware LRO) support for ENETC4 Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 04/15] net/enetc: extend PF-VF link speed field to 8 bits Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 05/15] net/enetc: add VF supported features file Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 06/15] net/enetc: support firmware version get for VF Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 07/15] net/enetc: support registers dump Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 08/15] net/enetc: support ethtool ring parameters Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 09/15] net/enetc: refresh link speed on VF link-up interrupt Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 10/15] net/enetc: support stats reset for VF Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 11/15] net/enetc4: add per-queue Rx interrupt support " Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 12/15] net/enetc4: add SI-based port VLAN insertion and removal Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 13/15] net/enetc4: update VF link status to bitmask encoding Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 14/15] net/enetc4: enable Tx PAUSE via VF Rx congestion mode Gagandeep Singh
2026-08-21  5:56                       ` [PATCH v12 15/15] net/enetc4: add WRR Tx scheduler devarg for VF rings Gagandeep Singh
2026-08-24 18:10                         ` Stephen Hemminger [this message]
2026-08-21 15:49                       ` [PATCH v12 00/15] et/enetc: add new features for ENETC4 on i.MX95 Stephen Hemminger
2026-08-24  7:52                         ` Gagandeep Singh
2026-08-24 16:41                           ` Stephen Hemminger
2026-08-24 18:14                       ` Stephen Hemminger
2026-08-24 20:38                       ` 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=20260824111009.420e4187@phoenix.local \
    --to=stephen@networkplumber.org \
    --cc=dev@dpdk.org \
    --cc=g.singh@nxp.com \
    --cc=hemant.agrawal@nxp.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