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 > --- > 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(-) > > @@ -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 "=" > + 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