From patchwork Tue Jun 25 17:47:48 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 11016165 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 60D2E112C for ; Tue, 25 Jun 2019 17:47:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 529A6283CF for ; Tue, 25 Jun 2019 17:47:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 462EC283F9; Tue, 25 Jun 2019 17:47:56 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C0A3D283CF for ; Tue, 25 Jun 2019 17:47:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732428AbfFYRrz (ORCPT ); Tue, 25 Jun 2019 13:47:55 -0400 Received: from mail-eopbgr80085.outbound.protection.outlook.com ([40.107.8.85]:15870 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729493AbfFYRry (ORCPT ); Tue, 25 Jun 2019 13:47:54 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sKDrVFgUU5PbxzwVTw3OD0RZcZV9T7qgQbZHn7vIhV0=; b=jxn4tieFUXFEBLS2znHHOaG9V8IhHKxpV/wKx4yVAs0rCl1U/wpffuN9POW2EvPN5Ovvp13SXoEJQZPdKv273cllQqRBxTiyvXq+yQPIXQrfTu9HRFYEEwf0lRt+tq5Th49/BzxIxpGu+8VIIgfM7GbZHkAlyotrRZhg4qjYOvE= Received: from DB6PR0501MB2759.eurprd05.prod.outlook.com (10.172.227.7) by DB6PR0501MB2216.eurprd05.prod.outlook.com (10.168.55.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2008.16; Tue, 25 Jun 2019 17:47:48 +0000 Received: from DB6PR0501MB2759.eurprd05.prod.outlook.com ([fe80::a901:6951:59de:3278]) by DB6PR0501MB2759.eurprd05.prod.outlook.com ([fe80::a901:6951:59de:3278%2]) with mapi id 15.20.2008.014; Tue, 25 Jun 2019 17:47:48 +0000 From: Saeed Mahameed To: Saeed Mahameed , Leon Romanovsky CC: "netdev@vger.kernel.org" , "linux-rdma@vger.kernel.org" Subject: [PATCH V2 mlx5-next 00/13] Mellanox, mlx5 vport metadata matching Thread-Topic: [PATCH V2 mlx5-next 00/13] Mellanox, mlx5 vport metadata matching Thread-Index: AQHVK34a1Kbi2wF+mkOypz3S1XQRsQ== Date: Tue, 25 Jun 2019 17:47:48 +0000 Message-ID: <20190625174727.20309-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BY5PR04CA0026.namprd04.prod.outlook.com (2603:10b6:a03:1d0::36) To DB6PR0501MB2759.eurprd05.prod.outlook.com (2603:10a6:4:84::7) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5af2db9a-7d05-4cc2-7b43-08d6f9953c66 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(4618075)(2017052603328)(7193020);SRVR:DB6PR0501MB2216; x-ms-traffictypediagnostic: DB6PR0501MB2216: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-forefront-prvs: 0079056367 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(366004)(136003)(346002)(396003)(376002)(39860400002)(189003)(199004)(36756003)(26005)(1076003)(86362001)(14454004)(50226002)(52116002)(110136005)(6116002)(186003)(6506007)(5660300002)(68736007)(386003)(8936002)(2906002)(3846002)(6436002)(14444005)(256004)(316002)(102836004)(478600001)(81166006)(53936002)(6512007)(450100002)(4326008)(486006)(7736002)(8676002)(66556008)(64756008)(66946007)(73956011)(99286004)(66476007)(66446008)(66066001)(2616005)(305945005)(81156014)(71190400001)(54906003)(71200400001)(476003)(6636002)(25786009)(6486002);DIR:OUT;SFP:1101;SCL:1;SRVR:DB6PR0501MB2216;H:DB6PR0501MB2759.eurprd05.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: J9Ks5uNtU6DjTOZ/RdOHAKrOnZQ1BTU5D0P3tBbgXFlQNFBV7EQBaXUcWTNkG4V7BlhY7sQeb29UeHuMkiTPgfr2OAHm9wC2P1UKZZthgRXnHh7kUX2kHSayd5AsjjyfZEqS+60c56iaIZNu7cq2TMUZOrEQ+W5jLrSHNCtELVjEVumm0lfNwRVBYvXzq8lJiduPwBBqCawzj0S0h3unh2h1J6Hx/hZCXk8uvtmLzPTLTTFb/kHX/xHik0k08bWPWd/lKSqSda+op3xco3LsbDkYX/f5jbnGS8FJjQzEkiVMLNulpEKPar7ZazKXtQIWdHURMt43mTPGUKrclGxJIbtkytYk263RtqpynhSkJ19KbBtatAoU4ua/niX1ljtZLgmLSTzllEB/u/IFPOXoPBkYeFo9ihHa5XYgup//8Xg= Content-ID: <79E22F8C25CF8C42B436A0606522F85A@eurprd05.prod.outlook.com> MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5af2db9a-7d05-4cc2-7b43-08d6f9953c66 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Jun 2019 17:47:48.2890 (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: saeedm@mellanox.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0501MB2216 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This series includes mlx5 updates for both rdma and net-next trees. In case of no objection it will be applied to mlx5-next branch and later on will be sent as pull request to rdma and net-next. From Jianbo, Vport meta data matching: Hardware steering has no notion of vport number, and vport is an abstract concept, so firmware need to translate the source vport matching to match on the VHCA ID (Virtual HCA ID). In dual-port RoCE, the dual-port VHCA is able to send also on the second port on behalf of the affiliated vport, so now we can’t assume anymore that vport is represented by single VHCA only. To resolve this issue, we use metadata register as source port indicator instead. When a packet enters the eswitch, eswitch ingress traffic passes the ingress ACL flow tables, where we tag the packets (via the metadata value, in this case REG_C at index 0) with a unique value which will act as an alias of the vport. In order to guarantee uniqueness, we use the eswitch owner vhca id and the vport number as that value. Usually, the vports are numbered in each eswitch as followed: - Physical Function (PF) vport, the number is 0. - Virtual Function (VF) vport, starting from 1. - Uplink vport, the reserved vport number for it is 0xFFFF. With the metadata in each packet, we can then do matching on it, in both fast path and slow path. For slow path, there is a representor for each vport. Packet that misses all offloaded rules in FDB, will be forwarded to the eswitch manager vport. In its NIC RX, it then will be steered to the right representor. The rules, which decide the destination representor, previously were matching on source port, will now match metadata instead. V2: - Remove eswitch cleanup patches from bodong, will submit later. - Remove IB specified APIs (mlx5_ib_eswitch_*) added in V1. - Add mlx5_eswitch_is_vf_vport() to check if the vport is VF vport. - Other small changes. Thanks, Saeed. --- Jianbo Liu (12): net/mlx5: Introduce vport metadata matching bits and enum constants net/mlx5: Get vport ACL namespace by vport index net/mlx5: Support allocating modify header context from ingress ACL net/mlx5: Add flow context for flow tag net/mlx5: E-Switch, Tag packet with vport number in VF vports and uplink ingress ACLs net/mlx5e: Specifying known origin of packets matching the flow net/mlx5: E-Switch, Add match on vport metadata for rule in fast path net/mlx5: E-Switch, Add query and modify esw vport context functions net/mlx5: E-Switch, Pass metadata from FDB to eswitch manager net/mlx5: E-Switch, Add match on vport metadata for rule in slow path RDMA/mlx5: Add vport metadata matching for IB representors net/mlx5: E-Switch, Enable vport metadata matching if firmware supports it Parav Pandit (1): net/mlx5: Introduce a helper API to check VF vport drivers/infiniband/hw/mlx5/flow.c | 13 +- drivers/infiniband/hw/mlx5/main.c | 75 ++- drivers/infiniband/hw/mlx5/mlx5_ib.h | 1 + .../mellanox/mlx5/core/diag/fs_tracepoint.h | 4 +- .../mellanox/mlx5/core/en_fs_ethtool.c | 2 +- .../net/ethernet/mellanox/mlx5/core/en_tc.c | 7 +- .../net/ethernet/mellanox/mlx5/core/eswitch.c | 30 +- .../net/ethernet/mellanox/mlx5/core/eswitch.h | 16 + .../mellanox/mlx5/core/eswitch_offloads.c | 500 ++++++++++++++---- .../ethernet/mellanox/mlx5/core/fpga/ipsec.c | 8 +- .../net/ethernet/mellanox/mlx5/core/fs_cmd.c | 10 +- .../net/ethernet/mellanox/mlx5/core/fs_core.c | 34 +- .../net/ethernet/mellanox/mlx5/core/fs_core.h | 1 + include/linux/mlx5/eswitch.h | 17 + include/linux/mlx5/fs.h | 16 +- include/linux/mlx5/mlx5_ifc.h | 56 +- 16 files changed, 622 insertions(+), 168 deletions(-)