From patchwork Thu Nov 2 08:31:32 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 833256 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) 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="IrBbyims"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3ySJJ86Cb8z9t2f for ; Thu, 2 Nov 2017 19:33:12 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755455AbdKBIdC (ORCPT ); Thu, 2 Nov 2017 04:33:02 -0400 Received: from mail-pg0-f65.google.com ([74.125.83.65]:47399 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755390AbdKBIcZ (ORCPT ); Thu, 2 Nov 2017 04:32:25 -0400 Received: by mail-pg0-f65.google.com with SMTP id r25so4436967pgn.4 for ; Thu, 02 Nov 2017 01:32:25 -0700 (PDT) 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=jsGEobbnnsIgQgxUiopNVYwazXRH87IBzBk72PwhI84=; b=IrBbyimsi9bLSShADZzdDPtpbCKJzhy2Iuj9WI4eC6RuT0pK+TYLQsDuqN5gdj0yoU GiJ3STDSTso8wMkT7Loi603UrA12L3BbsH49/d3TdcdboXzhlLSt0L1Duddx4GQh1r36 pFkpSnRcOH0+F7uGaMQt4uuq8dPVEM2mBhfCDQts83tUDM5EhvvjO8XXEhPS4oU3P+VC n5AJyCnnVOSBR3qTZ2CwsP9mP1zQTzSQ0PJ4fDJeCa1aVVgT7nGOnsuGV72VI1yXEN9A jafKVFGfPVfW7sUbsNcV1mGAkdnAihFvMKcOFqtxjZdd90/maN9MMlfv/Di8LNZgGeoa u/MQ== 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=jsGEobbnnsIgQgxUiopNVYwazXRH87IBzBk72PwhI84=; b=U2LS8/wcNKAKBUg9sAp+w5UnFmnwSE5Sgnh5Q0GszQNojlR7C6ThQMVYIGO2fbjrW7 HQurg7XzW+YFogRL8qB/lpUbrs3UXXPWYTU8Ljls5/qYaUHS8WEqSUt8aIkXk3RaArDj hn+8e2n2lY5r3wNQceLB2W9gER6X5JXAZuSg7YWL78t2ODbJr3UAp0sjHNOgsoonQlMM 0EowpfHcRDGLSBkB8rAuuASCJHIMRQvgvaF/sXHdkERieKNIyjBsphf2QCaChA9VtRpI YJ8EyNpsNCd6KDTcrOWF71xxlRNvtH7WrWJQgudH0VbZB+jRfkdNieswWb9nvsRBcSrt WJ8Q== X-Gm-Message-State: AMCzsaWoMiBBaVBKwFp+obzh2CZ0RKrqZ/1tss2e9CK2zcF9SqQoxkLW zo2ib2W1V8T9+9rpnCfMpIYieWz2 X-Google-Smtp-Source: ABhQp+RrGb2vlkt+G/E5nhUP1/6ckSmd12rroinlMNp59nj5jpHMuY/xz38YbxCJfF4QaIKcLLMADQ== X-Received: by 10.98.220.220 with SMTP id c89mr2856773pfl.167.1509611545083; Thu, 02 Nov 2017 01:32:25 -0700 (PDT) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id z13sm5390484pgc.29.2017.11.02.01.32.24 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 Nov 2017 01:32:24 -0700 (PDT) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next 4/8] nfp: reorganize the app table Date: Thu, 2 Nov 2017 01:31:32 -0700 Message-Id: <20171102083136.2096-5-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171102083136.2096-1-jakub.kicinski@netronome.com> References: <20171102083136.2096-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The app table is an unordered array right now. We have to search apps by ID. It also makes it harder to fall back to core NIC if advanced functions are not compiled into the kernel (e.g. eBPF). Make the table keyed by app id. Signed-off-by: Jakub Kicinski Reviewed-by: Simon Horman --- drivers/net/ethernet/netronome/nfp/nfp_app.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.c b/drivers/net/ethernet/netronome/nfp/nfp_app.c index 5d9e2eba5b49..085c5151c601 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_app.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_app.c @@ -43,10 +43,10 @@ #include "nfp_net_repr.h" static const struct nfp_app_type *apps[] = { - &app_nic, - &app_bpf, + [NFP_APP_CORE_NIC] = &app_nic, + [NFP_APP_BPF_NIC] = &app_bpf, #ifdef CONFIG_NFP_APP_FLOWER - &app_flower, + [NFP_APP_FLOWER_NIC] = &app_flower, #endif }; @@ -116,17 +116,13 @@ nfp_app_reprs_set(struct nfp_app *app, enum nfp_repr_type type, struct nfp_app *nfp_app_alloc(struct nfp_pf *pf, enum nfp_app_id id) { struct nfp_app *app; - unsigned int i; - for (i = 0; i < ARRAY_SIZE(apps); i++) - if (apps[i]->id == id) - break; - if (i == ARRAY_SIZE(apps)) { + if (id >= ARRAY_SIZE(apps) || !apps[id]) { nfp_err(pf->cpp, "failed to find app with ID 0x%02hhx\n", id); return ERR_PTR(-EINVAL); } - if (WARN_ON(!apps[i]->name || !apps[i]->vnic_alloc)) + if (WARN_ON(!apps[id]->name || !apps[id]->vnic_alloc)) return ERR_PTR(-EINVAL); app = kzalloc(sizeof(*app), GFP_KERNEL); @@ -136,7 +132,7 @@ struct nfp_app *nfp_app_alloc(struct nfp_pf *pf, enum nfp_app_id id) app->pf = pf; app->cpp = pf->cpp; app->pdev = pf->pdev; - app->type = apps[i]; + app->type = apps[id]; return app; }