From patchwork Fri Nov 17 01:06:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 838822 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="uNRhbLD6"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3ydKhz0kgBz9s0Z for ; Fri, 17 Nov 2017 12:07:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754459AbdKQBH3 (ORCPT ); Thu, 16 Nov 2017 20:07:29 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:33783 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754380AbdKQBHR (ORCPT ); Thu, 16 Nov 2017 20:07:17 -0500 Received: by mail-pg0-f67.google.com with SMTP id s75so693630pgs.0 for ; Thu, 16 Nov 2017 17:07:17 -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=KGc4yb10WajdiDyaJnOj6K1uZWFGljwFmACOpCb+vQ8=; b=uNRhbLD6Dbu67Q/tBZ8C8WvJEMNop3uB9tBIDhplVglQ+Uu5PLBPkty4u6CtKQDl65 +Zlevwp9taaoQ3nM9JGjfk4KcipZwoAKoblysqU4gW0mPEnnlKjL6f3q7p8rlDxSrpWw yaCPyqOSvtxUqfBUmTpSYH5WIbh0rVwkJbzdjps4fIzdEHiXHKlt4NUahbs5MosO1vSS 9E3sUt5w3uYNRNUXijjsGM69/IzFcVr9YJJAlV0p4iXX2Ctbh3PktGUTqDODk149vAho ywphuBtL7SuUUB4ISJH7qyQJjE4RC1U9YdZblK+YkgCQt1M/hGxtEEfqCuJck0QmN2ld IVyQ== 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=KGc4yb10WajdiDyaJnOj6K1uZWFGljwFmACOpCb+vQ8=; b=dJj9hbwRenlIkv5i0TXh8JfrXDuUCFJ7xaD7m/STH1uv8hgjS358Rj9JWL5eK/CAOp 3PcpDVi6EGGi5+NuE2nFwlBRH/N6a/XAWaIzH7CMmpU6D5vxZTSuOPF7kDnx8L5SHPP0 DCLY+QM/J42MdHEs5BVJ6ugXf/z8kCPxpLl/uIWbTkMCki/3jtuhTnS/SgFKjQF6jWlc TeGb763WFljFltnXyw44fPjvOdyTJhwuj1F2nv4tOWpqqfywtgzRcNYp+EJWk2pFPknI Wh5Pqy5HPBP34Vo5m9Q2p8CFw6QMPvK5qQNoVMdKFgpd+UD1X7XDG5lM/95N1wPtPqhe JJBw== X-Gm-Message-State: AJaThX5MTgcHFnUF+nceRh33RWyTg37IZfAXDzZeU87GhCwk+9SlANEB ukllOraF9xDanQt1NlbuYEuJwCia X-Google-Smtp-Source: AGs4zMaEfI/VH7WchnGN05KL6dk7eclykAyq4tW/lDkYxVBNcHTTWxfQVtnZIr1ac/SKou4hvZrpJw== X-Received: by 10.84.157.74 with SMTP id u10mr3627504plu.414.1510880836707; Thu, 16 Nov 2017 17:07:16 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id e18sm4416726pfi.57.2017.11.16.17.07.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Nov 2017 17:07:16 -0800 (PST) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Pieter Jansen van Vuuren Subject: [PATCH net 1/5] nfp: fix flower offload metadata flag usage Date: Thu, 16 Nov 2017 17:06:39 -0800 Message-Id: <20171117010643.18308-2-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171117010643.18308-1-jakub.kicinski@netronome.com> References: <20171117010643.18308-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Pieter Jansen van Vuuren Hardware has no notion of new or last mask id, instead it makes use of the message type (i.e. add flow or del flow) in combination with a single bit in metadata flags to determine when to add or delete a mask id. Previously we made use of the new or last flags to indicate that a new mask should be allocated or deallocated, respectively. This incorrect behaviour is fixed by making use single bit in metadata flags to indicate mask allocation or deallocation. Fixes: 43f84b72c50d ("nfp: add metadata to each flow offload") Signed-off-by: Pieter Jansen van Vuuren Reviewed-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/flower/main.h | 3 +-- drivers/net/ethernet/netronome/nfp/flower/metadata.c | 7 +++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.h b/drivers/net/ethernet/netronome/nfp/flower/main.h index c90e72b7ff5a..a69ea62e9c9c 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.h +++ b/drivers/net/ethernet/netronome/nfp/flower/main.h @@ -52,8 +52,7 @@ struct nfp_app; #define NFP_FLOWER_MASK_ELEMENT_RS 1 #define NFP_FLOWER_MASK_HASH_BITS 10 -#define NFP_FL_META_FLAG_NEW_MASK 128 -#define NFP_FL_META_FLAG_LAST_MASK 1 +#define NFP_FL_META_FLAG_MANAGE_MASK BIT(7) #define NFP_FL_MASK_REUSE_TIME_NS 40000 #define NFP_FL_MASK_ID_LOCATION 1 diff --git a/drivers/net/ethernet/netronome/nfp/flower/metadata.c b/drivers/net/ethernet/netronome/nfp/flower/metadata.c index 193520ef23f0..db977cf8e933 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/metadata.c +++ b/drivers/net/ethernet/netronome/nfp/flower/metadata.c @@ -282,7 +282,7 @@ nfp_check_mask_add(struct nfp_app *app, char *mask_data, u32 mask_len, id = nfp_add_mask_table(app, mask_data, mask_len); if (id < 0) return false; - *meta_flags |= NFP_FL_META_FLAG_NEW_MASK; + *meta_flags |= NFP_FL_META_FLAG_MANAGE_MASK; } *mask_id = id; @@ -299,6 +299,9 @@ nfp_check_mask_remove(struct nfp_app *app, char *mask_data, u32 mask_len, if (!mask_entry) return false; + if (meta_flags) + *meta_flags &= ~NFP_FL_META_FLAG_MANAGE_MASK; + *mask_id = mask_entry->mask_id; mask_entry->ref_cnt--; if (!mask_entry->ref_cnt) { @@ -306,7 +309,7 @@ nfp_check_mask_remove(struct nfp_app *app, char *mask_data, u32 mask_len, nfp_release_mask_id(app, *mask_id); kfree(mask_entry); if (meta_flags) - *meta_flags |= NFP_FL_META_FLAG_LAST_MASK; + *meta_flags |= NFP_FL_META_FLAG_MANAGE_MASK; } return true; From patchwork Fri Nov 17 01:06:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 838821 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="RhM9E9mB"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3ydKhs6Y5Sz9s0Z for ; Fri, 17 Nov 2017 12:07:25 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754441AbdKQBHY (ORCPT ); Thu, 16 Nov 2017 20:07:24 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:34858 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754382AbdKQBHS (ORCPT ); Thu, 16 Nov 2017 20:07:18 -0500 Received: by mail-pg0-f66.google.com with SMTP id l19so690814pgo.2 for ; Thu, 16 Nov 2017 17:07:18 -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=Ad71HG/gemtEmHqNzNOC9aOr2LMleWBs3+g5lziP1yE=; b=RhM9E9mBXRj7IFWDQI96fCxlyXyExiVQeVFsf/hAm5G3QwEuDDizzDLYKq+8BKqprW vSGG1icZcxpPtR517AsfVbx5LrsulljVIj9bupAt8wlmGXFwVYD4fdcW2cmqvLRBteMY xLjJJXGH5saAwHzwGPOK3nlvY1meni/ExwdBr9iQJOfUsWDEOxa+370an8PUXSo7lSoM HSv9SI2bOMjgXosDQL02TIILdREyLtV2/XbZHxrI0lVVRya/gJklypoQDeMRWLjszZOY stOjr8IB+Q/sXpWdxfJq3mXhr707C2A/Zt5hXFVKNMTXFUE9P6+AgEHh66eLJcaPw1hi sZvA== 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=Ad71HG/gemtEmHqNzNOC9aOr2LMleWBs3+g5lziP1yE=; b=SkGXVV9zzhlg+O6eaxpukhAJRUF6WA1BtoICLM259erUFlkcdZS4JarfhMOhbKT+6s zmDDGVClJwrft2hocX4CbarxuiJBA85gBum/DCH0Hg+YxrW1014UPePe3Wb8uTjx3RlB O3J7/R+gb5zHxdAh/yCI20Cs1FaghtmqLwazc0xZlMEQPPpyTqCtPFljr2qKd/s6G0QI vRcRXAeLetX2KsGxTgmWNoHznx828bRsmb5kTXJeCK9mO/f2CqQP8VW8vhEkRo/jxT85 6sznAADWdBLWyt3ov/CenXZPWdo/KGnmkTD7qZPcE8rZnfbsBNE7wNEy+HC1zLGjEjlG yy9g== X-Gm-Message-State: AJaThX5ZILYQH4Z/q6fIB2uP4jKjPCDl0bsiK2EIW74YCwusk8eN9fuj YNTDvBQT6r76Cov51IZuJ/m9oqJh X-Google-Smtp-Source: AGs4zMbtPK5Zl2r5tgvX1dN5pYmGNwWSk3q6vEgXPzAJzUyfHaR+fJFwEgpOIK5irrbGxX213YXw+w== X-Received: by 10.159.207.143 with SMTP id z15mr3419031plo.159.1510880837477; Thu, 16 Nov 2017 17:07:17 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id e18sm4416726pfi.57.2017.11.16.17.07.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Nov 2017 17:07:17 -0800 (PST) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Pieter Jansen van Vuuren Subject: [PATCH net 2/5] nfp: fix vlan receive MAC statistics typo Date: Thu, 16 Nov 2017 17:06:40 -0800 Message-Id: <20171117010643.18308-3-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171117010643.18308-1-jakub.kicinski@netronome.com> References: <20171117010643.18308-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Pieter Jansen van Vuuren Correct typo in vlan receive MAC stats. Previously the MAC statistics reported in ethtool for vlan receive contained a typo resulting in ethtool reporting rx_vlan_reveive_ok instead of rx_vlan_received_ok. Fixes: a5950182c00e ("nfp: map mac_stats and vf_cfg BARs") Fixes: 098ce840c9ef ("nfp: report MAC statistics in ethtool") Reported-by: Brendan Galloway Signed-off-by: Pieter Jansen van Vuuren Reviewed-by: Jakub Kicinski Reviewed-by: Simon Horman --- drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c | 2 +- drivers/net/ethernet/netronome/nfp/nfp_port.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c index 60c8d733a37d..2801ecd09eab 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c @@ -104,7 +104,7 @@ static const struct nfp_et_stat nfp_mac_et_stats[] = { { "rx_frame_too_long_errors", NFP_MAC_STATS_RX_FRAME_TOO_LONG_ERRORS, }, { "rx_range_length_errors", NFP_MAC_STATS_RX_RANGE_LENGTH_ERRORS, }, - { "rx_vlan_reveive_ok", NFP_MAC_STATS_RX_VLAN_REVEIVE_OK, }, + { "rx_vlan_received_ok", NFP_MAC_STATS_RX_VLAN_RECEIVED_OK, }, { "rx_errors", NFP_MAC_STATS_RX_IN_ERRORS, }, { "rx_broadcast_pkts", NFP_MAC_STATS_RX_IN_BROADCAST_PKTS, }, { "rx_drop_events", NFP_MAC_STATS_RX_DROP_EVENTS, }, diff --git a/drivers/net/ethernet/netronome/nfp/nfp_port.h b/drivers/net/ethernet/netronome/nfp/nfp_port.h index 51dcb9c603ee..21bd4aa32646 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_port.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_port.h @@ -157,7 +157,7 @@ void nfp_devlink_port_unregister(struct nfp_port *port); /* unused 0x008 */ #define NFP_MAC_STATS_RX_FRAME_TOO_LONG_ERRORS (NFP_MAC_STATS_BASE + 0x010) #define NFP_MAC_STATS_RX_RANGE_LENGTH_ERRORS (NFP_MAC_STATS_BASE + 0x018) -#define NFP_MAC_STATS_RX_VLAN_REVEIVE_OK (NFP_MAC_STATS_BASE + 0x020) +#define NFP_MAC_STATS_RX_VLAN_RECEIVED_OK (NFP_MAC_STATS_BASE + 0x020) #define NFP_MAC_STATS_RX_IN_ERRORS (NFP_MAC_STATS_BASE + 0x028) #define NFP_MAC_STATS_RX_IN_BROADCAST_PKTS (NFP_MAC_STATS_BASE + 0x030) #define NFP_MAC_STATS_RX_DROP_EVENTS (NFP_MAC_STATS_BASE + 0x038) From patchwork Fri Nov 17 01:06:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 838823 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="MDly6VIq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3ydKj41ngYz9s0Z for ; Fri, 17 Nov 2017 12:07:36 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754487AbdKQBHe (ORCPT ); Thu, 16 Nov 2017 20:07:34 -0500 Received: from mail-pg0-f68.google.com ([74.125.83.68]:36300 "EHLO mail-pg0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754391AbdKQBHT (ORCPT ); Thu, 16 Nov 2017 20:07:19 -0500 Received: by mail-pg0-f68.google.com with SMTP id t10so688779pgo.3 for ; Thu, 16 Nov 2017 17:07:18 -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=uBWz44/rTf6DnvBiFu51+/KeOIM1gYUnxro8zOMNVhg=; b=MDly6VIq96OQvcACHpt9pPnHLD1xyIuXFuzxWFC6L6HhC7I6dro3dbmYrvUFsewsEL jbu0U6fObZeOmTX9xLH0rP4pvfwtula5L2+KDVZU3eoc6iBCc18ty3jhVrC7diw6eqPL 0omJ7Gv5pDqyaZupH/b6uqhYNDuvIkIwZ0WHZAUMlBAuoYK9OdiZDGgZ5bggKADN1W/Z YLLUbhxezd1xBHtl6J7IPuvkLYdeUL0y0Dj5TFw6ZgC7E+qDImsiO32uOYnB/9TqNNWJ EQ8KaO4F7UApQeztTH7SdE4TSyxZh7mlEP6JUETozPRMqMed2Tl3TcvauMuVB7aBv4gz PatQ== 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=uBWz44/rTf6DnvBiFu51+/KeOIM1gYUnxro8zOMNVhg=; b=DAMGg42FKi/h+KQHCksN51MXjxVMgBOAnlUkGS8HJCBQbry73ef3A5wkoaPfuuOxLq 6NUx6zurLIl0TQ7CAwnsHDVedjWDr+1fazcEeiqyEuHXK9hC05XJFYaPtCC1t5qd1GX0 eXfA9tgjRmSZEopUVlHyTDjkJQY8aorrU60F3XiuD5YU8t/UAklhIZ8+kdKQ2Pc1mZG0 ZrLOhWfZMYqQ2YGU47VTUFhVlhNORp25eUqMJsiVW0Z1Jh2eqYPJpzRwtDAshzl1FonC Rrc94nBQObeP1OgqcnGA+WUP1JeaOOcZ4slsKAXlCOHQ0JPELqLBCczzIiUKWjJnP+vI 9L8w== X-Gm-Message-State: AJaThX5/Nn2w91FOpmmxRf/5B3sg5gg/zvUUexR30Jn0dnKe44vWifVm fuROjV4dmniSYAAO7PTAZc2ApA/Z X-Google-Smtp-Source: AGs4zMZopVuqEmKBd6WM47Zf3/ZEPlRHEljjCmJHX2YiD1VIW7scAn2fuTIhSkOBx0/fRWIknEtNtw== X-Received: by 10.159.230.13 with SMTP id u13mr3343808plq.293.1510880838319; Thu, 16 Nov 2017 17:07:18 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id e18sm4416726pfi.57.2017.11.16.17.07.17 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Nov 2017 17:07:17 -0800 (PST) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, Dirk van der Merwe Subject: [PATCH net 3/5] nfp: inherit the max_mtu from the PF netdev Date: Thu, 16 Nov 2017 17:06:41 -0800 Message-Id: <20171117010643.18308-4-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171117010643.18308-1-jakub.kicinski@netronome.com> References: <20171117010643.18308-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Dirk van der Merwe The PF netdev is used for data transfer for reprs, so reprs inherit the maximum MTU settings of the PF netdev. Fixes: 5de73ee46704 ("nfp: general representor implementation") Signed-off-by: Dirk van der Merwe Reviewed-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index 1bce8c131bb9..fa052a929170 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -297,6 +297,8 @@ int nfp_repr_init(struct nfp_app *app, struct net_device *netdev, netdev->netdev_ops = &nfp_repr_netdev_ops; netdev->ethtool_ops = &nfp_port_ethtool_ops; + netdev->max_mtu = pf_netdev->max_mtu; + SWITCHDEV_SET_OPS(netdev, &nfp_port_switchdev_ops); if (nfp_app_has_tc(app)) { From patchwork Fri Nov 17 01:06:42 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 838824 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="Qu1TVbgG"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3ydKj84gFVz9s0Z for ; Fri, 17 Nov 2017 12:07:40 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754494AbdKQBHj (ORCPT ); Thu, 16 Nov 2017 20:07:39 -0500 Received: from mail-pf0-f196.google.com ([209.85.192.196]:47021 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754363AbdKQBHT (ORCPT ); Thu, 16 Nov 2017 20:07:19 -0500 Received: by mail-pf0-f196.google.com with SMTP id q4so662614pfg.13 for ; Thu, 16 Nov 2017 17:07:19 -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=5uXGt1Q429jn08F27Fa/xNIA9J62vj7l1rBqIVqh8XM=; b=Qu1TVbgGXsOr6x1LApaBvp6Xrzj39LlLl0TVjBwI9Re63KmWnJcS3Q33Z03ikFVeI5 2heBIcunEJHjUNJNwwNwv/181+J0FDf2gnXopzK65L+qR1GVXUSpm5itZ94lW2kodYLw ehYSzB+znoGwj9pDbUNMjqqZzZu8UusnTHviOQIq63YZHI1UkseomV0f8+akGkyjlsLf /F2SZC4pPc4/R9tXQbVGhOlAFkY1iSrDlt44KdR7eEZVmOZUw+xDvg3w+4vqLJOCjek6 TTMdRwuBmxCyk9ExaJOUcLyaB2glODFVt4/Er9WT7WtRX8yQS0fF6tG1rXt4jf47F5kP bs+g== 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=5uXGt1Q429jn08F27Fa/xNIA9J62vj7l1rBqIVqh8XM=; b=l+9XWykgAQnwF54hA4rfYAxT1X525gpNpaIPz9Jq6YJqwnoYnD+7HFF8wtlRZXZBxY 81sPeRwXyC45uCKgWeSWsvLMzYECdtxgF9xwFmmcoiuckGz2A557OqB1GknMI9fgJM6q LrjuGdpNrRhQcsyE/WLgG9VXNykNT7YOItWxuvcDKMs4p9uj2FcNly/6FlUeCvXkNz2H 9j8ukKc1OMd6rRZT+33QePaobRKQcwWa0xPsZAvCmZYrATeRwHr2u3GDs1z039eoBz2N zsmuWZegvTzGk3dEmyRv7mxayYpdwawyW+hCfQKGuvm4vuKK0ZBdwnEhFIyaGtu2y55p T+lA== X-Gm-Message-State: AJaThX47wkVXA7CbOeaTcfCZwJZNAUXVb5zhqy2s7ZS5C7ah+yhNc0VZ pUmYHqkuwYGiBNLoSfUOew/cf/8d X-Google-Smtp-Source: AGs4zMYaskaT1tLtvkDIZABy+q2q1ebaSPVzBAwMdnOMnNf5DVsDrRsNoTpLm3ep6yRmjjBFFllHnA== X-Received: by 10.159.250.142 with SMTP id k14mr3539242pls.282.1510880839093; Thu, 16 Nov 2017 17:07:19 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id e18sm4416726pfi.57.2017.11.16.17.07.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Nov 2017 17:07:18 -0800 (PST) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, John Hurley Subject: [PATCH net 4/5] nfp: register flower reprs for egress dev offload Date: Thu, 16 Nov 2017 17:06:42 -0800 Message-Id: <20171117010643.18308-5-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171117010643.18308-1-jakub.kicinski@netronome.com> References: <20171117010643.18308-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: John Hurley Register a callback for offloading flows that have a repr as their egress device. The new egdev_register function is added to net-next for the 4.15 release. Signed-off-by: John Hurley Reviewed-by: Jakub Kicinski --- drivers/net/ethernet/netronome/nfp/flower/main.c | 18 ++++++++++++++++++ drivers/net/ethernet/netronome/nfp/flower/main.h | 2 ++ drivers/net/ethernet/netronome/nfp/flower/offload.c | 6 ++++++ drivers/net/ethernet/netronome/nfp/nfp_app.h | 20 ++++++++++++++++++++ drivers/net/ethernet/netronome/nfp/nfp_net_repr.c | 9 ++++++++- 5 files changed, 54 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.c b/drivers/net/ethernet/netronome/nfp/flower/main.c index e0283bb24f06..8fcc90c0d2d3 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.c +++ b/drivers/net/ethernet/netronome/nfp/flower/main.c @@ -125,6 +125,21 @@ nfp_flower_repr_netdev_stop(struct nfp_app *app, struct nfp_repr *repr) return nfp_flower_cmsg_portmod(repr, false); } +static int +nfp_flower_repr_netdev_init(struct nfp_app *app, struct net_device *netdev) +{ + return tc_setup_cb_egdev_register(netdev, + nfp_flower_setup_tc_egress_cb, + netdev_priv(netdev)); +} + +static void +nfp_flower_repr_netdev_clean(struct nfp_app *app, struct net_device *netdev) +{ + tc_setup_cb_egdev_unregister(netdev, nfp_flower_setup_tc_egress_cb, + netdev_priv(netdev)); +} + static void nfp_flower_sriov_disable(struct nfp_app *app) { struct nfp_flower_priv *priv = app->priv; @@ -452,6 +467,9 @@ const struct nfp_app_type app_flower = { .vnic_init = nfp_flower_vnic_init, .vnic_clean = nfp_flower_vnic_clean, + .repr_init = nfp_flower_repr_netdev_init, + .repr_clean = nfp_flower_repr_netdev_clean, + .repr_open = nfp_flower_repr_netdev_open, .repr_stop = nfp_flower_repr_netdev_stop, diff --git a/drivers/net/ethernet/netronome/nfp/flower/main.h b/drivers/net/ethernet/netronome/nfp/flower/main.h index a69ea62e9c9c..e6b26c5ae6e0 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/main.h +++ b/drivers/net/ethernet/netronome/nfp/flower/main.h @@ -196,5 +196,7 @@ void nfp_tunnel_del_ipv4_off(struct nfp_app *app, __be32 ipv4); void nfp_tunnel_add_ipv4_off(struct nfp_app *app, __be32 ipv4); void nfp_tunnel_request_route(struct nfp_app *app, struct sk_buff *skb); void nfp_tunnel_keep_alive(struct nfp_app *app, struct sk_buff *skb); +int nfp_flower_setup_tc_egress_cb(enum tc_setup_type type, void *type_data, + void *cb_priv); #endif diff --git a/drivers/net/ethernet/netronome/nfp/flower/offload.c b/drivers/net/ethernet/netronome/nfp/flower/offload.c index cdbb5464b790..a0193e0c24a0 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/offload.c +++ b/drivers/net/ethernet/netronome/nfp/flower/offload.c @@ -465,6 +465,12 @@ nfp_flower_repr_offload(struct nfp_app *app, struct net_device *netdev, return -EOPNOTSUPP; } +int nfp_flower_setup_tc_egress_cb(enum tc_setup_type type, void *type_data, + void *cb_priv) +{ + return -EINVAL; +} + static int nfp_flower_setup_tc_block_cb(enum tc_setup_type type, void *type_data, void *cb_priv) { diff --git a/drivers/net/ethernet/netronome/nfp/nfp_app.h b/drivers/net/ethernet/netronome/nfp/nfp_app.h index 54b67c9b8d5b..0e5e0305ad1c 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_app.h +++ b/drivers/net/ethernet/netronome/nfp/nfp_app.h @@ -76,6 +76,8 @@ extern const struct nfp_app_type app_flower; * @vnic_free: free up app's vNIC state * @vnic_init: vNIC netdev was registered * @vnic_clean: vNIC netdev about to be unregistered + * @repr_init: representor about to be registered + * @repr_clean: representor about to be unregistered * @repr_open: representor netdev open callback * @repr_stop: representor netdev stop callback * @start: start application logic @@ -109,6 +111,9 @@ struct nfp_app_type { int (*vnic_init)(struct nfp_app *app, struct nfp_net *nn); void (*vnic_clean)(struct nfp_app *app, struct nfp_net *nn); + int (*repr_init)(struct nfp_app *app, struct net_device *netdev); + void (*repr_clean)(struct nfp_app *app, struct net_device *netdev); + int (*repr_open)(struct nfp_app *app, struct nfp_repr *repr); int (*repr_stop)(struct nfp_app *app, struct nfp_repr *repr); @@ -212,6 +217,21 @@ static inline int nfp_app_repr_stop(struct nfp_app *app, struct nfp_repr *repr) return app->type->repr_stop(app, repr); } +static inline int +nfp_app_repr_init(struct nfp_app *app, struct net_device *netdev) +{ + if (!app->type->repr_init) + return 0; + return app->type->repr_init(app, netdev); +} + +static inline void +nfp_app_repr_clean(struct nfp_app *app, struct net_device *netdev) +{ + if (app->type->repr_clean) + app->type->repr_clean(app, netdev); +} + static inline int nfp_app_start(struct nfp_app *app, struct nfp_net *ctrl) { app->ctrl = ctrl; diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c index fa052a929170..924a05e05da0 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_repr.c @@ -258,6 +258,7 @@ const struct net_device_ops nfp_repr_netdev_ops = { static void nfp_repr_clean(struct nfp_repr *repr) { unregister_netdev(repr->netdev); + nfp_app_repr_clean(repr->app, repr->netdev); dst_release((struct dst_entry *)repr->dst); nfp_port_free(repr->port); } @@ -306,12 +307,18 @@ int nfp_repr_init(struct nfp_app *app, struct net_device *netdev, netdev->hw_features |= NETIF_F_HW_TC; } - err = register_netdev(netdev); + err = nfp_app_repr_init(app, netdev); if (err) goto err_clean; + err = register_netdev(netdev); + if (err) + goto err_repr_clean; + return 0; +err_repr_clean: + nfp_app_repr_clean(app, netdev); err_clean: dst_release((struct dst_entry *)repr->dst); return err; From patchwork Fri Nov 17 01:06:43 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jakub Kicinski X-Patchwork-Id: 838825 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="Y/NCIivn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3ydKjF5dSzz9s0Z for ; Fri, 17 Nov 2017 12:07:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754510AbdKQBHn (ORCPT ); Thu, 16 Nov 2017 20:07:43 -0500 Received: from mail-pg0-f65.google.com ([74.125.83.65]:45797 "EHLO mail-pg0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754404AbdKQBHV (ORCPT ); Thu, 16 Nov 2017 20:07:21 -0500 Received: by mail-pg0-f65.google.com with SMTP id 207so670299pgc.12 for ; Thu, 16 Nov 2017 17:07:20 -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=/pXENopYrBOAkC/FPMsd40rWI3ePZXbOHUdY9qHLNNU=; b=Y/NCIivnWejP3eGnhUMgh0sZxAw2VaGUjj/MwFiztsjfWP8cpYoQHWNi0prL+Eigoz NJy2kRkHzkRbGYT0H2gv9CVDg3vq5ZsWjlR8vh9yUUgnnLZz9BKIKQnIcQxKM43Zz09T Lh+dZdzToTsUFs/mROw0njUaoePDdACBIF+6Iu2k9V5IrC2oUWtp+gI28ciOuAcROF4Y dXArZUFOZRJlCuiU8kNsYhHpXZZRoGCaI/2AEEekW93qVfQ47r9hoZTRZJ3KqqMR3S63 2wJwp5X7+X7ZNw6b9kse/lVoHv+NxEG6laTDa+WMtfVUTeqgYPbXB6GLfKw+hszgc19+ sWZg== 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=/pXENopYrBOAkC/FPMsd40rWI3ePZXbOHUdY9qHLNNU=; b=DrtjQCX6ReuTjIr2Vf2QgZCrJLGPeHCp0NHO6WlE4MRRUJLBEAdlCfmkToYJCF7Puc wSTVPwwZq42R4JRCVp4ZzpGBGAm+cpOgvLJCypjj7GDPDrzpOtafURkAJr/jj2Tuu7p8 sTmeEIXePKtUKx03Czk9rTNZNUmb/AOgLUPp49bEeuN9COrK307lL79PYoofk3VmStjc T9fOPc99u9+1to7MvBc796mOPRRcI9by3LLr0BQrk32A87TqtiVAIXnRG1fu7N1m9vNi r5CzN7uXVyyHyGGvV93hyWmdFDiWWF7utz3yrnhNFmTRCl9j+OgydBW6fdRmHOtaqfPM H9MQ== X-Gm-Message-State: AJaThX7hwmEAxqXl2e7E/1nZ8BffYtmw0DmIs5cey4XPXq/1lC1moLCM Ve0nB+8ymf0DWbNXqO6ptnspNgxl X-Google-Smtp-Source: AGs4zMadzm2XyBbCVDK53oQbjP8r7fKY5g8HOaenxgLWMtOjYDeg5Uk6voq8uDP/O3f2giRPjLR/Rg== X-Received: by 10.84.224.75 with SMTP id a11mr3488683plt.421.1510880839965; Thu, 16 Nov 2017 17:07:19 -0800 (PST) Received: from jkicinski-Precision-T1700.netronome.com ([75.53.12.129]) by smtp.gmail.com with ESMTPSA id e18sm4416726pfi.57.2017.11.16.17.07.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Nov 2017 17:07:19 -0800 (PST) From: Jakub Kicinski To: netdev@vger.kernel.org Cc: oss-drivers@netronome.com, John Hurley Subject: [PATCH net 5/5] nfp: remove false positive offloads in flower vxlan Date: Thu, 16 Nov 2017 17:06:43 -0800 Message-Id: <20171117010643.18308-6-jakub.kicinski@netronome.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: <20171117010643.18308-1-jakub.kicinski@netronome.com> References: <20171117010643.18308-1-jakub.kicinski@netronome.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: John Hurley Pass information to the match offload on whether or not the repr is the ingress or egress dev. Only accept tunnel matches if repr is the egress dev. This means rules such as the following are successfully offloaded: tc .. add dev vxlan0 .. enc_dst_port 4789 .. action redirect dev nfp_p0 While rules such as the following are rejected: tc .. add dev nfp_p0 .. enc_dst_port 4789 .. action redirect dev vxlan0 Also reject non tunnel flows that are offloaded to an egress dev. Non tunnel matches assume that the offload dev is the ingress port and offload a match accordingly. Fixes: 611aec101ab7 ("nfp: compile flower vxlan tunnel metadata match fields") Signed-off-by: John Hurley Reviewed-by: Jakub Kicinski --- .../net/ethernet/netronome/nfp/flower/offload.c | 32 +++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/flower/offload.c b/drivers/net/ethernet/netronome/nfp/flower/offload.c index a0193e0c24a0..f5d73b83dcc2 100644 --- a/drivers/net/ethernet/netronome/nfp/flower/offload.c +++ b/drivers/net/ethernet/netronome/nfp/flower/offload.c @@ -131,7 +131,8 @@ static bool nfp_flower_check_higher_than_mac(struct tc_cls_flower_offload *f) static int nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls, - struct tc_cls_flower_offload *flow) + struct tc_cls_flower_offload *flow, + bool egress) { struct flow_dissector_key_basic *mask_basic = NULL; struct flow_dissector_key_basic *key_basic = NULL; @@ -167,6 +168,9 @@ nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls, skb_flow_dissector_target(flow->dissector, FLOW_DISSECTOR_KEY_ENC_CONTROL, flow->key); + if (!egress) + return -EOPNOTSUPP; + if (mask_enc_ctl->addr_type != 0xffff || enc_ctl->addr_type != FLOW_DISSECTOR_KEY_IPV4_ADDRS) return -EOPNOTSUPP; @@ -194,6 +198,9 @@ nfp_flower_calculate_key_layers(struct nfp_fl_key_ls *ret_key_ls, key_layer |= NFP_FLOWER_LAYER_VXLAN; key_size += sizeof(struct nfp_flower_vxlan); + } else if (egress) { + /* Reject non tunnel matches offloaded to egress repr. */ + return -EOPNOTSUPP; } if (dissector_uses_key(flow->dissector, FLOW_DISSECTOR_KEY_BASIC)) { @@ -315,7 +322,7 @@ nfp_flower_allocate_new(struct nfp_fl_key_ls *key_layer) */ static int nfp_flower_add_offload(struct nfp_app *app, struct net_device *netdev, - struct tc_cls_flower_offload *flow) + struct tc_cls_flower_offload *flow, bool egress) { struct nfp_flower_priv *priv = app->priv; struct nfp_fl_payload *flow_pay; @@ -326,7 +333,7 @@ nfp_flower_add_offload(struct nfp_app *app, struct net_device *netdev, if (!key_layer) return -ENOMEM; - err = nfp_flower_calculate_key_layers(key_layer, flow); + err = nfp_flower_calculate_key_layers(key_layer, flow, egress); if (err) goto err_free_key_ls; @@ -447,7 +454,7 @@ nfp_flower_get_stats(struct nfp_app *app, struct tc_cls_flower_offload *flow) static int nfp_flower_repr_offload(struct nfp_app *app, struct net_device *netdev, - struct tc_cls_flower_offload *flower) + struct tc_cls_flower_offload *flower, bool egress) { if (!eth_proto_is_802_3(flower->common.protocol) || flower->common.chain_index) @@ -455,7 +462,7 @@ nfp_flower_repr_offload(struct nfp_app *app, struct net_device *netdev, switch (flower->command) { case TC_CLSFLOWER_REPLACE: - return nfp_flower_add_offload(app, netdev, flower); + return nfp_flower_add_offload(app, netdev, flower, egress); case TC_CLSFLOWER_DESTROY: return nfp_flower_del_offload(app, netdev, flower); case TC_CLSFLOWER_STATS: @@ -468,7 +475,18 @@ nfp_flower_repr_offload(struct nfp_app *app, struct net_device *netdev, int nfp_flower_setup_tc_egress_cb(enum tc_setup_type type, void *type_data, void *cb_priv) { - return -EINVAL; + struct nfp_repr *repr = cb_priv; + + if (!tc_can_offload(repr->netdev)) + return -EOPNOTSUPP; + + switch (type) { + case TC_SETUP_CLSFLOWER: + return nfp_flower_repr_offload(repr->app, repr->netdev, + type_data, true); + default: + return -EOPNOTSUPP; + } } static int nfp_flower_setup_tc_block_cb(enum tc_setup_type type, @@ -482,7 +500,7 @@ static int nfp_flower_setup_tc_block_cb(enum tc_setup_type type, switch (type) { case TC_SETUP_CLSFLOWER: return nfp_flower_repr_offload(repr->app, repr->netdev, - type_data); + type_data, false); default: return -EOPNOTSUPP; }