All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ido Shamay <idos@dev.mellanox.co.il>
To: Benjamin Poirier <bpoirier@suse.de>, Amir Vadai <amirv@mellanox.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] mlx4: Fix tx ring affinity_mask creation
Date: Sun, 12 Apr 2015 10:03:04 +0300	[thread overview]
Message-ID: <552A18A8.1040109@dev.mellanox.co.il> (raw)
In-Reply-To: <1428683240-22879-1-git-send-email-bpoirier@suse.de>

Hi Benjamin,

On 4/10/2015 7:27 PM, Benjamin Poirier wrote:
> By default, the number of tx queues is limited by the number of online cpus in
> mlx4_en_get_profile(). However, this limit no longer holds after the ethtool
> .set_channels method has been called. In that situation, the driver may access
> invalid bits of certain cpumask variables when queue_index > nr_cpu_ids.

I must say I don't see the above issue with the current code.
Whatever is the modified value of priv->num_tx_rings_p_up, it will set 
XPS only on queues which have
been set with CPU affinity mask (no access to invalid bits).

It's true that when priv->num_tx_rings_p_up > nr_cpus. not all queues 
will be set with XPS.
This is because the code tries to preserve 1:1 mapping of queues to 
cores, to avoid a double mapping
of queues to cores.
I guess it's ok to break the 1:1 mapping in this condition, but the 
commit message should say that instead
of invalid bits. Please fix me if I'm wrong.

> Signed-off-by: Benjamin Poirier <bpoirier@suse.de>
> ---
>   drivers/net/ethernet/mellanox/mlx4/en_tx.c | 8 +++++---
>   1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/mellanox/mlx4/en_tx.c b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
> index 55f9f5c..8c234ec 100644
> --- a/drivers/net/ethernet/mellanox/mlx4/en_tx.c
> +++ b/drivers/net/ethernet/mellanox/mlx4/en_tx.c
> @@ -143,8 +143,10 @@ int mlx4_en_create_tx_ring(struct mlx4_en_priv *priv,
>   	ring->hwtstamp_tx_type = priv->hwtstamp_config.tx_type;
>   	ring->queue_index = queue_index;
>   
> -	if (queue_index < priv->num_tx_rings_p_up && cpu_online(queue_index))
> -		cpumask_set_cpu(queue_index, &ring->affinity_mask);
> +	if (queue_index < priv->num_tx_rings_p_up)
> +			cpumask_set_cpu_local_first(queue_index,
> +					    priv->mdev->dev->numa_node,
> +					    &ring->affinity_mask);
Moving from cpumask_set_cpu to cpumask_set_cpu_local_first is great, but 
should come in a different commit, since
the behavior of the XPS is changed here (xps_cpus[tx_ring[queue_index]] 
!= queue_index from now).
Commit should state of this behavior change.
Thanks a lot Benjamin.
>   
>   	*pring = ring;
>   	return 0;
> @@ -213,7 +215,7 @@ int mlx4_en_activate_tx_ring(struct mlx4_en_priv *priv,
>   
>   	err = mlx4_qp_to_ready(mdev->dev, &ring->wqres.mtt, &ring->context,
>   			       &ring->qp, &ring->qp_state);
> -	if (!user_prio && cpu_online(ring->queue_index))
> +	if (!cpumask_empty(&ring->affinity_mask))
>   		netif_set_xps_queue(priv->dev, &ring->affinity_mask,
>   				    ring->queue_index);
>   


  reply	other threads:[~2015-04-12  7:03 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-10 16:27 [PATCH] mlx4: Fix tx ring affinity_mask creation Benjamin Poirier
2015-04-12  7:03 ` Ido Shamay [this message]
2015-04-14  0:22   ` Benjamin Poirier
2015-04-28  3:26     ` Benjamin Poirier
2015-04-28 13:37       ` Ido Shamay
2015-04-28 18:24 ` Or Gerlitz

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=552A18A8.1040109@dev.mellanox.co.il \
    --to=idos@dev.mellanox.co.il \
    --cc=amirv@mellanox.com \
    --cc=bpoirier@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.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 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.