From patchwork Tue Apr 28 21:49:29 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Poirier X-Patchwork-Id: 465779 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 04566140320 for ; Wed, 29 Apr 2015 07:51:27 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="verification failed; unprotected key" header.d=gmail.com header.i=@gmail.com header.b=Vvexcd8t; dkim-adsp=none (unprotected policy); dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1031054AbbD1VvI (ORCPT ); Tue, 28 Apr 2015 17:51:08 -0400 Received: from mail-pd0-f177.google.com ([209.85.192.177]:34683 "EHLO mail-pd0-f177.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1030711AbbD1VvF (ORCPT ); Tue, 28 Apr 2015 17:51:05 -0400 Received: by pdbqa5 with SMTP id qa5so7992874pdb.1; Tue, 28 Apr 2015 14:51:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id; bh=6kBuwnARfONF370fbN9ifWQOo+HcJFnQ1VLpD+6sAAY=; b=Vvexcd8tszp87r5OAWtZog0CwdGLwDl32A9C3TsT/12GySUoRQ3Gqc9mJzuubh/U8A GnjuHqJ+1bgUPw2Xy4LVhyukl98mjzu9e4pI9AbM+bE6ytUzADwM88Q/LmXvUc5HpfpF 1dMhYXsTcsiAA4ni7axzS5SQIRbz6w9DNdBs3mPsbzP9XOeQSlTm0DutfImzA4d92vKh dhfIK1OlSBAxpR+dIdQArPtscHKf1Rs8tVxTO116tg0PwH52Kj/gyyNL+eEV/dVfhZYd ljnn15CNdQsi5bYtHINamLS7vcli7xoPsZaN9GVX3fE8nY1D1n1AxOgutF0Kw5lamAB5 rwKw== X-Received: by 10.67.8.71 with SMTP id di7mr7706981pad.46.1430257865398; Tue, 28 Apr 2015 14:51:05 -0700 (PDT) Received: from f1.synalogic.ca (c-73-202-26-186.hsd1.ca.comcast.net. [73.202.26.186]) by mx.google.com with ESMTPSA id f1sm23389558pdp.24.2015.04.28.14.51.04 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 28 Apr 2015 14:51:04 -0700 (PDT) From: Benjamin Poirier To: Amir Vadai , Ido Shamay Cc: Or Gerlitz , clsoto@us.ibm.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH RESEND] mlx4: Fix tx ring affinity_mask creation Date: Tue, 28 Apr 2015 14:49:29 -0700 Message-Id: <1430257769-23350-1-git-send-email-bpoirier@suse.de> X-Mailer: git-send-email 2.3.5 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org 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. Signed-off-by: Benjamin Poirier Acked-by: Ido Shamay Fixes: d03a68f ("net/mlx4_en: Configure the XPS queue mapping on driver load") --- 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 1783705..f7bf312 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); *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);