From patchwork Mon Aug 3 20:41:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1340492 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=XORpgHZ2; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BL8x34bGdz9sSG for ; Tue, 4 Aug 2020 06:43:35 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728581AbgHCUnf (ORCPT ); Mon, 3 Aug 2020 16:43:35 -0400 Received: from mail-eopbgr10044.outbound.protection.outlook.com ([40.107.1.44]:21862 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728400AbgHCUnc (ORCPT ); Mon, 3 Aug 2020 16:43:32 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MBrTUR89UTgHsZ2o7QfDgLH3N1P0seGwRY7c3Dt0YgMf7mzfEtlPaZY6wsqrbzdIFpgO3krps8M6bnmZ4g/oqMd1Empp3j6rdNtzjcUcB25kaig+Lj3QEvnT7qkbwUwo2nNPo0qsKNZOoJfVqLmPX32EFvKWHpOp8i7s3CFxLlQu1L6fOlK9tNfCrDYKMjrqj5m/IGCjsHK4pUkO15ubOTZZENc5fGB3q4T7ZN6vxZnnjBKFCTEsBsIRNiZ+PJjyVAEB08uJTwswnlUqIPi5nEJMv7GnXwz2+sCuT485XAEiMvmU1vyNMFzGBfMBUUqfJZZ/VwW2MGJpKdwd7ky4Zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wEGV3cA4ewmh/vGgIVB4gWpWUYPr6eN5brIlCd/fUwg=; b=asy1PITt7e1dheFI7TE3czVKetu73QkaKyWaMLEeRjp7UWVgqlH4S2sw9KSNeri9D0Xiv+ts35b4JxpESfiPyqdmhrPghZjNdtUYLLyQ8Zz7+lxQqXlgB/haI34BDntheC5jyYUB69GOkHRKmilQAE5c5PwZRRAjTFL8vi9i42bCy+0GSAVArCFIA6vG6gGWxEHXiodWReC+Bn7/isIYiSU8b3hzUR+ejcvGwGYMrw2bdgouUeCO+v6ip+VHxALbMHIQafEi3UyW/yVqbzyNO771tVgrFziCzyw2E7LzC6G1DC/d1MIGHH6J6AyEzbztoP2rOt8Do1VnGO19QC96Aw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wEGV3cA4ewmh/vGgIVB4gWpWUYPr6eN5brIlCd/fUwg=; b=XORpgHZ2iGmU7Qs3yZWf0BtSqr+VEsEZlSWYY5kcY8jGM0idvQ8zTwxgIQrTzW+f9r7EuJiJMi2DT48cIGcCLwd/9BGRVUtGNzeZ5n5CtibPWTHhx5Ge3fECLxF8rUSHxVwwyUlM396+rPiYUwqdrFbK/zjqSzMFdimcdbsuoR4= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=mellanox.com; Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) by VE1PR05MB7311.eurprd05.prod.outlook.com (2603:10a6:800:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.21; Mon, 3 Aug 2020 20:42:52 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366%5]) with mapi id 15.20.3239.021; Mon, 3 Aug 2020 20:42:52 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Parav Pandit , Jiri Pirko , Roi Dayan , Saeed Mahameed Subject: [net-next 1/5] net/mlx5e: Enable users to change VF/PF representors carrier state Date: Mon, 3 Aug 2020 13:41:47 -0700 Message-Id: <20200803204151.120802-2-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200803204151.120802-1-saeedm@mellanox.com> References: <20200803204151.120802-1-saeedm@mellanox.com> X-ClientProxiedBy: BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from smtp.office365.com (73.15.39.150) by BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.17 via Frontend Transport; Mon, 3 Aug 2020 20:42:50 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [73.15.39.150] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: fe33cb0c-0784-49d4-60fb-08d837edca9e X-MS-TrafficTypeDiagnostic: VE1PR05MB7311: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1775; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7+HPTj3+fDrjn3qi00GAEFks9HCZwHXWCyZIN9z5LDQxxNVHBz2mYegh3iJz8BaBdApwJtOljroYOmR2UWJ4RZR353xTtUmVPGdQP3IUME15Hd6L3k6YB/3C4t7Q2VdeG5Ovvda1BolfIqv+wO/8li+6N9QUHRxcuzwzq3rUPKI+9nb0JX96G3yDcgcQcVraM1CJPUCwtWDyiW//U1lRZS60v8jvXRJZEXf9E5wyv3RQ7EyzVD8HvzMjspDyNjcHOoP79pLTGImusMDUwILCcHmsikuq9hFFA9k8IHv3XITS/6TR3N73NXjopL91yGEP/nUvEgsiPZE+lvrzwqIGsR4gqajmS1ubtT3EAKtNMjWllLMRoy3IRGvT2BGIXMnRZPpBgqloOXkqeBC8AH9AwTvtrJmUOCOAhT0jK6JwU1W3r2+sCPfndmrEj49xJakvtGTmK2HheT7y7QNCStdywA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR05MB5102.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(396003)(376002)(366004)(346002)(39860400002)(956004)(966005)(54906003)(1076003)(478600001)(110136005)(8936002)(5660300002)(2906002)(6666004)(2616005)(86362001)(316002)(16526019)(66946007)(66476007)(66556008)(6486002)(36756003)(6506007)(26005)(8676002)(107886003)(83380400001)(52116002)(6512007)(4326008)(186003)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: bz9QiODsL9CRahmJEKSvJK/CJN2KCQQMB9HVuJwM3fo4sy3mOo1a2ZKcdhFW75qSD3HMBwemlol0TGgL00sq0UQSYJGrANBKiRdMthJGJvyfJJzwExLF68q/Xs/U9nfW1IUWJwhHS54oY9l8pUPyMwEEFxNtneGM5MIhpaKxY7nattBaw8K93iT+4xDxezIWeL8YCYrKfxv6ybHANe7TcUqNV2zwMbLY24Zwnt27ht6NwhnW9hW1wj/bpj9gn+HesGB5yjWsXhc2mfgj2NH2xZdoRFpE9cmJJKDSMekdpefekPsPuzJg663kIfRchU2aU7vdVqelcZ0O5TMSWXxXlnxb2UnPsvEJhN6J4MBdmKKSkjk/3aykE2QQQoymIWOhmWHwM4GEGnQXoFaZX+UugUxobWPABrQAloN2lSYeVXKBtllzcEa33Y85Oqpq2zfPLI/DrvZubWY6XlcGJBQKteM72mcgbcMk1JBRH2GIpMacuCa3G/9jWuJc0VvIG6F4xByOAeSYC5Oj36/WRPMKoH8nNOz1yPYsfy9pm4jXPKVRwsltyLp+EyYLWBSp7rf5272A6JdW/Q8mNjX4UeVRsFGwqaIFbYGyEF4MrbbatzSmfE8Asr/qbZJw0/KThtXfN0CiS/A8jrxSYBkDdd6GKw== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe33cb0c-0784-49d4-60fb-08d837edca9e X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2020 20:42:52.0968 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UeYlW+vaDh3jhfn5VydfJ7mf5yZ3Ic2kPIG2dmXsBTIuCgjYwkrIoQQScVkX9kWUzmTUks+xWCEW8FEVYUjHFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR05MB7311 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Parav Pandit Currently PF and VF representor netdevice carrier is always controlled by controlling the representor netdevice device state as up/down. Representor netdevice state change undergoes one or more txq/rxq destroy/create commands to firmware, skb and its rx buffer allocation, health reporters creation and more. Due to this limitation users do not have the ability to just change the carrier of the non uplink representors without modifying the device state. In one use case when the eswitch physical port carrier is down/up, user needs to update the VF link state to same as physical port carrier. Example of updating VF representor carrier state: $ ip link set enp0s8f0npf0vf0 carrier off $ ip link set enp0s8f0npf0vf0 carrier on This enhancement results into VF link state change which is represented by the VF representor netdevice carrier. This enables users to modify the representor carrier without modifying the representor netdevice state. A simple test is run using [1] to calculate the time difference between updating carrier vs updating device state (to update just the carrier) with one VF to simulate 255 VFs. Time taken to update the carrier using device up/down: $ time ./calculate.sh dev enp0s8f0npf0vf0 real 0m30.913s user 0m0.200s sys 0m11.168s Time taken to update just the carrier using carrier iproute2 command: $ time ./calculate.sh carrier enp0s8f0npf0vf0 real 0m2.142s user 0m0.160s sys 0m2.021s Test shows that its better to use carrier on/off user interface to notify link up/down event to VF compare to device up/down interface, because carrier user interface delivers the same event 15 times faster. [1] https://github.com/paravmellanox/myscripts/blob/master/calculate_carrier_time.sh Signed-off-by: Parav Pandit Acked-by: Jiri Pirko Reviewed-by: Roi Dayan Signed-off-by: Saeed Mahameed --- .../net/ethernet/mellanox/mlx5/core/en_rep.c | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c index 48989541e2ef4..3db81a8cfc1d0 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -611,6 +611,29 @@ static struct devlink_port *mlx5e_rep_get_devlink_port(struct net_device *dev) return &rpriv->dl_port; } +static int mlx5e_rep_change_carrier(struct net_device *dev, bool new_carrier) +{ + struct mlx5e_priv *priv = netdev_priv(dev); + struct mlx5e_rep_priv *rpriv = priv->ppriv; + struct mlx5_eswitch_rep *rep = rpriv->rep; + int err; + + if (new_carrier) { + err = mlx5_modify_vport_admin_state(priv->mdev, MLX5_VPORT_STATE_OP_MOD_ESW_VPORT, + rep->vport, 1, MLX5_VPORT_ADMIN_STATE_UP); + if (err) + return err; + netif_carrier_on(dev); + } else { + err = mlx5_modify_vport_admin_state(priv->mdev, MLX5_VPORT_STATE_OP_MOD_ESW_VPORT, + rep->vport, 1, MLX5_VPORT_ADMIN_STATE_DOWN); + if (err) + return err; + netif_carrier_off(dev); + } + return 0; +} + static const struct net_device_ops mlx5e_netdev_ops_rep = { .ndo_open = mlx5e_rep_open, .ndo_stop = mlx5e_rep_close, @@ -621,6 +644,7 @@ static const struct net_device_ops mlx5e_netdev_ops_rep = { .ndo_has_offload_stats = mlx5e_rep_has_offload_stats, .ndo_get_offload_stats = mlx5e_rep_get_offload_stats, .ndo_change_mtu = mlx5e_rep_change_mtu, + .ndo_change_carrier = mlx5e_rep_change_carrier, }; static const struct net_device_ops mlx5e_netdev_ops_uplink_rep = { From patchwork Mon Aug 3 20:41:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1340490 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=TVAOKWQh; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BL8wy6syNz9sSG for ; Tue, 4 Aug 2020 06:43:30 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728541AbgHCUna (ORCPT ); Mon, 3 Aug 2020 16:43:30 -0400 Received: from mail-eopbgr150087.outbound.protection.outlook.com ([40.107.15.87]:25987 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725863AbgHCUn3 (ORCPT ); Mon, 3 Aug 2020 16:43:29 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QsUg8tyyTa7m71hktVe8B9jpWiSu8KNYq2gN+BIdtSs6p+DcSS3L0XJ/4Y6LDi3yROqgasKC+61qfIuVQTa4kyj1v7+0NviuiivVyE/1gjICco2NupQ+UhIsQkQiCG4SYQmOJ1TTbniU8XU2E16f26zTWnSGa+MoaGkpc91xp4fK5m0hA3qlEur55baVfivYLrlhbCWskK0pgXSXGMV6xE4ES9WPPCjR6jy2vywtMUgJMbi3KAM0w77ByzO8sqDhSBoHZomY7BmkO8SJVySxxqZhJ0YVCwQVy3z7k2SF52JzqFcE83dgXuQgl422Eu7lkvDMp2G1D0tmCK/HzHWymA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AmCQGJxF/pg/YlZhFUt0zitbzXurMLjCQgrO/T7bBLs=; b=Hy8geKMBh2fBC+aLtyUniZiMcGG0bzHG0LTW0EqiaHL0TSVAXMAU2PgfG9It4VkEzHPdErHmjdyKr18HKSMg3ck4x5B2l71GPhzs8yzNWNW/K4xzM3a5Aueur4wbde0P3imSq5LTcLdMExOMRf+ODtEiilck53EyAe7slCphCdgqTrFxtazdLHqn8JKAsxA/IMXwiG626qjJ5m1t1CS/PzGQcp5v3oxXJfZ5EsTKleTje2pPJbo65DeeDi5XO3+3qub0j63VopByRTXrPhc4MNNbJ3zjJKA6ilADBWEZNTNzvC2YaI2hRoI+4gPPBAp4qeXBtM1n3KbDdJhemqZFhQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AmCQGJxF/pg/YlZhFUt0zitbzXurMLjCQgrO/T7bBLs=; b=TVAOKWQhO4jIrNrIKGtKx5RBcVmCzqeeJSnDVbRGpZrc3APN+3DhveG5GKgThoSRwoeaVffSShZiT/SkcoO0Y91A18wt/NjME//ea52UGgm4ojqXhJT+yRlzeLa3KsS1rYSc8lTJe89qBr0RuUaoX05xPnm+BPfOaoeDM9HcobU= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=mellanox.com; Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) by VE1PR05MB7311.eurprd05.prod.outlook.com (2603:10a6:800:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.21; Mon, 3 Aug 2020 20:42:54 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366%5]) with mapi id 15.20.3239.021; Mon, 3 Aug 2020 20:42:54 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Alex Vesker , Maor Gottlieb , Saeed Mahameed Subject: [net-next 2/5] net/mlx5: DR, Change push vlan action sequence Date: Mon, 3 Aug 2020 13:41:48 -0700 Message-Id: <20200803204151.120802-3-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200803204151.120802-1-saeedm@mellanox.com> References: <20200803204151.120802-1-saeedm@mellanox.com> X-ClientProxiedBy: BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from smtp.office365.com (73.15.39.150) by BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.17 via Frontend Transport; Mon, 3 Aug 2020 20:42:52 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [73.15.39.150] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 964a398c-6c48-495c-4d07-08d837edcbf2 X-MS-TrafficTypeDiagnostic: VE1PR05MB7311: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3968; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: itS2E3IY0vdfM4tQ2f0pU0WVFtMbjGTYEXbrRCt+utJTgDSsTd+MWtqlWWow3NSA0ayxe+Z4HkdOHrYMKjes+WNTCyaVF+CGlV575w4yTkpRiBfIohPdkJGdjqbOp2YFRepSKkxMDAXOXw6dJr/awrFGjeeNzq02Q67FVhPxFA2CAeWRzVL0aZi4T5WFSYRT+TgQIuk0Xl1vor/XIdktu+sO6Q5uGyp5DnfA6hYYtY9kd+ZzuLp1vERtPt/9nmmuhUcGE8gjDMmjaCVxOQsptLzZxWBfavXaO3V9ZQoi/f2oZTRxAgzUSGVbCWIbEFPF3CyBBL/eOL3DnQYDFX1agQ6qOuc6i9+dPlMTvl++I146OcOawiPxKFjo7ej1UM88 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR05MB5102.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(396003)(376002)(366004)(346002)(39860400002)(956004)(54906003)(1076003)(478600001)(110136005)(8936002)(5660300002)(2906002)(6666004)(2616005)(86362001)(316002)(16526019)(66946007)(66476007)(66556008)(6486002)(36756003)(6506007)(26005)(8676002)(107886003)(83380400001)(52116002)(6512007)(4326008)(186003)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: cA15M+JF3q6jwYl3OAzt+5NlCNet+cUN6RzPnJaSAPw0AEP5Y6zqFNZB3en2w5QPSG0WUwLVbAKmHVMpKnO498sBv7Dw0FkskZLYnmL+cM2MmOf2Ias/G1R0kiTCx8cUbEcZjIJxItZXkpuLhH1+jb0XUoILTWIwgi8ZcHGkoovaHp63uedcfz94hGp94mBRA5wgmB0G6k6210/xtG4EOi71SYmLnywDJfjLtg0fhkk0oA5NmH6nSlMFHVGYXxJq/RA8V54qM57hnzDHwuAouEF3DI6BWpk9Yha0pD1IBeQZqEVojidS1Y0KYsSp4Kq4ysKK8TKRR/h1KXGRqzXfMq00AmwvJK3UIgG+vH02JGkOyVfPGgxGz2knfYfCvjhQdZYs5D3wq7L4gMQ2g447yonVBLQ7isAJzcefugGs5BFJO2FefBvPw8utZDSa6VmNOikIzYNDxZsa5ffDZdP0bzXZyvSScL3YiUapZ6n20s+X+go86HGZdtlNZA9qJTH7sKBMOQsmCEIUNWTSIeNGyZVttLUvDXWNM4TVI1PoLt+iPRpGfBubyOrY3IrQdegsKzJskKAWj022tQscCLR2Xt3ADdlAhAE78Lr/BiIcLqlFz0+J7xUIDWZVLdWB5ntTQd07WwSnMSkSKFoUF467VA== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 964a398c-6c48-495c-4d07-08d837edcbf2 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2020 20:42:54.5224 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YayiiHg+Bgdr5MggZrllyFpopYCFiwvWuPNsbig2CVV+9a7kMieOd92UVXN9+3nk+5SA2/cO8zQKMkBJzkAbbg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR05MB7311 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Alex Vesker The DR TX state machine supports the following order: modify header, push vlan and encapsulation. Instead fs_dr would pass: push vlan, modify header and encapsulation. The above caused the rule creation to fail on invalid action sequence provided error. Fixes: 6a48faeeca10 ("net/mlx5: Add direct rule fs_cmd implementation") Signed-off-by: Alex Vesker Reviewed-by: Maor Gottlieb Signed-off-by: Saeed Mahameed --- .../mellanox/mlx5/core/steering/fs_dr.c | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c index 8887b2440c7d5..9b08eb557a311 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/fs_dr.c @@ -279,29 +279,9 @@ static int mlx5_cmd_dr_create_fte(struct mlx5_flow_root_namespace *ns, /* The order of the actions are must to be keep, only the following * order is supported by SW steering: - * TX: push vlan -> modify header -> encap + * TX: modify header -> push vlan -> encap * RX: decap -> pop vlan -> modify header */ - if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH) { - tmp_action = create_action_push_vlan(domain, &fte->action.vlan[0]); - if (!tmp_action) { - err = -ENOMEM; - goto free_actions; - } - fs_dr_actions[fs_dr_num_actions++] = tmp_action; - actions[num_actions++] = tmp_action; - } - - if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2) { - tmp_action = create_action_push_vlan(domain, &fte->action.vlan[1]); - if (!tmp_action) { - err = -ENOMEM; - goto free_actions; - } - fs_dr_actions[fs_dr_num_actions++] = tmp_action; - actions[num_actions++] = tmp_action; - } - if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_DECAP) { enum mlx5dr_action_reformat_type decap_type = DR_ACTION_REFORMAT_TYP_TNL_L2_TO_L2; @@ -354,6 +334,26 @@ static int mlx5_cmd_dr_create_fte(struct mlx5_flow_root_namespace *ns, actions[num_actions++] = fte->action.modify_hdr->action.dr_action; + if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH) { + tmp_action = create_action_push_vlan(domain, &fte->action.vlan[0]); + if (!tmp_action) { + err = -ENOMEM; + goto free_actions; + } + fs_dr_actions[fs_dr_num_actions++] = tmp_action; + actions[num_actions++] = tmp_action; + } + + if (fte->action.action & MLX5_FLOW_CONTEXT_ACTION_VLAN_PUSH_2) { + tmp_action = create_action_push_vlan(domain, &fte->action.vlan[1]); + if (!tmp_action) { + err = -ENOMEM; + goto free_actions; + } + fs_dr_actions[fs_dr_num_actions++] = tmp_action; + actions[num_actions++] = tmp_action; + } + if (delay_encap_set) actions[num_actions++] = fte->action.pkt_reformat->action.dr_action; From patchwork Mon Aug 3 20:41:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1340491 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=OaBGiwN3; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BL8x14cTkz9sSG for ; Tue, 4 Aug 2020 06:43:33 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728559AbgHCUnc (ORCPT ); Mon, 3 Aug 2020 16:43:32 -0400 Received: from mail-eopbgr150087.outbound.protection.outlook.com ([40.107.15.87]:25987 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728531AbgHCUnc (ORCPT ); Mon, 3 Aug 2020 16:43:32 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U7BU+ptCX5UYvW7688OLABudvleEqtB9BXReZvU9UTRwJYuEEUZusYkFvSPJsgSAQu5s3OyBg6Z8hCik/1fBTHbQJumF1t+PWbx5jfi7CZweDiYKSRKds6qTDTWMjtJqcfpoBHFKeKCdFYgAh5/USUDolOmJwHbdlZM7/9Okdh59gtBEfdsjvSYR6xzdXnkMYSUONC5Rx2GP32vWjNSWzrh8XkumfvvmOrduwMBqduou2Eia7FUyAjslODPaVtLSNT2dZuNqjGXMMUETyHEHrk78EVv8ShvDS/kDHpBZCZbnnePe64f9m5FOkGvU0Xfc50/Qo81lmsbdIYjq4L178Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SC+vgicRrMfZA1rUk1G4EIvguFzlIkDZ10YIjOUxQqA=; b=BeLmhOxhajFTOnJTYcZZc6aV8Ptyat8U7MYwdAj0q/lSkVZnApLwxfICRphjZ4OJSTch+vIjtksNN5ytDGlGy3a4v0gdDeSj3D2z+iMOfJEJT1CvTuiA2o7ESmjY9w1AvRLYQiMq1uWsQmFnA3D3Ft97WKCNBCVQ0lMpI742Pa8vBfvxiTDpY5UROkLx7sqh605zyu8ekKseIkJtJSP5ZHemviRDp6MLQO6+MA5C5sMIYl4oELG9/85q1AHSGzVacr9Ok5QyJ5nAZ2wijE2DtDedTknjB1x7FUlqUa7+zPPvabfkH7j8GSWWPJtKqrK65RGKRac0Gio+Ky1s8ahdLg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=SC+vgicRrMfZA1rUk1G4EIvguFzlIkDZ10YIjOUxQqA=; b=OaBGiwN3sLVwPlmUgcJKWij8nz/Hkwi1xYuS99V43XlD/jGOLTvvP8dEzvJNnoNcNZamMKKbu4dXfUjJWg/SH8JLgJ9tCpKaztdoI4ZAiC8bOV2Yn9PvVI4dqV8zRbc1MTaWDfcfnmxVDyooDHjYAD/ChXatM8yCFyrwQvMfByY= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=mellanox.com; Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) by VE1PR05MB7311.eurprd05.prod.outlook.com (2603:10a6:800:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.21; Mon, 3 Aug 2020 20:42:57 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366%5]) with mapi id 15.20.3239.021; Mon, 3 Aug 2020 20:42:57 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Saeed Mahameed Subject: [net-next 3/5] udp_tunnel: add the ability to hard-code IANA VXLAN Date: Mon, 3 Aug 2020 13:41:49 -0700 Message-Id: <20200803204151.120802-4-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200803204151.120802-1-saeedm@mellanox.com> References: <20200803204151.120802-1-saeedm@mellanox.com> X-ClientProxiedBy: BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from smtp.office365.com (73.15.39.150) by BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.17 via Frontend Transport; Mon, 3 Aug 2020 20:42:55 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [73.15.39.150] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ffead50b-da0c-430b-a9c3-08d837edcd85 X-MS-TrafficTypeDiagnostic: VE1PR05MB7311: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FlGg1wDGZi1yr4Oe0J4/kHA6Ekw09M19vKt3qoEEp17bXQdYGRw5aOMmwUU8hq5SxvBk8orJRL7j5Gp9SpdzB82HLiYy/4haHUEfTsUFIN+olpg8rEJfyK7ZlzDalGN6i/A4zKiG+VsZddPo9J+O0LvNo7XObhZHuzkODnI+9h7CrCsNULTzh6plBCHRkaUD2waKnCK6Kr04Cc4rRljdKS+hBCT6YYhFMQ7ywHNIRXqlCgPlDcv2mTizxNyCtkWpNNFFINVSvmMUlygbFQ9pwVlZn/VPZXN59Q4PrLqCk1zEJZshqn6piu/sXwCsnvvtRIGRlBl8NeBgik2ryI1O533ghS+MQYFKyPJxufdUZN/yguXcoE8xUoMjwKo6on/W X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR05MB5102.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(396003)(376002)(366004)(346002)(39860400002)(956004)(1076003)(478600001)(110136005)(8936002)(5660300002)(2906002)(6666004)(2616005)(86362001)(316002)(16526019)(66946007)(66476007)(66556008)(6486002)(36756003)(6506007)(26005)(8676002)(107886003)(83380400001)(52116002)(6512007)(4326008)(186003)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: zMQA1NbzKrkFhheEHsRdX0kTLvVIrUlHNDgT5lv3I9R1KHdtuR79U/iwI43Kg1lyiZap5S+4hobFlXU/nB4q8El/+kms9qYOGuUBbRdaz49tJ1rYyg8SjKe0weBecr2Hc8bT/HtMs5AUJ8jJKsKVv7o8PYbkKSZq1q+yvZp+aYwx6PGhZKs+J8BqbNmH2MXaghP1PTnZU+wONkNFB+NvbRahE4Izg+OPevVDn+y4fi46R+Ojm6dTfwk3SMsuP7RxwuygP1gGoKWt2mwSiXCMLaeZQuhhnHRgO6hXLBC/mk+hvAwV8riRbpbsu9UwjjNsqYYMXA/QbiqXDmVQBWjT4kehbeZYK6ImXl4+MhSzRr2OCUdtUVs+Uy5gU0BBsS/EC0pNkfeW2XUk53j0rCXTSYG725FCweimbspi7OZ1Xp2LvhsH2x5D7dXco2VHRQxfsWojQQ/f8PiM0s/uQ1fSU2lvGeE92e5dBddY1KwZgQKE5AVtIy1NRwaf5SXpZtWbfeNpUnfnQ1e12QGid8Q5dVct5wRBBlg6YbibyqyW+G+zn5jRwQ997/1OrAd/h+zvAlsBm1IlUZqKiYU8s7YekrD3loXgIDN8hu6XYAf99cUMETxQz8iynzydeNxfmkntQKth+mXmKSfHzDb1mRqAyQ== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ffead50b-da0c-430b-a9c3-08d837edcd85 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2020 20:42:57.3387 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: WgMA+FF4D4gADIAnIYznC/93pQi5f4ZKioifJPZXtdkeLyD2Jjzd27wV0t8K8YjmR/lXyqCJC4Cxx6wSpflb5g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR05MB7311 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jakub Kicinski mlx5 has the IANA VXLAN port (4789) hard coded by the device, instead of being added dynamically when tunnels are created. To support this add a workaround flag to struct udp_tunnel_nic_info. Skipping updates for the port is fairly trivial, dumping the hard coded port via ethtool requires some code duplication. The port is not a part of any real table, we dump it in a special table which has no tunnel types supported and only one entry. This is the last known workaround / hack needed to convert all drivers to the new infra. Signed-off-by: Jakub Kicinski Signed-off-by: Saeed Mahameed --- Documentation/networking/ethtool-netlink.rst | 3 + include/net/udp_tunnel.h | 5 ++ net/ethtool/tunnels.c | 69 +++++++++++++++++--- net/ipv4/udp_tunnel_nic.c | 7 ++ 4 files changed, 76 insertions(+), 8 deletions(-) diff --git a/Documentation/networking/ethtool-netlink.rst b/Documentation/networking/ethtool-netlink.rst index 7d75f1e32152d..d53bcb31645a4 100644 --- a/Documentation/networking/ethtool-netlink.rst +++ b/Documentation/networking/ethtool-netlink.rst @@ -1263,6 +1263,9 @@ Kernel response contents: | | | | ``ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE`` | u32 | tunnel type | +-+-+-+---------------------------------------+--------+---------------------+ +For UDP tunnel table empty ``ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES`` indicates that +the table contains static entries, hard-coded by the NIC. + Request translation =================== diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index dd20ce99740c8..94bb7a8822507 100644 --- a/include/net/udp_tunnel.h +++ b/include/net/udp_tunnel.h @@ -193,6 +193,11 @@ enum udp_tunnel_nic_info_flags { UDP_TUNNEL_NIC_INFO_OPEN_ONLY = BIT(1), /* Device supports only IPv4 tunnels */ UDP_TUNNEL_NIC_INFO_IPV4_ONLY = BIT(2), + /* Device has hard-coded the IANA VXLAN port (4789) as VXLAN. + * This port must not be counted towards n_entries of any table. + * Driver will not receive any callback associated with port 4789. + */ + UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN = BIT(3), }; /** diff --git a/net/ethtool/tunnels.c b/net/ethtool/tunnels.c index 6b89255f12319..84f23289475bc 100644 --- a/net/ethtool/tunnels.c +++ b/net/ethtool/tunnels.c @@ -2,6 +2,7 @@ #include #include +#include #include "bitset.h" #include "common.h" @@ -18,6 +19,20 @@ static_assert(ETHTOOL_UDP_TUNNEL_TYPE_GENEVE == ilog2(UDP_TUNNEL_TYPE_GENEVE)); static_assert(ETHTOOL_UDP_TUNNEL_TYPE_VXLAN_GPE == ilog2(UDP_TUNNEL_TYPE_VXLAN_GPE)); +static ssize_t ethnl_udp_table_reply_size(unsigned int types, bool compact) +{ + ssize_t size; + + size = ethnl_bitset32_size(&types, NULL, __ETHTOOL_UDP_TUNNEL_TYPE_CNT, + udp_tunnel_type_names, compact); + if (size < 0) + return size; + + return size + + nla_total_size(0) + /* _UDP_TABLE */ + nla_total_size(sizeof(u32)); /* _UDP_TABLE_SIZE */ +} + static ssize_t ethnl_tunnel_info_reply_size(const struct ethnl_req_info *req_base, struct netlink_ext_ack *extack) @@ -25,8 +40,8 @@ ethnl_tunnel_info_reply_size(const struct ethnl_req_info *req_base, bool compact = req_base->flags & ETHTOOL_FLAG_COMPACT_BITSETS; const struct udp_tunnel_nic_info *info; unsigned int i; + ssize_t ret; size_t size; - int ret; info = req_base->dev->udp_tunnel_nic_info; if (!info) { @@ -39,13 +54,10 @@ ethnl_tunnel_info_reply_size(const struct ethnl_req_info *req_base, for (i = 0; i < UDP_TUNNEL_NIC_MAX_TABLES; i++) { if (!info->tables[i].n_entries) - return size; + break; - size += nla_total_size(0); /* _UDP_TABLE */ - size += nla_total_size(sizeof(u32)); /* _UDP_TABLE_SIZE */ - ret = ethnl_bitset32_size(&info->tables[i].tunnel_types, NULL, - __ETHTOOL_UDP_TUNNEL_TYPE_CNT, - udp_tunnel_type_names, compact); + ret = ethnl_udp_table_reply_size(info->tables[i].tunnel_types, + compact); if (ret < 0) return ret; size += ret; @@ -53,6 +65,17 @@ ethnl_tunnel_info_reply_size(const struct ethnl_req_info *req_base, size += udp_tunnel_nic_dump_size(req_base->dev, i); } + if (info->flags & UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN) { + ret = ethnl_udp_table_reply_size(0, compact); + if (ret < 0) + return ret; + size += ret; + + size += nla_total_size(0) + /* _TABLE_ENTRY */ + nla_total_size(sizeof(__be16)) + /* _ENTRY_PORT */ + nla_total_size(sizeof(u32)); /* _ENTRY_TYPE */ + } + return size; } @@ -62,7 +85,7 @@ ethnl_tunnel_info_fill_reply(const struct ethnl_req_info *req_base, { bool compact = req_base->flags & ETHTOOL_FLAG_COMPACT_BITSETS; const struct udp_tunnel_nic_info *info; - struct nlattr *ports, *table; + struct nlattr *ports, *table, *entry; unsigned int i; info = req_base->dev->udp_tunnel_nic_info; @@ -97,10 +120,40 @@ ethnl_tunnel_info_fill_reply(const struct ethnl_req_info *req_base, nla_nest_end(skb, table); } + if (info->flags & UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN) { + u32 zero = 0; + + table = nla_nest_start(skb, ETHTOOL_A_TUNNEL_UDP_TABLE); + if (!table) + goto err_cancel_ports; + + if (nla_put_u32(skb, ETHTOOL_A_TUNNEL_UDP_TABLE_SIZE, 1)) + goto err_cancel_table; + + if (ethnl_put_bitset32(skb, ETHTOOL_A_TUNNEL_UDP_TABLE_TYPES, + &zero, NULL, + __ETHTOOL_UDP_TUNNEL_TYPE_CNT, + udp_tunnel_type_names, compact)) + goto err_cancel_table; + + entry = nla_nest_start(skb, ETHTOOL_A_TUNNEL_UDP_TABLE_ENTRY); + + if (nla_put_be16(skb, ETHTOOL_A_TUNNEL_UDP_ENTRY_PORT, + htons(IANA_VXLAN_UDP_PORT)) || + nla_put_u32(skb, ETHTOOL_A_TUNNEL_UDP_ENTRY_TYPE, + ilog2(UDP_TUNNEL_TYPE_VXLAN))) + goto err_cancel_entry; + + nla_nest_end(skb, entry); + nla_nest_end(skb, table); + } + nla_nest_end(skb, ports); return 0; +err_cancel_entry: + nla_nest_cancel(skb, entry); err_cancel_table: nla_nest_cancel(skb, table); err_cancel_ports: diff --git a/net/ipv4/udp_tunnel_nic.c b/net/ipv4/udp_tunnel_nic.c index f0dbd9905a531..69962165c0e8a 100644 --- a/net/ipv4/udp_tunnel_nic.c +++ b/net/ipv4/udp_tunnel_nic.c @@ -7,6 +7,7 @@ #include #include #include +#include enum udp_tunnel_nic_table_entry_flags { UDP_TUNNEL_NIC_ENTRY_ADD = BIT(0), @@ -504,6 +505,12 @@ __udp_tunnel_nic_add_port(struct net_device *dev, struct udp_tunnel_info *ti) return; if (!netif_running(dev) && info->flags & UDP_TUNNEL_NIC_INFO_OPEN_ONLY) return; + if (info->flags & UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN && + ti->port == htons(IANA_VXLAN_UDP_PORT)) { + if (ti->type != UDP_TUNNEL_TYPE_VXLAN) + netdev_warn(dev, "device assumes port 4789 will be used by vxlan tunnels\n"); + return; + } if (!udp_tunnel_nic_is_capable(dev, utn, ti)) return; From patchwork Mon Aug 3 20:41:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1340493 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=HcuiFTqo; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BL8x761c5z9sSG for ; Tue, 4 Aug 2020 06:43:39 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728601AbgHCUni (ORCPT ); Mon, 3 Aug 2020 16:43:38 -0400 Received: from mail-eopbgr150087.outbound.protection.outlook.com ([40.107.15.87]:25987 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725863AbgHCUnf (ORCPT ); Mon, 3 Aug 2020 16:43:35 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AcChAzQpgDfXR5r+TOQTSEMYRbMfz9BRtYvB/1VL7dN36HE/tuCW+dngXbpYdZIcc/sjKf+wCcVO2r/PFQI1QFzFcmKSijosYwLd5EfN5ugofVn89Qu1GfYVTtKtxJMQ4a0LIk+vCL4SXvpZBfthV1EHqUmXtnoPcqAGyXpRB17PY6kI6+Gtwso+gXcg1CFy7sufml25L3ONtqcO0Sq3GN9HpccpAgBNaX/mohc70mKAwb/hkwF/NwaXAue34DX1poh2BOXLzxaRIiCODk1zC5sSs6edCETNBH9c2LAMzMlkuV1WAmY1l6gIJHzbb8XyB7jbkM0zoK6GcxLcGd7H5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2slUHR19lz57zdfRiuGs0OSk4xzxekV84QQCX3yW/dU=; b=XntzXaKWhYBZAz/qP9+87NkJp3Eyt5QzZBgA0r/bJBE7dJmk+d1HAnp8GZayj3w5SnCKPiH5g6lnrs7qiU4GH2MirNpPJUtMFVNhSFLK4UUz2HK8IbYEaqGEwL7trG3S2ivGFVC4cOG2RMGHP9xEzp0Yl6TRs1zoNk10tTINF8Qh9fRaM4UcwS4HkZIUMcjC4KNpRbCv89wMH7MqQLhKLU806M7JjfgkiCFlDtwLwF556QIUFfC51sJ99ScesnRCeiGAj5VxyeXoYtitAx42YBbYMKy6nloMJ36BidtEvXRa0LMS5yKcFUV8rshmm5YLEVJOOOY8fKnaTxWJvCDfQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2slUHR19lz57zdfRiuGs0OSk4xzxekV84QQCX3yW/dU=; b=HcuiFTqoA25FoLdhWVabDHvNurkguU44QsyF1QrfJswb5Maxwnl1wGUSDOavO0pEOQYOQmWlGAQueho0W/6qH9lMrEDkGrIiFoWid1GRYw0wGdeyKUjBHyU94kGFdrkdgZu9b4p8AL+OOrODzRfKAdpzG049/DZeq11JEJF2f1I= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=mellanox.com; Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) by VE1PR05MB7311.eurprd05.prod.outlook.com (2603:10a6:800:1a3::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.21; Mon, 3 Aug 2020 20:43:01 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366%5]) with mapi id 15.20.3239.021; Mon, 3 Aug 2020 20:43:01 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Saeed Mahameed Subject: [net-next 4/5] net/mlx5: convert to new udp_tunnel infrastructure Date: Mon, 3 Aug 2020 13:41:50 -0700 Message-Id: <20200803204151.120802-5-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200803204151.120802-1-saeedm@mellanox.com> References: <20200803204151.120802-1-saeedm@mellanox.com> X-ClientProxiedBy: BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from smtp.office365.com (73.15.39.150) by BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.17 via Frontend Transport; Mon, 3 Aug 2020 20:42:57 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [73.15.39.150] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 09f0d1fe-2e0b-4b4c-3902-08d837edcef1 X-MS-TrafficTypeDiagnostic: VE1PR05MB7311: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ioADO4sEqYnHTAu/E30hiq8BZD2bhQKaOrqR674hoZ9g5AB/kdB7v/mRwZPylqmV+9u9wBL67DdSVckfvwPbfp2T3s9zID54IprLzOGztpb1M1X7BRJMtAlYRUhwPdW5NRjg09JXF1AVuxoCbUjP5glaxdo8t8T5PYun0HESaYMhq4u4KUF/l3oP6axROnMiDizNb1TLCcJPF8247pZspC5+htcBirwYJVO9kwqf1teiV6l3vv72CcoYFZsY2TNNv+vHODl7XzbxzdbwzuWKWlFCjYGEFBH3BDrsB0LIT3R13sjqOiZHotQ62EMzbWe7nGz4ZRiN18vAPf6c+gilBr3NxCrLCzxJx+hjVRJcGvvWUTCRPLW3ZzgBNEWzq0cc X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR05MB5102.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(136003)(396003)(376002)(366004)(346002)(39860400002)(956004)(1076003)(478600001)(110136005)(8936002)(5660300002)(2906002)(6666004)(2616005)(30864003)(86362001)(316002)(16526019)(66946007)(66476007)(66556008)(6486002)(36756003)(6506007)(26005)(8676002)(107886003)(83380400001)(52116002)(6512007)(4326008)(186003)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: C2S/aQdjshfHTNGM/4oOfO+El7jnf8ToNNSzv0oJ9al/uSPpFs4gbZfg94sAttHsbNqa2xiyAwZAz5tXBVKNKHwWWR516QR33azMKveBgsn6+rjBOUhRAfbhOYOZhU+YfBx+ARaKApJfUJ+rx01wRQRdEuFY6dZ6nH+9v5MQEWj3msOb/NCZLZILvrTZ+Tw6iMzo4AqeAWGSaCXEI0fdNjTn3XW6Ws/lKNn45xuBUJqjSHj+lC6AXns54yxl5KnjsMg4TLCiTa+9a1NghCMw0bJKrp3w1pV+GvmK5+EO0YBphZWt12Eao0wZU3vbT6d9zbCDb5C3Swl6DMM8S+NH0U4JOb8OJxYPjfQ1DMuw8fdBWZ6rPWAb74P7t+nkoaIo9QgHWPOIMDWgyB4k0QPFLJhe8Offr0dzRlyDF1VQOkDrp768pNpaWO9VKM6bGtX1zkdqh24TIWA4UcWKFKgF1CygjJAEOjtX53JQ80XwIfXVi+4Dtcb05z6I2IB47qLYviP+I3YjbE7Z3kIt/8+KBcTPQqI9vV76aZI3pR2capaGVlPp0/KByzJ5mjv8oR3ZqgoewBR8bR0iIuopzCxmSBTOcv16k9AqmhmH4RLeGkB2TGz0SXFlH7Z9yMzsyi7mQ86d/veobfnQnxyjJppELg== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 09f0d1fe-2e0b-4b4c-3902-08d837edcef1 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2020 20:43:01.0176 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: P/8oVAy+Qr6gj67uzg918DO+TUbKh5kfZqMYgBTFIPlNknVgQKMyydvVAbbuybQZg8E3BZVHXSp3qtfJ1E/zIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR05MB7311 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jakub Kicinski Allocate nic_info dynamically - n_entries is not constant. Attach the tunnel offload info only to the uplink representor. We expect the "main" netdev to be unregistered in switchdev mode, and there to be only one uplink representor. Drop the udp_tunnel_drop_rx_info() call, it was not there until commit b3c2ed21c0bd ("net/mlx5e: Fix VXLAN configuration restore after function reload") so the device doesn't need it, and core should handle reloads and reset just fine. v2: - don't drop the ndos on reprs, and register info on uplink repr. v4: - Move netdev tunnel structure handling to en_main.c Signed-off-by: Jakub Kicinski Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en.h | 5 +- .../net/ethernet/mellanox/mlx5/core/en_main.c | 121 ++++++------------ .../net/ethernet/mellanox/mlx5/core/en_rep.c | 5 +- .../ethernet/mellanox/mlx5/core/lib/vxlan.c | 64 +++------ .../ethernet/mellanox/mlx5/core/lib/vxlan.h | 5 + 5 files changed, 64 insertions(+), 136 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en.h b/drivers/net/ethernet/mellanox/mlx5/core/en.h index f2fa1307e90cb..0cc2080fd847b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en.h @@ -45,6 +45,7 @@ #include #include #include +#include #include #include #include @@ -792,6 +793,7 @@ struct mlx5e_priv { u16 drop_rq_q_counter; struct notifier_block events_nb; + struct udp_tunnel_nic_info nic_info; #ifdef CONFIG_MLX5_CORE_EN_DCB struct mlx5e_dcbx dcbx; #endif @@ -1012,6 +1014,7 @@ int mlx5e_set_dev_port_mtu(struct mlx5e_priv *priv); int mlx5e_set_dev_port_mtu_ctx(struct mlx5e_priv *priv, void *context); int mlx5e_change_mtu(struct net_device *netdev, int new_mtu, mlx5e_fp_preactivate preactivate); +void mlx5e_vxlan_set_netdev_info(struct mlx5e_priv *priv); /* ethtool helpers */ void mlx5e_ethtool_get_drvinfo(struct mlx5e_priv *priv, @@ -1080,8 +1083,6 @@ void mlx5e_build_rss_params(struct mlx5e_rss_params *rss_params, void mlx5e_rx_dim_work(struct work_struct *work); void mlx5e_tx_dim_work(struct work_struct *work); -void mlx5e_add_vxlan_port(struct net_device *netdev, struct udp_tunnel_info *ti); -void mlx5e_del_vxlan_port(struct net_device *netdev, struct udp_tunnel_info *ti); netdev_features_t mlx5e_features_check(struct sk_buff *skb, struct net_device *netdev, netdev_features_t features); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c index 72c91ff554653..8f26cd951ff54 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c @@ -4191,83 +4191,6 @@ int mlx5e_get_vf_stats(struct net_device *dev, } #endif -struct mlx5e_vxlan_work { - struct work_struct work; - struct mlx5e_priv *priv; - u16 port; -}; - -static void mlx5e_vxlan_add_work(struct work_struct *work) -{ - struct mlx5e_vxlan_work *vxlan_work = - container_of(work, struct mlx5e_vxlan_work, work); - struct mlx5e_priv *priv = vxlan_work->priv; - u16 port = vxlan_work->port; - - mutex_lock(&priv->state_lock); - mlx5_vxlan_add_port(priv->mdev->vxlan, port); - mutex_unlock(&priv->state_lock); - - kfree(vxlan_work); -} - -static void mlx5e_vxlan_del_work(struct work_struct *work) -{ - struct mlx5e_vxlan_work *vxlan_work = - container_of(work, struct mlx5e_vxlan_work, work); - struct mlx5e_priv *priv = vxlan_work->priv; - u16 port = vxlan_work->port; - - mutex_lock(&priv->state_lock); - mlx5_vxlan_del_port(priv->mdev->vxlan, port); - mutex_unlock(&priv->state_lock); - kfree(vxlan_work); -} - -static void mlx5e_vxlan_queue_work(struct mlx5e_priv *priv, u16 port, int add) -{ - struct mlx5e_vxlan_work *vxlan_work; - - vxlan_work = kmalloc(sizeof(*vxlan_work), GFP_ATOMIC); - if (!vxlan_work) - return; - - if (add) - INIT_WORK(&vxlan_work->work, mlx5e_vxlan_add_work); - else - INIT_WORK(&vxlan_work->work, mlx5e_vxlan_del_work); - - vxlan_work->priv = priv; - vxlan_work->port = port; - queue_work(priv->wq, &vxlan_work->work); -} - -void mlx5e_add_vxlan_port(struct net_device *netdev, struct udp_tunnel_info *ti) -{ - struct mlx5e_priv *priv = netdev_priv(netdev); - - if (ti->type != UDP_TUNNEL_TYPE_VXLAN) - return; - - if (!mlx5_vxlan_allowed(priv->mdev->vxlan)) - return; - - mlx5e_vxlan_queue_work(priv, be16_to_cpu(ti->port), 1); -} - -void mlx5e_del_vxlan_port(struct net_device *netdev, struct udp_tunnel_info *ti) -{ - struct mlx5e_priv *priv = netdev_priv(netdev); - - if (ti->type != UDP_TUNNEL_TYPE_VXLAN) - return; - - if (!mlx5_vxlan_allowed(priv->mdev->vxlan)) - return; - - mlx5e_vxlan_queue_work(priv, be16_to_cpu(ti->port), 0); -} - static netdev_features_t mlx5e_tunnel_features_check(struct mlx5e_priv *priv, struct sk_buff *skb, netdev_features_t features) @@ -4597,8 +4520,8 @@ const struct net_device_ops mlx5e_netdev_ops = { .ndo_change_mtu = mlx5e_change_nic_mtu, .ndo_do_ioctl = mlx5e_ioctl, .ndo_set_tx_maxrate = mlx5e_set_tx_maxrate, - .ndo_udp_tunnel_add = mlx5e_add_vxlan_port, - .ndo_udp_tunnel_del = mlx5e_del_vxlan_port, + .ndo_udp_tunnel_add = udp_tunnel_nic_add_port, + .ndo_udp_tunnel_del = udp_tunnel_nic_del_port, .ndo_features_check = mlx5e_features_check, .ndo_tx_timeout = mlx5e_tx_timeout, .ndo_bpf = mlx5e_xdp, @@ -4869,6 +4792,39 @@ static void mlx5e_set_netdev_dev_addr(struct net_device *netdev) } } +static int mlx5e_vxlan_set_port(struct net_device *netdev, unsigned int table, + unsigned int entry, struct udp_tunnel_info *ti) +{ + struct mlx5e_priv *priv = netdev_priv(netdev); + + return mlx5_vxlan_add_port(priv->mdev->vxlan, ntohs(ti->port)); +} + +static int mlx5e_vxlan_unset_port(struct net_device *netdev, unsigned int table, + unsigned int entry, struct udp_tunnel_info *ti) +{ + struct mlx5e_priv *priv = netdev_priv(netdev); + + return mlx5_vxlan_del_port(priv->mdev->vxlan, ntohs(ti->port)); +} + +void mlx5e_vxlan_set_netdev_info(struct mlx5e_priv *priv) +{ + if (!mlx5_vxlan_allowed(priv->mdev->vxlan)) + return; + + priv->nic_info.set_port = mlx5e_vxlan_set_port; + priv->nic_info.unset_port = mlx5e_vxlan_unset_port; + priv->nic_info.flags = UDP_TUNNEL_NIC_INFO_MAY_SLEEP | + UDP_TUNNEL_NIC_INFO_STATIC_IANA_VXLAN; + priv->nic_info.tables[0].tunnel_types = UDP_TUNNEL_TYPE_VXLAN; + /* Don't count the space hard-coded to the IANA port */ + priv->nic_info.tables[0].n_entries = + mlx5_vxlan_max_udp_ports(priv->mdev) - 1; + + priv->netdev->udp_tunnel_nic_info = &priv->nic_info; +} + static void mlx5e_build_nic_netdev(struct net_device *netdev) { struct mlx5e_priv *priv = netdev_priv(netdev); @@ -4912,6 +4868,8 @@ static void mlx5e_build_nic_netdev(struct net_device *netdev) netdev->hw_features |= NETIF_F_HW_VLAN_CTAG_FILTER; netdev->hw_features |= NETIF_F_HW_VLAN_STAG_TX; + mlx5e_vxlan_set_netdev_info(priv); + if (mlx5_vxlan_allowed(mdev->vxlan) || mlx5_geneve_tx_allowed(mdev) || mlx5e_any_tunnel_proto_supported(mdev)) { netdev->hw_enc_features |= NETIF_F_HW_CSUM; @@ -5217,8 +5175,7 @@ static void mlx5e_nic_enable(struct mlx5e_priv *priv) rtnl_lock(); if (netif_running(netdev)) mlx5e_open(netdev); - if (mlx5_vxlan_allowed(priv->mdev->vxlan)) - udp_tunnel_get_rx_info(netdev); + udp_tunnel_nic_reset_ntf(priv->netdev); netif_device_attach(netdev); rtnl_unlock(); } @@ -5233,8 +5190,6 @@ static void mlx5e_nic_disable(struct mlx5e_priv *priv) rtnl_lock(); if (netif_running(priv->netdev)) mlx5e_close(priv->netdev); - if (mlx5_vxlan_allowed(priv->mdev->vxlan)) - udp_tunnel_drop_rx_info(priv->netdev); netif_device_detach(priv->netdev); rtnl_unlock(); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c index 3db81a8cfc1d0..e13e5d1b3eaed 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_rep.c @@ -658,8 +658,8 @@ static const struct net_device_ops mlx5e_netdev_ops_uplink_rep = { .ndo_has_offload_stats = mlx5e_rep_has_offload_stats, .ndo_get_offload_stats = mlx5e_rep_get_offload_stats, .ndo_change_mtu = mlx5e_uplink_rep_change_mtu, - .ndo_udp_tunnel_add = mlx5e_add_vxlan_port, - .ndo_udp_tunnel_del = mlx5e_del_vxlan_port, + .ndo_udp_tunnel_add = udp_tunnel_nic_add_port, + .ndo_udp_tunnel_del = udp_tunnel_nic_del_port, .ndo_features_check = mlx5e_features_check, .ndo_set_vf_mac = mlx5e_set_vf_mac, .ndo_set_vf_rate = mlx5e_set_vf_rate, @@ -730,6 +730,7 @@ static void mlx5e_build_rep_netdev(struct net_device *netdev) /* we want a persistent mac for the uplink rep */ mlx5_query_mac_address(mdev, netdev->dev_addr); netdev->ethtool_ops = &mlx5e_uplink_rep_ethtool_ops; + mlx5e_vxlan_set_netdev_info(priv); mlx5e_dcbnl_build_rep_netdev(netdev); } else { netdev->netdev_ops = &mlx5e_netdev_ops_rep; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c b/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c index be34330d89cc4..3315afe2f8dce 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.c @@ -42,21 +42,14 @@ struct mlx5_vxlan { struct mlx5_core_dev *mdev; /* max_num_ports is usuallly 4, 16 buckets is more than enough */ DECLARE_HASHTABLE(htable, 4); - int num_ports; struct mutex sync_lock; /* sync add/del port HW operations */ }; struct mlx5_vxlan_port { struct hlist_node hlist; - refcount_t refcount; u16 udp_port; }; -static inline u8 mlx5_vxlan_max_udp_ports(struct mlx5_core_dev *mdev) -{ - return MLX5_CAP_ETH(mdev, max_vxlan_udp_ports) ?: 4; -} - static int mlx5_vxlan_core_add_port_cmd(struct mlx5_core_dev *mdev, u16 port) { u32 in[MLX5_ST_SZ_DW(add_vxlan_udp_dport_in)] = {}; @@ -109,48 +102,24 @@ static struct mlx5_vxlan_port *vxlan_lookup_port(struct mlx5_vxlan *vxlan, u16 p int mlx5_vxlan_add_port(struct mlx5_vxlan *vxlan, u16 port) { struct mlx5_vxlan_port *vxlanp; - int ret = 0; - - mutex_lock(&vxlan->sync_lock); - vxlanp = vxlan_lookup_port(vxlan, port); - if (vxlanp) { - refcount_inc(&vxlanp->refcount); - goto unlock; - } + int ret; - if (vxlan->num_ports >= mlx5_vxlan_max_udp_ports(vxlan->mdev)) { - mlx5_core_info(vxlan->mdev, - "UDP port (%d) not offloaded, max number of UDP ports (%d) are already offloaded\n", - port, mlx5_vxlan_max_udp_ports(vxlan->mdev)); - ret = -ENOSPC; - goto unlock; - } + vxlanp = kzalloc(sizeof(*vxlanp), GFP_KERNEL); + if (!vxlanp) + return -ENOMEM; + vxlanp->udp_port = port; ret = mlx5_vxlan_core_add_port_cmd(vxlan->mdev, port); - if (ret) - goto unlock; - - vxlanp = kzalloc(sizeof(*vxlanp), GFP_KERNEL); - if (!vxlanp) { - ret = -ENOMEM; - goto err_delete_port; + if (ret) { + kfree(vxlanp); + return ret; } - vxlanp->udp_port = port; - refcount_set(&vxlanp->refcount, 1); - + mutex_lock(&vxlan->sync_lock); hash_add_rcu(vxlan->htable, &vxlanp->hlist, port); - - vxlan->num_ports++; mutex_unlock(&vxlan->sync_lock); - return 0; - -err_delete_port: - mlx5_vxlan_core_del_port_cmd(vxlan->mdev, port); -unlock: - mutex_unlock(&vxlan->sync_lock); - return ret; + return 0; } int mlx5_vxlan_del_port(struct mlx5_vxlan *vxlan, u16 port) @@ -161,18 +130,15 @@ int mlx5_vxlan_del_port(struct mlx5_vxlan *vxlan, u16 port) mutex_lock(&vxlan->sync_lock); vxlanp = vxlan_lookup_port(vxlan, port); - if (!vxlanp) { + if (WARN_ON(!vxlanp)) { ret = -ENOENT; goto out_unlock; } - if (refcount_dec_and_test(&vxlanp->refcount)) { - hash_del_rcu(&vxlanp->hlist); - synchronize_rcu(); - mlx5_vxlan_core_del_port_cmd(vxlan->mdev, port); - kfree(vxlanp); - vxlan->num_ports--; - } + hash_del_rcu(&vxlanp->hlist); + synchronize_rcu(); + mlx5_vxlan_core_del_port_cmd(vxlan->mdev, port); + kfree(vxlanp); out_unlock: mutex_unlock(&vxlan->sync_lock); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.h b/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.h index 6d599f4a8acdf..ec766529f49b6 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/lib/vxlan.h @@ -37,6 +37,11 @@ struct mlx5_vxlan; struct mlx5_vxlan_port; +static inline u8 mlx5_vxlan_max_udp_ports(struct mlx5_core_dev *mdev) +{ + return MLX5_CAP_ETH(mdev, max_vxlan_udp_ports) ?: 4; +} + static inline bool mlx5_vxlan_allowed(struct mlx5_vxlan *vxlan) { /* not allowed reason is encoded in vxlan pointer as error, From patchwork Mon Aug 3 20:41:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1340489 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=mellanox.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=Mellanox.com header.i=@Mellanox.com header.a=rsa-sha256 header.s=selector1 header.b=SpsoFUOG; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4BL8wb6RGMz9sTK for ; Tue, 4 Aug 2020 06:43:11 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728527AbgHCUnL (ORCPT ); Mon, 3 Aug 2020 16:43:11 -0400 Received: from mail-eopbgr80042.outbound.protection.outlook.com ([40.107.8.42]:3002 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725863AbgHCUnK (ORCPT ); Mon, 3 Aug 2020 16:43:10 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PokMveL6XWwKPnIHPuR67sXLlFSbmLOGLx1PV3AuZqmBSfHhyXiiL6lF7hQzHM/h2B3JjTKoGzygKPFnDSdNgCq79jxJ/VU5LNzjYLFlhdtpGnYSVY/3MXRljRAuVHam+VH8TFXYEO11r+AOf+ZkSwwBcP45Tn/kImaKtTipgxMq2kJdO/J7pPGQp+Xa0JpRAqKBcCGV5tWAN2SQNhkhZZM3DCynXYtKvuqaBkyEUnwcoyMAt+MSbc9TarPYV8Bcs/soGr4XhWu2USG+HB6aNsmeMxXLBzJ/3w8juZ25FPtQ7bCwkZ9W+el2eTh0joJnqBXj9J7zoFvXXHthV8Kh2Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MqrAfyuVsR3M6eKxmE7oZafb4vo+/pTjcl6XBcWRTxM=; b=LaPHxD12pSnfL9oSsEHWjMgZBeUGF1LPbZi9VJO+KHVLpnkOXhyXhg1LySAFDCIDADJ0/GKfUjF5tmJtIHC3xW9Y9ZGcofl+dI5+ePDX758sOGdElUttQzScWum76mDodm9AFn6oEwWTfX3CQEo547sNwdhXjNOsZQH0VsOCuDNBKAN+T+seKUVJ+NyeOb+e4bewVgamGZeLYxKAx27DNISulIRE5NYLWkuRQkM+6Ron3arkbtOR/ORw0NvoDAUqtjDvRK6ItbWLWKFl2kLzLF6lFWudg+YvNkdVkFzwzgGQnvhO8fvNyFjBfBCbYD2GctulV22JmPlA9yzARr5daQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MqrAfyuVsR3M6eKxmE7oZafb4vo+/pTjcl6XBcWRTxM=; b=SpsoFUOGa02T33JXh9ST5CzUCUL31tJHIZHAyQK3dfkef26/vlQS4yh3ut8eu1v4HBHk1jbffhzZ8eFjMDe6DHvDj8Z+1yC+iU7U3rz1d/CkJdBRfbsnZ2QAa1hFb5TR5BYA3C+t05qcJpXrFp6/O3wSVvHciL2ZUYAbzfMJPFE= Authentication-Results: davemloft.net; dkim=none (message not signed) header.d=none;davemloft.net; dmarc=none action=none header.from=mellanox.com; Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) by VI1PR05MB6110.eurprd05.prod.outlook.com (2603:10a6:803:eb::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.20; Mon, 3 Aug 2020 20:43:05 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2dde:902e:3a19:4366%5]) with mapi id 15.20.3239.021; Mon, 3 Aug 2020 20:43:05 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Leon Romanovsky , Maor Gottlieb , Mark Bloch , Saeed Mahameed Subject: [net-next 5/5] net/mlx5: Delete extra dump stack that gives nothing Date: Mon, 3 Aug 2020 13:41:51 -0700 Message-Id: <20200803204151.120802-6-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200803204151.120802-1-saeedm@mellanox.com> References: <20200803204151.120802-1-saeedm@mellanox.com> X-ClientProxiedBy: BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from smtp.office365.com (73.15.39.150) by BY3PR10CA0017.namprd10.prod.outlook.com (2603:10b6:a03:255::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3239.17 via Frontend Transport; Mon, 3 Aug 2020 20:43:01 +0000 X-Mailer: git-send-email 2.26.2 X-Originating-IP: [73.15.39.150] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 2965e2f1-252e-487c-b127-08d837edd1a0 X-MS-TrafficTypeDiagnostic: VI1PR05MB6110: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UKQt4JuxIO1GdZiiABUoyPSpBx4f54Slab9fYtACw1/2B10o8RX6pdjQE5c5/RU6Z1V0eaeMRaTy1FOhlLcZqAc7XQ8SGSBMSUq4HZmwwcsPNl2OBySs7bV01Ak18Zv8U6AO5TmV4idMRZJgpiL57SYG8RMZk/1pUQpQ5uoilZWaVyBT5q4/y1c8hHWIoLY6lqDqj/uXWqoYWrHjBXRoQ/6TvmlkFvQDITfdiFySSijIHK2icYQ+r1oSvx+0PXh0rzDKvtsmNJ5GjTlPEEg2iZpcHh/jTdqMBLcb7GPirDBkdEto2xYyJ2ZWJN77yw3UzwZcgXKeKjW8FhLfTHUFvY/FV3eh8s0CRfqiJtEC3xKB1gti7ckDbkOonq97FDmQ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR05MB5102.eurprd05.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(4636009)(376002)(346002)(136003)(366004)(39860400002)(396003)(6506007)(52116002)(83380400001)(66476007)(8676002)(66556008)(66946007)(2616005)(956004)(107886003)(1076003)(16526019)(186003)(26005)(478600001)(6486002)(316002)(36756003)(5660300002)(86362001)(8936002)(54906003)(110136005)(6666004)(2906002)(4326008)(6512007)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: oI4bN/TM7XOMAQjXSx/QU4wVtWdyNLmu8qmHSUxt3F5h2TiNf1Dh8ZBoqgLkdLKcqLUg1ZW2CkMshIfg1t6LoyoML5PFyN3WFspJEAmVOVQFuJefj15/hnc1/Ff8xmWydYUqIEAe3MWEZcVCe5XqyJM+ckOR9eSTIUnyy9vo7uc4cXfjpxsNx/1/wqXR5ntW8tWfh5uvjeKrXJynP+nbUVHrgRm3qmhxA6dzkrnT3XVBdaNFuEkL0RyYLMlrmL2gfUDzTwv5iNOszKSxBkjRWwPLFOfRPUnFonvvhMqAGHAc8Q8I9/yTwCMZgTfeeB8cFBkZDLPEHvNwRvxYcNMrgo6sD+V9TkmJXKR1LN+Ar7krZY0/K/ezLRrbMGhSNcJ8i2U2RUfLMA4iO3yXbdjO+dEzSIBAQpZ1dTxmsD+tlFY7vwZ/ynZrIiJLAtRNwv+BIp1y+jjc7+zi9RN43u+M0N/sSxv82daiNB4ptVWLiK4vr2z4j9cq0bKmKE2gEnVI0+upyITYXMuo5JmlP1i1EFYq6aFyWJ6J2aXVSe1MgAbJAR0L82eCM8zgaV4/av+2ZazUosBnVxDtlAZGEv7t/wuDXR+Nuxx6fBRuiIqPaVPmT3pApEMFcUUuOQL9EN5aafXC9nILjGcdStZGIJrZsQ== X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2965e2f1-252e-487c-b127-08d837edd1a0 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2020 20:43:05.2052 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lJsYTzh5Y7B1HKoixv+y0w9Q7BTwDvZJyGZhKAKIWfuwHe35ubBD4IhRO3pMSZW3s4FEC5sq8gj8tcgnKHg8Jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6110 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Leon Romanovsky The WARN_*() macros are intended to catch impossible situations from the SW point of view. They gave a little in case HW<->SW interface is out-of-sync. Such out-of-sync scenario can be due to SW errors that are not part of this flow or because some HW errors, where dump stack won't help either. This specific WARN_ON() is useless because mlx5_core code is prepared to handle such situations and will unfold everything correctly while providing enough information to the users to understand why FS is not working. WARNING: CPU: 0 PID: 3222 at drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:825 connect_fts_in_prio.isra.20+0x1dd/0x260 linux/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:825 Kernel panic - not syncing: panic_on_warn set ... CPU: 0 PID: 3222 Comm: syz-executor861 Not tainted 5.5.0-rc6+ #2 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.12.1-0-ga5cab58e9a3f-prebuilt.qemu.org 04/01/2014 Call Trace: __dump_stack linux/lib/dump_stack.c:77 [inline] dump_stack+0x94/0xce linux/lib/dump_stack.c:118 panic+0x234/0x56f linux/kernel/panic.c:221 __warn+0x1cc/0x1e1 linux/kernel/panic.c:582 report_bug+0x200/0x310 linux/lib/bug.c:195 fixup_bug.part.11+0x32/0x80 linux/arch/x86/kernel/traps.c:174 fixup_bug linux/arch/x86/kernel/traps.c:273 [inline] do_error_trap+0xd3/0x100 linux/arch/x86/kernel/traps.c:267 do_invalid_op+0x31/0x40 linux/arch/x86/kernel/traps.c:286 invalid_op+0x1e/0x30 linux/arch/x86/entry/entry_64.S:1027 RIP: 0010:connect_fts_in_prio.isra.20+0x1dd/0x260 linux/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:825 Code: 00 00 48 c7 c2 60 8c 31 84 48 c7 c6 00 81 31 84 48 8b 38 e8 3c a8 cb ff 41 83 fd 01 8b 04 24 0f 8e 29 ff ff ff e8 83 7b bc fe <0f> 0b 8b 04 24 e9 1a ff ff ff 89 04 24 e8 c1 20 e0 fe 8b 04 24 eb RSP: 0018:ffffc90004bb7858 EFLAGS: 00010293 RAX: ffff88805de98e80 RBX: 0000000000000c96 RCX: ffffffff827a853d RDX: 0000000000000000 RSI: 0000000000000000 RDI: fffff52000976efa RBP: 0000000000000007 R08: ffffed100da060e3 R09: ffffed100da060e3 R10: 0000000000000001 R11: ffffed100da060e2 R12: dffffc0000000000 R13: 0000000000000002 R14: ffff8880683a1a10 R15: ffffed100d07bc1c connect_prev_fts linux/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:844 [inline] connect_flow_table linux/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:975 [inline] __mlx5_create_flow_table+0x8f8/0x1710 linux/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1064 mlx5_create_flow_table linux/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1094 [inline] mlx5_create_auto_grouped_flow_table+0xe1/0x210 linux/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c:1136 _get_prio linux/drivers/infiniband/hw/mlx5/main.c:3286 [inline] get_flow_table+0x2ea/0x760 linux/drivers/infiniband/hw/mlx5/main.c:3376 mlx5_ib_create_flow+0x331/0x11c0 linux/drivers/infiniband/hw/mlx5/main.c:3896 ib_uverbs_ex_create_flow+0x13e8/0x1b40 linux/drivers/infiniband/core/uverbs_cmd.c:3311 ib_uverbs_write+0xaa5/0xdf0 linux/drivers/infiniband/core/uverbs_main.c:769 __vfs_write+0x7c/0x100 linux/fs/read_write.c:494 vfs_write+0x168/0x4a0 linux/fs/read_write.c:558 ksys_write+0xc8/0x200 linux/fs/read_write.c:611 do_syscall_64+0x9c/0x390 linux/arch/x86/entry/common.c:294 entry_SYSCALL_64_after_hwframe+0x44/0xa9 RIP: 0033:0x45a059 Code: 00 00 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 bc ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fcc17564c98 EFLAGS: 00000246 ORIG_RAX: 0000000000000001 RAX: ffffffffffffffda RBX: 00007fcc17564ca0 RCX: 000000000045a059 RDX: 0000000000000030 RSI: 00000000200003c0 RDI: 0000000000000005 RBP: 0000000000000007 R08: 0000000000000002 R09: 0000000000003131 R10: 0000000000000000 R11: 0000000000000246 R12: 00000000006e636c R13: 0000000000000000 R14: 00000000006e6360 R15: 00007ffdcbdaf6a0 Dumping ftrace buffer: (ftrace buffer empty) Kernel Offset: disabled Rebooting in 1 seconds.. Fixes: f90edfd279f3 ("net/mlx5_core: Connect flow tables") Reviewed-by: Maor Gottlieb Reviewed-by: Mark Bloch Signed-off-by: Leon Romanovsky Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c index a108148148568..7e70a8178a462 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c @@ -846,18 +846,15 @@ static int connect_fts_in_prio(struct mlx5_core_dev *dev, { struct mlx5_flow_root_namespace *root = find_root(&prio->node); struct mlx5_flow_table *iter; - int i = 0; int err; fs_for_each_ft(iter, prio) { - i++; err = root->cmds->modify_flow_table(root, iter, ft); if (err) { - mlx5_core_warn(dev, "Failed to modify flow table %d\n", - iter->id); + mlx5_core_err(dev, + "Failed to modify flow table id %d, type %d, err %d\n", + iter->id, iter->type, err); /* The driver is out of sync with the FW */ - if (i > 1) - WARN_ON(true); return err; } }