From: "Medvedkin, Vladimir" <vladimir.medvedkin@intel.com>
To: Bruce Richardson <bruce.richardson@intel.com>, <dev@dpdk.org>
Subject: Re: [PATCH v6 1/5] net/ice: add option to download scheduler topology
Date: Wed, 30 Oct 2024 15:21:07 +0000 [thread overview]
Message-ID: <ba3144dd-29cd-4418-836a-43e5313cc2fb@intel.com> (raw)
In-Reply-To: <20241029170157.1390724-2-bruce.richardson@intel.com>
Acked-by: Vladimir Medvedkin <vladimir.medvedkin@intel.com>
On 29/10/2024 17:01, 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.richardson@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 | 26 ++++++++++++++++----------
> drivers/net/ice/ice_ethdev.h | 1 +
> 5 files changed, 51 insertions(+), 15 deletions(-)
>
> diff --git a/doc/guides/nics/ice.rst b/doc/guides/nics/ice.rst
> index 6c66dc8008..42bbe50968 100644
> --- a/doc/guides/nics/ice.rst
> +++ b/doc/guides/nics/ice.rst
> @@ -298,6 +298,21 @@ Runtime Configuration
> As a trade-off, this configuration may cause the packet processing performance
> degradation due to the PCI bandwidth limitation.
>
> +- ``Tx Scheduler Topology Download``
> +
> + The default Tx scheduler topology exposed by the NIC,
> + generally a 9-level topology of which 8 levels are SW configurable,
> + may be updated by a new topology loaded from a DDP package file.
> + The ``ddp_load_sched_topo`` option can be used to specify that the scheduler topology,
> + if any, in the DDP package file being used should be loaded into the NIC.
> + For example::
> +
> + -a 0000:88:00.0,ddp_load_sched_topo=1
> +
> + or::
> +
> + -a 0000:88:00.0,ddp_pkg_file=/path/to/pkg.file,ddp_load_sched_topo=1
> +
> - ``Tx diagnostics`` (default ``not enabled``)
>
> Set the ``devargs`` parameter ``mbuf_check`` to enable Tx diagnostics.
> diff --git a/drivers/net/ice/base/ice_ddp.c b/drivers/net/ice/base/ice_ddp.c
> index c17a58eab8..850c722a3f 100644
> --- a/drivers/net/ice/base/ice_ddp.c
> +++ b/drivers/net/ice/base/ice_ddp.c
> @@ -1333,7 +1333,7 @@ ice_fill_hw_ptype(struct ice_hw *hw)
> * ice_copy_and_init_pkg() instead of directly calling ice_init_pkg() in this
> * case.
> */
> -enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buf, u32 len)
> +enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buf, u32 len, bool load_sched)
> {
> bool already_loaded = false;
> enum ice_ddp_state state;
> @@ -1351,6 +1351,20 @@ enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buf, u32 len)
> return state;
> }
>
> + if (load_sched) {
> + enum ice_status res = ice_cfg_tx_topo(hw, buf, len);
> + if (res != ICE_SUCCESS) {
> + ice_debug(hw, ICE_DBG_INIT,
> + "failed to apply sched topology (err: %d)\n",
> + res);
> + return ICE_DDP_PKG_ERR;
> + }
> + ice_debug(hw, ICE_DBG_INIT,
> + "Topology download successful, reinitializing device\n");
> + ice_deinit_hw(hw);
> + ice_init_hw(hw);
> + }
> +
> /* initialize package info */
> state = ice_init_pkg_info(hw, pkg);
> if (state)
> @@ -1423,7 +1437,7 @@ enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buf, u32 len)
> * related routines.
> */
> enum ice_ddp_state
> -ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len)
> +ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len, bool load_sched)
> {
> enum ice_ddp_state state;
> u8 *buf_copy;
> @@ -1433,7 +1447,7 @@ ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len)
>
> buf_copy = (u8 *)ice_memdup(hw, buf, len, ICE_NONDMA_TO_NONDMA);
>
> - state = ice_init_pkg(hw, buf_copy, len);
> + state = ice_init_pkg(hw, buf_copy, len, load_sched);
> if (!ice_is_init_pkg_successful(state)) {
> /* Free the copy, since we failed to initialize the package */
> ice_free(hw, buf_copy);
> diff --git a/drivers/net/ice/base/ice_ddp.h b/drivers/net/ice/base/ice_ddp.h
> index 5512669f44..d79cdee13a 100644
> --- a/drivers/net/ice/base/ice_ddp.h
> +++ b/drivers/net/ice/base/ice_ddp.h
> @@ -454,9 +454,9 @@ ice_pkg_enum_entry(struct ice_seg *ice_seg, struct ice_pkg_enum *state,
> void *
> ice_pkg_enum_section(struct ice_seg *ice_seg, struct ice_pkg_enum *state,
> u32 sect_type);
> -enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buff, u32 len);
> +enum ice_ddp_state ice_init_pkg(struct ice_hw *hw, u8 *buff, u32 len, bool load_sched);
> enum ice_ddp_state
> -ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len);
> +ice_copy_and_init_pkg(struct ice_hw *hw, const u8 *buf, u32 len, bool load_sched);
> bool ice_is_init_pkg_successful(enum ice_ddp_state state);
> void ice_free_seg(struct ice_hw *hw);
>
> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
> index d5e94a6685..da91012a5e 100644
> --- a/drivers/net/ice/ice_ethdev.c
> +++ b/drivers/net/ice/ice_ethdev.c
> @@ -39,6 +39,7 @@
> #define ICE_RX_LOW_LATENCY_ARG "rx_low_latency"
> #define ICE_MBUF_CHECK_ARG "mbuf_check"
> #define ICE_DDP_FILENAME_ARG "ddp_pkg_file"
> +#define ICE_DDP_LOAD_SCHED_ARG "ddp_load_sched_topo"
>
> #define ICE_CYCLECOUNTER_MASK 0xffffffffffffffffULL
>
> @@ -56,6 +57,7 @@ static const char * const ice_valid_args[] = {
> ICE_DEFAULT_MAC_DISABLE,
> ICE_MBUF_CHECK_ARG,
> ICE_DDP_FILENAME_ARG,
> + ICE_DDP_LOAD_SCHED_ARG,
> NULL
> };
>
> @@ -1997,7 +1999,7 @@ int ice_load_pkg(struct ice_adapter *adapter, bool use_dsn, uint64_t dsn)
> load_fw:
> PMD_INIT_LOG(DEBUG, "DDP package name: %s", pkg_file);
>
> - err = ice_copy_and_init_pkg(hw, buf, bufsz);
> + err = ice_copy_and_init_pkg(hw, buf, bufsz, adapter->devargs.ddp_load_sched);
> if (!ice_is_init_pkg_successful(err)) {
> PMD_INIT_LOG(ERR, "ice_copy_and_init_hw failed: %d", err);
> free(buf);
> @@ -2029,20 +2031,19 @@ ice_base_queue_get(struct ice_pf *pf)
> static int
> parse_bool(const char *key, const char *value, void *args)
> {
> - int *i = (int *)args;
> - char *end;
> - int num;
> + int *i = args;
>
> - 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] == '1');
> 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
next prev parent reply other threads:[~2024-10-30 15:21 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-07 9:33 [PATCH 00/15] Improve rte_tm support in ICE driver Bruce Richardson
2024-08-07 9:33 ` [PATCH 01/15] net/ice: add traffic management node query function Bruce Richardson
2024-08-07 9:33 ` [PATCH 02/15] net/ice: detect stopping a flow-director queue twice Bruce Richardson
2024-08-07 9:33 ` [PATCH 03/15] net/ice: improve Tx scheduler graph output Bruce Richardson
2024-08-07 9:33 ` [PATCH 04/15] net/ice: add option to choose DDP package file Bruce Richardson
2024-08-07 9:33 ` [PATCH 05/15] net/ice: add option to download scheduler topology Bruce Richardson
2024-08-07 9:33 ` [PATCH 06/15] net/ice/base: allow init without TC class sched nodes Bruce Richardson
2024-08-07 9:33 ` [PATCH 07/15] net/ice/base: set VSI index on newly created nodes Bruce Richardson
2024-08-07 9:34 ` [PATCH 08/15] net/ice/base: read VSI layer info from VSI Bruce Richardson
2024-08-07 9:34 ` [PATCH 09/15] net/ice/base: remove 255 limit on sched child nodes Bruce Richardson
2024-08-07 9:34 ` [PATCH 10/15] net/ice/base: optimize subtree searches Bruce Richardson
2024-08-07 9:34 ` [PATCH 11/15] net/ice/base: make functions non-static Bruce Richardson
2024-08-07 9:34 ` [PATCH 12/15] net/ice/base: remove flag checks before topology upload Bruce Richardson
2024-08-07 9:34 ` [PATCH 13/15] net/ice: limit the number of queues to sched capabilities Bruce Richardson
2024-08-07 9:34 ` [PATCH 14/15] net/ice: enhance Tx scheduler hierarchy support Bruce Richardson
2024-08-07 9:34 ` [PATCH 15/15] net/ice: add minimal capability reporting API Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 00/15] Improve rte_tm support in ICE driver Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 01/15] net/ice: add traffic management node query function Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 02/15] net/ice: detect stopping a flow-director queue twice Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 03/15] net/ice: improve Tx scheduler graph output Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 04/15] net/ice: add option to choose DDP package file Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 05/15] net/ice: add option to download scheduler topology Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 06/15] net/ice/base: allow init without TC class sched nodes Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 07/15] net/ice/base: set VSI index on newly created nodes Bruce Richardson
2024-08-07 9:46 ` [PATCH v2 08/15] net/ice/base: read VSI layer info from VSI Bruce Richardson
2024-08-07 9:47 ` [PATCH v2 09/15] net/ice/base: remove 255 limit on sched child nodes Bruce Richardson
2024-08-07 9:47 ` [PATCH v2 10/15] net/ice/base: optimize subtree searches Bruce Richardson
2024-08-07 9:47 ` [PATCH v2 11/15] net/ice/base: make functions non-static Bruce Richardson
2024-08-07 9:47 ` [PATCH v2 12/15] net/ice/base: remove flag checks before topology upload Bruce Richardson
2024-08-07 9:47 ` [PATCH v2 13/15] net/ice: limit the number of queues to sched capabilities Bruce Richardson
2024-08-07 9:47 ` [PATCH v2 14/15] net/ice: enhance Tx scheduler hierarchy support Bruce Richardson
2024-08-07 9:47 ` [PATCH v2 15/15] net/ice: add minimal capability reporting API Bruce Richardson
2024-08-12 15:27 ` [PATCH v3 00/16] Improve rte_tm support in ICE driver Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 01/16] net/ice: add traffic management node query function Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 02/16] net/ice: detect stopping a flow-director queue twice Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 03/16] net/ice: improve Tx scheduler graph output Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 04/16] net/ice: add option to choose DDP package file Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 05/16] net/ice: add option to download scheduler topology Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 06/16] net/ice/base: allow init without TC class sched nodes Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 07/16] net/ice/base: set VSI index on newly created nodes Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 08/16] net/ice/base: read VSI layer info from VSI Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 09/16] net/ice/base: remove 255 limit on sched child nodes Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 10/16] net/ice/base: optimize subtree searches Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 11/16] net/ice/base: make functions non-static Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 12/16] net/ice/base: remove flag checks before topology upload Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 13/16] net/ice: limit the number of queues to sched capabilities Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 14/16] net/ice: enhance Tx scheduler hierarchy support Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 15/16] net/ice: add minimal capability reporting API Bruce Richardson
2024-08-12 15:28 ` [PATCH v3 16/16] net/ice: do early check on node level when adding Bruce Richardson
2024-10-23 16:27 ` [PATCH v4 0/5] Improve rte_tm support in ICE driver Bruce Richardson
2024-10-23 16:27 ` [PATCH v4 1/5] net/ice: add option to download scheduler topology Bruce Richardson
2024-10-23 16:27 ` [PATCH v4 2/5] net/ice/base: make context alloc function non-static Bruce Richardson
2024-10-23 16:27 ` [PATCH v4 3/5] net/ice: enhance Tx scheduler hierarchy support Bruce Richardson
2024-10-23 16:27 ` [PATCH v4 4/5] net/ice: allowing stopping port to apply TM topology Bruce Richardson
2024-10-23 16:27 ` [PATCH v4 5/5] net/ice: provide parameter to limit scheduler layers Bruce Richardson
2024-10-23 16:55 ` [PATCH v5 0/5] Improve rte_tm support in ICE driver Bruce Richardson
2024-10-23 16:55 ` [PATCH v5 1/5] net/ice: add option to download scheduler topology Bruce Richardson
2024-10-25 17:01 ` Medvedkin, Vladimir
2024-10-29 15:48 ` Bruce Richardson
2024-10-23 16:55 ` [PATCH v5 2/5] net/ice/base: make context alloc function non-static Bruce Richardson
2024-10-25 17:01 ` Medvedkin, Vladimir
2024-10-23 16:55 ` [PATCH v5 3/5] net/ice: enhance Tx scheduler hierarchy support Bruce Richardson
2024-10-25 17:02 ` Medvedkin, Vladimir
2024-10-23 16:55 ` [PATCH v5 4/5] net/ice: allowing stopping port to apply TM topology Bruce Richardson
2024-10-25 17:02 ` Medvedkin, Vladimir
2024-10-23 16:55 ` [PATCH v5 5/5] net/ice: provide parameter to limit scheduler layers Bruce Richardson
2024-10-25 17:02 ` Medvedkin, Vladimir
2024-10-29 17:01 ` [PATCH v6 0/5] Improve rte_tm support in ICE driver Bruce Richardson
2024-10-29 17:01 ` [PATCH v6 1/5] net/ice: add option to download scheduler topology Bruce Richardson
2024-10-30 15:21 ` Medvedkin, Vladimir [this message]
2024-10-29 17:01 ` [PATCH v6 2/5] net/ice/base: make context alloc function non-static Bruce Richardson
2024-10-29 17:01 ` [PATCH v6 3/5] net/ice: enhance Tx scheduler hierarchy support Bruce Richardson
2024-10-30 15:21 ` Medvedkin, Vladimir
2024-10-29 17:01 ` [PATCH v6 4/5] net/ice: allowing stopping port to apply TM topology Bruce Richardson
2024-10-29 17:01 ` [PATCH v6 5/5] net/ice: provide parameter to limit scheduler layers Bruce Richardson
2024-10-30 16:30 ` [PATCH v6 0/5] Improve rte_tm support in ICE driver Bruce Richardson
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=ba3144dd-29cd-4418-836a-43e5313cc2fb@intel.com \
--to=vladimir.medvedkin@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
/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;
as well as URLs for NNTP newsgroup(s).