From patchwork Thu Jan 18 02:51:05 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 862720 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="plTc2mmw"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3zMT5n47mDz9s83 for ; Thu, 18 Jan 2018 13:52:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753548AbeARCwe (ORCPT ); Wed, 17 Jan 2018 21:52:34 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:41643 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753412AbeARCwW (ORCPT ); Wed, 17 Jan 2018 21:52:22 -0500 Received: by mail-pg0-f67.google.com with SMTP id 136so12228845pgd.8 for ; Wed, 17 Jan 2018 18:52:22 -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=gAk76A2i6wuWGnQPNmt6d0BQ+hVdqBNUS6Rx78Lk9y8=; b=plTc2mmw9EIRNZ2qe6f8dKbM5QePdSHCQUMuVCkHyEnFujB0X18+KJvIu7MUID4R/q 4L9dClSQyz8cFU5VxiyNp+2IQ0LsPlN/uWAGWPftuRy3aVfsL1ente/BMcElKRx3N/RC WiAECI73TnUFLs0fUHaWbNpBtSoHmIcrjhq+9jl3r7UQZgu5UXhzUoOsaI0zvsejVKZj Vm1iFCTR9feW4bL3+WTQfgzNFC3E/Y8zx3wpekopULavwCjinbRL85xDAabHMnKeXL1O kRCk3NQKWlPcjIzeQwoRUDdc7z0hADJv78Y+4ZYCccEZM8twOU9SwHbxuwmHkTNY7CHf 2bCg== 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=gAk76A2i6wuWGnQPNmt6d0BQ+hVdqBNUS6Rx78Lk9y8=; b=fR6LwIG9+Jl6EKNlQ1oH23dCGpGIjGggFPGUpb7FDwMm2Pxw9aIUGgPIWHurDBCwjx Qhify7nuD8BY2znI+P2pO2YpZgSq5qBOpLHxue0WvMHK+ERAcy9TduL2z39iHyCRppb/ hdVDPOw5sk1Ko2q+504R9IbYhy3r4Sajz3+J4iVorpb9nBa1bBVeYnEp658+3Uzbobyk NFipgUHapOcE8qKQsThW0TyoPKrxMSSzaBR0SvGwuaXhN50F2MEgrzpSKbOmqysbb5VC rBD/RmAL8yS8CaDKVyyktusCcugI2pnw/g8cpZAC5uaW2FsicFV+3E2uNdB+QVwy8vFa Daaw== X-Gm-Message-State: AKwxytfcx8ePbJLsiCbmVQtsRiyuvAU2/Zemu1HvR3JPnDVnnBo7jsT0 gwx8GDcn+9l8z0AiWfgZR7ahgw== X-Google-Smtp-Source: ACJfBotFsB4ESk6kBbVhV+b/69n3E5mr5w9Bo55WE4It6nB973+qEVr0d84adMfYGBNgqU0Fis1fhQ== X-Received: by 10.98.20.20 with SMTP id 20mr26881993pfu.152.1516243942415; Wed, 17 Jan 2018 18:52:22 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id q6sm9128026pgv.72.2018.01.17.18.52.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 17 Jan 2018 18:52:21 -0800 (PST) From: Jakub Kicinski To: davem@davemloft.net Cc: netdev@vger.kernel.org, oss-drivers@netronome.com, Jakub Kicinski Subject: [PATCH net-next 11/12] nfp: allow apps to disable ctrl vNIC capabilities Date: Wed, 17 Jan 2018 18:51:05 -0800 Message-Id: <20180118025106.30427-12-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180118025106.30427-1-jakub.kicinski@netronome.com> References: <20180118025106.30427-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Most vNIC capabilities are netdev related. It makes no sense to initialize them and waste FW resources. Some are even counter-productive, like IRQ moderation, which will slow down exchange of control messages. Add to nfp_app a mask of enabled control vNIC capabilities for apps to use. Make flower and BPF enable all capabilities for now. No functional changes. Signed-off-by: Jakub Kicinski Reviewed-by: Dirk van der Merwe --- drivers/net/ethernet/netronome/nfp/bpf/main.c | 2 ++ drivers/net/ethernet/netronome/nfp/flower/main.c | 2 ++ drivers/net/ethernet/netronome/nfp/nfp_app.h | 4 ++++ drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 4 ++++ 4 files changed, 12 insertions(+) diff --git a/drivers/net/ethernet/netronome/nfp/bpf/main.c b/drivers/net/ethernet/netronome/nfp/bpf/main.c index 8823c8360047..5f021d0c88a4 100644 --- a/drivers/net/ethernet/netronome/nfp/bpf/main.c +++ b/drivers/net/ethernet/netronome/nfp/bpf/main.c @@ -389,6 +389,8 @@ const struct nfp_app_type app_bpf = { .id = NFP_APP_BPF_NIC, .name = "ebpf", + .ctrl_cap_mask = ~0U, + .init = nfp_bpf_init, .clean = nfp_bpf_clean, diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.c b/drivers/net/ethernet/netronome/nfp/flower/main.c index 3c05bffff637..742d6f1575b5 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.c +++ b/drivers/net/ethernet/netronome/nfp/flower/main.c @@ -565,6 +565,8 @@ static void nfp_flower_stop(struct nfp_app *app) const struct nfp_app_type app_flower = { .id = NFP_APP_FLOWER_NIC, .name = "flower", + + .ctrl_cap_mask = ~0U, .ctrl_has_meta = true, .extra_cap = nfp_flower_extra_cap, diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.h b/drivers/net/ethernet/netronome/nfp/nfp_app.h index 91d469a8e3e6..7e474df90598 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_app.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_app.h @@ -66,6 +66,9 @@ extern const struct nfp_app_type app_flower; * struct nfp_app_type - application definition * @id: application ID * @name: application name + * @ctrl_cap_mask: ctrl vNIC capability mask, allows disabling features like + * IRQMOD which are on by default but counter-productive for + * control messages which are often latency-sensitive * @ctrl_has_meta: control messages have prepend of type:5/port:CTRL * * Callbacks @@ -100,6 +103,7 @@ struct nfp_app_type { enum nfp_app_id id; const char *name; + u32 ctrl_cap_mask; bool ctrl_has_meta; int (*init)(struct nfp_app *app); diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 86a88770181d..cdf52421eaca 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -3790,6 +3790,10 @@ static int nfp_net_read_caps(struct nfp_net *nn) nn->dp.rx_offset = NFP_NET_RX_OFFSET; } + /* For control vNICs mask out the capabilities app doesn't want. */ + if (!nn->dp.netdev) + nn->cap &= nn->app->type->ctrl_cap_mask; + return 0; }