Hi Bruce,

On 23/10/2024 17:55, Bruce Richardson wrote:
The DDP package file being loaded at init time may contain an
alternative Tx Scheduler topology in it. Add driver option to load this
topology at init time.

Signed-off-by: Bruce Richardson<bruce.richard...@intel.com>
---
  doc/guides/nics/ice.rst        | 15 +++++++++++++++
  drivers/net/ice/base/ice_ddp.c | 20 +++++++++++++++++---
  drivers/net/ice/base/ice_ddp.h |  4 ++--
  drivers/net/ice/ice_ethdev.c   | 24 +++++++++++++++---------
  drivers/net/ice/ice_ethdev.h   |  1 +
  5 files changed, 50 insertions(+), 14 deletions(-)

<snip>
@@ -2030,19 +2032,18 @@ static int
  parse_bool(const char *key, const char *value, void *args)
  {
        int *i = (int *)args;
-       char *end;
-       int num;
- num = strtoul(value, &end, 10);
-
-       if (num != 0 && num != 1) {
-               PMD_DRV_LOG(WARNING, "invalid value:\"%s\" for key:\"%s\", "
-                       "value must be 0 or 1",
+       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 = num;
+       *i = value[0] - '0';

Ithinkthatinsteadof usingchararithmetic,it wouldbe better to:

*i = !(value[0] == '0')

        return 0;
  }
@@ -2307,6 +2308,10 @@ 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);
+       if (ret)
+               goto bail;
  bail:
        rte_kvargs_free(kvlist);
        return ret;
@@ -7185,6 +7190,7 @@ RTE_PMD_REGISTER_PARAM_STRING(net_ice,
                              ICE_SAFE_MODE_SUPPORT_ARG "=<0|1>"
                              ICE_DEFAULT_MAC_DISABLE "=<0|1>"
                              ICE_DDP_FILENAME_ARG "=</path/to/file>"
+                             ICE_DDP_LOAD_SCHED_ARG "=<0|1>"
                              ICE_RX_LOW_LATENCY_ARG "=<0|1>");
RTE_LOG_REGISTER_SUFFIX(ice_logtype_init, init, NOTICE);
diff --git a/drivers/net/ice/ice_ethdev.h b/drivers/net/ice/ice_ethdev.h
index 076cf595e8..2794a76096 100644
--- a/drivers/net/ice/ice_ethdev.h
+++ b/drivers/net/ice/ice_ethdev.h
@@ -564,6 +564,7 @@ struct ice_devargs {
        uint8_t proto_xtr[ICE_MAX_QUEUE_NUM];
        uint8_t pin_idx;
        uint8_t pps_out_ena;
+       uint8_t ddp_load_sched;
        int xtr_field_offs;
        uint8_t xtr_flag_offs[PROTO_XTR_MAX];
        /* Name of the field. */

--
Regards,
Vladimir

Reply via email to