From patchwork Wed Feb 3 11:45:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 577857 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 2B26614033E for ; Wed, 3 Feb 2016 22:46:57 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=netronome-com.20150623.gappssmtp.com header.i=@netronome-com.20150623.gappssmtp.com header.b=sD0G8jdI; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756816AbcBCLqw (ORCPT ); Wed, 3 Feb 2016 06:46:52 -0500 Received: from mail-wm0-f52.google.com ([74.125.82.52]:33779 "EHLO mail-wm0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932936AbcBCLpo (ORCPT ); Wed, 3 Feb 2016 06:45:44 -0500 Received: by mail-wm0-f52.google.com with SMTP id l66so159538788wml.0 for ; Wed, 03 Feb 2016 03:45:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=netronome-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=GGfHy34LF3ea7sbIr58stdNB6YAG2DRepJPNFfOEspg=; b=sD0G8jdIy/G7qZCc0xhu3gtTsdA9ELj8i+gfO8kBe1Zmm6TFV6rLcJg01VDyZjSMnl BlJNAgGBvNQkwrVkr33KkzfMAvtxRZKNkpeBs5k57REcWJIlt6/OY1PsEqasLx7V88zR 0WPy7Ecji/JHeerY4q0VJkfViqwR9odfgREWgZmMtxqJZSlyioT6uiSPbVbGol1Dgeq0 5wrtjZ47XncS8jEyTVQ6SVTr2CQuntmiRCo+v2epqrkCTpy5e19WC0h/pany7PLFzYPB 2HWW3v+BBjCE49RaceqRTMBP7ndPj9+78AZwaDrCV/Yhxy2OBjRD7FyppcPZ9C05pPUw kOOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=GGfHy34LF3ea7sbIr58stdNB6YAG2DRepJPNFfOEspg=; b=R5QpME4agqbBGEvYjNt8AV75MHjdRPpwB5twkkG1PTNv63Kyx8M1U8GZZIAbBSG22v tLgs3/RlF91bZDSlJdxOZKHXTIE/LuREs1pQy+010klBY8TzYsjS3kv1SeunDfY8bm0v qbfUW8CQbRUFoJqoqQbi4C299erBdY7JReBeC/2p3bTJQuq6Z/wz+RR28giyd6+IS7nK +SMX0rnwydaizWEDLAFcnhjxRRKOQixhC01g/ylifvV+uqMz69gL/utqE7e7v0EVvWvE t7x0lsOqFzIqH6msBWVUKKAPx/hfp4aYFgf1ptEsxiH6SqephAOsUZCDTtwFK4bmuGIs VdfQ== X-Gm-Message-State: AG10YORaZ3M5Na55ewPohLAMORaqVWUhw5mEJw9A0jPBaLaDjq1CUtLvsGokxKjfgIqQ81NA X-Received: by 10.28.224.84 with SMTP id x81mr20169614wmg.62.1454499943130; Wed, 03 Feb 2016 03:45:43 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com (host217-39-174-19.in-addr.btopenworld.com. [217.39.174.19]) by smtp.gmail.com with ESMTPSA id gb9sm6084421wjb.26.2016.02.03.03.45.42 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 03 Feb 2016 03:45:42 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net Cc: netdev@vger.kernel.org, Jakub Kicinski Subject: [RFC (v3) 08/19] nfp: make *x_ring_init do all the init Date: Wed, 3 Feb 2016 11:45:14 +0000 Message-Id: <1454499925-16359-9-git-send-email-jakub.kicinski@netronome.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1454499925-16359-1-git-send-email-jakub.kicinski@netronome.com> References: <1454499925-16359-1-git-send-email-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org nfp_net_[rt]x_ring_init functions used to be called from probe path only and some of their functionality was spilled to the call site. In order to reuse them for ring reconfiguration we need them to do all the init. Signed-off-by: Jakub Kicinski --- .../net/ethernet/netronome/nfp/nfp_net_common.c | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index d39ac3553e1e..8299d4c002fb 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -348,12 +348,18 @@ static irqreturn_t nfp_net_irq_exn(int irq, void *data) /** * nfp_net_tx_ring_init() - Fill in the boilerplate for a TX ring * @tx_ring: TX ring structure + * @r_vec: IRQ vector servicing this ring + * @idx: Ring index */ -static void nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring) +static void +nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring, + struct nfp_net_r_vector *r_vec, unsigned int idx) { - struct nfp_net_r_vector *r_vec = tx_ring->r_vec; struct nfp_net *nn = r_vec->nfp_net; + tx_ring->idx = idx; + tx_ring->r_vec = r_vec; + tx_ring->qcidx = tx_ring->idx * nn->stride_tx; tx_ring->qcp_q = nn->tx_bar + NFP_QCP_QUEUE_OFF(tx_ring->qcidx); } @@ -361,12 +367,18 @@ static void nfp_net_tx_ring_init(struct nfp_net_tx_ring *tx_ring) /** * nfp_net_rx_ring_init() - Fill in the boilerplate for a RX ring * @rx_ring: RX ring structure + * @r_vec: IRQ vector servicing this ring + * @idx: Ring index */ -static void nfp_net_rx_ring_init(struct nfp_net_rx_ring *rx_ring) +static void +nfp_net_rx_ring_init(struct nfp_net_rx_ring *rx_ring, + struct nfp_net_r_vector *r_vec, unsigned int idx) { - struct nfp_net_r_vector *r_vec = rx_ring->r_vec; struct nfp_net *nn = r_vec->nfp_net; + rx_ring->idx = idx; + rx_ring->r_vec = r_vec; + rx_ring->fl_qcidx = rx_ring->idx * nn->stride_rx; rx_ring->rx_qcidx = rx_ring->fl_qcidx + (nn->stride_rx - 1); @@ -404,14 +416,10 @@ static void nfp_net_irqs_assign(struct net_device *netdev) cpumask_set_cpu(r, &r_vec->affinity_mask); r_vec->tx_ring = &nn->tx_rings[r]; - nn->tx_rings[r].idx = r; - nn->tx_rings[r].r_vec = r_vec; - nfp_net_tx_ring_init(r_vec->tx_ring); + nfp_net_tx_ring_init(r_vec->tx_ring, r_vec, r); r_vec->rx_ring = &nn->rx_rings[r]; - nn->rx_rings[r].idx = r; - nn->rx_rings[r].r_vec = r_vec; - nfp_net_rx_ring_init(r_vec->rx_ring); + nfp_net_rx_ring_init(r_vec->rx_ring, r_vec, r); } }