<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<p>Hi Bruce,<br>
</p>
<div class="moz-cite-prefix">On 23/10/2024 17:55, Bruce Richardson
wrote:<br>
</div>
<blockquote type="cite" cite="mid:20241023165540.893269-2-bruce.richardson@intel.com">
<pre wrap="" class="moz-quote-pre">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 <a class="moz-txt-link-rfc2396E" href="mailto:bruce.richardson@intel.com"><bruce.richardson@intel.com></a>
---
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(-)
</pre>
</blockquote>
<snip><br>
<blockquote type="cite" cite="mid:20241023165540.893269-2-bruce.richardson@intel.com">
<pre wrap="" class="moz-quote-pre">
@@ -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';</pre>
</blockquote>
<p><span class="EzKURWReUAB5oZgtQNkl" data-src-align="0:1" style="white-space: pre-wrap;">I</span><span style="white-space: pre-wrap;"> </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="2:5" style="white-space: pre-wrap;">think</span><span style="white-space: pre-wrap;"> </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="9:3" style="white-space: pre-wrap;">that</span><span style="white-space: pre-wrap;"> </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="13:6:26:5" style="white-space: pre-wrap;">instead</span><span style="white-space: pre-wrap;"> of </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="32:12" style="white-space: pre-wrap;">using</span><span style="white-space: pre-wrap;"> </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="56:8" style="white-space: pre-wrap;">char</span><span style="white-space: pre-wrap;"> </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="45:10" style="white-space: pre-wrap;">arithmetic</span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="64:1" style="white-space: pre-wrap;">,</span><span style="white-space: pre-wrap;"> it </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="66:7" style="white-space: pre-wrap;">would</span><span style="white-space: pre-wrap;"> be </span><span class="EzKURWReUAB5oZgtQNkl" data-src-align="74:5" style="white-space: pre-wrap;">better to:</span></p>
<p>*i = !(value[0] == '0')<br>
</p>
<blockquote type="cite" cite="mid:20241023165540.893269-2-bruce.richardson@intel.com">
<pre wrap="" class="moz-quote-pre">
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. */
</pre>
</blockquote>
<pre class="moz-signature" cols="72">--
Regards,
Vladimir</pre>
</body>
</html>