All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
To: "Zhang, Qi Z" <qi.z.zhang@intel.com>,
	"thomas@monjalon.net" <thomas@monjalon.net>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"Xing, Beilei" <beilei.xing@intel.com>,
	"Wu, Jingjing" <jingjing.wu@intel.com>,
	"Lu, Wenzhuo" <wenzhuo.lu@intel.com>
Subject: Re: [PATCH v3 1/3] ether: support runtime queue setup
Date: Sun, 25 Mar 2018 19:47:16 +0000	[thread overview]
Message-ID: <2601191342CEEE43887BDE71AB977258A0AB4016@irsmsx105.ger.corp.intel.com> (raw)
In-Reply-To: <20180321072807.268266-2-qi.z.zhang@intel.com>



> -----Original Message-----
> From: Zhang, Qi Z
> Sent: Wednesday, March 21, 2018 7:28 AM
> To: thomas@monjalon.net; Ananyev, Konstantin <konstantin.ananyev@intel.com>
> Cc: dev@dpdk.org; Xing, Beilei <beilei.xing@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>; Lu, Wenzhuo <wenzhuo.lu@intel.com>;
> Zhang, Qi Z <qi.z.zhang@intel.com>
> Subject: [PATCH v3 1/3] ether: support runtime queue setup
> 
> The patch let etherdev driver expose the capability flag through
> rte_eth_dev_info_get when it support runtime queue configuraiton,
> then base on the flag rte_eth_[rx|tx]_queue_setup could decide
> continue to setup the queue or just return fail when device already
> started.
> 
> Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
> ---
> v3:
> - not overload deferred start
> - rename deferred setup to runtime setup
> 
> v2:
> - enhance comment
> 
>  doc/guides/nics/features.rst  |  8 ++++++++
>  lib/librte_ether/rte_ethdev.c | 30 ++++++++++++++++++------------
>  lib/librte_ether/rte_ethdev.h |  7 +++++++
>  3 files changed, 33 insertions(+), 12 deletions(-)
> 
> diff --git a/doc/guides/nics/features.rst b/doc/guides/nics/features.rst
> index 1b4fb979f..6983faa4e 100644
> --- a/doc/guides/nics/features.rst
> +++ b/doc/guides/nics/features.rst
> @@ -892,7 +892,15 @@ Documentation describes performance values.
> 
>  See ``dpdk.org/doc/perf/*``.
> 
> +.. _nic_features_queue_runtime_setup_capabilities:
> 
> +Queue runtime setup capabilities
> +---------------------------------
> +
> +Supports queue setup / release after device started.
> +
> +* **[provides] rte_eth_dev_info**:
> ``runtime_queue_config_capa:DEV_RUNTIME_RX_QUEUE_SETUP,DEV_RUNTIME_TX_QUEUE_SETUP``.
> +* **[related]  API**: ``rte_eth_dev_info_get()``.
> 
>  .. _nic_features_other:
> 
> diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
> index 0590f0c10..343b1a6c0 100644
> --- a/lib/librte_ether/rte_ethdev.c
> +++ b/lib/librte_ether/rte_ethdev.c
> @@ -1425,12 +1425,6 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id,
>  		return -EINVAL;
>  	}
> 
> -	if (dev->data->dev_started) {
> -		RTE_PMD_DEBUG_TRACE(
> -		    "port %d must be stopped to allow configuration\n", port_id);
> -		return -EBUSY;
> -	}
> -
>  	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_infos_get, -ENOTSUP);
>  	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_setup, -ENOTSUP);
> 
> @@ -1474,6 +1468,15 @@ rte_eth_rx_queue_setup(uint16_t port_id, uint16_t rx_queue_id,
>  		return -EINVAL;
>  	}
> 
> +	if (dev->data->dev_started &&
> +		!(dev_info.runtime_queue_setup_capa &
> +			DEV_RUNTIME_RX_QUEUE_SETUP))
> +		return -EBUSY;
> +
> +	if (dev->data->rx_queue_state[rx_queue_id] !=
> +		RTE_ETH_QUEUE_STATE_STOPPED)
> +		return -EBUSY;
> +
>  	rxq = dev->data->rx_queues;
>  	if (rxq[rx_queue_id]) {
>  		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->rx_queue_release,
> @@ -1573,12 +1576,6 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id,
>  		return -EINVAL;
>  	}
> 
> -	if (dev->data->dev_started) {
> -		RTE_PMD_DEBUG_TRACE(
> -		    "port %d must be stopped to allow configuration\n", port_id);
> -		return -EBUSY;
> -	}
> -
>  	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->dev_infos_get, -ENOTSUP);
>  	RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->tx_queue_setup, -ENOTSUP);
> 
> @@ -1596,6 +1593,15 @@ rte_eth_tx_queue_setup(uint16_t port_id, uint16_t tx_queue_id,
>  		return -EINVAL;
>  	}
> 
> +	if (dev->data->dev_started &&
> +		!(dev_info.runtime_queue_setup_capa &
> +			DEV_RUNTIME_TX_QUEUE_SETUP))
> +		return -EBUSY;
> +
> +	if (dev->data->rx_queue_state[tx_queue_id] !=
> +		RTE_ETH_QUEUE_STATE_STOPPED)
> +		return -EBUSY;
> +
>  	txq = dev->data->tx_queues;
>  	if (txq[tx_queue_id]) {
>  		RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->tx_queue_release,
> diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
> index 036153306..4e2088458 100644
> --- a/lib/librte_ether/rte_ethdev.h
> +++ b/lib/librte_ether/rte_ethdev.h
> @@ -981,6 +981,11 @@ struct rte_eth_conf {
>   */
>  #define DEV_TX_OFFLOAD_SECURITY         0x00020000
> 
> +#define DEV_RUNTIME_RX_QUEUE_SETUP 0x00000001
> +/**< Deferred setup rx queue */
> +#define DEV_RUNTIME_TX_QUEUE_SETUP 0x00000002
> +/**< Deferred setup tx queue */
> +
>  /*
>   * If new Tx offload capabilities are defined, they also must be
>   * mentioned in rte_tx_offload_names in rte_ethdev.c file.
> @@ -1029,6 +1034,8 @@ struct rte_eth_dev_info {
>  	/** Configured number of rx/tx queues */
>  	uint16_t nb_rx_queues; /**< Number of RX queues. */
>  	uint16_t nb_tx_queues; /**< Number of TX queues. */
> +	uint64_t runtime_queue_setup_capa;
> +	/**< queues can be setup after dev_start (DEV_DEFERRED_). */
>  };
> 
>  /**
> --

Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>

> 2.13.6

  reply	other threads:[~2018-03-25 19:47 UTC|newest]

Thread overview: 95+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-12  4:53 [PATCH 0/4] deferred queue setup Qi Zhang
2018-02-12  4:53 ` [PATCH 1/4] ether: support " Qi Zhang
2018-02-12 13:55   ` Thomas Monjalon
2018-02-12  4:53 ` [PATCH 2/4] app/testpmd: add parameters for " Qi Zhang
2018-02-12  4:53 ` [PATCH 3/4] app/testpmd: add command for " Qi Zhang
2018-02-12  4:53 ` [PATCH 4/4] net/i40e: enable deferred " Qi Zhang
2018-03-02  4:13 ` [PATCH v2 0/4] " Qi Zhang
2018-03-02  4:13   ` [PATCH v2 1/4] ether: support " Qi Zhang
2018-03-14 12:31     ` Ananyev, Konstantin
2018-03-15  3:13       ` Zhang, Qi Z
2018-03-15 13:16         ` Ananyev, Konstantin
2018-03-15 15:08           ` Zhang, Qi Z
2018-03-15 15:38             ` Ananyev, Konstantin
2018-03-16  0:42               ` Zhang, Qi Z
2018-03-02  4:13   ` [PATCH v2 2/4] app/testpmd: add parameters for " Qi Zhang
2018-03-14 17:38     ` Ananyev, Konstantin
2018-03-15  3:58       ` Zhang, Qi Z
2018-03-15 13:42         ` Ananyev, Konstantin
2018-03-15 14:31           ` Zhang, Qi Z
2018-03-02  4:13   ` [PATCH v2 3/4] app/testpmd: add command for " Qi Zhang
2018-03-14 17:36     ` Ananyev, Konstantin
2018-03-14 17:41     ` Ananyev, Konstantin
2018-03-15  3:59       ` Zhang, Qi Z
2018-03-02  4:13   ` [PATCH v2 4/4] net/i40e: enable deferred " Qi Zhang
2018-03-14 12:35     ` Ananyev, Konstantin
2018-03-15  3:22       ` Zhang, Qi Z
2018-03-15  3:50         ` Zhang, Qi Z
2018-03-15 13:22         ` Ananyev, Konstantin
2018-03-15 14:30           ` Zhang, Qi Z
2018-03-15 15:22             ` Ananyev, Konstantin
2018-03-16  0:52               ` Zhang, Qi Z
2018-03-16  9:54                 ` Ananyev, Konstantin
2018-03-16 11:00                   ` Bruce Richardson
2018-03-16 13:18                   ` Zhang, Qi Z
2018-03-16 14:15                   ` Zhang, Qi Z
2018-03-16 18:47                     ` Ananyev, Konstantin
2018-03-18  7:55                       ` Zhang, Qi Z
2018-03-20 13:18                         ` Ananyev, Konstantin
2018-03-21  1:53                           ` Zhang, Qi Z
2018-03-21  7:28 ` [PATCH v3 0/3] runtime " Qi Zhang
2018-03-21  7:28   ` [PATCH v3 1/3] ether: support " Qi Zhang
2018-03-25 19:47     ` Ananyev, Konstantin [this message]
2018-03-21  7:28   ` [PATCH v3 2/3] app/testpmd: add command for " Qi Zhang
2018-03-21  7:28   ` [PATCH v3 3/3] net/i40e: enable runtime " Qi Zhang
2018-03-25 19:46     ` Ananyev, Konstantin
2018-03-26  8:49       ` Zhang, Qi Z
2018-03-26  8:59 ` [PATCH v4 0/3] " Qi Zhang
2018-03-26  8:59   ` [PATCH v4 1/3] ether: support " Qi Zhang
2018-03-26  8:59   ` [PATCH v4 2/3] app/testpmd: add command for " Qi Zhang
2018-04-01 12:21     ` Ananyev, Konstantin
2018-03-26  8:59   ` [PATCH v4 3/3] net/i40e: enable runtime " Qi Zhang
2018-04-01 12:18     ` Ananyev, Konstantin
2018-04-02  2:20       ` Zhang, Qi Z
2018-04-02  2:59 ` [PATCH v5 0/3] " Qi Zhang
2018-04-02  2:59   ` [PATCH v5 1/3] ether: support " Qi Zhang
2018-04-06 19:42     ` Rosen, Rami
2018-04-08  2:20       ` Zhang, Qi Z
2018-04-02  2:59   ` [PATCH v5 2/3] app/testpmd: add command for " Qi Zhang
2018-04-07 15:49     ` Rosen, Rami
2018-04-08  2:22       ` Zhang, Qi Z
2018-04-02  2:59   ` [PATCH v5 3/3] net/i40e: enable runtime " Qi Zhang
2018-04-02 23:36   ` [PATCH v5 0/3] " Ananyev, Konstantin
2018-04-08  2:42 ` Qi Zhang
2018-04-08  2:42   ` [PATCH v6 1/3] ether: support " Qi Zhang
2018-04-10 13:59     ` Thomas Monjalon
2018-04-20 11:14       ` Ferruh Yigit
2018-04-24 19:36       ` Thomas Monjalon
2018-04-25  5:33         ` Zhang, Qi Z
2018-04-25  7:54           ` Thomas Monjalon
2018-04-20 11:16     ` Ferruh Yigit
2018-04-08  2:42   ` [PATCH v6 2/3] app/testpmd: add command for " Qi Zhang
2018-04-20 11:29     ` Ferruh Yigit
2018-04-22 11:57       ` Zhang, Qi Z
2018-04-08  2:42   ` [PATCH v6 3/3] net/i40e: enable runtime " Qi Zhang
2018-04-20 11:17     ` Ferruh Yigit
2018-04-22 11:58 ` [PATCH v7 0/5] " Qi Zhang
2018-04-22 11:58   ` [PATCH v7 1/5] ethdev: support " Qi Zhang
2018-04-23 17:45     ` Ferruh Yigit
2018-04-22 11:58   ` [PATCH v7 2/5] app/testpmd: add command for " Qi Zhang
2018-04-22 11:58   ` [PATCH v7 3/5] app/testpmd: enable per queue configure Qi Zhang
2018-04-23 17:45     ` Ferruh Yigit
2018-04-22 11:58   ` [PATCH v7 4/5] app/testpmd: enable queue ring size configure Qi Zhang
2018-04-23 17:45     ` Ferruh Yigit
2018-04-24  3:16       ` Zhang, Qi Z
2018-04-24 11:05         ` Ferruh Yigit
2018-04-22 11:58   ` [PATCH v7 5/5] net/i40e: enable runtime queue setup Qi Zhang
2018-04-23 17:45   ` [PATCH v7 0/5] " Ferruh Yigit
2018-04-24 12:44 ` [PATCH v8 " Qi Zhang
2018-04-24 12:44   ` [PATCH v8 1/5] ethdev: support " Qi Zhang
2018-04-24 14:01     ` Thomas Monjalon
2018-04-24 12:44   ` [PATCH v8 2/5] app/testpmd: add command for " Qi Zhang
2018-04-24 12:44   ` [PATCH v8 3/5] app/testpmd: enable per queue configure Qi Zhang
2018-04-24 12:44   ` [PATCH v8 4/5] app/testpmd: enable queue ring size configure Qi Zhang
2018-04-24 12:44   ` [PATCH v8 5/5] net/i40e: enable runtime queue setup Qi Zhang
2018-04-24 14:50   ` [PATCH v8 0/5] " Ferruh Yigit

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=2601191342CEEE43887BDE71AB977258A0AB4016@irsmsx105.ger.corp.intel.com \
    --to=konstantin.ananyev@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=jingjing.wu@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=thomas@monjalon.net \
    --cc=wenzhuo.lu@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.