From patchwork Thu Feb 18 20:38:18 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 584932 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 21566140BAC for ; Fri, 19 Feb 2016 07:39:34 +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=zXXmHMdu; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1948396AbcBRUjV (ORCPT ); Thu, 18 Feb 2016 15:39:21 -0500 Received: from mail-wm0-f46.google.com ([74.125.82.46]:37060 "EHLO mail-wm0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1948081AbcBRUii (ORCPT ); Thu, 18 Feb 2016 15:38:38 -0500 Received: by mail-wm0-f46.google.com with SMTP id g62so42994074wme.0 for ; Thu, 18 Feb 2016 12:38:37 -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=zXXmHMdu30GNzbIEb7VZ5ekQU6Os33rQYt/s37zViulE+VHB/QRUAZFaXS7Hm9pYrm 57i6Zb4YuacRHw1UrYXwOVsICi/l2FYBpQPhGNFDnqSeay2CXFlOqCk/8UOgyFdfPrTy N+tPPz6PsOdzy8S8ST6QCtLMzJaoYrlLOPKAUvb28+oVZSoB5xA4fuiYM1GKycBFWjQ6 fZn+qag8fm2/W2y7winEuV582rTgo5CcInMUK1eJaUFt6ywK7OyZh6y6I+v2WeVpOfrW XtUtbkHigHR5BE2vVrX4vPGgFeOcr0ZizB3+Gzy46jJ7geqBUDoXBkIVJl9u+Fznqgql QDKw== 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=WZ7z1wFc4YK8bQ8WrGbqVxG5LU2iRKSzFmp9/0gZDkvlUTu6LolwHt+GKTYFUbWlci kqXFVeU3m0m9U1lrfLi3WKpMPu0U+ZnRkfpTpk8z8jPeLPT4KVF49ezLsgJuVbhluVdC 7NR18LLp8fTlzDRrzWqwYOIWnmvKsafD4dm2BfiA35gutCwQii+Bp88JjKmWMMhCn4HR KmQ50prINR5zWdb5yD952Ub6JIDKjcYFlZ6Ddp/MdWOjn64GX/tASLKF5dKsX8G1QFVt 7E6nAvKiD5gBrm185gTLPvOGE4WaFMyKb2a0+dyxyRQ9aIna80YnjdWo0kNSyxld3b3Y Y7cA== X-Gm-Message-State: AG10YORnTIR98/QwCwNKsQ63q1wtyH95jhe3vwptMGYjQkzFWpQB051MIfeJC+cq3Dcr3hIM X-Received: by 10.194.143.82 with SMTP id sc18mr9290752wjb.14.1455827917268; Thu, 18 Feb 2016 12:38:37 -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 hh8sm8133410wjc.42.2016.02.18.12.38.36 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 18 Feb 2016 12:38:36 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net Cc: netdev@vger.kernel.org, Jakub Kicinski Subject: [PATCHv3 net-next 03/14] nfp: make *x_ring_init do all the init Date: Thu, 18 Feb 2016 20:38:18 +0000 Message-Id: <1455827909-26443-4-git-send-email-jakub.kicinski@netronome.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1455827909-26443-1-git-send-email-jakub.kicinski@netronome.com> References: <1455827909-26443-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); } }