DPDK patches and discussions
 help / color / mirror / Atom feed
From: Radu Nicolau <radu.nicolau@intel.com>
To: Tomasz Kulasek <tomaszx.kulasek@intel.com>, dev@dpdk.org
Cc: declan.doherty@intel.com
Subject: Re: [dpdk-dev] [PATCH] bonding: fix wrong slaves capacity check
Date: Mon, 4 Sep 2017 14:01:22 +0100	[thread overview]
Message-ID: <68de484c-d20b-3b09-b2cd-38e848fc2d9c@intel.com> (raw)
In-Reply-To: <20170727120027.30416-1-tomaszx.kulasek@intel.com>


On 7/27/2017 1:00 PM, Tomasz Kulasek wrote:
> For fortville NIC bond_ethdev_8023ad_flow_verify fails when action queue
> index indicates unavailable queue before slaves configuration.
>
> This fix verifies flow settings for queue 0, which is always available,
> and checks if slaves max queue number capacity meets requirements.
>
> Fixes: 112891cd27e5 ("net/bonding: add dedicated HW queues for LACP control")
>
> Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Reviewed-by:  Radu Nicolau <radu.nicolau@intel.com>
> ---
>   drivers/net/bonding/rte_eth_bond_pmd.c | 26 +++++++++++++++++++-------
>   1 file changed, 19 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c
> index 8f9a860..ab5ebe0 100644
> --- a/drivers/net/bonding/rte_eth_bond_pmd.c
> +++ b/drivers/net/bonding/rte_eth_bond_pmd.c
> @@ -175,12 +175,13 @@ const struct rte_flow_attr flow_attr_8023ad = {
>   int
>   bond_ethdev_8023ad_flow_verify(struct rte_eth_dev *bond_dev,
>   		uint8_t slave_port) {
> +	struct rte_eth_dev_info slave_info;
>   	struct rte_flow_error error;
>   	struct bond_dev_private *internals = (struct bond_dev_private *)
>   			(bond_dev->data->dev_private);
>   
> -	struct rte_flow_action_queue lacp_queue_conf = {
> -		.index = internals->mode4.dedicated_queues.rx_qid,
> +	const struct rte_flow_action_queue lacp_queue_conf = {
> +		.index = 0,
>   	};
>   
>   	const struct rte_flow_action actions[] = {
> @@ -195,8 +196,22 @@ bond_ethdev_8023ad_flow_verify(struct rte_eth_dev *bond_dev,
>   
>   	int ret = rte_flow_validate(slave_port, &flow_attr_8023ad,
>   			flow_item_8023ad, actions, &error);
> -	if (ret < 0)
> +	if (ret < 0) {
> +		RTE_BOND_LOG(ERR, "bond_ethdev_8023ad_flow_verify: %s "
> +				"(slave_port=%d queue_id=%d)",
> +				error.message, slave_port,
> +				internals->mode4.dedicated_queues.rx_qid);
> +		return -1;
> +	}
> +
> +	rte_eth_dev_info_get(slave_port, &slave_info);
> +	if ((slave_info.max_rx_queues < bond_dev->data->nb_rx_queues) ||
> +			(slave_info.max_tx_queues < bond_dev->data->nb_tx_queues)) {
> +		RTE_BOND_LOG(ERR, "bond_ethdev_8023ad_flow_verify: Slave %d"
> +				" capabilities doesn't allow to allocate "
> +				"additional queues", slave_port);
>   		return -1;
> +	}
>   
>   	return 0;
>   }
> @@ -206,7 +221,7 @@ bond_8023ad_slow_pkt_hw_filter_supported(uint8_t port_id) {
>   	struct rte_eth_dev *bond_dev = &rte_eth_devices[port_id];
>   	struct bond_dev_private *internals = (struct bond_dev_private *)
>   			(bond_dev->data->dev_private);
> -	struct rte_eth_dev_info bond_info, slave_info;
> +	struct rte_eth_dev_info bond_info;
>   	uint8_t idx;
>   
>   	/* Verify if all slaves in bonding supports flow director and */
> @@ -217,9 +232,6 @@ bond_8023ad_slow_pkt_hw_filter_supported(uint8_t port_id) {
>   		internals->mode4.dedicated_queues.tx_qid = bond_info.nb_tx_queues;
>   
>   		for (idx = 0; idx < internals->slave_count; idx++) {
> -			rte_eth_dev_info_get(internals->slaves[idx].port_id,
> -					&slave_info);
> -
>   			if (bond_ethdev_8023ad_flow_verify(bond_dev,
>   					internals->slaves[idx].port_id) != 0)
>   				return -1;

  reply	other threads:[~2017-09-04 13:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-07-27 12:00 Tomasz Kulasek
2017-09-04 13:01 ` Radu Nicolau [this message]
2017-09-18 10:24 ` Doherty, Declan
2017-09-18 18:37   ` 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=68de484c-d20b-3b09-b2cd-38e848fc2d9c@intel.com \
    --to=radu.nicolau@intel.com \
    --cc=declan.doherty@intel.com \
    --cc=dev@dpdk.org \
    --cc=tomaszx.kulasek@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 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).