DPDK patches and discussions
 help / color / mirror / Atom feed
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


  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).