From patchwork Fri Jul 10 03:44:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326434 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=j/HPuxHD; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zX20p2Vz9sRK for ; Fri, 10 Jul 2020 13:47:46 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726913AbgGJDrp (ORCPT ); Thu, 9 Jul 2020 23:47:45 -0400 Received: from mail-eopbgr80087.outbound.protection.outlook.com ([40.107.8.87]:9749 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726787AbgGJDrn (ORCPT ); Thu, 9 Jul 2020 23:47:43 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=W6F6CZaCo247VCOgE50Ng9tjtz8XZBVzMwEbtRMeOyQsPTLmqMNr//2RfS4mjYSt8hk1jmbP6l2mRSx0jIU4iUnY8bzgXuCOjdQNOrt5RfSX8/kfrkHpjuJOcaWYAxURft/ZeZgJOWmtbsp0c/GRteQlWGq24USw58VErxyF7bhftldKnLUBWz0OmhR4jcDLzrg0AYvC1BvK9S0LZy/L6qtsCNiUWkSXMuM7E9xYJ+cQV3SUadSN1TCWefAk5D29xcsSOaHtFK0poATo5tDewMFR5VzHMXdejo0h12PJLosBakPhL2dEAvCqv7YuqIz9P20tAbGy3qq9FD0/JVVdfw== 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=tULu9cUcktVEzG1PUZOdzDsbCH1EAzy04oKvszmOI/M=; b=gj/LKZXz3qJiz00CUv732b82Ebm1Dl6QFpkpcICNukG0LqMYCGkRC/WAUSyY2O9qqxyQTn2zvxJ6/vrbYiZ4Vxe9+FEGi6zqIltggP0x9jAuypnUcSFLnaZJuIqk467DM/uHVzL1GktnKo3dW5ODJ2dIOR6mk6HX8XU/8WNg5eWR42mXxU0Of9Vta8cWtx3MQ0ACw2T0nlm28VdPOeisxXa9m/GMOjRvpbOYXd+3KLfMJdtn33l2z+Q4AaRdU22LVBno7goUbXM5dZYPE1BcGB/rOSSkjg4ZlAxiw5kksyu3EEXFyQ/YxJeSJAHx8sKM5DGi5ZDQMjJUxGy9SP1wkw== 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=tULu9cUcktVEzG1PUZOdzDsbCH1EAzy04oKvszmOI/M=; b=j/HPuxHDJPYey9R62hAnAR9mb2YjZ7E+Ujp/6DE0fEuCXEVhaXQscCKUFd5inVjE3wr9w7pWo1ws1JqwdP+4ZeLAUjbjUlyEUnm6amcVjUZAYqMxFiwgRfWa5BGaogcHYR85PInC36DBXUYQF2isMPwl9fIw9HPwqah/7czZm4s= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:40 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:40 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Parav Pandit , Roi Dayan , Saeed Mahameed Subject: [net-next 01/13] net/mlx5: E-switch, When eswitch is unsupported, return -EOPNOTSUPP Date: Thu, 9 Jul 2020 20:44:20 -0700 Message-Id: <20200710034432.112602-2-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:37 +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: 90463443-34bd-4f80-f3d1-08d82483fddf X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1751; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ZXKaAxSRjJCUuzMTJUIS0wtCayUjDx08QmV7rDc8SFwA2IdwtAF8mDYYAbm2V7EQZ3SW3y/VfYVEuc5eh1PAN997K9QrjJh8aJ8+CDGRin0HfxTwQhdgPH4PYvfZGoxzaRCGEvihG01kmmK1b+LnCGdDz610sNcbAZVnMmtOJSOfTXb59okpKL2UAdXHAVdt9iROIR6rFelTXYgcp43NVthrL21IPOs2PZnjcEnwJextVYn4tzbuuyTBhZxlzSNqi1Jxaq3AvKVmtKQRFFMHBzIyFTKIAPGzT09TQ2OBCfHgjPEpUHTDzA4srl6SqXryDhLeT1zXXihGNfoVyXg5uj7aJjeKZWu7SbQUbscr9KtoflTnxcMliCUzbi0Uooyy 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: EhFbF07ifZp2aM2ySrNG8VkoNZqtmsf2J+dSw4COQ2GedHgvZh317xdt/aRkGNELWo9ZJphuEQeEVrpRd8w+IsG44g1ZLBMCyk7Tg8fc5vKlNU49c0Y07LTMgLPIo+6Ohnn3W5R0Pd9V0GJeVPY1k1n+F7Trw0A0kLOmbboFWHxw6utOF1ApIzKpo6I43CfF6dZIOW2Ej3TFjvwF2Zx5/apnHruXHOvN+7RNbV2/diU8muQfZqWxsBvyc+uasRk9RUpWnSoolqDGmQhmLcTwBDpR1DEJKIgLYlPCIqydj+QZhlwqwLhDAKvX53At48hif17Vqi2KlM0E5xhymjouchXdG4F+F1ODw0cZqNODTKn6jcwIIp025Xfgl8ajQaBusw2IxHTL7e2ft0Rn0BiPUxTrL0Qwwno2lXWZ41k3BrfV4rw+8vWZVbEaGnmMXJ3m/OXcQYJHDjbHn8f1e6AEfMLoqB1pUSdcxLKn5rSK0s0= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90463443-34bd-4f80-f3d1-08d82483fddf X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:40.4926 (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: tcO2RZXxmcpmhdeRJggUxWpss/qDTXqcr/XS3x8ViJ0BKeFgYXJnfucCdzJ6ALrlTUDIX16nnLPXSGcBa//YpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Parav Pandit When eswitch is unsupported, currently -EPERM error code is returned instead of -EOPNOTSUPP. Due to this VF device's devlink virtual port is not enumerated because port_function_get() callback returned -EPERM instead of -EOPNOTSUPP. Hence, return the error code -EOPNOTSUPP when eswitch is unsupported. Fixes: bd93975353d5 ("net/mlx5: E-switch, Introduce and use eswitch support check helper") Signed-off-by: Parav Pandit Reviewed-by: Roi Dayan Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c index c656c9f081c1..d70543ea57dd 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c @@ -69,7 +69,7 @@ static int mlx5_eswitch_check(const struct mlx5_core_dev *dev) return -EOPNOTSUPP; if (!MLX5_ESWITCH_MANAGER(dev)) - return -EPERM; + return -EOPNOTSUPP; return 0; } From patchwork Fri Jul 10 03:44:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326435 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=SsWzlRXM; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zX70rDHz9sRK for ; Fri, 10 Jul 2020 13:47:51 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726934AbgGJDru (ORCPT ); Thu, 9 Jul 2020 23:47:50 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726890AbgGJDrt (ORCPT ); Thu, 9 Jul 2020 23:47:49 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=c8k4ohv2V38hak911bGy6fRDozYE2KJUjOazhX5PbHsDi+afc6F0HMN+7i1wi0utddQXDnVvA2LZj9lMMsJrG5D+miwXOGm4OuaGCjsvTs80q8ZsqQ53eVxZLGBX4iTQmUfAGvP4CO4QKeeQA9ZU7363aovlgKBilhHQ2Jz8+bIVUpW+JeSb8+VLlvX3YeGtBhiWyT4i7ZZifs0N1RsKJns+Wi5eiYsy0S16eUSg67y/OasJDz/4K5zuuSvd4SBsHFoWBtBtZRcvzYoci+a2mVh/Bz+WDlo9/wVoHRhE796EInY1sZZbM5mmLXC+MHXerhyNpGNCD/MjA+1mKPNQeA== 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=FpcRsWfldJltRItT4jSs7pqWlvhR7OOpw04j7v2ZPT0=; b=Hi02sQrL8RCFIXv52bKVUNQOxLam6q3UwAJAamR0C8J66Iuy2XBX5SVwvLZniXFVGVmM3y19M86hEFak1YVJ8YOl3xkGNbxRd1hccZKj4qTWdSn4u6KmrHC/hs4B87v5Dt7cpW+XDbXEfQqKkEEBbF5gI+qZQnpbAa2Z8n5OGesIx/LDPTLX5E8cci7OufvkoVGqvPM8geRSNg7rfOl1Fmi3nlPkwVM+UVvATRQvo2LwEOFx14d4jAroXlNWiqiw+uBY4KfZwFN62nXu5RCcpyXf3vamdGe6t1dE5ATci7yd+bCZxyIWtT8O230qQ6OTveBs/as33m3vfjAuOa4cFA== 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=FpcRsWfldJltRItT4jSs7pqWlvhR7OOpw04j7v2ZPT0=; b=SsWzlRXMzbVHTDbOJL8cOXnzx/ZGFKIsF9KWu9S9ikOzTmcZmp63u8IGdG+d3fKhEz0yosGKLJtHo1YHtOByhbWsjVbDAMlsfjj/twL6HsQitXxLIFk0JcfAEe0+vcJ1CPUQ+C7smZq2ImlvG/725bpshjE0q1D1gbU9Cb7tz7Y= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:43 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:43 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Oz Shlomo , Saeed Mahameed Subject: [net-next 02/13] net/mlx5e: CT: Save ct entries tuples in hashtables Date: Thu, 9 Jul 2020 20:44:21 -0700 Message-Id: <20200710034432.112602-3-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:41 +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: 5ceaa363-308f-4f3b-4a6f-08d824840049 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1060; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6Uk9VhQOpnVk/lUkqcSx7HsbZrq1qqFNcrG+FkVTjKf3ba95HWkeaGt6VUkD8gSChR1JjFtMyOt7fqEnKpNuUYqEN1F/mNYfO7bp68VhmsA3kwfxTiezhUHTuAFM9nV4F+359mkNTTgpDPOwyA0aqYSTlWpCE/Jqnc53r+fF77h4Mt5S2uEZVg1JQqUGxrpvP5TUco3w9eh8LUpCNhbbKIPMcz3//KbRVpEbQQW55Zb0pawnYhG1I2dG7EfU1wnqZlrr/PCY4XMUClf/P5ghBKihmYOHTBRPSRySjRjzi2sMBrOKXPdlcRmIIazSlSv3fn+tcHokLzm+ObhjCBQFJphlINHjkRG25wu+7VHb88VJPrtmgrkRyGLtmigWMOzy 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 4jP07QUOKP8MGhQPR+csSdV1kRE8nmb1G36/Xx+W2GSC71BJbLp8XR5zP103y+lsPhx+ylwqzbeTS4iHB7YCedUHR9G0HX9xM19Z1+ZEMqng/tqPQNeql81meaeRJc8LwZ2uuIuwapojiJ38LYhvQOfxaK+UmdojXN6rcFCZt3NZOwMi2W9fxJVo0yArvm/ARaLUNa7H4MgnEtZm7yVulBItMDpT4nNVCn5i6e+b0VMwMAYOfRJC/EGV9vHM1iG7UIvq+VHVVYA33UxGBDvLYuvIuMO7zmElbgy5nziVLMCY5+8JadfKmllLK1zAvgkzWbS/uJ0X+LUChot1TXIn48P8cOpy3wzgvdA5UX484mjW4pXqfk2p/8OcFyTfRkuN3zOokwnatVbBE7FQjo2mOmChHACYF8TYXw74jF2p2EhSj4bPjjeb3NZmjSXMpNiICCca1TW9wy0yi1/dRrVaceZN/aicYkiA3ItTCtwVd2c= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ceaa363-308f-4f3b-4a6f-08d824840049 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:43.6838 (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: gtqSurEMOvfLP586Mi5ZLnT4gap++FetLhOdIUKfrsKwOOk50hwzgagKfNwqxt2d4J2bCSNzHQPSdIz7nfhgJw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey Save original tuple and natted tuple in two new hashtables. This is a pre-step for restoring ct state after hw miss by performing a 5-tuple lookup on the hash tables. Signed-off-by: Paul Blakey Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- .../ethernet/mellanox/mlx5/core/en/tc_ct.c | 196 ++++++++++++++++++ 1 file changed, 196 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index c7107da03212..55402b1739ae 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -39,6 +39,8 @@ struct mlx5_tc_ct_priv { struct idr fte_ids; struct xarray tuple_ids; struct rhashtable zone_ht; + struct rhashtable ct_tuples_ht; + struct rhashtable ct_tuples_nat_ht; struct mlx5_flow_table *ct; struct mlx5_flow_table *ct_nat; struct mlx5_flow_table *post_ct; @@ -82,12 +84,38 @@ struct mlx5_ct_ft { struct mlx5_tc_ct_pre pre_ct_nat; }; +struct mlx5_ct_tuple { + u16 addr_type; + __be16 n_proto; + u8 ip_proto; + struct { + union { + __be32 src_v4; + struct in6_addr src_v6; + }; + union { + __be32 dst_v4; + struct in6_addr dst_v6; + }; + } ip; + struct { + __be16 src; + __be16 dst; + } port; + + u16 zone; +}; + struct mlx5_ct_entry { u16 zone; struct rhash_head node; + struct rhash_head tuple_node; + struct rhash_head tuple_nat_node; struct mlx5_fc *counter; unsigned long cookie; unsigned long restore_cookie; + struct mlx5_ct_tuple tuple; + struct mlx5_ct_tuple tuple_nat; struct mlx5_ct_zone_rule zone_rules[2]; }; @@ -106,6 +134,22 @@ static const struct rhashtable_params zone_params = { .automatic_shrinking = true, }; +static const struct rhashtable_params tuples_ht_params = { + .head_offset = offsetof(struct mlx5_ct_entry, tuple_node), + .key_offset = offsetof(struct mlx5_ct_entry, tuple), + .key_len = sizeof(((struct mlx5_ct_entry *)0)->tuple), + .automatic_shrinking = true, + .min_size = 16 * 1024, +}; + +static const struct rhashtable_params tuples_nat_ht_params = { + .head_offset = offsetof(struct mlx5_ct_entry, tuple_nat_node), + .key_offset = offsetof(struct mlx5_ct_entry, tuple_nat), + .key_len = sizeof(((struct mlx5_ct_entry *)0)->tuple_nat), + .automatic_shrinking = true, + .min_size = 16 * 1024, +}; + static struct mlx5_tc_ct_priv * mlx5_tc_ct_get_ct_priv(struct mlx5e_priv *priv) { @@ -118,6 +162,115 @@ mlx5_tc_ct_get_ct_priv(struct mlx5e_priv *priv) return uplink_priv->ct_priv; } +static int +mlx5_tc_ct_rule_to_tuple(struct mlx5_ct_tuple *tuple, struct flow_rule *rule) +{ + struct flow_match_control control; + struct flow_match_basic basic; + + flow_rule_match_basic(rule, &basic); + flow_rule_match_control(rule, &control); + + tuple->n_proto = basic.key->n_proto; + tuple->ip_proto = basic.key->ip_proto; + tuple->addr_type = control.key->addr_type; + + if (tuple->addr_type == FLOW_DISSECTOR_KEY_IPV4_ADDRS) { + struct flow_match_ipv4_addrs match; + + flow_rule_match_ipv4_addrs(rule, &match); + tuple->ip.src_v4 = match.key->src; + tuple->ip.dst_v4 = match.key->dst; + } else if (tuple->addr_type == FLOW_DISSECTOR_KEY_IPV6_ADDRS) { + struct flow_match_ipv6_addrs match; + + flow_rule_match_ipv6_addrs(rule, &match); + tuple->ip.src_v6 = match.key->src; + tuple->ip.dst_v6 = match.key->dst; + } else { + return -EOPNOTSUPP; + } + + if (flow_rule_match_key(rule, FLOW_DISSECTOR_KEY_PORTS)) { + struct flow_match_ports match; + + flow_rule_match_ports(rule, &match); + switch (tuple->ip_proto) { + case IPPROTO_TCP: + case IPPROTO_UDP: + tuple->port.src = match.key->src; + tuple->port.dst = match.key->dst; + break; + default: + return -EOPNOTSUPP; + } + } else { + return -EOPNOTSUPP; + } + + return 0; +} + +static int +mlx5_tc_ct_rule_to_tuple_nat(struct mlx5_ct_tuple *tuple, + struct flow_rule *rule) +{ + struct flow_action *flow_action = &rule->action; + struct flow_action_entry *act; + u32 offset, val, ip6_offset; + int i; + + flow_action_for_each(i, act, flow_action) { + if (act->id != FLOW_ACTION_MANGLE) + continue; + + offset = act->mangle.offset; + val = act->mangle.val; + switch (act->mangle.htype) { + case FLOW_ACT_MANGLE_HDR_TYPE_IP4: + if (offset == offsetof(struct iphdr, saddr)) + tuple->ip.src_v4 = cpu_to_be32(val); + else if (offset == offsetof(struct iphdr, daddr)) + tuple->ip.dst_v4 = cpu_to_be32(val); + else + return -EOPNOTSUPP; + break; + + case FLOW_ACT_MANGLE_HDR_TYPE_IP6: + ip6_offset = (offset - offsetof(struct ipv6hdr, saddr)); + ip6_offset /= 4; + if (ip6_offset < 8) + tuple->ip.src_v6.s6_addr32[ip6_offset] = cpu_to_be32(val); + else + return -EOPNOTSUPP; + break; + + case FLOW_ACT_MANGLE_HDR_TYPE_TCP: + if (offset == offsetof(struct tcphdr, source)) + tuple->port.src = cpu_to_be16(val); + else if (offset == offsetof(struct tcphdr, dest)) + tuple->port.dst = cpu_to_be16(val); + else + return -EOPNOTSUPP; + break; + + case FLOW_ACT_MANGLE_HDR_TYPE_UDP: + if (offset == offsetof(struct udphdr, source)) + tuple->port.src = cpu_to_be16(val); + else if (offset == offsetof(struct udphdr, dest)) + tuple->port.dst = cpu_to_be16(val); + else + return -EOPNOTSUPP; + break; + + default: + return -EOPNOTSUPP; + } + } + + return 0; +} + static int mlx5_tc_ct_set_tuple_match(struct mlx5e_priv *priv, struct mlx5_flow_spec *spec, struct flow_rule *rule) @@ -614,9 +767,33 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft, return -ENOMEM; entry->zone = ft->zone; + entry->tuple.zone = ft->zone; entry->cookie = flow->cookie; entry->restore_cookie = meta_action->ct_metadata.cookie; + err = mlx5_tc_ct_rule_to_tuple(&entry->tuple, flow_rule); + if (err) + goto err_set; + + memcpy(&entry->tuple_nat, &entry->tuple, sizeof(entry->tuple)); + err = mlx5_tc_ct_rule_to_tuple_nat(&entry->tuple_nat, flow_rule); + if (err) + goto err_set; + + err = rhashtable_insert_fast(&ct_priv->ct_tuples_ht, + &entry->tuple_node, + tuples_ht_params); + if (err) + goto err_tuple; + + if (memcmp(&entry->tuple, &entry->tuple_nat, sizeof(entry->tuple))) { + err = rhashtable_insert_fast(&ct_priv->ct_tuples_nat_ht, + &entry->tuple_nat_node, + tuples_nat_ht_params); + if (err) + goto err_tuple_nat; + } + err = mlx5_tc_ct_entry_add_rules(ct_priv, flow_rule, entry); if (err) goto err_rules; @@ -631,6 +808,15 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft, err_insert: mlx5_tc_ct_entry_del_rules(ct_priv, entry); err_rules: + rhashtable_remove_fast(&ct_priv->ct_tuples_nat_ht, + &entry->tuple_nat_node, tuples_nat_ht_params); +err_tuple_nat: + if (entry->tuple_node.next) + rhashtable_remove_fast(&ct_priv->ct_tuples_ht, + &entry->tuple_node, + tuples_ht_params); +err_tuple: +err_set: kfree(entry); netdev_warn(ct_priv->netdev, "Failed to offload ct entry, err: %d\n", err); @@ -650,6 +836,12 @@ mlx5_tc_ct_block_flow_offload_del(struct mlx5_ct_ft *ft, return -ENOENT; mlx5_tc_ct_entry_del_rules(ft->ct_priv, entry); + if (entry->tuple_node.next) + rhashtable_remove_fast(&ft->ct_priv->ct_tuples_nat_ht, + &entry->tuple_nat_node, + tuples_nat_ht_params); + rhashtable_remove_fast(&ft->ct_priv->ct_tuples_ht, &entry->tuple_node, + tuples_ht_params); WARN_ON(rhashtable_remove_fast(&ft->ct_entries_ht, &entry->node, cts_ht_params)); @@ -1563,6 +1755,8 @@ mlx5_tc_ct_init(struct mlx5_rep_uplink_priv *uplink_priv) xa_init_flags(&ct_priv->tuple_ids, XA_FLAGS_ALLOC1); mutex_init(&ct_priv->control_lock); rhashtable_init(&ct_priv->zone_ht, &zone_params); + rhashtable_init(&ct_priv->ct_tuples_ht, &tuples_ht_params); + rhashtable_init(&ct_priv->ct_tuples_nat_ht, &tuples_nat_ht_params); /* Done, set ct_priv to know it initializted */ uplink_priv->ct_priv = ct_priv; @@ -1593,6 +1787,8 @@ mlx5_tc_ct_clean(struct mlx5_rep_uplink_priv *uplink_priv) mlx5_esw_chains_destroy_global_table(ct_priv->esw, ct_priv->ct_nat); mlx5_esw_chains_destroy_global_table(ct_priv->esw, ct_priv->ct); + rhashtable_destroy(&ct_priv->ct_tuples_ht); + rhashtable_destroy(&ct_priv->ct_tuples_nat_ht); rhashtable_destroy(&ct_priv->zone_ht); mutex_destroy(&ct_priv->control_lock); xa_destroy(&ct_priv->tuple_ids); From patchwork Fri Jul 10 03:44:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326436 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=g/17zdHr; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zX95yZ9z9sRK for ; Fri, 10 Jul 2020 13:47:53 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726961AbgGJDrw (ORCPT ); Thu, 9 Jul 2020 23:47:52 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726787AbgGJDrv (ORCPT ); Thu, 9 Jul 2020 23:47:51 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=i3AUWbEFqSd4qYJ0GRgHviGajBy6vDmT767Lxe1ydS4PEbNp6gvtIpEf/T5bKR2EUFuRGKI/d0Z6AvjmxrvSNGoMikZOyR9n2EGD6GaGyjW29Sfszj5TmlTi9vb8NCVik3LHnWLHeNi06b5JXmIyRzXLSUKsIAxWmPh++95/h8aGN1bCoAboDhAU8SasljX2l5rLz33zgCyb2JNXmWCPMG18bnsUi428V/mpKuRqw16I17nRxhyIiqfTMsr+mHQcEOY9zT9DFZWuZRek9IzUatSnx4RigocWmN+OQvQ9wpzsCqv/dKTG9QcCGKIfKEYybCcYelUKittI/Wp9DpuqKQ== 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=yfOmNgWVGmIHd/B2IYptMCsj575gDYKQ9mMpoE5Bdt4=; b=iPgEY8jBBtUzcUJYa1O5Ukjy/FuQp9lQ2eQgAt1k2s7DEZUkGsgPyBNUVhKYpZINXdVCnnBbiI3IKS1hWLy3N75GiaWq53HwRtuznRodtN2b6o3QoZjhopSL8Nk8svUNWVbHfuA4eaUXY7bf0404M2uHw2sS+CIY5IqqrD0Va5GjmQKkY/vu2lfJbt4AwJoI1ECJunGtJg+P3Fqg3fOvkHv0wgCp8tHBLYogJF9bx/Fyl8rNcIPjAcefjb3s7k4Iohow9fAQo5yHyp7We9Hj6kIFr2EvlDJVd5QVaYAiRQBSbGYfiHdq277pqs54lKlYEwhKz7v6zcCtGVAU6419Tg== 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=yfOmNgWVGmIHd/B2IYptMCsj575gDYKQ9mMpoE5Bdt4=; b=g/17zdHrFnA9f2AnXiikSHplZVWjw3zs7BdWp+WNs+8S0RYGq0JfRi5YHdQ9PSNHV+kWr1eSeOPdMko4P1As8xf3olJB1h5anAaaH8bbJt/snYnH5/m+0AYXiE1S0qmVOJXZ9CfC45OsJKXBQfRC1Yq1VJVIFDtCIJjEsXtGC7U= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:46 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:46 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Oz Shlomo , Saeed Mahameed Subject: [net-next 03/13] net/mlx5e: CT: Allow header rewrite of 5-tuple and ct clear action Date: Thu, 9 Jul 2020 20:44:22 -0700 Message-Id: <20200710034432.112602-4-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:44 +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: 6a671fc6-dfcf-4e78-c8f8-08d8248401d7 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: B0g8S6euJl2ByG4qjmrKuEU0zuOK27xn834uPVgrZtsLcHWYCghkyq7TnQ2s4jM+A0Ar6ZYRYCxTYX9ipAAhJGDf6MufDolBij1y50ZkpgcsRCmNPIWRRJcJd+NaklfZNVZ2g1WyGL7ptmldo2F6Iwsqxk69bK5mZkbUJlPsZ/bfvVSXZJxTdC7i5YkY4wQBjJRFnmw1veKAm7HT9bB11ZOBUPNgYd9bQU1dEO4pjkEruf+GWoPIO2dxO7Pw8aZ6ZEArFNasB3DndZt8K6XQrd/wpmATSm0q/KvVC+y0Mx26W2xUJuru7udhohyhdzwjRBt+z2JU2nkAPJly/yeSuZtR0yE3eFKEOJpAb6CLdgzXabST3hYgRcagu9Swg0RS 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: Us9c7WSnAC+V724XR9+b+FlRNo7ry1/NS+B+Qkx/OCnbdTOTXjjEzLo70nW6mChWYFTFbKnPNpS8sCAA73r54MYVSIUpaoO9jStJ80N7FRWpxSgL4N6XhbslOYH8NfeVEh8NaIspYD1rxbiPiXbe1DWPYVMACD4d7C00jF/b4YQzQzeCgeQAQq+2T2TimCviutYRldROMvFdSBj42U8IJ7HfkwBsOn+oIwPECWT+5m4Muuj3hnoCUYBsWVmvGQ4CYEuHCOFNZ8Av+ggVLKU98oQOTSBVguemD1vephgolwZbWwQHGOQGH/Bj3z+k3uVBVta3fOPfIQUTkOezqzlFzE7Xz5NepsYNu4JWzTHq7nhUH/AEriSaFMCjYZM80lgT+/35Zt6SiFEieVE0Ko4K2J5x/4umtRulyK78MLbktcoAKZPZwzMpB4Q3pVRqPgvbvmhQKlRhif/xSNW+ai4kwtNV+v23SRgkhwX7HgiUByc= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6a671fc6-dfcf-4e78-c8f8-08d8248401d7 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:46.1565 (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: fUPGbyIZNNxj82CRY9qVjXOAdJ26tdbHgRnX5d8UEFy4JF+Yp7yNKUZVZvz7xAyMEHcMlwItdjOdWPOB0WBZKQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey With ct clear we don't jump to the ct tables, so header rewrite of 5-tuple can be done in place (and not moved to after the CT action). Check for ct clear action, and if so, allow 5-tuple header rewrite. Signed-off-by: Paul Blakey Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index bc9c0ac15f99..5674dbb682de 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -3191,13 +3191,14 @@ static bool actions_match_supported(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow, struct netlink_ext_ack *extack) { - bool ct_flow; + bool ct_flow = false, ct_clear = false; u32 actions; - ct_flow = flow_flag_test(flow, CT); if (mlx5e_is_eswitch_flow(flow)) { actions = flow->esw_attr->action; - + ct_clear = flow->esw_attr->ct_attr.ct_action & + TCA_CT_ACT_CLEAR; + ct_flow = flow_flag_test(flow, CT) && !ct_clear; if (flow->esw_attr->split_count && ct_flow) { /* All registers used by ct are cleared when using * split rules. From patchwork Fri Jul 10 03:44:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326437 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=mXFQ686m; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXD4GDwz9sRN for ; Fri, 10 Jul 2020 13:47:56 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726989AbgGJDrz (ORCPT ); Thu, 9 Jul 2020 23:47:55 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726890AbgGJDry (ORCPT ); Thu, 9 Jul 2020 23:47:54 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LVjYqAaPIwopKOstC82jjk5UI42nus6EY0X1kpoOhQ3oBrkcoY6ohBbNj7AHQsqeZHwSb1aOLbYV4Wy9Vpo2f5BrvSwVuT+KMfBj8rluiFAJCRbTh2w0sUMQfibVOqODsS2fGJ5aPbgLhBPktmahSYwzqEMJLye/ybbhgOD48zkpOLrV2VFJHHPxoakBPLPAx4PgSWugBhLmPNb2mtei/yAxN3axMtb1SHn14uCJ3vvlNbfQLFBLkk6JbXc41gZ2nb3cFUD1j+SYJO6YLwgQ1oKgB3Td01omNZqNWsLxPn9h0yv9/0EGd/fmPTngWMsD2k91cJslNNulmSBhpaeEGA== 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=W8FiiQMJBjeNhdqYLIX5Qo3q1TNCBJYXJtRPPgLWxJY=; b=NovfHiRD7ikI5/RcalVFX9I/XpJ9zxmBx1IF8eF5N6RtY5Uh/XJ/ofJUrDbC9MLVIJwFBoY+yGM3swyiXOYNd2wLzxRE/L4axFYFwRTsw2EC7NUZeTJtNWx6PgcVEsoMde+bThTYlsWzoLv5mA+Gm33GTd1CKJ6bMOoYmTwEKje4lm2YI1al2q4SQ08GK5ecZlOFfrXzIj42GMyV5bJspcU4ckiQ0TrQI0LyeLxvXlBeBbw3quw9t2A0ZaEUJ6kz0mChCk8l/X7GMrNcdcSU3tnLlbDlQsDMA1WphtRkn0lJPRHvHlizo3MJ9duxZ8ILCz7+eYNGs1u7qNudzDkAZw== 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=W8FiiQMJBjeNhdqYLIX5Qo3q1TNCBJYXJtRPPgLWxJY=; b=mXFQ686mzgksmxFNfH1x4B8dKAOZrDHhnKdVh7yq7ZvUegpdPMFvKqkcbILXO2BqW+SrcAihjWKrGp4xPke3hp7eHlYBZyWtLWIrV4Q8uyAR13toIRiP1KwWJBeYWxa+SxETKk4uXRHcSd1PZP1gwsJtLhTggFCulqhWmB2MtJs= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:48 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:48 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Oz Shlomo , Saeed Mahameed Subject: [net-next 04/13] net/mlx5e: Use netdev_info instead of pr_info Date: Thu, 9 Jul 2020 20:44:23 -0700 Message-Id: <20200710034432.112602-5-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:46 +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: ff0a43d5-cca1-4d20-9ce1-08d824840337 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1923; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UzBvT/uWIUai7IPtN1EGBuZq2dI7chNNRh6/v7eJsnxDlvGSKYyPSJZ8ffcO2PUkp5zli+/eIuHZOgUXU6RylkRgsJbCtqh7bRy6179t4bfj2u2+Kr05+6LLEzqLeyasJpIikCp5xeVF4+fNrNEvJ1fRR8ZmXdqK7/foJdduovN+MwXsoXxQPIOhbUgr+jv5GEtpR5DNjUkT3GIB2ZnesUtPAv9InPpNWPYwUvTqevSJoChINPF+O4Bjn4glA0ZkBPjguFKNVVT14L1foA7gy2DLVV3hRBuP+D5dTjNNI8uKAv+OVQBLDc6CRRo1w0iPl+h2YhLKLYDn3e0EGFyXOdsTGmO9LCeHw2vf3NTdI2ZiQXPli+kcLxiGC3pR4wDb 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: EAf5196AqVe81iSB1hKE44dfSQW9aK7QBWpW0eoyw2UdSm/0JAoQuLrslD6yE5QXhWRNIZzhNy4f+PWKQy/dWeQRTKeHVxLh7LtDTSYtZIp5TQAuvf0fGNQRl7b5R6DYaRXWrS0luklm1Hf8Cz9XpykJI2F2VxnZmeQrxoX1PyoZ0F5yztpevDFztNXEw5X7wLcX5OazDGLj5QvcF2EXdvdb67OREi2mj+d6Yv+C2NkL1MuoxOCkMwt9R2Jw2YywjqITiyCpC3vDv3LoB+YCba+FrcfILEYehgRxjivJDikzykRrR47nesopevFN5KCdrNfh2jsR83OL5L/u+GYBzmNl5k+xzMV9cl6Abbzx/5Nkxa+PBvLKot4uk55Zp+vo8WNpl8iLJfIvVWk4G0TR1Vy/XRTVyJVmc8Fg7Kr4ekLKxfJen+OD8VhuiN5eyz/sgpP2Vss0KKfQbfwsK6PMxCp5MAZEK6wJ7vgFLFvM6yc= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff0a43d5-cca1-4d20-9ce1-08d824840337 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:48.3912 (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: BKKhkw/7ADjCcglez/98gYTgs8gZJ6gwL2JaLu8WTx8gsdjKH0dAFcHGz8DNKSeCesWeRq+o5yyWi8PcKAl53Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Oz Shlomo The next patch will pass the mlx5e_priv struct to the modify_header_match_supported method. Use this opportunity to refactor the existing pr_info call to a netdev_info call. Signed-off-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 5674dbb682de..a6cb5d81f08b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -3138,7 +3138,8 @@ static int is_action_keys_supported(const struct flow_action_entry *act, return 0; } -static bool modify_header_match_supported(struct mlx5_flow_spec *spec, +static bool modify_header_match_supported(struct mlx5e_priv *priv, + struct mlx5_flow_spec *spec, struct flow_action *flow_action, u32 actions, bool ct_flow, struct netlink_ext_ack *extack) @@ -3177,7 +3178,8 @@ static bool modify_header_match_supported(struct mlx5_flow_spec *spec, ip_proto != IPPROTO_UDP && ip_proto != IPPROTO_ICMP) { NL_SET_ERR_MSG_MOD(extack, "can't offload re-write of non TCP/UDP"); - pr_info("can't offload re-write of ip proto %d\n", ip_proto); + netdev_info(priv->netdev, "can't offload re-write of ip proto %d\n", + ip_proto); return false; } @@ -3212,7 +3214,7 @@ static bool actions_match_supported(struct mlx5e_priv *priv, } if (actions & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR) - return modify_header_match_supported(&parse_attr->spec, + return modify_header_match_supported(priv, &parse_attr->spec, flow_action, actions, ct_flow, extack); From patchwork Fri Jul 10 03:44:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326438 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=gX3HvEHp; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXJ5w0tz9sRN for ; Fri, 10 Jul 2020 13:48:00 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727028AbgGJDr7 (ORCPT ); Thu, 9 Jul 2020 23:47:59 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726615AbgGJDr7 (ORCPT ); Thu, 9 Jul 2020 23:47:59 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AWls1Yom2EN47fY3aATLlf5quDpNo7ROlja77qokWrnOMZKfiOkbyNZVMJXgc04hGE6r/1vDvKc3A9yR90UUcuYAHpL2QZ+q8NCAXGB7pkUA3vpCvnpEI6u+U8f9g1bjUV/KquUJI4AV4VxfVCGver9+F0nekoxL3G75P3SmqpolHRipABZfG3qRaye3kw/FzYJ4p1cTh+kjbVYi9mPc7UzI7ggrHz11POcewqP0MGXV9tp+uTb5CBIxVQUkstjUD2AtaVdrGv1mJ7FCBwA8rBaVRRyUkqJAVqoVV/CpEv9TA9gLvwh3TakaQTJ+AvGGFZgvoFZIV5yUgpptBp35Fw== 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=JHjAS7Roi/0ZvVRkaSwqIomN4tH9lS4zRjPj8uTcNK4=; b=jS+yIZD467wEqsMUwOM8a3bfIVtLrGYptxR8SuO+3471gvAwIoeh4tNnFzXbSGti66RJPQlGJ6IXZPorLLo+UT7bOYuJ79ko3goaM++JsUYNef5OqlZQoOg6iOIOsjm4nBOBbXthzp4dCDJ8RRltAFramImjZUPk3mfz8+8AzAPItnr4idrobVc3LIDQpEUxa2SeU+VHF10pJBdYDAVUF6Y3uwbn4YJTJxL0eistr2k7MNyvdcNb6q2u2FpeV8lyPHehyt45DMZgLoZDyRxj9v0SMVeFPJNkI3FBOmz4+zQn5Pedi9jJQ0QIQl0jX2BdD3W5PSED7ODFcp2RJj7MbA== 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=JHjAS7Roi/0ZvVRkaSwqIomN4tH9lS4zRjPj8uTcNK4=; b=gX3HvEHp5yXvhutyaPpWt5MDUaKOcFwNqZG4r8bwOpNEFi9rlqOmCHpxZN0tT6VrPPqkOW0eWeMGVjgg/337NblA1jb0YPUOHHlEbAs/17Nx3ZOTOq5ArpIftFNcoRPOlD/UkUEWcV/S3MQrVz85Ikhb+rLpwbd2JWiggCY1CTw= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:51 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:51 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Oz Shlomo , Saeed Mahameed Subject: [net-next 05/13] net/mlx5e: CT: Don't offload tuple rewrites for established tuples Date: Thu, 9 Jul 2020 20:44:24 -0700 Message-Id: <20200710034432.112602-6-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:49 +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: 19170dc5-15d0-4e88-ef4b-08d8248404d0 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3513; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Z9e1twtS2N1bNSkJO54bhx6gpolXQAARaiILiCXzkjbxZzz0TRfXKXqazNrDots9FrkxQOvFzpznXCYhSQRcLuGGWl0gaVaKFi2YGH+7qA2hlvhFLc7AfZyXW3HCSCdNryW1HKJxrN4gx8g6JnMHfVjQe0jVlZbV4EKLr3l3ER1Pz7wvE/mj3y3hBtnv5ni3Rn9ZX7wXIbJi/MGvSc3bzP4sH95eDo9f1cIZf6OseSlldov1hONCarwlzTGpyhfdV/DaHdG38Lr/UcNXkhqu6+Zbj4lMExmHofxlujjqujJI5K6bUOD2660f2l3C1IQoqXkC/Z3GxyW/hMPiRU1re62U8n9vKT25S3ZjY8fdkJtmdE5iLP/KLTIxHH3ZtY6K 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: hucCl59GOICppCeisLTldScEKy4EqRffjD/EWNdPUt7Lo/7f8/VLkhTdIHSZFwwUoNwGNKfljZdKv9e72GJhse8bU9ycdN+d82PZZf/PKNtTW3CpBjRyzUekmh3zaeweOE61KN32JgKbjR5fn//Uz8MzoVujSrxXrUIC7hModuLvWX6eArVqbVk4K45sOJEGU8WPKNF7MZIhp5XNUIY05ZmATrKIkBsy9TNuzdI6niIwVzC7FZNGGD4luSlgmvjeu5vmp5RCE9EaBuaRIbZLvaT+m5hKyROU6gxl1RX7/R+QpzP/3L1dcq9mtsgSKlMrkai1axQTjCYuOd4jNLF3vuqGKoK1tmj0An3/Wem932niOWzcSVjm0NJcLLozxsNr83eYsHMCA6biFRWzksjxhaUX8NkarVkyIXOiTC5UgenG1bQHDrSnEw82eSHQBOK9I6AJRlh4L2fBGyI92dD/c+fW7HZWK8RjIYTYVxGc5/Y= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19170dc5-15d0-4e88-ef4b-08d8248404d0 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:51.0328 (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: PLQzMtbmz4ekrzz2dzIK9aA5rTxYRJKvaUoAQlCFM/bpVxtatbHQJojRZKt8kVDE8ZpGZl2u7y3b24q2HIhVDA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey Next patches will remove the tupleid registers that is used to restore the ct state on miss, and instead use the tuple on the missed packet to lookup which state to restore. Disable tuple rewrites after connection tracking. For tuple rewrites, inject a ct_state=-trk match so it won't change the tuple for established flows (+trk) that passed connection tracking, and instead miss to software. Signed-off-by: Paul Blakey Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- .../ethernet/mellanox/mlx5/core/en/tc_ct.c | 18 +++++ .../ethernet/mellanox/mlx5/core/en/tc_ct.h | 10 +++ .../net/ethernet/mellanox/mlx5/core/en_tc.c | 74 ++++++++++++++++--- .../net/ethernet/mellanox/mlx5/core/en_tc.h | 5 ++ 4 files changed, 95 insertions(+), 12 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 55402b1739ae..08ebce35b2fc 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -894,6 +894,24 @@ mlx5_tc_ct_block_flow_offload(enum tc_setup_type type, void *type_data, return -EOPNOTSUPP; } +int +mlx5_tc_ct_add_no_trk_match(struct mlx5e_priv *priv, + struct mlx5_flow_spec *spec) +{ + u32 ctstate = 0, ctstate_mask = 0; + + mlx5e_tc_match_to_reg_get_match(spec, CTSTATE_TO_REG, + &ctstate, &ctstate_mask); + if (ctstate_mask) + return -EOPNOTSUPP; + + ctstate_mask |= MLX5_CT_STATE_TRK_BIT; + mlx5e_tc_match_to_reg_match(spec, CTSTATE_TO_REG, + ctstate, ctstate_mask); + + return 0; +} + int mlx5_tc_ct_parse_match(struct mlx5e_priv *priv, struct mlx5_flow_spec *spec, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h index 626f6c04882e..94f74cf71ce4 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h @@ -91,6 +91,9 @@ mlx5_tc_ct_parse_match(struct mlx5e_priv *priv, struct flow_cls_offload *f, struct netlink_ext_ack *extack); int +mlx5_tc_ct_add_no_trk_match(struct mlx5e_priv *priv, + struct mlx5_flow_spec *spec); +int mlx5_tc_ct_parse_action(struct mlx5e_priv *priv, struct mlx5_esw_flow_attr *attr, const struct flow_action_entry *act, @@ -140,6 +143,13 @@ mlx5_tc_ct_parse_match(struct mlx5e_priv *priv, return -EOPNOTSUPP; } +static inline int +mlx5_tc_ct_add_no_trk_match(struct mlx5e_priv *priv, + struct mlx5_flow_spec *spec) +{ + return 0; +} + static inline int mlx5_tc_ct_parse_action(struct mlx5e_priv *priv, struct mlx5_esw_flow_attr *attr, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index a6cb5d81f08b..fd984ef234b2 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -219,6 +219,28 @@ mlx5e_tc_match_to_reg_match(struct mlx5_flow_spec *spec, spec->match_criteria_enable |= MLX5_MATCH_MISC_PARAMETERS_2; } +void +mlx5e_tc_match_to_reg_get_match(struct mlx5_flow_spec *spec, + enum mlx5e_tc_attr_to_reg type, + u32 *data, + u32 *mask) +{ + int soffset = mlx5e_tc_attr_to_reg_mappings[type].soffset; + int match_len = mlx5e_tc_attr_to_reg_mappings[type].mlen; + void *headers_c = spec->match_criteria; + void *headers_v = spec->match_value; + void *fmask, *fval; + + fmask = headers_c + soffset; + fval = headers_v + soffset; + + memcpy(mask, fmask, match_len); + memcpy(data, fval, match_len); + + *mask = be32_to_cpu((__force __be32)(*mask << (32 - (match_len * 8)))); + *data = be32_to_cpu((__force __be32)(*data << (32 - (match_len * 8)))); +} + int mlx5e_tc_match_to_reg_set(struct mlx5_core_dev *mdev, struct mlx5e_tc_mod_hdr_acts *mod_hdr_acts, @@ -3086,6 +3108,7 @@ struct ipv6_hoplimit_word { static int is_action_keys_supported(const struct flow_action_entry *act, bool ct_flow, bool *modify_ip_header, + bool *modify_tuple, struct netlink_ext_ack *extack) { u32 mask, offset; @@ -3108,7 +3131,10 @@ static int is_action_keys_supported(const struct flow_action_entry *act, *modify_ip_header = true; } - if (ct_flow && offset >= offsetof(struct iphdr, saddr)) { + if (offset >= offsetof(struct iphdr, saddr)) + *modify_tuple = true; + + if (ct_flow && *modify_tuple) { NL_SET_ERR_MSG_MOD(extack, "can't offload re-write of ipv4 address with action ct"); return -EOPNOTSUPP; @@ -3123,16 +3149,22 @@ static int is_action_keys_supported(const struct flow_action_entry *act, *modify_ip_header = true; } - if (ct_flow && offset >= offsetof(struct ipv6hdr, saddr)) { + if (ct_flow && offset >= offsetof(struct ipv6hdr, saddr)) + *modify_tuple = true; + + if (ct_flow && *modify_tuple) { NL_SET_ERR_MSG_MOD(extack, "can't offload re-write of ipv6 address with action ct"); return -EOPNOTSUPP; } - } else if (ct_flow && (htype == FLOW_ACT_MANGLE_HDR_TYPE_TCP || - htype == FLOW_ACT_MANGLE_HDR_TYPE_UDP)) { - NL_SET_ERR_MSG_MOD(extack, - "can't offload re-write of transport header ports with action ct"); - return -EOPNOTSUPP; + } else if (htype == FLOW_ACT_MANGLE_HDR_TYPE_TCP || + htype == FLOW_ACT_MANGLE_HDR_TYPE_UDP) { + *modify_tuple = true; + if (ct_flow) { + NL_SET_ERR_MSG_MOD(extack, + "can't offload re-write of transport header ports with action ct"); + return -EOPNOTSUPP; + } } return 0; @@ -3142,10 +3174,11 @@ static bool modify_header_match_supported(struct mlx5e_priv *priv, struct mlx5_flow_spec *spec, struct flow_action *flow_action, u32 actions, bool ct_flow, + bool ct_clear, struct netlink_ext_ack *extack) { const struct flow_action_entry *act; - bool modify_ip_header; + bool modify_ip_header, modify_tuple; void *headers_c; void *headers_v; u16 ethertype; @@ -3162,17 +3195,32 @@ static bool modify_header_match_supported(struct mlx5e_priv *priv, goto out_ok; modify_ip_header = false; + modify_tuple = false; flow_action_for_each(i, act, flow_action) { if (act->id != FLOW_ACTION_MANGLE && act->id != FLOW_ACTION_ADD) continue; err = is_action_keys_supported(act, ct_flow, - &modify_ip_header, extack); + &modify_ip_header, + &modify_tuple, extack); if (err) return err; } + /* Add ct_state=-trk match so it will be offloaded for non ct flows + * (or after clear action), as otherwise, since the tuple is changed, + * we can't restore ct state + */ + if (!ct_clear && modify_tuple && + mlx5_tc_ct_add_no_trk_match(priv, spec)) { + NL_SET_ERR_MSG_MOD(extack, + "can't offload tuple modify header with ct matches"); + netdev_info(priv->netdev, + "can't offload tuple modify header with ct matches"); + return false; + } + ip_proto = MLX5_GET(fte_match_set_lyr_2_4, headers_v, ip_protocol); if (modify_ip_header && ip_proto != IPPROTO_TCP && ip_proto != IPPROTO_UDP && ip_proto != IPPROTO_ICMP) { @@ -3216,7 +3264,8 @@ static bool actions_match_supported(struct mlx5e_priv *priv, if (actions & MLX5_FLOW_CONTEXT_ACTION_MOD_HDR) return modify_header_match_supported(priv, &parse_attr->spec, flow_action, actions, - ct_flow, extack); + ct_flow, ct_clear, + extack); return true; } @@ -4483,11 +4532,12 @@ __mlx5e_add_fdb_flow(struct mlx5e_priv *priv, if (err) goto err_free; - err = parse_tc_fdb_actions(priv, &rule->action, flow, extack, filter_dev); + /* actions validation depends on parsing the ct matches first */ + err = mlx5_tc_ct_parse_match(priv, &parse_attr->spec, f, extack); if (err) goto err_free; - err = mlx5_tc_ct_parse_match(priv, &parse_attr->spec, f, extack); + err = parse_tc_fdb_actions(priv, &rule->action, flow, extack, filter_dev); if (err) goto err_free; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h index 1561eaa89ffd..68d49b945184 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h @@ -164,6 +164,11 @@ void mlx5e_tc_match_to_reg_match(struct mlx5_flow_spec *spec, u32 data, u32 mask); +void mlx5e_tc_match_to_reg_get_match(struct mlx5_flow_spec *spec, + enum mlx5e_tc_attr_to_reg type, + u32 *data, + u32 *mask); + int alloc_mod_hdr_actions(struct mlx5_core_dev *mdev, int namespace, struct mlx5e_tc_mod_hdr_acts *mod_hdr_acts); From patchwork Fri Jul 10 03:44:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326439 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=T39HI79H; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXN6QM8z9sRN for ; Fri, 10 Jul 2020 13:48:04 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727062AbgGJDsE (ORCPT ); Thu, 9 Jul 2020 23:48:04 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726996AbgGJDsD (ORCPT ); Thu, 9 Jul 2020 23:48:03 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PbcohYsTB6e9/YFL6Ofl9TtV259UJGVg/xT1MStrXB2G8vgw54vbAsh+h5NevTm3bt4OVQWv9y+TNicWfqWoF315ofSm344PyGcYVW7+iZKloLy9T9EJUpuvY5sOKdEwdRVuVE8pDX4uERkcagvZAGb0+N/f4mmonH5r72FtgHQEzAbAkr8d5IaD6xF/LNLe2Mr/k2U/evVm7dVbmNhqYXP1eyzFJFeYjs6h+VjaD4sz4aqvEs1RpI491oICXSoeHk1JiBfHkdfFUZz8FPsnn5969aKVTc3Vv3pvC49Y4z8RAcnnR1XhrAXxxg4ci2nG+F5ZHlE++qbW6me9s9oiYQ== 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=QhxZicwLG6K4wJ2AoCyK/8gvLQcri9hhNERn0fa3zyI=; b=QM/HIDM+DGBZNwtBWWIUVKK37Ak03MieJIWOZKJFlmZrv1krxsXLiZ7qeDDIplU8Q0IUMIcfzj182PSzzBfENAwurdaFi78REVSP+2+3iYIeNZ4vmtt9hGpmKWaXRkVInqylAyRo989hz0cT2qPzzUz+wopU/YBrTrJKUOPYaMxYYG/Ae+fP2U3wx3XtDQU5+AFDZ95lF03DXH1Ekf8K/p9KGW5rWLb7bgRNHhD+05H9ppbl7zA7wYw19PpNbJuRi6W5RjDxhHSve89CFgPtpj6xfOQA5Wk/4N0pw7Kw5bx5sP3ao/E00PNDfwAAC/pZys4VDsMJAhv8XGNnNRSrEQ== 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=QhxZicwLG6K4wJ2AoCyK/8gvLQcri9hhNERn0fa3zyI=; b=T39HI79HRqZN7A5jKkSklkxDs6dZZra0PcxFxWhXVzeOmyHgeUiR3/4wvXzLjiBro89GXt3L7JcCfFEwQOq0YW+uBl2t35TbNj0fYN9OuPT8rywe3QNZiZKgyyu4yOd7nLMSzFFNZrp62+NVGAL5xA3D6/jXTiaAs73GHekU29U= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:53 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:53 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Oz Shlomo , Saeed Mahameed Subject: [net-next 06/13] net/mlx5e: CT: Restore ct state from lookup in zone instead of tupleid Date: Thu, 9 Jul 2020 20:44:25 -0700 Message-Id: <20200710034432.112602-7-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:51 +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: 2428c223-4b98-4686-1fcc-08d824840619 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:451; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: agyqiwlrE1syxxVCEMs2BUu8V1RUYqayRTvhyunhHzSO3XbizPbCS3hc+UB6KIl8Re5+3FwNzk89aV3mDjcmugca7vyu08lkVix03Qzw+TCpEX9EnKgv+fNBn7iecm/sCDmwfItJ55L93+Xeq/2Y3BsfHvw/QFXGN2BCNsyztcPxse3q7lCDIR2e8BTLZej1K/XP9QOF7KTpmfdf/l9LT2YTGyeZQkz4Km5oWuzsW5YXh6X5keHM2/0czCCk5P80eM9CPQR/ZNu2dIL0o1mSCYZmecpD2COXOwCIs+pY+ireJzmkqsfSXNnljyiA50UOxLswgpIbeAz/Lknuk8eN/+ykzRAcsoO9lliCO3ycdum9mHVhcGH6AjsRvSkec55m 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(30864003)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: szb1CCTeOumjTO/0LOSzfsy8D+cVhPcO32CiUDpGZzXEKQQ1o0ilhQCc2XiJtVKb27hrnPl5MEoJdmBpQptIQUmqTPakdXT66OnhyG4eMTBBJxbsZZUodnjRoxAOVVAFzuDvk1CFmR3sTAk2qLKZ6ovFnahtevZk48lTjAZjWKFYv9kCFmi+yMdbRkYjI8yk7KxcqMFzWS/aAOv+2sXeZnoXe0csnRn++ZjBBMhxvFiuwO52VW7hu984GMhEKqkzYIkZH1Dic1ioDoJqXm7bcZVvt/th7cNiS416+vKtbL8/Xc/75FbhdUbMvjCBdtALoenXo25pWESerpEcFzrTgm6RFX4+gLA4NkFrkndQfMihaqmiAd4cvvi9t6tSX9nbqH1y+I3WIy0EKDx/gtUF9H5Z86rXxbk4d8Ak4uz9z55jxXl5WesHJVp8RratyYUrkuKCTos3FrJKxP6M8FCpfYA6VOT8N5EVMdyWXh92ZMs= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2428c223-4b98-4686-1fcc-08d824840619 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:53.1696 (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: ra1hhtD8092dXPdHvUlmJ5FdKJKJgJRvJmS9oWuy3rpySloGsS2MV1pI7leKBQ7QrYLV7ah93/EnXF+SbmZrgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey Remove tupleid, and replace it with zone_restore, which is the zone an established tuple sets after match. On miss, Use this zone + tuple taken from the skb, to lookup the ct entry and restore it. This improves flow insertion rate by avoiding the allocation of a header rewrite context. Signed-off-by: Paul Blakey Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- .../ethernet/mellanox/mlx5/core/en/rep/tc.c | 6 +- .../ethernet/mellanox/mlx5/core/en/tc_ct.c | 113 ++++++++++++------ .../ethernet/mellanox/mlx5/core/en/tc_ct.h | 17 +-- .../net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +- .../net/ethernet/mellanox/mlx5/core/en_tc.h | 2 +- 5 files changed, 90 insertions(+), 50 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c index eefeb1cdc2ee..e27963b80c11 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c @@ -594,7 +594,7 @@ bool mlx5e_rep_tc_update_skb(struct mlx5_cqe64 *cqe, struct mlx5e_tc_update_priv *tc_priv) { #if IS_ENABLED(CONFIG_NET_TC_SKB_EXT) - u32 chain = 0, reg_c0, reg_c1, tunnel_id, tuple_id; + u32 chain = 0, reg_c0, reg_c1, tunnel_id, zone; struct mlx5_rep_uplink_priv *uplink_priv; struct mlx5e_rep_priv *uplink_rpriv; struct tc_skb_ext *tc_skb_ext; @@ -631,11 +631,11 @@ bool mlx5e_rep_tc_update_skb(struct mlx5_cqe64 *cqe, tc_skb_ext->chain = chain; - tuple_id = reg_c1 & TUPLE_ID_MAX; + zone = reg_c1 & ZONE_RESTORE_MAX; uplink_rpriv = mlx5_eswitch_get_uplink_priv(esw, REP_ETH); uplink_priv = &uplink_rpriv->uplink_priv; - if (!mlx5e_tc_ct_restore_flow(uplink_priv, skb, tuple_id)) + if (!mlx5e_tc_ct_restore_flow(uplink_priv, skb, zone)) return false; } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 08ebce35b2fc..c6e92f818ecf 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -60,7 +60,6 @@ struct mlx5_ct_flow { struct mlx5_ct_zone_rule { struct mlx5_flow_handle *rule; struct mlx5_esw_flow_attr attr; - int tupleid; bool nat; }; @@ -107,7 +106,6 @@ struct mlx5_ct_tuple { }; struct mlx5_ct_entry { - u16 zone; struct rhash_head node; struct rhash_head tuple_node; struct rhash_head tuple_nat_node; @@ -396,11 +394,10 @@ mlx5_tc_ct_entry_del_rule(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_esw_flow_attr *attr = &zone_rule->attr; struct mlx5_eswitch *esw = ct_priv->esw; - ct_dbg("Deleting ct entry rule in zone %d", entry->zone); + ct_dbg("Deleting ct entry rule in zone %d", entry->tuple.zone); mlx5_eswitch_del_offloaded_rule(esw, zone_rule->rule, attr); mlx5_modify_header_dealloc(esw->dev, attr->modify_hdr); - xa_erase(&ct_priv->tuple_ids, zone_rule->tupleid); } static void @@ -434,7 +431,7 @@ mlx5_tc_ct_entry_set_registers(struct mlx5_tc_ct_priv *ct_priv, u8 ct_state, u32 mark, u32 label, - u32 tupleid) + u16 zone) { struct mlx5_eswitch *esw = ct_priv->esw; int err; @@ -455,7 +452,7 @@ mlx5_tc_ct_entry_set_registers(struct mlx5_tc_ct_priv *ct_priv, return err; err = mlx5e_tc_match_to_reg_set(esw->dev, mod_acts, - TUPLEID_TO_REG, tupleid); + ZONE_RESTORE_TO_REG, zone + 1); if (err) return err; @@ -582,8 +579,7 @@ static int mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_esw_flow_attr *attr, struct flow_rule *flow_rule, - u32 tupleid, - bool nat) + u16 zone, bool nat) { struct mlx5e_tc_mod_hdr_acts mod_acts = {}; struct mlx5_eswitch *esw = ct_priv->esw; @@ -617,7 +613,7 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv, ct_state, meta->ct_metadata.mark, meta->ct_metadata.labels[0], - tupleid); + zone); if (err) goto err_mapping; @@ -648,7 +644,6 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_esw_flow_attr *attr = &zone_rule->attr; struct mlx5_eswitch *esw = ct_priv->esw; struct mlx5_flow_spec *spec = NULL; - u32 tupleid; int err; zone_rule->nat = nat; @@ -657,18 +652,8 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, if (!spec) return -ENOMEM; - /* Get tuple unique id */ - err = xa_alloc(&ct_priv->tuple_ids, &tupleid, zone_rule, - XA_LIMIT(1, TUPLE_ID_MAX), GFP_KERNEL); - if (err) { - netdev_warn(ct_priv->netdev, - "Failed to allocate tuple id, err: %d\n", err); - goto err_xa_alloc; - } - zone_rule->tupleid = tupleid; - err = mlx5_tc_ct_entry_create_mod_hdr(ct_priv, attr, flow_rule, - tupleid, nat); + entry->tuple.zone, nat); if (err) { ct_dbg("Failed to create ct entry mod hdr"); goto err_mod_hdr; @@ -686,7 +671,7 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, mlx5_tc_ct_set_tuple_match(netdev_priv(ct_priv->netdev), spec, flow_rule); mlx5e_tc_match_to_reg_match(spec, ZONE_TO_REG, - entry->zone & MLX5_CT_ZONE_MASK, + entry->tuple.zone & MLX5_CT_ZONE_MASK, MLX5_CT_ZONE_MASK); zone_rule->rule = mlx5_eswitch_add_offloaded_rule(esw, spec, attr); @@ -697,15 +682,13 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, } kfree(spec); - ct_dbg("Offloaded ct entry rule in zone %d", entry->zone); + ct_dbg("Offloaded ct entry rule in zone %d", entry->tuple.zone); return 0; err_rule: mlx5_modify_header_dealloc(esw->dev, attr->modify_hdr); err_mod_hdr: - xa_erase(&ct_priv->tuple_ids, zone_rule->tupleid); -err_xa_alloc: kfree(spec); return err; } @@ -766,7 +749,6 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft, if (!entry) return -ENOMEM; - entry->zone = ft->zone; entry->tuple.zone = ft->zone; entry->cookie = flow->cookie; entry->restore_cookie = meta_action->ct_metadata.cookie; @@ -894,6 +876,48 @@ mlx5_tc_ct_block_flow_offload(enum tc_setup_type type, void *type_data, return -EOPNOTSUPP; } +static bool +mlx5_tc_ct_skb_to_tuple(struct sk_buff *skb, struct mlx5_ct_tuple *tuple, + u16 zone) +{ + struct flow_keys flow_keys; + + skb_reset_network_header(skb); + skb_flow_dissect_flow_keys(skb, &flow_keys, 0); + + tuple->zone = zone; + + if (flow_keys.basic.ip_proto != IPPROTO_TCP && + flow_keys.basic.ip_proto != IPPROTO_UDP) + return false; + + tuple->port.src = flow_keys.ports.src; + tuple->port.dst = flow_keys.ports.dst; + tuple->n_proto = flow_keys.basic.n_proto; + tuple->ip_proto = flow_keys.basic.ip_proto; + + switch (flow_keys.basic.n_proto) { + case htons(ETH_P_IP): + tuple->addr_type = FLOW_DISSECTOR_KEY_IPV4_ADDRS; + tuple->ip.src_v4 = flow_keys.addrs.v4addrs.src; + tuple->ip.dst_v4 = flow_keys.addrs.v4addrs.dst; + break; + + case htons(ETH_P_IPV6): + tuple->addr_type = FLOW_DISSECTOR_KEY_IPV6_ADDRS; + tuple->ip.src_v6 = flow_keys.addrs.v6addrs.src; + tuple->ip.dst_v6 = flow_keys.addrs.v6addrs.dst; + break; + default: + goto out; + } + + return true; + +out: + return false; +} + int mlx5_tc_ct_add_no_trk_match(struct mlx5e_priv *priv, struct mlx5_flow_spec *spec) @@ -978,7 +1002,7 @@ mlx5_tc_ct_parse_match(struct mlx5e_priv *priv, } if (mask->ct_zone) - mlx5e_tc_match_to_reg_match(spec, ZONE_TO_REG, + mlx5e_tc_match_to_reg_match(spec, ZONE_RESTORE_TO_REG, key->ct_zone, MLX5_CT_ZONE_MASK); if (ctstate_mask) mlx5e_tc_match_to_reg_match(spec, CTSTATE_TO_REG, @@ -1008,6 +1032,18 @@ mlx5_tc_ct_parse_action(struct mlx5e_priv *priv, return -EOPNOTSUPP; } + /* To mark that the need restore ct state on a skb, we mark the + * packet with the zone restore register. To distinguise from an + * uninitalized 0 value for this register, we write zone + 1 on the + * packet. + * + * This restricts us to a max zone of 0xFFFE. + */ + if (act->ct.zone == (u16)~0) { + NL_SET_ERR_MSG_MOD(extack, "Unsupported ct zone"); + return -EOPNOTSUPP; + } + attr->ct_attr.zone = act->ct.zone; attr->ct_attr.ct_action = act->ct.action; attr->ct_attr.nf_ft = act->ct.flow_table; @@ -1349,6 +1385,7 @@ mlx5_tc_ct_del_ft_cb(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_ct_ft *ft) * | set mark * | set label * | set established + * | set zone_restore * | do nat (if needed) * v * +--------------+ @@ -1770,7 +1807,6 @@ mlx5_tc_ct_init(struct mlx5_rep_uplink_priv *uplink_priv) } idr_init(&ct_priv->fte_ids); - xa_init_flags(&ct_priv->tuple_ids, XA_FLAGS_ALLOC1); mutex_init(&ct_priv->control_lock); rhashtable_init(&ct_priv->zone_ht, &zone_params); rhashtable_init(&ct_priv->ct_tuples_ht, &tuples_ht_params); @@ -1809,7 +1845,6 @@ mlx5_tc_ct_clean(struct mlx5_rep_uplink_priv *uplink_priv) rhashtable_destroy(&ct_priv->ct_tuples_nat_ht); rhashtable_destroy(&ct_priv->zone_ht); mutex_destroy(&ct_priv->control_lock); - xa_destroy(&ct_priv->tuple_ids); idr_destroy(&ct_priv->fte_ids); kfree(ct_priv); @@ -1818,22 +1853,26 @@ mlx5_tc_ct_clean(struct mlx5_rep_uplink_priv *uplink_priv) bool mlx5e_tc_ct_restore_flow(struct mlx5_rep_uplink_priv *uplink_priv, - struct sk_buff *skb, u32 tupleid) + struct sk_buff *skb, u16 zone) { struct mlx5_tc_ct_priv *ct_priv = uplink_priv->ct_priv; - struct mlx5_ct_zone_rule *zone_rule; + struct mlx5_ct_tuple tuple = {}; struct mlx5_ct_entry *entry; - if (!ct_priv || !tupleid) + if (!ct_priv || !zone) return true; - zone_rule = xa_load(&ct_priv->tuple_ids, tupleid); - if (!zone_rule) + if (!mlx5_tc_ct_skb_to_tuple(skb, &tuple, zone - 1)) return false; - entry = container_of(zone_rule, struct mlx5_ct_entry, - zone_rules[zone_rule->nat]); - tcf_ct_flow_table_restore_skb(skb, entry->restore_cookie); + entry = rhashtable_lookup_fast(&ct_priv->ct_tuples_ht, &tuple, + tuples_ht_params); + if (!entry) + entry = rhashtable_lookup_fast(&ct_priv->ct_tuples_nat_ht, + &tuple, tuples_nat_ht_params); + if (!entry) + return false; + tcf_ct_flow_table_restore_skb(skb, entry->restore_cookie); return true; } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h index 94f74cf71ce4..b5e07bff843b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h @@ -67,16 +67,17 @@ struct mlx5_ct_attr { misc_parameters_2.metadata_reg_c_5),\ } -#define tupleid_to_reg_ct {\ +#define zone_restore_to_reg_ct {\ .mfield = MLX5_ACTION_IN_FIELD_METADATA_REG_C_1,\ .moffset = 0,\ - .mlen = 3,\ + .mlen = 2,\ .soffset = MLX5_BYTE_OFF(fte_match_param,\ misc_parameters_2.metadata_reg_c_1),\ } -#define TUPLE_ID_BITS (mlx5e_tc_attr_to_reg_mappings[TUPLEID_TO_REG].mlen * 8) -#define TUPLE_ID_MAX GENMASK(TUPLE_ID_BITS - 1, 0) +#define REG_MAPPING_MLEN(reg) (mlx5e_tc_attr_to_reg_mappings[reg].mlen) +#define ZONE_RESTORE_BITS (REG_MAPPING_MLEN(ZONE_RESTORE_TO_REG) * 8) +#define ZONE_RESTORE_MAX GENMASK(ZONE_RESTORE_BITS - 1, 0) #if IS_ENABLED(CONFIG_MLX5_TC_CT) @@ -112,7 +113,7 @@ mlx5_tc_ct_delete_flow(struct mlx5e_priv *priv, bool mlx5e_tc_ct_restore_flow(struct mlx5_rep_uplink_priv *uplink_priv, - struct sk_buff *skb, u32 tupleid); + struct sk_buff *skb, u16 zone); #else /* CONFIG_MLX5_TC_CT */ @@ -180,10 +181,10 @@ mlx5_tc_ct_delete_flow(struct mlx5e_priv *priv, static inline bool mlx5e_tc_ct_restore_flow(struct mlx5_rep_uplink_priv *uplink_priv, - struct sk_buff *skb, u32 tupleid) + struct sk_buff *skb, u16 zone) { - if (!tupleid) - return true; + if (!zone) + return true; return false; } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index fd984ef234b2..090069e936b7 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -186,11 +186,11 @@ struct mlx5e_tc_attr_to_reg_mapping mlx5e_tc_attr_to_reg_mappings[] = { misc_parameters_2.metadata_reg_c_1), }, [ZONE_TO_REG] = zone_to_reg_ct, + [ZONE_RESTORE_TO_REG] = zone_restore_to_reg_ct, [CTSTATE_TO_REG] = ctstate_to_reg_ct, [MARK_TO_REG] = mark_to_reg_ct, [LABELS_TO_REG] = labels_to_reg_ct, [FTEID_TO_REG] = fteid_to_reg_ct, - [TUPLEID_TO_REG] = tupleid_to_reg_ct, }; static void mlx5e_put_flow_tunnel_id(struct mlx5e_tc_flow *flow); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h index 68d49b945184..856e034b92f3 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h @@ -129,10 +129,10 @@ enum mlx5e_tc_attr_to_reg { TUNNEL_TO_REG, CTSTATE_TO_REG, ZONE_TO_REG, + ZONE_RESTORE_TO_REG, MARK_TO_REG, LABELS_TO_REG, FTEID_TO_REG, - TUPLEID_TO_REG, }; struct mlx5e_tc_attr_to_reg_mapping { From patchwork Fri Jul 10 03:44:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326446 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=m27E6KyA; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXw4nzcz9sRR for ; Fri, 10 Jul 2020 13:48:32 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727795AbgGJDsV (ORCPT ); Thu, 9 Jul 2020 23:48:21 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726615AbgGJDsN (ORCPT ); Thu, 9 Jul 2020 23:48:13 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=EeASkdQ/Xcir4JK7SPKdp0g6QQZLwNTHSM7dINSo1W79yvkFoPnlyeXSSlq2O/s9xD+DG0HUHshflBNXotUoIET9Y0n+vduW90z21vS+ZNEbsNanR/yzi4BCp7yiDyEaBaS/4EPrl/tPRDMCrsWHLU626a64gk2CUnCs5I2uKE507Tx3y4rI7Z0WkKqYtXpDMTOtgF5/SlfCoNZtbnyMw/N+y9NBDvFvAL/3ZKT1FwaMUkiR5Gplgzn1Ye9CkdwbnOJitkQDCQMRZ4B4SaWYed2q9mHSKnRQY+ngbWxyeLB0UzAtP1Jyyeih48htTtkQmhu9+p5Qe2cQv3KutI6HtA== 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=yrY9IKI8emBi6/hDvJG5mqgcx79AelsM7stczJqpY+M=; b=BLg3SK+jihNAYj4XdM2KsT8IFQmcBF3a1RASTLCXqnUVHuu3lvjvXHrPp7i0HUBhACzBIXVQlxaoY2Pf3WFhBagioEH/wx3bfr+a9c6q+QNum6nCYnKZCUlG9b08LipExpt7rCslJRNmwfFxYSEelfUlt/gZfDbsFYRGfMrmMNdbQQdDJrdHc4WXbohy6Wur9ch0eck05nxciGJkz1iDTVySmiV23shG88ky6Cu5mP8FA62bz9CU5R6jS6R0d0YuYdHAFYcPlna8EtyFIxochPNXGsT5iC1aT0GayM4Lx0gySXjfVskjnoQrG1Vfq0xQsoJmXtIlh3NIV1TE0XNYAw== 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=yrY9IKI8emBi6/hDvJG5mqgcx79AelsM7stczJqpY+M=; b=m27E6KyAQxmb73AhZcE2lEgiS4VlxaqR/jH0g6Lec7SoDGE2Q8Hyj61M1EaNGptZrK3c/ehdP2uVC2N/smFkFykj/VVQPK0Nv2EHLsX7t1gradowuzJHS+7pUJGJH8ypgcv4SzP4ZZqIboX/S/AqdhCU8ay1DHB/M+V9ImN1bcs= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:55 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:55 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Roi Dayan , Oz Shlomo , Saeed Mahameed Subject: [net-next 07/13] net/mlx5e: Export sharing of mod headers to a new file Date: Thu, 9 Jul 2020 20:44:26 -0700 Message-Id: <20200710034432.112602-8-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:53 +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: e8fe1300-52e9-45e9-2a41-08d824840795 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2958; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1JTRdknXUewriPP/F/QoXLyD66RQQrXvzay7yJtQDmqr4UgFC2fR3Oamo2FPdmqWq1Vmf4Eyg0YoxvFye7sk2loIUDcgotMd4rFuj1oNVia2mfauPcY0IxJkR17+yDuUx44P93bZrVM2D48vyWauzfvfeY6cq6EzZXe9twDK8SSaeOstmSIzGAq660UyfxvWrnIjljEDBMyw5HLyhvrMjoYxkurFrmxvTIHAT2eX4Drr8gFViuTi6ujErrnNXFfnevopo70YRTQ5x3z7G4zdXbNUfbR8ekDlC+lX3ZWLvFxMrjnher8DNyYAaoRs8WeV8/UBFehvVeaN3HoHXoIkY9AS5jpS/Z4TXN6GGASQ/qrBdxAqp6N3mx/2bVNuTz29 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(30864003)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: F3TymTliraYG3o25SRVhuhyao35JrrW92sFrTN6CP0FoErSw8R8LWMxeuXe9KIPaS+BSIPlBUHYzmxDWVxBSUP6T4Lg8brm/TR76f0mAMkRHJTiZA/2NGVj5PvKArWp31E1d2+WImc5TV5d/Yj2s43eGIURcvunKA2AdYFW8186nlI/QhDM8kMqwIl+sav433bYRgmFW5/S8nAvt9uQfDYIAVQQ9BYfZAKgK+p5jc9bK4i8Uw+OQGy2O9s3V1S96hPaaYP0mAm8pHzRcsAnOG7guNrOFxO5Px/PJAO8d1N4ElV7FKM1ym+6C3HmfqljiXKV6otIx2cuS5zji96A9qHzzPHO2VDKoOZ98JUxdzyODXsnzmZLYNlPeruCLSGt7y2Ep7uMy5PC2/22N7dXlQ27i/GTnt+MKGGIB3Y6k7HMnwfqpeA9KJrPpPed65I9OjHTA+4+8nL4SpeO0/6EDFDepu3ofUdzzK5ZogRjTi18= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: e8fe1300-52e9-45e9-2a41-08d824840795 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:55.6763 (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: /TzCjqWX17T+F52SL8M9o57kqyMqrTtWLhbGBXoB7RutU9N6nK0fZTt4LF48MNBDm6Ig1iW0YraT5eMRAs5hBQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey Refactor sharing of mod headers to new file and while there, remove spin lock and flows list, as this is only used for warn on. Use the generic API in the next patch to re-use tuple modify headers for identical modify actions, Signed-off-by: Paul Blakey Reviewed-by: Roi Dayan Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- .../net/ethernet/mellanox/mlx5/core/Makefile | 2 +- .../net/ethernet/mellanox/mlx5/core/en/fs.h | 2 + .../ethernet/mellanox/mlx5/core/en/mod_hdr.c | 157 +++++++++++++++ .../ethernet/mellanox/mlx5/core/en/mod_hdr.h | 31 +++ .../net/ethernet/mellanox/mlx5/core/en_tc.c | 179 +++--------------- .../net/ethernet/mellanox/mlx5/core/en_tc.h | 6 - .../net/ethernet/mellanox/mlx5/core/eswitch.c | 6 +- 7 files changed, 217 insertions(+), 166 deletions(-) create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c create mode 100644 drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/Makefile index 1e7c7f10db6e..124caec65a34 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile +++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile @@ -35,7 +35,7 @@ mlx5_core-$(CONFIG_MLX5_EN_RXNFC) += en_fs_ethtool.o mlx5_core-$(CONFIG_MLX5_CORE_EN_DCB) += en_dcbnl.o en/port_buffer.o mlx5_core-$(CONFIG_PCI_HYPERV_INTERFACE) += en/hv_vhca_stats.o mlx5_core-$(CONFIG_MLX5_ESWITCH) += lag_mp.o lib/geneve.o lib/port_tun.o \ - en_rep.o en/rep/bond.o + en_rep.o en/rep/bond.o en/mod_hdr.o mlx5_core-$(CONFIG_MLX5_CLS_ACT) += en_tc.o en/rep/tc.o en/rep/neigh.o \ en/mapping.o esw/chains.o en/tc_tun.o \ en/tc_tun_vxlan.o en/tc_tun_gre.o en/tc_tun_geneve.o \ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h index 385cbff1caf1..6f4767324044 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/fs.h @@ -4,6 +4,8 @@ #ifndef __MLX5E_FLOW_STEER_H__ #define __MLX5E_FLOW_STEER_H__ +#include "mod_hdr.h" + enum { MLX5E_TC_FT_LEVEL = 0, MLX5E_TC_TTC_FT_LEVEL, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c b/drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c new file mode 100644 index 000000000000..7edde4d536fd --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.c @@ -0,0 +1,157 @@ +// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB +// Copyright (c) 2020 Mellanox Technologies + +#include +#include "mod_hdr.h" + +#define MLX5_MH_ACT_SZ MLX5_UN_SZ_BYTES(set_add_copy_action_in_auto) + +struct mod_hdr_key { + int num_actions; + void *actions; +}; + +struct mlx5e_mod_hdr_handle { + /* a node of a hash table which keeps all the mod_hdr entries */ + struct hlist_node mod_hdr_hlist; + + struct mod_hdr_key key; + + struct mlx5_modify_hdr *modify_hdr; + + refcount_t refcnt; + struct completion res_ready; + int compl_result; +}; + +static u32 hash_mod_hdr_info(struct mod_hdr_key *key) +{ + return jhash(key->actions, + key->num_actions * MLX5_MH_ACT_SZ, 0); +} + +static int cmp_mod_hdr_info(struct mod_hdr_key *a, struct mod_hdr_key *b) +{ + if (a->num_actions != b->num_actions) + return 1; + + return memcmp(a->actions, b->actions, + a->num_actions * MLX5_MH_ACT_SZ); +} + +void mlx5e_mod_hdr_tbl_init(struct mod_hdr_tbl *tbl) +{ + mutex_init(&tbl->lock); + hash_init(tbl->hlist); +} + +void mlx5e_mod_hdr_tbl_destroy(struct mod_hdr_tbl *tbl) +{ + mutex_destroy(&tbl->lock); +} + +static struct mlx5e_mod_hdr_handle *mod_hdr_get(struct mod_hdr_tbl *tbl, + struct mod_hdr_key *key, + u32 hash_key) +{ + struct mlx5e_mod_hdr_handle *mh, *found = NULL; + + hash_for_each_possible(tbl->hlist, mh, mod_hdr_hlist, hash_key) { + if (!cmp_mod_hdr_info(&mh->key, key)) { + refcount_inc(&mh->refcnt); + found = mh; + break; + } + } + + return found; +} + +struct mlx5e_mod_hdr_handle * +mlx5e_mod_hdr_attach(struct mlx5_core_dev *mdev, + struct mod_hdr_tbl *tbl, + enum mlx5_flow_namespace_type namespace, + struct mlx5e_tc_mod_hdr_acts *mod_hdr_acts) +{ + int num_actions, actions_size, err; + struct mlx5e_mod_hdr_handle *mh; + struct mod_hdr_key key; + u32 hash_key; + + num_actions = mod_hdr_acts->num_actions; + actions_size = MLX5_MH_ACT_SZ * num_actions; + + key.actions = mod_hdr_acts->actions; + key.num_actions = num_actions; + + hash_key = hash_mod_hdr_info(&key); + + mutex_lock(&tbl->lock); + mh = mod_hdr_get(tbl, &key, hash_key); + if (mh) { + mutex_unlock(&tbl->lock); + wait_for_completion(&mh->res_ready); + + if (mh->compl_result < 0) { + err = -EREMOTEIO; + goto attach_header_err; + } + goto attach_header; + } + + mh = kzalloc(sizeof(*mh) + actions_size, GFP_KERNEL); + if (!mh) { + mutex_unlock(&tbl->lock); + return ERR_PTR(-ENOMEM); + } + + mh->key.actions = (void *)mh + sizeof(*mh); + memcpy(mh->key.actions, key.actions, actions_size); + mh->key.num_actions = num_actions; + refcount_set(&mh->refcnt, 1); + init_completion(&mh->res_ready); + + hash_add(tbl->hlist, &mh->mod_hdr_hlist, hash_key); + mutex_unlock(&tbl->lock); + + mh->modify_hdr = mlx5_modify_header_alloc(mdev, namespace, + mh->key.num_actions, + mh->key.actions); + if (IS_ERR(mh->modify_hdr)) { + err = PTR_ERR(mh->modify_hdr); + mh->compl_result = err; + goto alloc_header_err; + } + mh->compl_result = 1; + complete_all(&mh->res_ready); + +attach_header: + return mh; + +alloc_header_err: + complete_all(&mh->res_ready); +attach_header_err: + mlx5e_mod_hdr_detach(mdev, tbl, mh); + return ERR_PTR(err); +} + +void mlx5e_mod_hdr_detach(struct mlx5_core_dev *mdev, + struct mod_hdr_tbl *tbl, + struct mlx5e_mod_hdr_handle *mh) +{ + if (!refcount_dec_and_mutex_lock(&mh->refcnt, &tbl->lock)) + return; + hash_del(&mh->mod_hdr_hlist); + mutex_unlock(&tbl->lock); + + if (mh->compl_result > 0) + mlx5_modify_header_dealloc(mdev, mh->modify_hdr); + + kfree(mh); +} + +struct mlx5_modify_hdr *mlx5e_mod_hdr_get(struct mlx5e_mod_hdr_handle *mh) +{ + return mh->modify_hdr; +} + diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h b/drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h new file mode 100644 index 000000000000..33b23d8f9182 --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/mod_hdr.h @@ -0,0 +1,31 @@ +/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */ +/* Copyright (c) 2020 Mellanox Technologies */ + +#ifndef __MLX5E_EN_MOD_HDR_H__ +#define __MLX5E_EN_MOD_HDR_H__ + +#include +#include + +struct mlx5e_mod_hdr_handle; + +struct mlx5e_tc_mod_hdr_acts { + int num_actions; + int max_actions; + void *actions; +}; + +struct mlx5e_mod_hdr_handle * +mlx5e_mod_hdr_attach(struct mlx5_core_dev *mdev, + struct mod_hdr_tbl *tbl, + enum mlx5_flow_namespace_type namespace, + struct mlx5e_tc_mod_hdr_acts *mod_hdr_acts); +void mlx5e_mod_hdr_detach(struct mlx5_core_dev *mdev, + struct mod_hdr_tbl *tbl, + struct mlx5e_mod_hdr_handle *mh); +struct mlx5_modify_hdr *mlx5e_mod_hdr_get(struct mlx5e_mod_hdr_handle *mh); + +void mlx5e_mod_hdr_tbl_init(struct mod_hdr_tbl *tbl); +void mlx5e_mod_hdr_tbl_destroy(struct mod_hdr_tbl *tbl); + +#endif /* __MLX5E_EN_MOD_HDR_H__ */ diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 090069e936b7..3814c70b5230 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -63,6 +63,7 @@ #include "en/tc_tun.h" #include "en/mapping.h" #include "en/tc_ct.h" +#include "en/mod_hdr.h" #include "lib/devcom.h" #include "lib/geneve.h" #include "diag/en_tc_tracepoint.h" @@ -140,8 +141,7 @@ struct mlx5e_tc_flow { */ struct encap_flow_item encaps[MLX5_MAX_FLOW_FWD_VPORTS]; struct mlx5e_tc_flow *peer_flow; - struct mlx5e_mod_hdr_entry *mh; /* attached mod header instance */ - struct list_head mod_hdr; /* flows sharing the same mod hdr ID */ + struct mlx5e_mod_hdr_handle *mh; /* attached mod header instance */ struct mlx5e_hairpin_entry *hpe; /* attached hairpin instance */ struct list_head hairpin; /* flows sharing the same hairpin */ struct list_head peer; /* flows with peer flow */ @@ -309,29 +309,6 @@ struct mlx5e_hairpin_entry { struct completion res_ready; }; -struct mod_hdr_key { - int num_actions; - void *actions; -}; - -struct mlx5e_mod_hdr_entry { - /* a node of a hash table which keeps all the mod_hdr entries */ - struct hlist_node mod_hdr_hlist; - - /* protects flows list */ - spinlock_t flows_lock; - /* flows sharing the same mod_hdr entry */ - struct list_head flows; - - struct mod_hdr_key key; - - struct mlx5_modify_hdr *modify_hdr; - - refcount_t refcnt; - struct completion res_ready; - int compl_result; -}; - static void mlx5e_tc_del_flow(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow); @@ -408,148 +385,43 @@ static bool mlx5e_is_offloaded_flow(struct mlx5e_tc_flow *flow) return flow_flag_test(flow, OFFLOADED); } -static inline u32 hash_mod_hdr_info(struct mod_hdr_key *key) -{ - return jhash(key->actions, - key->num_actions * MLX5_MH_ACT_SZ, 0); -} - -static inline int cmp_mod_hdr_info(struct mod_hdr_key *a, - struct mod_hdr_key *b) +static int get_flow_name_space(struct mlx5e_tc_flow *flow) { - if (a->num_actions != b->num_actions) - return 1; - - return memcmp(a->actions, b->actions, a->num_actions * MLX5_MH_ACT_SZ); + return mlx5e_is_eswitch_flow(flow) ? + MLX5_FLOW_NAMESPACE_FDB : MLX5_FLOW_NAMESPACE_KERNEL; } static struct mod_hdr_tbl * -get_mod_hdr_table(struct mlx5e_priv *priv, int namespace) +get_mod_hdr_table(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow) { struct mlx5_eswitch *esw = priv->mdev->priv.eswitch; - return namespace == MLX5_FLOW_NAMESPACE_FDB ? &esw->offloads.mod_hdr : + return get_flow_name_space(flow) == MLX5_FLOW_NAMESPACE_FDB ? + &esw->offloads.mod_hdr : &priv->fs.tc.mod_hdr; } -static struct mlx5e_mod_hdr_entry * -mlx5e_mod_hdr_get(struct mod_hdr_tbl *tbl, struct mod_hdr_key *key, u32 hash_key) -{ - struct mlx5e_mod_hdr_entry *mh, *found = NULL; - - hash_for_each_possible(tbl->hlist, mh, mod_hdr_hlist, hash_key) { - if (!cmp_mod_hdr_info(&mh->key, key)) { - refcount_inc(&mh->refcnt); - found = mh; - break; - } - } - - return found; -} - -static void mlx5e_mod_hdr_put(struct mlx5e_priv *priv, - struct mlx5e_mod_hdr_entry *mh, - int namespace) -{ - struct mod_hdr_tbl *tbl = get_mod_hdr_table(priv, namespace); - - if (!refcount_dec_and_mutex_lock(&mh->refcnt, &tbl->lock)) - return; - hash_del(&mh->mod_hdr_hlist); - mutex_unlock(&tbl->lock); - - WARN_ON(!list_empty(&mh->flows)); - if (mh->compl_result > 0) - mlx5_modify_header_dealloc(priv->mdev, mh->modify_hdr); - - kfree(mh); -} - -static int get_flow_name_space(struct mlx5e_tc_flow *flow) -{ - return mlx5e_is_eswitch_flow(flow) ? - MLX5_FLOW_NAMESPACE_FDB : MLX5_FLOW_NAMESPACE_KERNEL; -} static int mlx5e_attach_mod_hdr(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow, struct mlx5e_tc_flow_parse_attr *parse_attr) { - int num_actions, actions_size, namespace, err; - struct mlx5e_mod_hdr_entry *mh; - struct mod_hdr_tbl *tbl; - struct mod_hdr_key key; - u32 hash_key; - - num_actions = parse_attr->mod_hdr_acts.num_actions; - actions_size = MLX5_MH_ACT_SZ * num_actions; - - key.actions = parse_attr->mod_hdr_acts.actions; - key.num_actions = num_actions; - - hash_key = hash_mod_hdr_info(&key); - - namespace = get_flow_name_space(flow); - tbl = get_mod_hdr_table(priv, namespace); - - mutex_lock(&tbl->lock); - mh = mlx5e_mod_hdr_get(tbl, &key, hash_key); - if (mh) { - mutex_unlock(&tbl->lock); - wait_for_completion(&mh->res_ready); - - if (mh->compl_result < 0) { - err = -EREMOTEIO; - goto attach_header_err; - } - goto attach_flow; - } - - mh = kzalloc(sizeof(*mh) + actions_size, GFP_KERNEL); - if (!mh) { - mutex_unlock(&tbl->lock); - return -ENOMEM; - } - - mh->key.actions = (void *)mh + sizeof(*mh); - memcpy(mh->key.actions, key.actions, actions_size); - mh->key.num_actions = num_actions; - spin_lock_init(&mh->flows_lock); - INIT_LIST_HEAD(&mh->flows); - refcount_set(&mh->refcnt, 1); - init_completion(&mh->res_ready); - - hash_add(tbl->hlist, &mh->mod_hdr_hlist, hash_key); - mutex_unlock(&tbl->lock); + struct mlx5_modify_hdr *modify_hdr; + struct mlx5e_mod_hdr_handle *mh; - mh->modify_hdr = mlx5_modify_header_alloc(priv->mdev, namespace, - mh->key.num_actions, - mh->key.actions); - if (IS_ERR(mh->modify_hdr)) { - err = PTR_ERR(mh->modify_hdr); - mh->compl_result = err; - goto alloc_header_err; - } - mh->compl_result = 1; - complete_all(&mh->res_ready); + mh = mlx5e_mod_hdr_attach(priv->mdev, get_mod_hdr_table(priv, flow), + get_flow_name_space(flow), + &parse_attr->mod_hdr_acts); + if (IS_ERR(mh)) + return PTR_ERR(mh); -attach_flow: - flow->mh = mh; - spin_lock(&mh->flows_lock); - list_add(&flow->mod_hdr, &mh->flows); - spin_unlock(&mh->flows_lock); + modify_hdr = mlx5e_mod_hdr_get(mh); if (mlx5e_is_eswitch_flow(flow)) - flow->esw_attr->modify_hdr = mh->modify_hdr; + flow->esw_attr->modify_hdr = modify_hdr; else - flow->nic_attr->modify_hdr = mh->modify_hdr; + flow->nic_attr->modify_hdr = modify_hdr; + flow->mh = mh; return 0; - -alloc_header_err: - complete_all(&mh->res_ready); -attach_header_err: - mlx5e_mod_hdr_put(priv, mh, namespace); - return err; } static void mlx5e_detach_mod_hdr(struct mlx5e_priv *priv, @@ -559,11 +431,8 @@ static void mlx5e_detach_mod_hdr(struct mlx5e_priv *priv, if (!flow->mh) return; - spin_lock(&flow->mh->flows_lock); - list_del(&flow->mod_hdr); - spin_unlock(&flow->mh->flows_lock); - - mlx5e_mod_hdr_put(priv, flow->mh, get_flow_name_space(flow)); + mlx5e_mod_hdr_detach(priv->mdev, get_mod_hdr_table(priv, flow), + flow->mh); flow->mh = NULL; } @@ -4460,7 +4329,6 @@ mlx5e_alloc_flow(struct mlx5e_priv *priv, int attr_size, flow->priv = priv; for (out_index = 0; out_index < MLX5_MAX_FLOW_FWD_VPORTS; out_index++) INIT_LIST_HEAD(&flow->encaps[out_index].list); - INIT_LIST_HEAD(&flow->mod_hdr); INIT_LIST_HEAD(&flow->hairpin); INIT_LIST_HEAD(&flow->l3_to_l2_reformat); refcount_set(&flow->refcnt, 1); @@ -5064,9 +4932,8 @@ int mlx5e_tc_nic_init(struct mlx5e_priv *priv) struct mlx5e_tc_table *tc = &priv->fs.tc; int err; + mlx5e_mod_hdr_tbl_init(&tc->mod_hdr); mutex_init(&tc->t_lock); - mutex_init(&tc->mod_hdr.lock); - hash_init(tc->mod_hdr.hlist); mutex_init(&tc->hairpin_tbl_lock); hash_init(tc->hairpin_tbl); @@ -5104,7 +4971,7 @@ void mlx5e_tc_nic_cleanup(struct mlx5e_priv *priv) &tc->netdevice_nb, &tc->netdevice_nn); - mutex_destroy(&tc->mod_hdr.lock); + mlx5e_mod_hdr_tbl_destroy(&tc->mod_hdr); mutex_destroy(&tc->hairpin_tbl_lock); rhashtable_destroy(&tc->ht); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h index 856e034b92f3..b69f0e376ec0 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h @@ -148,12 +148,6 @@ extern struct mlx5e_tc_attr_to_reg_mapping mlx5e_tc_attr_to_reg_mappings[]; bool mlx5e_is_valid_eswitch_fwd_dev(struct mlx5e_priv *priv, struct net_device *out_dev); -struct mlx5e_tc_mod_hdr_acts { - int num_actions; - int max_actions; - void *actions; -}; - int mlx5e_tc_match_to_reg_set(struct mlx5_core_dev *mdev, struct mlx5e_tc_mod_hdr_acts *mod_hdr_acts, enum mlx5e_tc_attr_to_reg type, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c index d70543ea57dd..c181f6b63f59 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c @@ -42,6 +42,7 @@ #include "fs_core.h" #include "devlink.h" #include "ecpf.h" +#include "en/mod_hdr.h" enum { MLX5_ACTION_NONE = 0, @@ -1748,10 +1749,9 @@ int mlx5_eswitch_init(struct mlx5_core_dev *dev) mutex_init(&esw->offloads.encap_tbl_lock); hash_init(esw->offloads.encap_tbl); - mutex_init(&esw->offloads.mod_hdr.lock); - hash_init(esw->offloads.mod_hdr.hlist); mutex_init(&esw->offloads.decap_tbl_lock); hash_init(esw->offloads.decap_tbl); + mlx5e_mod_hdr_tbl_init(&esw->offloads.mod_hdr); atomic64_set(&esw->offloads.num_flows, 0); ida_init(&esw->offloads.vport_metadata_ida); mutex_init(&esw->state_lock); @@ -1793,7 +1793,7 @@ void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw) mutex_destroy(&esw->mode_lock); mutex_destroy(&esw->state_lock); ida_destroy(&esw->offloads.vport_metadata_ida); - mutex_destroy(&esw->offloads.mod_hdr.lock); + mlx5e_mod_hdr_tbl_destroy(&esw->offloads.mod_hdr); mutex_destroy(&esw->offloads.encap_tbl_lock); mutex_destroy(&esw->offloads.decap_tbl_lock); kfree(esw->vports); From patchwork Fri Jul 10 03:44:27 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326440 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=of/qhYuN; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXd2Pbpz9sRR for ; Fri, 10 Jul 2020 13:48:17 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727114AbgGJDsQ (ORCPT ); Thu, 9 Jul 2020 23:48:16 -0400 Received: from mail-eopbgr80070.outbound.protection.outlook.com ([40.107.8.70]:20294 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726996AbgGJDsN (ORCPT ); Thu, 9 Jul 2020 23:48:13 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=mZ0jeIyebJGx36YHFG08Hwif38x3Igd5G77iabdfR21DnKTp/Np5NbK3E+WnZdAKNnyQzaKQmt58cXHZHjJv8OMfOnG/XIXvvo2vnj/oEgOqu3d4vZkR/q4kUb8L2Id3hsEc7lo1WDyG6nXe+q3CtVnXG4RTTX49+px929cGfYnYRA7vzJ/5sGv3u9M6WPzqFJkeE5DC9x9X1Z5w1ID6i3e/e1kvHyPvviY5a+vYSNDfDMjPghEKdmwH/Q+eylWg6LpeZUgjezt/0r5VFuccH7muqrC+xnLDO89dIuJcE4aUYBROi/I25wFiytNIdSQUEb8uwKmVHFQxvYpIga8C9A== 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=dUFngE4EAnGcV5H9c/Ej14kaVmIZ2T1MZgGSjYr6c+Q=; b=iirotHQrvOFSMOQD7ZW7+CI8UbDzkHJy8yFShz13LGFvBzbT9L2BNy8c/YWaoiIBu4Bg7eCWx6pR9Puz4nzvw+ssgHQjCvu51X8I3mt6spujrEW7rZPN4PzblP2+1Pg3KHfycdBqBYzAxTDE7Qs5gdoOC53EAfPYqs8urp6FnX/tLGA3roCD0lnWBnNNgOnZ2TwARkKQ5RxpJ/zY8gPBWnUbIwf8sN4wywl9dV8U8Hw6c4CdQsRJbX3Fc4EcGVOdSa8r2wNliVqZgI6sdLS1Hl6c5h/GvTHop219JWICOjZFgf4AypJeLAqTcI+SyeoEVxGTeE2GD+JDdo3iLGTCCg== 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=dUFngE4EAnGcV5H9c/Ej14kaVmIZ2T1MZgGSjYr6c+Q=; b=of/qhYuN+wK0WIaeT4xXhMreixBsTzCsVF6JCm+QWY5+e8Ts2XV8XsHNowSHKGWp7bZ4Ugk9MnyYRkH3AvyrBT02b8Q9ipG/e8hfbT3h4xyDHAG0mG6MiPU0SC7VlysPYDDiD4lD+04Zr6RhgbydR2XViqzwrfoLdYvNdXNg4gY= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:47:58 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:47:58 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Oz Shlomo , Saeed Mahameed Subject: [net-next 08/13] net/mlx5e: CT: Re-use tuple modify headers for identical modify actions Date: Thu, 9 Jul 2020 20:44:27 -0700 Message-Id: <20200710034432.112602-9-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:56 +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: 764d1b18-169f-41e7-6ada-08d8248408f0 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:3826; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UwjbuTYdURUKdG5lpJuXwCkX5ctRIrTcZqmPPud5eZQBnrwTg19ibpVll4qYhlArvjYEqsFbdxafEIvNIlOM9hAcSqROjjgGGI+8nsOjhia1IvlGpPIFq792RQUabK6vUiMlnAeHOPxaU8OUfMNy+BfESKVFZcOmL7SvyQvhcGCdM8kw2cjwnRFg/ObVM7Ayk10DuPnwOG16ZiiVPBxdigUWs6rZQw5vwEQuBqY20vGIdZhZa4ASNPWETbOOgmZ/44bMqDyW0yr80FlNx9AdFMyR06SIpcGhqqO6+nt3SA70kxoPxelqI2HvqNG33wlusln2+R+N/qeiWvkbprVMaWGndEaEFPh/RRG5+FnbcQ+dH9+UFrdVye0hbBDxhqL6 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: Itx0eyv8iQ43wfdIrxheztr1l5nmkFLvyfjuo6Wg2Zwny00MflaCrgpm9jR2nwi4VcPtCSAjJV4yw059qR6359W1MryJb6gBMh/OX1W1xKdzddkhKEoEKDbmOaOEydQzvieG+N4/kiMgIgGwOFKXv7Xkcx3gN3pHpyviMlVLsghUGx+8LOqVIVtCn4exl9tGrCQuh735ILsHvFbglMe41r69/nxx0OqVWVXI56gchjDpR2DBt8DyXv6pJ0Fa3D6tHcaeykysJk+yKkM+DTL/DJDyOs4/i3ksvDnLridJ+S2Soruu7iYVxr7Ce72Jiq8c0Sq1k1QpbDD7sMvZ3A594M3dQDPaALNAK+kJu6vJ0zpNiHJ1qjeP2cPoUsviU8EKfaXwETAOvEj6v5yhG5Nw78MGQt6Vn2HdQ7q+wmSZb9pzz/dkOJ4O6b5qlhKXtTDozwbfxYBzlcg7R6MeiA1fwRceawDugMNMqpmsFWbEWlQ= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 764d1b18-169f-41e7-6ada-08d8248408f0 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:47:57.9410 (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: uihbqRyoPP/f9klKhkHC4lGvbEOClLK1ole4o1r3k4X6GyxKyFM2pD2s1u+qPSMZ2f/1FpXA5FdL8WiOITlvCQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey After removing the tupleid register which changed per tuple, tuple modify headers set the ct_state, zone, mark, and label registers. For non-natted tuples going through the same tc rules path, their values will be the same, and all their modify headers will be the same. Re-use tuple modify header when possible, by adding each new modify header to an hahstable, and looking up identical ones before creating a new one. Signed-off-by: Paul Blakey Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- .../ethernet/mellanox/mlx5/core/en/tc_ct.c | 25 +++++++++++-------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index c6e92f818ecf..7b5963593bf1 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -16,6 +16,7 @@ #include "esw/chains.h" #include "en/tc_ct.h" +#include "en/mod_hdr.h" #include "en.h" #include "en_tc.h" #include "en_rep.h" @@ -59,6 +60,7 @@ struct mlx5_ct_flow { struct mlx5_ct_zone_rule { struct mlx5_flow_handle *rule; + struct mlx5e_mod_hdr_handle *mh; struct mlx5_esw_flow_attr attr; bool nat; }; @@ -397,7 +399,8 @@ mlx5_tc_ct_entry_del_rule(struct mlx5_tc_ct_priv *ct_priv, ct_dbg("Deleting ct entry rule in zone %d", entry->tuple.zone); mlx5_eswitch_del_offloaded_rule(esw, zone_rule->rule, attr); - mlx5_modify_header_dealloc(esw->dev, attr->modify_hdr); + mlx5e_mod_hdr_detach(ct_priv->esw->dev, + &esw->offloads.mod_hdr, zone_rule->mh); } static void @@ -579,11 +582,10 @@ static int mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_esw_flow_attr *attr, struct flow_rule *flow_rule, + struct mlx5e_mod_hdr_handle **mh, u16 zone, bool nat) { struct mlx5e_tc_mod_hdr_acts mod_acts = {}; - struct mlx5_eswitch *esw = ct_priv->esw; - struct mlx5_modify_hdr *mod_hdr; struct flow_action_entry *meta; u16 ct_state = 0; int err; @@ -617,14 +619,15 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv, if (err) goto err_mapping; - mod_hdr = mlx5_modify_header_alloc(esw->dev, MLX5_FLOW_NAMESPACE_FDB, - mod_acts.num_actions, - mod_acts.actions); - if (IS_ERR(mod_hdr)) { - err = PTR_ERR(mod_hdr); + *mh = mlx5e_mod_hdr_attach(ct_priv->esw->dev, + &ct_priv->esw->offloads.mod_hdr, + MLX5_FLOW_NAMESPACE_FDB, + &mod_acts); + if (IS_ERR(*mh)) { + err = PTR_ERR(*mh); goto err_mapping; } - attr->modify_hdr = mod_hdr; + attr->modify_hdr = mlx5e_mod_hdr_get(*mh); dealloc_mod_hdr_actions(&mod_acts); return 0; @@ -653,6 +656,7 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, return -ENOMEM; err = mlx5_tc_ct_entry_create_mod_hdr(ct_priv, attr, flow_rule, + &zone_rule->mh, entry->tuple.zone, nat); if (err) { ct_dbg("Failed to create ct entry mod hdr"); @@ -687,7 +691,8 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, return 0; err_rule: - mlx5_modify_header_dealloc(esw->dev, attr->modify_hdr); + mlx5e_mod_hdr_detach(ct_priv->esw->dev, + &esw->offloads.mod_hdr, zone_rule->mh); err_mod_hdr: kfree(spec); return err; From patchwork Fri Jul 10 03:44:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326444 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=Ag5DHpJC; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXs307vz9sRN for ; Fri, 10 Jul 2020 13:48:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727815AbgGJDsW (ORCPT ); Thu, 9 Jul 2020 23:48:22 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727065AbgGJDsQ (ORCPT ); Thu, 9 Jul 2020 23:48:16 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ThG2pzF5A0+ZcFUJHmTjpRg4o35DRMd2yDNE8l1ber9gkkxUql+f2MiC4a4myKxvjOOPjJFnY9EaBRbE6gJvw+ahe+pNgX9YZEjWbHvqHf2JlSEmHRQWc7OVv+93efzzauRV/PoFb6Ko6xD3HXG1JPoM5iU6rvgIhnsFJ22gd5oRpKwQJvsRVL9c72XvdJ38XBHPMR4ZdCAe2RykXY2UDfWjjyi3aLrXUFeWMqfrXtefIOcgZRLJs8q18g1kdBPpDwmSHV/JrxI9T4H6e/yxfRyiSK+2jy7uxIIbbLC5lLeIZTGkwgUGkgFduAAdVq4C+ZkzNK5YL97ksVjE72n8AQ== 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=zhUJy6JqyuxwDQK0T6sf8K/2PgGtQxV5t7P3nposfnk=; b=bWPTt3MLVbKZ37x2OkLahl8D7VlHC7uoNLaeX5614zjr4LIDs2Na9dn1cNsizrP2j5rivRe8RJPA6+SBT9fuPlIdBCzmI9hoHkQwmWyFvZEO4ZwLCJHiAKRVRzuWSrORm7YYkpdJ03HIwio/HPXJwEOWpj3xyLAfxkqZtsNz2U42S4bvogVwQNTFN1eJoQCzlFzTSdnY8oHMg5l/y2wqc73Iz8f1BAu6sdh3qlx6M3KYZT+tbiAHsV4wISE72ZVvo4leI6Z3f2xhAj4eWHEPffsKv8NFB2GtU5rpBm8qVyM2t13Xt360if9zqETOpBa9qpa344F4rMvNcaNoDdeOKA== 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=zhUJy6JqyuxwDQK0T6sf8K/2PgGtQxV5t7P3nposfnk=; b=Ag5DHpJCDOpXrIsmOQZntriUJNY9zqWn4PgGIwEskIaM1wQm+I7C48iyVA8AXxtEf3uvSjahSqlRkCabi1Hv9woJP+ghThdP4lDzq4pGI8Fq1BP5F4Z1y5mLogZRxuxYed8Lvly1qGHEipj1owUpDE263Kpia/eEYNwOzH8KBro= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:48:00 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:48:00 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Oz Shlomo , Saeed Mahameed Subject: [net-next 09/13] net/mlx5e: CT: Use mapping for zone restore register Date: Thu, 9 Jul 2020 20:44:28 -0700 Message-Id: <20200710034432.112602-10-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:47:58 +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: 58e752c8-0004-47c9-cea0-08d824840a44 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1303; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rRZ1GSwX9LjhIUkqn/fto68R0w5qZjVbp932xhuPGvfGz6ltQdoWO00Ge9iSDCJwFTzhdXZMnqJ2q1V23yZv5nt0uNkXu1LUqSmpH9hRN2avy+pKWYSijwTCpU0aoO9Bg493znfEhW37bLnZMWwJo8WhET3PVZoxU/VGUQk8C6W+aaGYYOhBsbfOfWio6NUNRCJTgvaDfeS56flC9C7S7YFlRuTNlAKswzB+9qouWaBc12KpYGhvpBbLnBh1zOgwHLvOOhlzu+22iJ8maEjmA6iHFUV5FaKd2V/k5NY2cEWoiaDW+WSjqDfJBVj1Ppuu64vy5H2B6zEf+PYazPr3RMs65fLZ1kHCC4Iwc+dRxOTuXGi/n34QOKTuygieMPkd 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: TeOHJLVRqWqr5KXmNMH6Mapl49gbDQfk9K97Yx29YaxgI4IWhN0oNsTykSk0BaJBnNQI1E7pQavMYF2dUIijeUFoUCGbWuuSK2pAKqsdOxEQrdvKPcZlB5MHCRDcWbstrHmWVG3dIuhzzQNf0P0f/aMvw2JPQfUSJVPK8qBkK8Qd3i6yKp0/xd6G0dfWB5QXhHfnIHTqLQev8mbXyMuVMj01RbDdJyjXywMxV2gEluguKX9sNqR057jvtwUD3hTF2y4NBrbiAPaJIblhWxUjO+wE1ioRR/1seRFux4GCfRVMYTc+GqoS05/fWltXFsciwCZ8avQyxArevJ4SC9jsTpki2lVExuAbFTfPzJaBLIYcRCe5J0uNLn/D9Et1t48KJSR5SOTeWU2ScUiMgmLK2QsZ7Aawj3wic34metPak39YA3eWFXE4ZwXuP1RxX8HaCfTqGPzn7dqb4BXcAUmWw5yJPblaCdeqIUAhU+ZLYxo= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 58e752c8-0004-47c9-cea0-08d824840a44 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:48:00.3057 (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: RwSuhMwKVr4Afni8nfNtBqyvEEepZeV79kb+XUZ6f0UnNFXqBccA8PAD9Ro6oDiFB7uy9SfdGxHahKrAJKxv3A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey Use a single byte mapping for zone restore register (zone matching remains 16 bit). This makes room for using the freed 8 bits on register C1 for mapping more tunnels and tunnel options. Signed-off-by: Paul Blakey Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- .../ethernet/mellanox/mlx5/core/en/rep/tc.c | 7 +- .../ethernet/mellanox/mlx5/core/en/tc_ct.c | 67 ++++++++++++------- .../ethernet/mellanox/mlx5/core/en/tc_ct.h | 10 +-- 3 files changed, 50 insertions(+), 34 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c index e27963b80c11..ece8f535ce80 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/rep/tc.c @@ -594,7 +594,7 @@ bool mlx5e_rep_tc_update_skb(struct mlx5_cqe64 *cqe, struct mlx5e_tc_update_priv *tc_priv) { #if IS_ENABLED(CONFIG_NET_TC_SKB_EXT) - u32 chain = 0, reg_c0, reg_c1, tunnel_id, zone; + u32 chain = 0, reg_c0, reg_c1, tunnel_id, zone_restore_id; struct mlx5_rep_uplink_priv *uplink_priv; struct mlx5e_rep_priv *uplink_rpriv; struct tc_skb_ext *tc_skb_ext; @@ -631,11 +631,12 @@ bool mlx5e_rep_tc_update_skb(struct mlx5_cqe64 *cqe, tc_skb_ext->chain = chain; - zone = reg_c1 & ZONE_RESTORE_MAX; + zone_restore_id = reg_c1 & ZONE_RESTORE_MAX; uplink_rpriv = mlx5_eswitch_get_uplink_priv(esw, REP_ETH); uplink_priv = &uplink_rpriv->uplink_priv; - if (!mlx5e_tc_ct_restore_flow(uplink_priv, skb, zone)) + if (!mlx5e_tc_ct_restore_flow(uplink_priv, skb, + zone_restore_id)) return false; } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 7b5963593bf1..3802a26e944c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -17,6 +17,7 @@ #include "esw/chains.h" #include "en/tc_ct.h" #include "en/mod_hdr.h" +#include "en/mapping.h" #include "en.h" #include "en_tc.h" #include "en_rep.h" @@ -46,6 +47,7 @@ struct mlx5_tc_ct_priv { struct mlx5_flow_table *ct_nat; struct mlx5_flow_table *post_ct; struct mutex control_lock; /* guards parallel adds/dels */ + struct mapping_ctx *zone_mapping; }; struct mlx5_ct_flow { @@ -77,6 +79,7 @@ struct mlx5_tc_ct_pre { struct mlx5_ct_ft { struct rhash_head node; u16 zone; + u32 zone_restore_id; refcount_t refcount; struct nf_flowtable *nf_ft; struct mlx5_tc_ct_priv *ct_priv; @@ -434,7 +437,7 @@ mlx5_tc_ct_entry_set_registers(struct mlx5_tc_ct_priv *ct_priv, u8 ct_state, u32 mark, u32 label, - u16 zone) + u8 zone_restore_id) { struct mlx5_eswitch *esw = ct_priv->esw; int err; @@ -455,7 +458,7 @@ mlx5_tc_ct_entry_set_registers(struct mlx5_tc_ct_priv *ct_priv, return err; err = mlx5e_tc_match_to_reg_set(esw->dev, mod_acts, - ZONE_RESTORE_TO_REG, zone + 1); + ZONE_RESTORE_TO_REG, zone_restore_id); if (err) return err; @@ -583,7 +586,7 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_esw_flow_attr *attr, struct flow_rule *flow_rule, struct mlx5e_mod_hdr_handle **mh, - u16 zone, bool nat) + u8 zone_restore_id, bool nat) { struct mlx5e_tc_mod_hdr_acts mod_acts = {}; struct flow_action_entry *meta; @@ -615,7 +618,7 @@ mlx5_tc_ct_entry_create_mod_hdr(struct mlx5_tc_ct_priv *ct_priv, ct_state, meta->ct_metadata.mark, meta->ct_metadata.labels[0], - zone); + zone_restore_id); if (err) goto err_mapping; @@ -641,7 +644,7 @@ static int mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, struct flow_rule *flow_rule, struct mlx5_ct_entry *entry, - bool nat) + bool nat, u8 zone_restore_id) { struct mlx5_ct_zone_rule *zone_rule = &entry->zone_rules[nat]; struct mlx5_esw_flow_attr *attr = &zone_rule->attr; @@ -657,7 +660,7 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, err = mlx5_tc_ct_entry_create_mod_hdr(ct_priv, attr, flow_rule, &zone_rule->mh, - entry->tuple.zone, nat); + zone_restore_id, nat); if (err) { ct_dbg("Failed to create ct entry mod hdr"); goto err_mod_hdr; @@ -701,7 +704,8 @@ mlx5_tc_ct_entry_add_rule(struct mlx5_tc_ct_priv *ct_priv, static int mlx5_tc_ct_entry_add_rules(struct mlx5_tc_ct_priv *ct_priv, struct flow_rule *flow_rule, - struct mlx5_ct_entry *entry) + struct mlx5_ct_entry *entry, + u8 zone_restore_id) { struct mlx5_eswitch *esw = ct_priv->esw; int err; @@ -713,11 +717,13 @@ mlx5_tc_ct_entry_add_rules(struct mlx5_tc_ct_priv *ct_priv, return err; } - err = mlx5_tc_ct_entry_add_rule(ct_priv, flow_rule, entry, false); + err = mlx5_tc_ct_entry_add_rule(ct_priv, flow_rule, entry, false, + zone_restore_id); if (err) goto err_orig; - err = mlx5_tc_ct_entry_add_rule(ct_priv, flow_rule, entry, true); + err = mlx5_tc_ct_entry_add_rule(ct_priv, flow_rule, entry, true, + zone_restore_id); if (err) goto err_nat; @@ -781,7 +787,8 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft, goto err_tuple_nat; } - err = mlx5_tc_ct_entry_add_rules(ct_priv, flow_rule, entry); + err = mlx5_tc_ct_entry_add_rules(ct_priv, flow_rule, entry, + ft->zone_restore_id); if (err) goto err_rules; @@ -1007,7 +1014,7 @@ mlx5_tc_ct_parse_match(struct mlx5e_priv *priv, } if (mask->ct_zone) - mlx5e_tc_match_to_reg_match(spec, ZONE_RESTORE_TO_REG, + mlx5e_tc_match_to_reg_match(spec, ZONE_TO_REG, key->ct_zone, MLX5_CT_ZONE_MASK); if (ctstate_mask) mlx5e_tc_match_to_reg_match(spec, CTSTATE_TO_REG, @@ -1037,18 +1044,6 @@ mlx5_tc_ct_parse_action(struct mlx5e_priv *priv, return -EOPNOTSUPP; } - /* To mark that the need restore ct state on a skb, we mark the - * packet with the zone restore register. To distinguise from an - * uninitalized 0 value for this register, we write zone + 1 on the - * packet. - * - * This restricts us to a max zone of 0xFFFE. - */ - if (act->ct.zone == (u16)~0) { - NL_SET_ERR_MSG_MOD(extack, "Unsupported ct zone"); - return -EOPNOTSUPP; - } - attr->ct_attr.zone = act->ct.zone; attr->ct_attr.ct_action = act->ct.action; attr->ct_attr.nf_ft = act->ct.flow_table; @@ -1305,6 +1300,10 @@ mlx5_tc_ct_add_ft_cb(struct mlx5_tc_ct_priv *ct_priv, u16 zone, if (!ft) return ERR_PTR(-ENOMEM); + err = mapping_add(ct_priv->zone_mapping, &zone, &ft->zone_restore_id); + if (err) + goto err_mapping; + ft->zone = zone; ft->nf_ft = nf_ft; ft->ct_priv = ct_priv; @@ -1337,6 +1336,8 @@ mlx5_tc_ct_add_ft_cb(struct mlx5_tc_ct_priv *ct_priv, u16 zone, err_init: mlx5_tc_ct_free_pre_ct_tables(ft); err_alloc_pre_ct: + mapping_remove(ct_priv->zone_mapping, ft->zone_restore_id); +err_mapping: kfree(ft); return ERR_PTR(err); } @@ -1363,6 +1364,7 @@ mlx5_tc_ct_del_ft_cb(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_ct_ft *ft) mlx5_tc_ct_flush_ft_entry, ct_priv); mlx5_tc_ct_free_pre_ct_tables(ft); + mapping_remove(ct_priv->zone_mapping, ft->zone_restore_id); kfree(ft); } @@ -1786,6 +1788,12 @@ mlx5_tc_ct_init(struct mlx5_rep_uplink_priv *uplink_priv) goto err_alloc; } + ct_priv->zone_mapping = mapping_create(sizeof(u16), 0, true); + if (IS_ERR(ct_priv->zone_mapping)) { + err = PTR_ERR(ct_priv->zone_mapping); + goto err_mapping; + } + ct_priv->esw = esw; ct_priv->netdev = rpriv->netdev; ct_priv->ct = mlx5_esw_chains_create_global_table(esw); @@ -1827,6 +1835,8 @@ mlx5_tc_ct_init(struct mlx5_rep_uplink_priv *uplink_priv) err_ct_nat_tbl: mlx5_esw_chains_destroy_global_table(esw, ct_priv->ct); err_ct_tbl: + mapping_destroy(ct_priv->zone_mapping); +err_mapping: kfree(ct_priv); err_alloc: err_support: @@ -1845,6 +1855,7 @@ mlx5_tc_ct_clean(struct mlx5_rep_uplink_priv *uplink_priv) mlx5_esw_chains_destroy_global_table(ct_priv->esw, ct_priv->post_ct); mlx5_esw_chains_destroy_global_table(ct_priv->esw, ct_priv->ct_nat); mlx5_esw_chains_destroy_global_table(ct_priv->esw, ct_priv->ct); + mapping_destroy(ct_priv->zone_mapping); rhashtable_destroy(&ct_priv->ct_tuples_ht); rhashtable_destroy(&ct_priv->ct_tuples_nat_ht); @@ -1858,16 +1869,20 @@ mlx5_tc_ct_clean(struct mlx5_rep_uplink_priv *uplink_priv) bool mlx5e_tc_ct_restore_flow(struct mlx5_rep_uplink_priv *uplink_priv, - struct sk_buff *skb, u16 zone) + struct sk_buff *skb, u8 zone_restore_id) { struct mlx5_tc_ct_priv *ct_priv = uplink_priv->ct_priv; struct mlx5_ct_tuple tuple = {}; struct mlx5_ct_entry *entry; + u16 zone; - if (!ct_priv || !zone) + if (!ct_priv || !zone_restore_id) return true; - if (!mlx5_tc_ct_skb_to_tuple(skb, &tuple, zone - 1)) + if (mapping_find(ct_priv->zone_mapping, zone_restore_id, &zone)) + return false; + + if (!mlx5_tc_ct_skb_to_tuple(skb, &tuple, zone)) return false; entry = rhashtable_lookup_fast(&ct_priv->ct_tuples_ht, &tuple, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h index b5e07bff843b..5e10a72f5f24 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.h @@ -70,9 +70,9 @@ struct mlx5_ct_attr { #define zone_restore_to_reg_ct {\ .mfield = MLX5_ACTION_IN_FIELD_METADATA_REG_C_1,\ .moffset = 0,\ - .mlen = 2,\ + .mlen = 1,\ .soffset = MLX5_BYTE_OFF(fte_match_param,\ - misc_parameters_2.metadata_reg_c_1),\ + misc_parameters_2.metadata_reg_c_1) + 3,\ } #define REG_MAPPING_MLEN(reg) (mlx5e_tc_attr_to_reg_mappings[reg].mlen) @@ -113,7 +113,7 @@ mlx5_tc_ct_delete_flow(struct mlx5e_priv *priv, bool mlx5e_tc_ct_restore_flow(struct mlx5_rep_uplink_priv *uplink_priv, - struct sk_buff *skb, u16 zone); + struct sk_buff *skb, u8 zone_restore_id); #else /* CONFIG_MLX5_TC_CT */ @@ -181,9 +181,9 @@ mlx5_tc_ct_delete_flow(struct mlx5e_priv *priv, static inline bool mlx5e_tc_ct_restore_flow(struct mlx5_rep_uplink_priv *uplink_priv, - struct sk_buff *skb, u16 zone) + struct sk_buff *skb, u8 zone_restore_id) { - if (!zone) + if (!zone_restore_id) return true; return false; From patchwork Fri Jul 10 03:44:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326441 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=aI9/qOSp; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXm3DMSz9sRN for ; Fri, 10 Jul 2020 13:48:24 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727831AbgGJDsX (ORCPT ); Thu, 9 Jul 2020 23:48:23 -0400 Received: from mail-eopbgr80070.outbound.protection.outlook.com ([40.107.8.70]:20294 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727092AbgGJDsP (ORCPT ); Thu, 9 Jul 2020 23:48:15 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=koc5uNhEYkVNWz5UqM+kN5tevge/SRxSTJUK5PvvQm8oZ/FO9LhH9+hJQM9IOImvxHUBHiOdvuYi2Z6LF94Gtl+DLpErSFHO4OpmutEQKtL+eOpw+eK43mL4Ok2N/zgvW57sOGeAmi9Qistb2/sseLYdWgImrFoDsubxxSyD+xCbyRn8Ewt9wrFctfhatdgO9xuIYp+WvdyjmlW/yIYgD0xvlQ8x9rqQSU0qeP5/t2Co7mGFXoW+p2NgmrgCAzUezRsBHkB3d+As6wNfgBf5i/wLZXoBvX2kVE0ltcfmb4cVmLBeJD1Bs6DVipG1o3+Q0ALfpbfvzUF23m7hJxDu5g== 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=1P9vinXFOnr2zhTqt72YoXmnVscZ9TK+3gCejPkgUWQ=; b=mGslqrncSTEm17Sa2Dj07Y3MjqhUbrECNy9OSjRQqBgMZ7qe5QmwNdGEB1IkFaWE8YA8VHX3oDXJ712zVQyyNEt6tlpCZuTzkKrw4yNV31Aoe8Z/EevFqL/ob/XQGrZ7/nRTji0Q5fZllhLVRftX2WSMMmDSI51oCpDL4eFlFoZ9ZzDqTIiyl207KNqlOJLY+gIBVhf6l/ZSHwN/ijGL54qJ4fggRKG6OpTIvS5xkweUvxf+7Xa4eZswmJ+/7ILndN8C3oWESRPAKL7q5vIWJgI8RQ+71bilQYrPVTVd/PMLhamNpDrdQqMdtqQN3OCO7ZVLnZ390Pq4rmmFnNfGaw== 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=1P9vinXFOnr2zhTqt72YoXmnVscZ9TK+3gCejPkgUWQ=; b=aI9/qOSpqkGmiM7g1TXjIJ+AWxroqkX5wU4kk55HL5+3jtwOuFuLB/dcMvZ7JbfViS3FgPM3kI+XcQhL/0LK4DVJ0SDofd+vVMlJ4jOeH9wfkLD93RlesnplKf/7e7KO004tgu3+vhe6K7rSG9WN0u3S35bwmBAorAZ5rX29yZI= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:48:03 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:48:02 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Paul Blakey , Oz Shlomo , Saeed Mahameed Subject: [net-next 10/13] net/mlx5e: CT: Expand tunnel register mappings Date: Thu, 9 Jul 2020 20:44:29 -0700 Message-Id: <20200710034432.112602-11-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:48: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: 75995f8f-9c7b-49e8-8e33-08d824840bd0 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:5516; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: jTkPsOPwJ6BCMf1PlTyolIGfse9iKMxP9alIdSGRMzimael2bVfoudYOq7t2/pTWHfEDB7KI6O+Nx1tLl6CrC7bNmwWC74WzmN0UCfr52SzNSMLMqO59cflVbjxHVmH/RjQhGjFSsSW8kBxQzLXHEpyFLWjPq/qBGOEK1azXEVyNSB14+7R5cbRfbXjuhXKzUTaTKYUFil5g/O87dV3i/FlVlQnw2sMvr1D3ru3CQSz2XV0htifvic6tlITglLFmiXmK0ByKKcTz8vBm+DGVNPtXPCYa+lEhe5Rd9e/8KImfVnqNwMjJvuf/kYSbbK+Bb+Md2VuoRNfZ8SIAstPi76hu/ubCs4LB3XKjQzyepdRr63ltcN7lw6MJDYTLNnZf 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 4swCEy+Q5SuNwjYX+A/kNVxkq/5P3QV46WvRSfaOd4c3HdhHfoTalBJ+BhmCwohWbx4k0b2k3vQsmR/MwcsGYRbC5zYKUmSk8BMIpQ1feSp7T4Gk470obSh4FtDTJZhw+ho6S+QiQuS36zMYtrnyR0RU+StpuPt2sHDQwGyQIwaWe4x/IkWk4BTap9QZFR6b9ARKXvmxlt/mBVq7k0ew+NCnGK3CKvkygzWAB1zBwzmomFRZEd5WpARYbwoyYwe2yLwYOOUhSOvqDPLPNqkfD2k6TZRs5K8GNAcRfj8wVITT4eyYGkIFRFgrS06+oRBxX/ve54ORPHpRgKLscg4qYsHMfl+wKpnE2MfvIujOdFoYT32I4re7a3+iuMm+IxxuldibY9ctNAJJMmWv33/xnesPoFI2CwY6rYyDfrOgG+XxjjKTbWioNnB/psXUD47BimC9WnIEFWO/hGwMAbcsZNEuNPzQAi++qE4Veq1+gLU= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75995f8f-9c7b-49e8-8e33-08d824840bd0 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:48:02.9113 (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: /DQwhV41J9DM+INwzd52cg3s8Pf2fUIjPIX3Pa7EHuyg3dBpT4kE10atg2bQfHbi29OMx33XMoUkkwuZ94/ylA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Paul Blakey Reg_c1 is 32 bits wide. Originally, 24 bit were allocated for the tuple_id, 6 bits for tunnel mapping and 2 bits for tunnel options mappings. Restoring the ct state from zone lookup instead of tuple id requires reg_c1 to store 8 bits mapping the ct zone, leaving 24 bits for tunnel mappings. Expand tunnel and tunnel options register mappings to 12 bit each. Signed-off-by: Paul Blakey Reviewed-by: Oz Shlomo Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 4 ++-- drivers/net/ethernet/mellanox/mlx5/core/en_tc.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 3814c70b5230..fa41c49691a7 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -180,8 +180,8 @@ struct mlx5e_tc_attr_to_reg_mapping mlx5e_tc_attr_to_reg_mappings[] = { }, [TUNNEL_TO_REG] = { .mfield = MLX5_ACTION_IN_FIELD_METADATA_REG_C_1, - .moffset = 3, - .mlen = 1, + .moffset = 1, + .mlen = 3, .soffset = MLX5_BYTE_OFF(fte_match_param, misc_parameters_2.metadata_reg_c_1), }, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h index b69f0e376ec0..437f680728fd 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.h @@ -70,9 +70,9 @@ struct tunnel_match_enc_opts { * Upper TUNNEL_INFO_BITS for general tunnel info. * Lower ENC_OPTS_BITS bits for enc_opts. */ -#define TUNNEL_INFO_BITS 6 +#define TUNNEL_INFO_BITS 12 #define TUNNEL_INFO_BITS_MASK GENMASK(TUNNEL_INFO_BITS - 1, 0) -#define ENC_OPTS_BITS 2 +#define ENC_OPTS_BITS 12 #define ENC_OPTS_BITS_MASK GENMASK(ENC_OPTS_BITS - 1, 0) #define TUNNEL_ID_BITS (TUNNEL_INFO_BITS + ENC_OPTS_BITS) #define TUNNEL_ID_MASK GENMASK(TUNNEL_ID_BITS - 1, 0) From patchwork Fri Jul 10 03:44:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326442 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=roI6NL4U; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXm6Mzyz9sRR for ; Fri, 10 Jul 2020 13:48:24 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727847AbgGJDsY (ORCPT ); Thu, 9 Jul 2020 23:48:24 -0400 Received: from mail-eopbgr80070.outbound.protection.outlook.com ([40.107.8.70]:20294 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726996AbgGJDsU (ORCPT ); Thu, 9 Jul 2020 23:48:20 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jBBYI4ejKFpuTWvfskb8i1AZDC9wJzawSdlA6gR259CiaKwry+WZ6B7xy727ivcTx68AzogSP36RAEV4gr7i0YTae9jG8yWCr401ZiZx94imZ9AN/UEpwfmOila9wZEn0Y2t7jK8AV7CMIfc7bjgkFVwDMNgm75LEskMoQIkV/cMD8vSWGuDpB+4RUcdrH3cjLBoKRWHp4fdeJWx/GDGBJsQ4jirphGqjFYJjmyTQ0hzJrsUUOykTlA/uc71aRgjMG8klFXbU7SzgnxvfnKHqll1+svr2b1V8vfRkSbgUBLWdxQWEeOR5KL/7Ah1B6DwhT8SjqKFkBUkIVQo9L/GCw== 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=z1obP7f+WVnDKojQLf1iqsiCCwes4YGP/ob3MhyoUYU=; b=MSz9gbqibF7ny2H2PZY1C21TJifrvKkb2z7hviR1SlqR10Q7Vgkgx4NtJDF+Ru3mQsTSyb1LqduoBrX/9o9u5SryG9yff1fg7leZJ0oNNXCms3ZnfYP967d3fZAa18jqWCRzkvPv/ugdsHSF8Dfh3NP7jh8ihrXx8eK16xGYkuLSN/A0+uQmkjX8GUDn7URRmIkZmn1uFbF1r91aTDUEchD7FiJtug6ckWpUXjwF0scGw5dtokcp5nlik/qbm7fXe+C/T12vK1t99CcMGayiFgafA5cbEqxW53crJFKcHCQqMIyMH0FlLYYIIfWqTNf8x2BSvkM+aSWWF3yHsXthYA== 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=z1obP7f+WVnDKojQLf1iqsiCCwes4YGP/ob3MhyoUYU=; b=roI6NL4U6Rrnq+PV/xkrKozxsRN5xeCMno7FcwoyFLsLROPuJv4wsQUnX7YuqHnONihf7egOTklUdCcGEfeppiqzywXzQjL7i6y6GbBHlNsMq3ACBUYkJjXlwUFckkBsLohTZ16x0m9o42TW7yBTGENcuutbwvwf6Yb5otb1SIM= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:48:05 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:48:05 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Saeed Mahameed , Jason Gunthorpe , Roi Dayan Subject: [net-next 11/13] net/mlx5e: CT: Return err_ptr from internal functions Date: Thu, 9 Jul 2020 20:44:30 -0700 Message-Id: <20200710034432.112602-12-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:48:03 +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: ff42d100-8181-4ab1-5d80-08d824840d32 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7219; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: AYHif0RtNaIuU4gM/zEC17NJb3datBFB5xI2Ssm8X8S1Zb5RShTuBQhhNNbFruc3bORdno++quM0bJOGVtknz5hTl59cJk9pMR6OpIBwmanvDnEcd3NRM7J5POpYXM/pXuvS2krRF7hyChIc8FXmGU0f4UNGLFxKBdHgRdwA3tT2BPM3rKOR/mwtawLDzRwG76ClNs0NRFNlYGu05756lbkcP+hSd1gs1B+uEWgrnHGIJM0amYi3rK5uzh7kUK9NbxU0Zj5JR7cz047UHeF87kaQS9j+llayyjrriitHJUnIHafvCKbcMWqx/1TuAJwzRiFyhFzueqadg4ekRNTgvreb2ciUsTMdx8kNkwTYSZHcJUWkrABj1G6NCFd2jcWm 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: F8N3B8AuM6OkWDLdVZQMk0mJV/AzP95M+b/pQoZvcU3MQTJL4fUHPTyN5ADqHipstJkYnJ6a+jfMvcorS/298jEt2w0TJqaUbVpvZL2M/vzzNhRQyI1K3N7SZh90mDQaf8CDtoAxnym72yP7+G6adWqdB3mf4Gs7l0NskLOjkvD9Z8EDvm8bGradcZaft3m0t/tX6u4uggnGNmFhmyk+DsJHTYc6EUChPOW45s7lV4O0PhYvp3lDKQEWcVuyWomxB55qLr64ms5/KwJ9GV9h6sP8BRBC23GmfTjM4yd6zRgJGe1rUFW2jtUf81/tCyWroyRzi5WtTNTpqQ2aq5jNUZUB3++PEiFiYP+Sft7p6wTtaKorAkBB+03dGxbuHqFkTsFZj+BNdrFxFTXbFs0vT6HTR8mu4f6T041zcWD6fPlQUie96NNIMP9NjiAEZg8JO83Jm6YjDk/FtQRkhTehWyDJxZE615Le4E/dDZUxD/8= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ff42d100-8181-4ab1-5d80-08d824840d32 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:48:05.1321 (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: A4FixfwgH4/XwLrNPdsY1vmJDfMRhbcT+YxMeLVzfLT8HHdNPJn1tyM/VdGvHuIVr9XKec5mg7aGA/s3C5Gc9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Instead of having to deal with converting between int and ERR_PTR for return values in mlx5_tc_ct_flow_offload(), make the internal helper functions return a ptr to mlx5_flow_handle instead of passing it as output param, this will also avoid gcc confusion and false alarms, thus we remove the redundant ERR_PTR rule initialization. Signed-off-by: Saeed Mahameed Suggested-by: Jason Gunthorpe Reviewed-by: Roi Dayan --- .../ethernet/mellanox/mlx5/core/en/tc_ct.c | 37 +++++++------------ 1 file changed, 14 insertions(+), 23 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 3802a26e944c..709ad0012c24 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -1400,12 +1400,11 @@ mlx5_tc_ct_del_ft_cb(struct mlx5_tc_ct_priv *ct_priv, struct mlx5_ct_ft *ft) * + fte_id match +------------------------> * +--------------+ */ -static int +static struct mlx5_flow_handle * __mlx5_tc_ct_flow_offload(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow, struct mlx5_flow_spec *orig_spec, - struct mlx5_esw_flow_attr *attr, - struct mlx5_flow_handle **flow_rule) + struct mlx5_esw_flow_attr *attr) { struct mlx5_tc_ct_priv *ct_priv = mlx5_tc_ct_get_ct_priv(priv); bool nat = attr->ct_attr.ct_action & TCA_CT_ACT_NAT; @@ -1425,7 +1424,7 @@ __mlx5_tc_ct_flow_offload(struct mlx5e_priv *priv, if (!post_ct_spec || !ct_flow) { kfree(post_ct_spec); kfree(ct_flow); - return -ENOMEM; + return ERR_PTR(-ENOMEM); } /* Register for CT established events */ @@ -1546,11 +1545,10 @@ __mlx5_tc_ct_flow_offload(struct mlx5e_priv *priv, } attr->ct_attr.ct_flow = ct_flow; - *flow_rule = ct_flow->post_ct_rule; dealloc_mod_hdr_actions(&pre_mod_acts); kfree(post_ct_spec); - return 0; + return rule; err_insert_orig: mlx5_eswitch_del_offloaded_rule(ct_priv->esw, ct_flow->post_ct_rule, @@ -1568,16 +1566,15 @@ __mlx5_tc_ct_flow_offload(struct mlx5e_priv *priv, kfree(post_ct_spec); kfree(ct_flow); netdev_warn(priv->netdev, "Failed to offload ct flow, err %d\n", err); - return err; + return ERR_PTR(err); } -static int +static struct mlx5_flow_handle * __mlx5_tc_ct_flow_offload_clear(struct mlx5e_priv *priv, struct mlx5e_tc_flow *flow, struct mlx5_flow_spec *orig_spec, struct mlx5_esw_flow_attr *attr, - struct mlx5e_tc_mod_hdr_acts *mod_acts, - struct mlx5_flow_handle **flow_rule) + struct mlx5e_tc_mod_hdr_acts *mod_acts) { struct mlx5_tc_ct_priv *ct_priv = mlx5_tc_ct_get_ct_priv(priv); struct mlx5_eswitch *esw = ct_priv->esw; @@ -1589,7 +1586,7 @@ __mlx5_tc_ct_flow_offload_clear(struct mlx5e_priv *priv, ct_flow = kzalloc(sizeof(*ct_flow), GFP_KERNEL); if (!ct_flow) - return -ENOMEM; + return ERR_PTR(-ENOMEM); /* Base esw attributes on original rule attribute */ pre_ct_attr = &ct_flow->pre_ct_attr; @@ -1624,16 +1621,14 @@ __mlx5_tc_ct_flow_offload_clear(struct mlx5e_priv *priv, attr->ct_attr.ct_flow = ct_flow; ct_flow->pre_ct_rule = rule; - *flow_rule = rule; - - return 0; + return rule; err_insert: mlx5_modify_header_dealloc(priv->mdev, mod_hdr); err_set_registers: netdev_warn(priv->netdev, "Failed to offload ct clear flow, err %d\n", err); - return err; + return ERR_PTR(err); } struct mlx5_flow_handle * @@ -1645,22 +1640,18 @@ mlx5_tc_ct_flow_offload(struct mlx5e_priv *priv, { bool clear_action = attr->ct_attr.ct_action & TCA_CT_ACT_CLEAR; struct mlx5_tc_ct_priv *ct_priv = mlx5_tc_ct_get_ct_priv(priv); - struct mlx5_flow_handle *rule = ERR_PTR(-EINVAL); - int err; + struct mlx5_flow_handle *rule; if (!ct_priv) return ERR_PTR(-EOPNOTSUPP); mutex_lock(&ct_priv->control_lock); + if (clear_action) - err = __mlx5_tc_ct_flow_offload_clear(priv, flow, spec, attr, - mod_hdr_acts, &rule); + rule = __mlx5_tc_ct_flow_offload_clear(priv, flow, spec, attr, mod_hdr_acts); else - err = __mlx5_tc_ct_flow_offload(priv, flow, spec, attr, - &rule); + rule = __mlx5_tc_ct_flow_offload(priv, flow, spec, attr); mutex_unlock(&ct_priv->control_lock); - if (err) - return ERR_PTR(err); return rule; } From patchwork Fri Jul 10 03:44:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326445 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=M5paGSl7; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXw1yVzz9sRN for ; Fri, 10 Jul 2020 13:48:32 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727868AbgGJDsb (ORCPT ); Thu, 9 Jul 2020 23:48:31 -0400 Received: from mail-eopbgr130078.outbound.protection.outlook.com ([40.107.13.78]:20955 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727116AbgGJDsV (ORCPT ); Thu, 9 Jul 2020 23:48:21 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JUVfdmY92ZZ7qcBjKwuAQqiRQUJhQ4jMhpoWGSBLs+odYp1Io20ksAMmy47lnZjHalx5lsffjnnjd91/Is9Gm2jQOGcBX8ktkw7vEwAgk5KXzgzNjph6InNjmOkgUvMK4InVH4cH1LfzEDBUiYdG+v0y57ykF9Rt220g7jbM7eyQh/UvGG5ELYxDVF2bLkQlPLYIJCr/CfmT1/RNil7CSJ18dwt9k6msBmTd7Ms8hGyKW3OEN0ePiJyAJ7/RnRODVorlfvwltOuwM/CD/ZT17mUUhFqqk8v3Zr9Vm3ELTypLF7BA2PxetZFPMDG3TAMPzTKAXzyfl023gIxTZbRJsw== 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=Xv4xDTDySQMB3NgZYueTzpfn6+jNy8kzGLChQzDzI2c=; b=XEp5kGM591CCvc3g0g6nOOXaDX7tCKgwByzA3v/uBd+iEioNmaNCUJEAiReBr1OCqqeWeds6TjmHkKAo4rBVGGxv5IgnsVRFOBjT3lWN/zRX+8QlHomUrBiKk2wQUEUJYujBa8RJ4m2ofXffANKJ3nKuB5+3bEYhhawPqzQ8QOkCwKshb77PnA/+KFBSYtLfQ6iXNZBMy3FE+CJ4MqxgRWh3BvOAOauMleVKsy/3yAqxtGd3AERzm8lsbIAHNagjmCR+iWm7HPkPymGYvg6qygk288PsynCqAUPngQH2q6Y/Ow05AXfuAHYw8w2zccEyXf1lKlf7wtZMXT4O6FUrRQ== 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=Xv4xDTDySQMB3NgZYueTzpfn6+jNy8kzGLChQzDzI2c=; b=M5paGSl7X/tqYa5nomB651rWIpzeHPsHiRlfxKWspaXOot6W9z2SVeJd4YAFrhF2gmBrppxWQh2dEnSaE2/GOvL32XGWXL+JynWy3J2z8hJkVpvi3wcdix9Ft9EGU7MNp3o35PwOMNhNe9oWVypYnSU9RLeuhXo+/i8eFtuVvMA= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:48:07 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:48:07 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Saeed Mahameed , Roi Dayan Subject: [net-next 12/13] net/mlx5e: CT: Remove unused function param Date: Thu, 9 Jul 2020 20:44:31 -0700 Message-Id: <20200710034432.112602-13-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:48:05 +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: e4ff9f82-56b5-4a0d-e196-08d824840e66 X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2331; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: l6n2T/AZqRZYcFMrFyqaNgl7ZK4aT2WCfIcIOZvG0oHGHXfbg4wrHIh93w4TUBWfmdtYHbm2no7h73XpYi/b3fx1qSTUJEWZSyV3OcsS8oCFd1hM77MGmxFAn2hM4Px80kucjkon2Gq+6GGgPw0iY+AJDKJB74tni+ESeSmyqig3aRhnQocLs3QiS8QGC5n0LfkJOZ1cKl6mlG35YizDciQeSwMa3SU/+XFXJQQ3FPifMEWNeJk2P9hJTCvidxwChDVCRufjDy58vh1JPcM2mOlj8+GqK5u3RIzO/Ffe7UVbjEGg2ppIIukMD83qEzE3a2LPNchoaphbtHp8k5KHUdMZ60Jl03YeyhkFvgO+k7kHY7DBn/ohU/SY1pXn2VGG 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: bybbEN/9xnZvdHcY8t83u1gX6Q6cQdKvMb1QyON24CZqOavS/bH9GC0KEPo+xzQrfKRKclmnL4Lj7/smr+L6Ahh4MXwiiYe7kSgQvpDXLqs9BfeEekWkP8c3rRF5XXVWkydvfaglIsPhH3XtKIZjf3Cs7+jlZvE6WBhDSoqllXu7WgF1ZkUSbZl54l0Tg4UP28jH2oMsvfP0E5Fln+9je7XJ/vFXmqFK08K4RIKmPSdSZZhQykZUG/uNuPzfTl+lLZofe9qE30115vHfgVkWe1Qm0WDo304LLaM5/DtBJBkg48mfmeqzv5Y+zG5fDRIdgHaR+TZjSlvv/9dRVeA1kslrSQ9V+vl6ZTr6zb8KpodbXsagbsFMEF0PKvHdgcOc5rd+NNmTbOYMQ2irG9XMEGTCvOmlH5h4f1mc/IpDW3l2DQQf6OUGe+mifLja8I7M8ADKv6kWlqbSa36LaEdy6k+/lZBKlaTv+kMLCB4uSWk= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: e4ff9f82-56b5-4a0d-e196-08d824840e66 X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:48:07.2559 (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: xmVJzk+zLF0qCBt0BIKqVrFx93AIAiMOvJ/HW+TtHiqWhs4Sv0sCDrkvi4LFfwX7CTOhZ63hZcyUklzeIxSQAA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org "flow" parameter is not used in __mlx5_tc_ct_flow_offload_clear(), remove it. Signed-off-by: Saeed Mahameed Reviewed-by: Roi Dayan --- drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 709ad0012c24..96225e897064 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -1571,7 +1571,6 @@ __mlx5_tc_ct_flow_offload(struct mlx5e_priv *priv, static struct mlx5_flow_handle * __mlx5_tc_ct_flow_offload_clear(struct mlx5e_priv *priv, - struct mlx5e_tc_flow *flow, struct mlx5_flow_spec *orig_spec, struct mlx5_esw_flow_attr *attr, struct mlx5e_tc_mod_hdr_acts *mod_acts) @@ -1648,7 +1647,7 @@ mlx5_tc_ct_flow_offload(struct mlx5e_priv *priv, mutex_lock(&ct_priv->control_lock); if (clear_action) - rule = __mlx5_tc_ct_flow_offload_clear(priv, flow, spec, attr, mod_hdr_acts); + rule = __mlx5_tc_ct_flow_offload_clear(priv, spec, attr, mod_hdr_acts); else rule = __mlx5_tc_ct_flow_offload(priv, flow, spec, attr); mutex_unlock(&ct_priv->control_lock); From patchwork Fri Jul 10 03:44:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1326443 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=rxcIUVwy; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4B2zXp5wjBz9sRR for ; Fri, 10 Jul 2020 13:48:26 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727856AbgGJDs0 (ORCPT ); Thu, 9 Jul 2020 23:48:26 -0400 Received: from mail-eopbgr80070.outbound.protection.outlook.com ([40.107.8.70]:20294 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727807AbgGJDsX (ORCPT ); Thu, 9 Jul 2020 23:48:23 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Kf97ylpuz565NRZoLK3MuhIs7ltlsT/BjDxxxLT8BdjjfKuCyMczeO6P8hOcHKt1WNMP7Vjb05XuVnPgCciSQXr0qYB04tDfzKlBg+wgYGVcjMuey4Ssgmr4cKwI9q70KnsRhCBfMiwQhcHZYqE4GPAw/LEcEVWIZKDIosVaw2taOqjJxnSo+LXGmi+99BK2DEpVqYhePPshFQzlnOq2ZXBFoWONQYY+5mPI+qgCHtdxkWIKdDmcW20WYZlSPVL9hw5jYFaXsQyyiMG4rWaj1W6sMAQNRxkrKUAYpHTnKm9JYyaTZIg/+b4gCwNJeyVleE9hLG6OQE09xm/LN89Ang== 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=p3a8Asw6cO7+8UdxlU1bgOQ+yCroSktXKRJ3M9Xtmt8=; b=SAmANl/pb8RWKA6xOU9znFh3sDUXmt4LDq+JOyflwwM+3VcPP2hJusuHcVeaFd4fCWg/Jn7j4yJt8b3tUm5hgD3o4QZq1Yct+i6wjLvpKapRKP85sOe0XDzkQVjFI1EJPZm6KzqbpT9Vy67y4pxGIsXBhpgX4pLDpjgWX0/ZcKaQzwZJM38R/SNoi7oIepDqstYShoMpo8uZj6htho+ggRyAmaGeyFm8FZR+f+s+LTrOd28qE0JefIIjaVmP94N4LC2ivtPZMEghrFTFxs+Hq2txB2/SaIFlutC5ZQH13oXaB+PfBcgPvkDeY8nCYbt8u/DVd9AjSpw7opR7TlXZ5g== 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=p3a8Asw6cO7+8UdxlU1bgOQ+yCroSktXKRJ3M9Xtmt8=; b=rxcIUVwymhi/VwNIaR5HJK2xypDDMbalhUMGGEpM3JQEjUthgxSsHiibwvSw7rE2yYnVzfE8lbOVlJQL2dMa2InsVdyKTb3voIgrPpksQshp8sTVnoIZFT81URcKPSDzEY3GUZ1TvplwTPzF/8VptCAbrESnihA96aZ1aXlpCQ4= 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 VI1PR05MB4512.eurprd05.prod.outlook.com (2603:10a6:803:44::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.20; Fri, 10 Jul 2020 03:48:09 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::2405:4594:97a:13c%2]) with mapi id 15.20.3174.022; Fri, 10 Jul 2020 03:48:09 +0000 From: Saeed Mahameed To: "David S. Miller" , Jakub Kicinski Cc: netdev@vger.kernel.org, Roi Dayan , Eli Britstein , Saeed Mahameed Subject: [net-next 13/13] net/mlx5e: CT: Fix releasing ft entries Date: Thu, 9 Jul 2020 20:44:32 -0700 Message-Id: <20200710034432.112602-14-saeedm@mellanox.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200710034432.112602-1-saeedm@mellanox.com> References: <20200710034432.112602-1-saeedm@mellanox.com> X-ClientProxiedBy: BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) 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 BY5PR03CA0022.namprd03.prod.outlook.com (2603:10b6:a03:1e0::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3174.22 via Frontend Transport; Fri, 10 Jul 2020 03:48:07 +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: be50fcf0-c470-4326-e38f-08d824840fdd X-MS-TrafficTypeDiagnostic: VI1PR05MB4512: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:185; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: a7oB0yDPQjHS0o2ijlgaREhwfvP186n5yor3EJLYTNKpvdJ6CqCsY0vSJKIr1sxk1RXxckR6w/eg3Fwfpq0oB+KeIPQj9ujoY8vrRwkq7/O98A7bqJWGobvcCNZL9n5P2CMu3v4tRQkvnos6hmm1I0HiCU4x1Eh2H+vktM2gZj8pHuEYmDpSmsJE9hX57osPL5L6QmNIF8QKi3XmxSLo8pZY/pwOIVSCTAh6QXNz+xsBjDsLBd3TGtTtqBwTlIMBChexVD28NFPk8zVMT0OQGqqzlYVCqwM8mjtkCn9pP8ncO/pxdiSFePkAuWO/RY5/puDa3XPdO6JDj07+GtfFI/z5/DyYG6Zl3n+IX5TlajZodK0OQcCeTp6FS0ERsmX3 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)(366004)(136003)(346002)(396003)(39860400002)(2906002)(107886003)(86362001)(8936002)(8676002)(6512007)(5660300002)(83380400001)(16526019)(52116002)(66946007)(54906003)(6486002)(186003)(1076003)(956004)(26005)(66556008)(6666004)(6506007)(36756003)(66476007)(478600001)(2616005)(4326008)(110136005)(316002)(54420400002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: s/7ZzxL1HPwnFFw+gQ7qPyWKBYl2yTAKwAVjyOcu6iz7CuYRf01J1nRVryoWEbVCeqIZ00sIwEfgrURE+kVIVIAlo/A7Vi1UOeFyg8PEYpj3oyVIdtOj/IfLF/JLEtvvXr3iqCiSBbyG1A5wLSOo5cmXFpHy0Fo3Gx3vA9YqxD4EhS6pG+lWpWmkF4C76mbbwb3nXfISznd8zDaW7pfAxdwLlHaEuMl2eS1rxgyS+FCfiR4nFqOhqtGI6YWif/1WZJB0D86bIiGp/6unQRLC3ludfkejVN96+6ZqtlFKEGlzy3BNvbsfAXtbQRRX57cwTEqP21OlxxW0nRc0aQigoY7thkSawe0uvqd/7IFtyVOE2L1rj8WnEEJpETqy3yjZhTYtt0A2xH8KO4Q92hfTPnTk+JCzyQ0v0EI5OVycprRruLdEmU5J+GHmU+GDuD+prS6jWHATtz9/F1Ldux9CU9rTDox9JY1mJNdVy1gV7W4= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: be50fcf0-c470-4326-e38f-08d824840fdd X-MS-Exchange-CrossTenant-AuthSource: VI1PR05MB5102.eurprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2020 03:48:09.5467 (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: LWPmrMm7ldlsu1DrPJWWtWa6REtpO94a5FslVGrLDEdLxVRcGMKBkUNVeX3Had47JLE0o0VsuaCjMFlAYzWzrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB4512 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Roi Dayan Before this commit, on ft flush, ft entries were not removed from the ct_tuple hashtables. Fix it. Fixes: ac991b48d43c ("net/mlx5e: CT: Offload established flows") Signed-off-by: Roi Dayan Signed-off-by: Eli Britstein Signed-off-by: Saeed Mahameed --- .../ethernet/mellanox/mlx5/core/en/tc_ct.c | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c index 96225e897064..4c65677feaab 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc_ct.c @@ -817,6 +817,19 @@ mlx5_tc_ct_block_flow_offload_add(struct mlx5_ct_ft *ft, return err; } +static void +mlx5_tc_ct_del_ft_entry(struct mlx5_tc_ct_priv *ct_priv, + struct mlx5_ct_entry *entry) +{ + mlx5_tc_ct_entry_del_rules(ct_priv, entry); + if (entry->tuple_node.next) + rhashtable_remove_fast(&ct_priv->ct_tuples_nat_ht, + &entry->tuple_nat_node, + tuples_nat_ht_params); + rhashtable_remove_fast(&ct_priv->ct_tuples_ht, &entry->tuple_node, + tuples_ht_params); +} + static int mlx5_tc_ct_block_flow_offload_del(struct mlx5_ct_ft *ft, struct flow_cls_offload *flow) @@ -829,13 +842,7 @@ mlx5_tc_ct_block_flow_offload_del(struct mlx5_ct_ft *ft, if (!entry) return -ENOENT; - mlx5_tc_ct_entry_del_rules(ft->ct_priv, entry); - if (entry->tuple_node.next) - rhashtable_remove_fast(&ft->ct_priv->ct_tuples_nat_ht, - &entry->tuple_nat_node, - tuples_nat_ht_params); - rhashtable_remove_fast(&ft->ct_priv->ct_tuples_ht, &entry->tuple_node, - tuples_ht_params); + mlx5_tc_ct_del_ft_entry(ft->ct_priv, entry); WARN_ON(rhashtable_remove_fast(&ft->ct_entries_ht, &entry->node, cts_ht_params)); @@ -1348,7 +1355,8 @@ mlx5_tc_ct_flush_ft_entry(void *ptr, void *arg) struct mlx5_tc_ct_priv *ct_priv = arg; struct mlx5_ct_entry *entry = ptr; - mlx5_tc_ct_entry_del_rules(ct_priv, entry); + mlx5_tc_ct_del_ft_entry(ct_priv, entry); + kfree(entry); } static void