From patchwork Fri Feb 17 22:00:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 729380 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 3vQ6Rz4DhNz9s85 for ; Sat, 18 Feb 2017 09:01:35 +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="FDt4MaFQ"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S935151AbdBQWBd (ORCPT ); Fri, 17 Feb 2017 17:01:33 -0500 Received: from mail-pg0-f50.google.com ([74.125.83.50]:36344 "EHLO mail-pg0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S935068AbdBQWBI (ORCPT ); Fri, 17 Feb 2017 17:01:08 -0500 Received: by mail-pg0-f50.google.com with SMTP id v184so18589909pgv.3 for ; Fri, 17 Feb 2017 14:01:07 -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=4EuiltoCLm+ksc+gzhiaiVqTXRruhpmyEQOQ7s5pRSc=; b=FDt4MaFQHwZjJgZa5Dx+oAXFR6VxBEzynIgvHXzT30s0D1QZH1aVV5HtkP0KJndGId 6Ej6Jdq2E/o8kOsumJ48YgB69+NtU0FR3Yfih60ILQX9FnIJ97JGkF3LaqfXFmu2pwBn QXuYJAG1ICWyXio80ixSWMnSrgTDR/+ddD3XV/cfMDRBtx18xdnX58Op+PUi5WZblQcn 9w5eTht5adfcSXFMBsf4u3Z7+p167NuZH3TrzmtTH6SyO3Sg1+pMBd3D5XBeu5mmNyRP bJjsGUrZKRs0YUh5TqFuqZccDo26oFcysAun740Sk0oBq6gRQ8ICy841A1PrbZgHGxXt efsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=4EuiltoCLm+ksc+gzhiaiVqTXRruhpmyEQOQ7s5pRSc=; b=GXIgWPsssZlbRyIAvuF0HF4VRtGtJpYGb2y1Oaqx2fLCely+rEC2Tq/wnesVeSe5SH zUYjHqc0tZ1aNpFm3FhGcgJQYRPUQtRNXtZYGLl66VzHLmUXu+ad/Gm8jo/S4m4AtwVd 0Y8oYDdO04rKhlLN/m/dMC6NjkI3fOcJGjP4yhGPGKYtZZWshjNKpWMrROgJWFGMM7hj aIwyAY/YW/cHtckImXv6aAq4ktMgFEYSHSKB54L6KO+62cjq4J3SOxkomS5CY0r7J3QF YEoW2gNkUeRrL5f/f/6AdWGDNQnaw5w082viszcae2f9CUGfR7gp0yXlTHejpjeN7whP CU5w== X-Gm-Message-State: AMke39lWSst4V75mw5DzfVT4qO956RHVZB4Hx7L50PA8SA51DHVCu4+n0qAin25qp3RQ3RKn X-Received: by 10.98.78.66 with SMTP id c63mr11940921pfb.138.1487368867254; Fri, 17 Feb 2017 14:01:07 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id z127sm21519833pgz.29.2017.02.17.14.01.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 17 Feb 2017 14:01:06 -0800 (PST) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, dinan.gunawardena@netronome.com, Jakub Kicinski Subject: [PATCH net-next 3/7] nfp: store NSP ABI version in state structure Date: Fri, 17 Feb 2017 14:00:23 -0800 Message-Id: <20170217220027.189992-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170217220027.189992-1-jakub.kicinski@netronome.com> References: <20170217220027.189992-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We read the status register on each NSP open, we can store the NSP ABI version in the state structure so that we don't have to read it again. Signed-off-by: Jakub Kicinski --- .../net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c | 27 +++++++++++----------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c index f07f2fc3fba0..f2d737c3d1df 100644 --- a/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c +++ b/drivers/net/ethernet/netronome/nfp/nfpcore/nfp_nsp.c @@ -99,6 +99,10 @@ enum nfp_nsp_cmd { struct nfp_nsp { struct nfp_cpp *cpp; struct nfp_resource *res; + struct { + u16 major; + u16 minor; + } ver; }; static int nfp_nsp_check(struct nfp_nsp *state) @@ -120,11 +124,12 @@ static int nfp_nsp_check(struct nfp_nsp *state) return -ENODEV; } - if (FIELD_GET(NSP_STATUS_MAJOR, reg) != NSP_MAJOR || - FIELD_GET(NSP_STATUS_MINOR, reg) < NSP_MINOR) { - nfp_err(cpp, "Unsupported ABI %lld.%lld\n", - FIELD_GET(NSP_STATUS_MAJOR, reg), - FIELD_GET(NSP_STATUS_MINOR, reg)); + state->ver.major = FIELD_GET(NSP_STATUS_MAJOR, reg); + state->ver.minor = FIELD_GET(NSP_STATUS_MINOR, reg); + + if (state->ver.major != NSP_MAJOR || state->ver.minor < NSP_MINOR) { + nfp_err(cpp, "Unsupported ABI %hu.%hu\n", + state->ver.major, state->ver.minor); return -EINVAL; } @@ -301,15 +306,9 @@ static int nfp_nsp_command_buf(struct nfp_nsp *nsp, u16 code, u32 option, int ret, err; u32 cpp_id; - err = nfp_cpp_readq(cpp, nfp_resource_cpp_id(nsp->res), - nfp_resource_address(nsp->res) + NSP_STATUS, ®); - if (err < 0) - return err; - - if (FIELD_GET(NSP_STATUS_MINOR, reg) < 13) { - nfp_err(cpp, "NSP: Code 0x%04x with buffer not supported (ABI %lld.%lld)\n", - code, FIELD_GET(NSP_STATUS_MAJOR, reg), - FIELD_GET(NSP_STATUS_MINOR, reg)); + if (nsp->ver.minor < 13) { + nfp_err(cpp, "NSP: Code 0x%04x with buffer not supported (ABI %hu.%hu)\n", + code, nsp->ver.major, nsp->ver.minor); return -EOPNOTSUPP; }