From patchwork Sun Dec 16 08:49:24 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014065 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="QJfQcs+N"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdKB0b6Hz9s47 for ; Sun, 16 Dec 2018 19:50:22 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730264AbeLPIuT (ORCPT ); Sun, 16 Dec 2018 03:50:19 -0500 Received: from mail-eopbgr150083.outbound.protection.outlook.com ([40.107.15.83]:22912 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729758AbeLPIuQ (ORCPT ); Sun, 16 Dec 2018 03:50:16 -0500 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=n4G/Zqy+RwJdn1HEqWoSYwv2jr6421n9yLYimgnnzlg=; b=QJfQcs+NY1qvTnMvxEJbAw+xITM/0XuDRzL7noXGp1XaYoKyRa7rpA5MMqA7X67OEL88wRRKenj4ElzmvUOJoPhMPmft6Al+h3YRgXwDH+PPOBktGZH4ruPswXw0p8VaCsGhR6CB7HRV/FeE00puomuB43wjnabbxCowo/Q5zWo= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB3342.eurprd05.prod.outlook.com (10.170.238.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:24 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:24 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 01/12] mlxsw: reg: Add Policy Engine Algorithmic Bloom Filter Entries Register Thread-Topic: [PATCH net-next 01/12] mlxsw: reg: Add Policy Engine Algorithmic Bloom Filter Entries Register Thread-Index: AQHUlRw+q8DkpaGMzEW/oe1+M8xYcQ== Date: Sun, 16 Dec 2018 08:49:24 +0000 Message-ID: <20181216084851.4967-2-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3342; 6:amBfc/bYyEZcYxiMu5u438Nk7ZVcWfwZZ2WM4Px2xuK2IpXPZyiA8zEUJbj5JPf5JUFQarxCp3BCMu8Pf7udDGotYb3OLSyMV+BbKdybuC7TEvciRFETh3twDpjFkonKa+rUj+zCZndVb31BGwOLsttoSsaTu0b18WrrMlErr1ot/JuH7ZPd2hvnn48acPGJSKU6LLCN11Qzjcsgfy92U7BKtJEs8Lga3zIBpyap6cN2lU5xEizxrq9VC/8R91KiCjCIDVt3niZfe4kb3y3z2YkZ5LkqUNTlNGIl49vqDW1KxDF0TpXEgAasQ0k4ILMXYOLcAppAGY8WXclKPZYY+pML43v4pL4qXPnm0AalGQy9QORWcpjasCPmgeF80DP0djT/m6j7k2/DSTEU6U05yD/rKdfnOktffNxFxtyRJupmou2Gf8jiU5Q14Rbt/USz/9rx2nc7J8Gq9gaKJ5RmQQ==; 5:DdrNIqYL/o3lAqw0LoDpmkWYRJi+B1tLXYJTPp86n8TxaDTM2etzsjRym4hnN/dEVW1Fb4HabH0Lt9MpQj8Oeu2d0X8ZEu8LgVKep6UIIqJuOEAC4KHOYU2jR2HeC6P4BZUXKw64XtIV3vlSK6yNSfX0mz07uwBwFXW+665WAOw=; 7:szxuRMsjC7cPPzCNWljcsVsPNQCW2BdQG2otJ0ym/S6kaFbYE3zHiS6sKWNbY3Jn1L5fr6Av60AasaMpjx+kn5Lm4DPwnjKV63iADb2yf3e3d2JcMimnCzSD8rX6ZwSphr1H3Yk4CEJg9Lax9QCrgg== x-ms-office365-filtering-correlation-id: 26731e8d-efa2-4546-c9f1-08d663336100 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB3342; x-ms-traffictypediagnostic: VI1PR05MB3342: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005020)(6040522)(2401047)(8121501046)(93006095)(93001095)(3231475)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB3342; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3342; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39850400004)(136003)(396003)(199004)(189003)(7736002)(316002)(6506007)(86362001)(105586002)(2501003)(25786009)(305945005)(2351001)(5660300001)(106356001)(6916009)(6486002)(2906002)(107886003)(6116002)(3846002)(8936002)(53936002)(97736004)(6436002)(4326008)(66066001)(81166006)(81156014)(8676002)(1730700003)(5640700003)(68736007)(2616005)(1076002)(76176011)(52116002)(36756003)(478600001)(6512007)(71200400001)(71190400001)(256004)(14444005)(99286004)(476003)(486006)(186003)(446003)(11346002)(26005)(102836004)(386003)(14454004)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3342; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: l4fp+/rQEA+KLL9GPIZ9r0LQ/fa9ToJSbeACq6CK+1zChPtuh0B8H3E0qFSzWDlqJgEMziMbyJjTkKof0HRQ1YiexMkJZDQLJCJPht9C54HRJi69FMmzkgYrnBOk+2+zTZ7wai4Mohi/bZC59dOI84tO8ueU4C1H+iBquCRukPCKMmdJxWkkbG0QHZuHm9xb5cB6FtMXEZsDHiaKsyXIa8j5OxcViciO0lKSS6cwkKMWPUKps6cI81TbKFHJn9a3EFHWeNWH8Oo+mMoloV5GorT9XQWpOt34VELIiTAVD2+NVRkfJA+vDFVZ02BII2oa spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26731e8d-efa2-4546-c9f1-08d663336100 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:24.4459 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3342 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Bloom filter is a bit vector which allows the HW a fast lookup on a small size bit vector, that may reduce the number of lookups on the A-TCAM memory. PEABFE register allows setting values to the bits of the bit vector mentioned above. Add the register to be later used in A-TCAM optimizations. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 67 +++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index ace3a897b3f0..8e1f7ae4342a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -3095,6 +3095,72 @@ static inline void mlxsw_reg_pererp_pack(char *payload, u16 region_id, mlxsw_reg_pererp_master_rp_id_set(payload, master_rp_id); } +/* PEABFE - Policy-Engine Algorithmic Bloom Filter Entries Register + * ---------------------------------------------------------------- + * This register configures the Bloom filter entries. + */ +#define MLXSW_REG_PEABFE_ID 0x3022 +#define MLXSW_REG_PEABFE_BASE_LEN 0x10 +#define MLXSW_REG_PEABFE_BF_REC_LEN 0x4 +#define MLXSW_REG_PEABFE_BF_REC_MAX_COUNT 256 +#define MLXSW_REG_PEABFE_LEN (MLXSW_REG_PEABFE_BASE_LEN + \ + MLXSW_REG_PEABFE_BF_REC_LEN * \ + MLXSW_REG_PEABFE_BF_REC_MAX_COUNT) + +MLXSW_REG_DEFINE(peabfe, MLXSW_REG_PEABFE_ID, MLXSW_REG_PEABFE_LEN); + +/* reg_peabfe_size + * Number of BF entries to be updated. + * Range 1..256 + * Access: Op + */ +MLXSW_ITEM32(reg, peabfe, size, 0x00, 0, 9); + +/* reg_peabfe_bf_entry_state + * Bloom filter state + * 0 - Clear + * 1 - Set + * Access: RW + */ +MLXSW_ITEM32_INDEXED(reg, peabfe, bf_entry_state, + MLXSW_REG_PEABFE_BASE_LEN, 31, 1, + MLXSW_REG_PEABFE_BF_REC_LEN, 0x00, false); + +/* reg_peabfe_bf_entry_bank + * Bloom filter bank ID + * Range 0..cap_max_erp_table_banks-1 + * Access: Index + */ +MLXSW_ITEM32_INDEXED(reg, peabfe, bf_entry_bank, + MLXSW_REG_PEABFE_BASE_LEN, 24, 4, + MLXSW_REG_PEABFE_BF_REC_LEN, 0x00, false); + +/* reg_peabfe_bf_entry_index + * Bloom filter entry index + * Range 0..2^cap_max_bf_log-1 + * Access: Index + */ +MLXSW_ITEM32_INDEXED(reg, peabfe, bf_entry_index, + MLXSW_REG_PEABFE_BASE_LEN, 0, 24, + MLXSW_REG_PEABFE_BF_REC_LEN, 0x00, false); + +static inline void mlxsw_reg_peabfe_pack(char *payload) +{ + MLXSW_REG_ZERO(peabfe, payload); +} + +static inline void mlxsw_reg_peabfe_rec_pack(char *payload, int rec_index, + u8 state, u8 bank, u32 bf_index) +{ + u8 num_rec = mlxsw_reg_peabfe_size_get(payload); + + if (rec_index >= num_rec) + mlxsw_reg_peabfe_size_set(payload, rec_index + 1); + mlxsw_reg_peabfe_bf_entry_state_set(payload, rec_index, state); + mlxsw_reg_peabfe_bf_entry_bank_set(payload, rec_index, bank); + mlxsw_reg_peabfe_bf_entry_index_set(payload, rec_index, bf_index); +} + /* IEDR - Infrastructure Entry Delete Register * ---------------------------------------------------- * This register is used for deleting entries from the entry tables. @@ -9608,6 +9674,7 @@ static const struct mlxsw_reg_info *mlxsw_reg_infos[] = { MLXSW_REG(pemrbt), MLXSW_REG(ptce2), MLXSW_REG(perpt), + MLXSW_REG(peabfe), MLXSW_REG(perar), MLXSW_REG(ptce3), MLXSW_REG(percr), From patchwork Sun Dec 16 08:49:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014059 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="HZKEQuFS"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK63tpHz9s1c for ; Sun, 16 Dec 2018 19:50:18 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730116AbeLPIuF (ORCPT ); Sun, 16 Dec 2018 03:50:05 -0500 Received: from mail-eopbgr60049.outbound.protection.outlook.com ([40.107.6.49]:51904 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729821AbeLPIuE (ORCPT ); Sun, 16 Dec 2018 03:50:04 -0500 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=erLjXhDXpwk4Z1T2dBBNckTTkluvf0lIW5LLOmSG2gw=; b=HZKEQuFSvcZULr/2Fs8z/4YJstIcBkgxtNlFkl2VzxTO6fhXEIJi44o+Q+/xy+C5SKOLLCghCYVqNMEY3XWOM4IeTXTJuE8U/XaD41Nu/fcBIR0A2fCBsb5K/OoGcv1tUcc32w91Rd+ZG+BPwJx63i1urw+13lqq03K1ElktJgg= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB3342.eurprd05.prod.outlook.com (10.170.238.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:25 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:25 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 02/12] mlxsw: resources: Add Spectrum-2 Bloom filter resource Thread-Topic: [PATCH net-next 02/12] mlxsw: resources: Add Spectrum-2 Bloom filter resource Thread-Index: AQHUlRw/VynlOIvG8EKRrVzmwutH6Q== Date: Sun, 16 Dec 2018 08:49:25 +0000 Message-ID: <20181216084851.4967-3-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3342; 6:9nvIXRVmq3vU+lnblio5+S2mhSc3+i+yqRnpWYiU8IqDPR5oulfRPiAbNsjg2AfLz1zfs5D4GA/Gyo7IRscrvy6GdFN77pJjlJh+CzXDANSPejM0NKZg351/Q4AvlOMfZD4UyigkL/U4Mw0LLBTeVALWSbxFNR1Y7gvULVYSe2r5woM9g4t39SlTXBVM/MPRj4BoFqBK2muMpoa8RwsSeOhk51vDTqq2rKWBfH9X3GcXgjWUW/BflDWYZN+HbifXlp9/57Jx+jsfExqgj9JlQ8yoduzb4jBVWb4yS9xTeE0nIW7AaxVmELpGf6xbxogj+u5MIeorgsy+Wxrt0AplCjcqmOqGB/5VJo7spoGtkWC2+Ua1NjuN10l/Q5aFd2uX9d6+xI65XOW0rBuHCMvUaGV2GSutyP1T8/6xFFh++Yq6fjndDHCJ3A5+qsdsEyxYPTpdMesSxNitdwDtifSixw==; 5:uhNnbyC8UpONJkqNv5FMVYK4dCcN9FzYCI2s7HItI3s30hfG0NGyT65pRo0m3Y8NnZffSf6mGxyKAL8ZMfh5Sk629m+SUe6wS+kiq0e09aJYG4err5JKI7r/DpgNXOsQ7aP7xTuHw9Bi614beEaX6XTJG61tlCEjhXNRYMt1Gbg=; 7:UUJtQp1RtgTb4TgD+b4MvZWMXC91vRu5z+c//X81T1mFYlmXmypD0y70dlXymjskuD39OiItsSJMQHUgFMjzpuFLupBnAfjjewZo6JMpKzNvsX+UKSvcd2ajmKkVnw1GVjmSWnjVNIbBcBYNfsGQvA== x-ms-office365-filtering-correlation-id: 1b08717a-a323-4de3-742f-08d6633361a8 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB3342; x-ms-traffictypediagnostic: VI1PR05MB3342: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005020)(6040522)(2401047)(8121501046)(93006095)(93001095)(3231475)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB3342; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3342; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39850400004)(136003)(396003)(199004)(189003)(7736002)(316002)(6506007)(86362001)(105586002)(2501003)(25786009)(305945005)(2351001)(5660300001)(106356001)(6916009)(6486002)(2906002)(107886003)(6116002)(3846002)(8936002)(53936002)(97736004)(6436002)(4326008)(66066001)(81166006)(81156014)(8676002)(1730700003)(5640700003)(68736007)(2616005)(1076002)(76176011)(52116002)(36756003)(478600001)(6512007)(71200400001)(71190400001)(256004)(99286004)(476003)(486006)(186003)(446003)(11346002)(26005)(102836004)(386003)(14454004)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3342; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 2iAwuWPZC8ccwwdmAeJjTiWFo5Ik8xQQ2LerQP+ym65PRAq2w/MHh9k8JK3CItNevw3VMKzDukhTOam0WEirUpfk2SjwF+d/OxliywiLzsMwJeRrASbqcw6bc7nyR8But9emvDX70hU8cmEznpbcmk1UNLvpLudzIGUt9igE2RJzGvCuXAGjSarTvVlwT1bC3z1gALH2SkckcJ/eYwy4C/yHCKcA3IblmQon2GNxmIrfGUnLoyOHbfpIHNAilamdqXMwYvnchAZahYPtDWU+Z7hNNwErvrpCd0xsKiVJFiAXycqXPUA5Kb1Uw87M6fSB spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1b08717a-a323-4de3-742f-08d6633361a8 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:25.6108 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3342 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Add the maximum Bloom filter logarithmic size per eRP table bank. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/resources.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/resources.h b/drivers/net/ethernet/mellanox/mlxsw/resources.h index 99b341539870..b8b3a01c2a9e 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/resources.h +++ b/drivers/net/ethernet/mellanox/mlxsw/resources.h @@ -41,6 +41,7 @@ enum mlxsw_res_id { MLXSW_RES_ID_ACL_ERPT_ENTRIES_4KB, MLXSW_RES_ID_ACL_ERPT_ENTRIES_8KB, MLXSW_RES_ID_ACL_ERPT_ENTRIES_12KB, + MLXSW_RES_ID_ACL_MAX_BF_LOG, MLXSW_RES_ID_MAX_CPU_POLICERS, MLXSW_RES_ID_MAX_VRS, MLXSW_RES_ID_MAX_RIFS, @@ -93,6 +94,7 @@ static u16 mlxsw_res_ids[] = { [MLXSW_RES_ID_ACL_ERPT_ENTRIES_4KB] = 0x2951, [MLXSW_RES_ID_ACL_ERPT_ENTRIES_8KB] = 0x2952, [MLXSW_RES_ID_ACL_ERPT_ENTRIES_12KB] = 0x2953, + [MLXSW_RES_ID_ACL_MAX_BF_LOG] = 0x2960, [MLXSW_RES_ID_MAX_CPU_POLICERS] = 0x2A13, [MLXSW_RES_ID_MAX_VRS] = 0x2C01, [MLXSW_RES_ID_MAX_RIFS] = 0x2C02, From patchwork Sun Dec 16 08:49:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014061 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="BUHnga9r"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK773mkz9s1c for ; Sun, 16 Dec 2018 19:50:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730160AbeLPIuI (ORCPT ); Sun, 16 Dec 2018 03:50:08 -0500 Received: from mail-eopbgr60049.outbound.protection.outlook.com ([40.107.6.49]:51904 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729991AbeLPIuH (ORCPT ); Sun, 16 Dec 2018 03:50:07 -0500 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=FxnaCxi0fciPVuMqFzcDNUanlcKgpFOIPIK7Xu8fAkg=; b=BUHnga9ryPTRJoRG+DldhlKMgByactFuhAKspm/nqCAV0UhurT0ES44EWQ6G9XwzvjDUgWb4zNLjeRN6LDowXaIjGBEKeNYW4kp5A+cvKvoDan3D6ZNkqkSOjEMMWUljGIrz5ywJwSQ7VgHRChla+H1StmHLyOr3dFEvOC909p8= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB3342.eurprd05.prod.outlook.com (10.170.238.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:26 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:26 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 03/12] mlxsw: spectrum_acl: Introduce Bloom filter Thread-Topic: [PATCH net-next 03/12] mlxsw: spectrum_acl: Introduce Bloom filter Thread-Index: AQHUlRxAIU7ajPTw3EWJ+cVgasXbBg== Date: Sun, 16 Dec 2018 08:49:26 +0000 Message-ID: <20181216084851.4967-4-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3342; 6:bm+6h4IKEmtSROX+WQJP9vUPDmnaJiBxlUkEjQMX+DkHdJ1awL2SJ0k8SAZZ1ir03d0kS+Cjv6osR/PiFR7Uwumi3DxQZUCZNIyP5IxtBPszD0cyVClTrrPv0YEEYzxkYeeOBsdJINjqRaawQCGWbiQMBaz0hVSEzx2FHBvH4BiZI3pyKrWhdlYmYSLb3MEEI5OUx46XWWQt8yEyDPvFeD1J7Gi18kj2/U7HkoM3nNN8DCXVy3G7Z6O7OoiBXQ7fxvQVA9U9AM5XukC2awdl02BuAt3hGCTD7sYQyllXRCLSqiypf5gCKojsvU0L8AvyS7za2v+ORdWKCbc1HTux8Oiv9VqQtXgV51b2QgN1zfL13sggZU86pQtSAZpYzefXFBXFGt5ZSL3qHdXQuLN3BWBKZi8OK1DE5b8extO67Ue+0rCVCOAzJWy5Ve8CpIg+V7Il+BI0CmE60VuGFLDuaQ==; 5:b3wP1FSFk6IVjqWmre6qm0KbFQ4z3pN7Enf7koRUcV4iAr7vLKNHoEA1P9ftZFM6szsj7+yZ4K9Rt3fCzf+BVYhMdepOfNLPf3w1898I9fox3VQtV88u3EP3RZlX67WDPQkgrpQsWt/q7GtQHpyyvUS0TTyM5732V/1NRuMyYzY=; 7:ljUIOM1iqzNoYBKHY9y9GgSRPw7Kj2HstXll/6QfXjJGSZx/jyEUt/6/dD71eR7rJBPCCLtfG08rb92/v5yPfpM4xObhW8hfHkkX3VNiIuMnb0soJrAPFGIhlf0BckuqQujm2f3l5R/njX2OXDCnXw== x-ms-office365-filtering-correlation-id: 36e39faf-ed0c-415b-328e-08d66333625a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB3342; x-ms-traffictypediagnostic: VI1PR05MB3342: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005020)(6040522)(2401047)(8121501046)(93006095)(93001095)(3231475)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB3342; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3342; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39850400004)(136003)(396003)(199004)(189003)(43544003)(7736002)(316002)(6506007)(86362001)(105586002)(2501003)(25786009)(305945005)(2351001)(5660300001)(106356001)(6916009)(6486002)(2906002)(107886003)(6116002)(3846002)(8936002)(53936002)(97736004)(6436002)(4326008)(66066001)(81166006)(81156014)(8676002)(1730700003)(5640700003)(68736007)(2616005)(1076002)(76176011)(52116002)(36756003)(478600001)(6512007)(71200400001)(71190400001)(256004)(14444005)(99286004)(476003)(486006)(186003)(446003)(11346002)(26005)(102836004)(386003)(14454004)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3342; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: kr8Hho+F9w1WqM5kCXxq2YPYesK1iW8uq5HJ8JruzAjlhqc3G016sq2bMH/E2SCnQIKWQqOhyfN161e0CNoHwQicM9kglxlikNhxl+lp6Rqk4IWCasT/72TohbfIqZqyHNnWseHZ3WqFxPMtWdwM90/1eELOzYfioBHAcRua1dcYPyN2ip7goXqRbLpBc6qKE82Nib6ZDloT2x4a8Hj2Qw6Ig1SBI0y1RFbPZCoTUz03Qv6dCgwRAQlS6e3mBTf6evoYyq5ZjvfRiNofRy/FyUbYI2IQoAjWLlFKYGkCYXm9x+XtA1XHhgRMDM21OSgV spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 36e39faf-ed0c-415b-328e-08d66333625a X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:26.7896 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3342 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Lay the foundations for Bloom filter handling. Introduce a new file for Bloom filter actions. Add struct mlxsw_sp_acl_bf to struct mlxsw_sp_acl_erp_core and initialize the Bloom filter data structure. Also take care of proper destruction when terminating. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/Makefile | 2 +- .../mlxsw/spectrum_acl_bloom_filter.c | 42 +++++++++++++++++++ .../mellanox/mlxsw/spectrum_acl_erp.c | 10 +++++ .../mellanox/mlxsw/spectrum_acl_tcam.h | 6 +++ 4 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c diff --git a/drivers/net/ethernet/mellanox/mlxsw/Makefile b/drivers/net/ethernet/mellanox/mlxsw/Makefile index 1f77e97e2d7a..bbf45f10c208 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/Makefile +++ b/drivers/net/ethernet/mellanox/mlxsw/Makefile @@ -20,7 +20,7 @@ mlxsw_spectrum-objs := spectrum.o spectrum_buffers.o \ spectrum_acl_tcam.o spectrum_acl_ctcam.o \ spectrum_acl_atcam.o spectrum_acl_erp.o \ spectrum1_acl_tcam.o spectrum2_acl_tcam.o \ - spectrum_acl.o \ + spectrum_acl_bloom_filter.o spectrum_acl.o \ spectrum_flower.o spectrum_cnt.o \ spectrum_fid.o spectrum_ipip.o \ spectrum_acl_flex_actions.o \ diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c new file mode 100644 index 000000000000..4685b730e703 --- /dev/null +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c @@ -0,0 +1,42 @@ +// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0 +/* Copyright (c) 2018 Mellanox Technologies. All rights reserved */ + +#include +#include +#include +#include + +#include "spectrum.h" +#include "spectrum_acl_tcam.h" + +struct mlxsw_sp_acl_bf { + unsigned int bank_size; + refcount_t refcnt[0]; +}; + +struct mlxsw_sp_acl_bf * +mlxsw_sp_acl_bf_init(struct mlxsw_sp *mlxsw_sp, unsigned int num_erp_banks) +{ + struct mlxsw_sp_acl_bf *bf; + unsigned int bf_bank_size; + + if (!MLXSW_CORE_RES_VALID(mlxsw_sp->core, ACL_MAX_BF_LOG)) + return ERR_PTR(-EIO); + + /* Bloom filter size per erp_table_bank + * is 2^ACL_MAX_BF_LOG + */ + bf_bank_size = 1 << MLXSW_CORE_RES_GET(mlxsw_sp->core, ACL_MAX_BF_LOG); + bf = kzalloc(sizeof(*bf) + bf_bank_size * num_erp_banks * + sizeof(*bf->refcnt), GFP_KERNEL); + if (!bf) + return ERR_PTR(-ENOMEM); + + bf->bank_size = bf_bank_size; + return bf; +} + +void mlxsw_sp_acl_bf_fini(struct mlxsw_sp_acl_bf *bf) +{ + kfree(bf); +} diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c index d9a4b7e8434b..bc3c731f06a1 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c @@ -24,6 +24,7 @@ struct mlxsw_sp_acl_erp_core { unsigned int erpt_entries_size[MLXSW_SP_ACL_ATCAM_REGION_TYPE_MAX + 1]; struct gen_pool *erp_tables; struct mlxsw_sp *mlxsw_sp; + struct mlxsw_sp_acl_bf *bf; unsigned int num_erp_banks; }; @@ -1320,6 +1321,12 @@ static int mlxsw_sp_acl_erp_tables_init(struct mlxsw_sp *mlxsw_sp, if (err) goto err_gen_pool_add; + erp_core->bf = mlxsw_sp_acl_bf_init(mlxsw_sp, erp_core->num_erp_banks); + if (IS_ERR(erp_core->bf)) { + err = PTR_ERR(erp_core->bf); + goto err_bf_init; + } + /* Different regions require masks of different sizes */ err = mlxsw_sp_acl_erp_tables_sizes_query(mlxsw_sp, erp_core); if (err) @@ -1328,6 +1335,8 @@ static int mlxsw_sp_acl_erp_tables_init(struct mlxsw_sp *mlxsw_sp, return 0; err_erp_tables_sizes_query: + mlxsw_sp_acl_bf_fini(erp_core->bf); +err_bf_init: err_gen_pool_add: gen_pool_destroy(erp_core->erp_tables); return err; @@ -1336,6 +1345,7 @@ static int mlxsw_sp_acl_erp_tables_init(struct mlxsw_sp *mlxsw_sp, static void mlxsw_sp_acl_erp_tables_fini(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_erp_core *erp_core) { + mlxsw_sp_acl_bf_fini(erp_core->bf); gen_pool_destroy(erp_core->erp_tables); } diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h index 95929b9039ec..c65c902cb56a 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h @@ -258,4 +258,10 @@ int mlxsw_sp_acl_erps_init(struct mlxsw_sp *mlxsw_sp, void mlxsw_sp_acl_erps_fini(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_atcam *atcam); +struct mlxsw_sp_acl_bf; + +struct mlxsw_sp_acl_bf * +mlxsw_sp_acl_bf_init(struct mlxsw_sp *mlxsw_sp, unsigned int num_erp_banks); +void mlxsw_sp_acl_bf_fini(struct mlxsw_sp_acl_bf *bf); + #endif From patchwork Sun Dec 16 08:49:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014062 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="kiYVbjAz"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK84srHz9s3Z for ; Sun, 16 Dec 2018 19:50:20 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730194AbeLPIuK (ORCPT ); Sun, 16 Dec 2018 03:50:10 -0500 Received: from mail-eopbgr60049.outbound.protection.outlook.com ([40.107.6.49]:51904 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730055AbeLPIuJ (ORCPT ); Sun, 16 Dec 2018 03:50:09 -0500 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=V8h4qZKf3/cngAjiXo6hIf/bVkx6/e4FoN5JT63PAhs=; b=kiYVbjAzJKKDIMFi5xEi4RwQCA9B5Wu0fquSnCsiQHew/xCu+87YJW2AyxwLh3dnFXQuZ3f2YKskAWw3hgIZZUv+iPHJAgBEjc+IC9n0g14t8Pi5oXNchQ1M0DFVPqSL4JbDPxbrfTg6elzl2myH2zZ17FVQB1gV+4G/+hHG5iY= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB3342.eurprd05.prod.outlook.com (10.170.238.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:28 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:28 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 04/12] mlxsw: spectrum_acl: Add Bloom filter handling Thread-Topic: [PATCH net-next 04/12] mlxsw: spectrum_acl: Add Bloom filter handling Thread-Index: AQHUlRxAgGvxQVcVfE2wCkTE5yymUg== Date: Sun, 16 Dec 2018 08:49:28 +0000 Message-ID: <20181216084851.4967-5-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3342; 6:VR953hGvoD2Ze8BY55BaM4b9u82nDJeY2ZzrevVALwdioFp9hQHnVLjsUv03SXwnhc5ns7HF2XkOQmbD4TJeh0aFSWxqqgIGno02cBs/TZq96kHd+Gye1Ap6/ATI2SJgBqr/I8RK59krhVPDOjDvODNr4Y2mY13xL7b1qSzIf/P0RH16uzJN60WnYV/UFaMMBsEdDcph/7VUEZGvZzCfUeWdlVKGs42MPv5P9hphUlLaQJwljJgyRHv5YEcsdDoXIBFD2t+k/Dw6VWf4Xd5T9YWcCuT+ILzcySOW+P8BdyN7WhSF6xDdAAUpUTQTvjpQGQepCAZYxwC4+UXc5yfxm21XfigOdi4rMFruHX32Rr++Rr+Z5tzxmub5r6ymVKHbaAMgT9spCg0v/ptmxQ9hnOHk9SAfN7qAIY17Y1f8f2OoXN38cz0QQ1EdtGUdJD4+0ma+dR9+EfUIDS7oQMh3ww==; 5:g6t0tvNBRgL1gtKOfkawUl+ImBNOyZGota0z2QTgF/Me3RGLXuPqUtoPSAQr1ZcjCyXwl4uLwilR3zvDwbA35l6tNPf+ZKHkMeQ6te7MDfuC08S8F026SDIzC0bc+0XaAkMRjXAD63qUAqIGM4lxpicSxUGcwbaFjS/4sLM7PMc=; 7:SN0yuIKVLa6OE9GuVNweVHRb8HnSRNBkQhtzBXq6A/BN6/bpU4VKSogZd73BQG5hSZRFSoy3Au6zvOZC27jD+Be9TozoTcMaqHtD/XtA2HdTQZGRrL1JtDL5JqCm+U+O7ho0BLgXUqVKseBLmarXpg== x-ms-office365-filtering-correlation-id: d14551b9-a96f-477c-54ca-08d66333633e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB3342; x-ms-traffictypediagnostic: VI1PR05MB3342: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005020)(6040522)(2401047)(8121501046)(93006095)(93001095)(3231475)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB3342; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3342; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39850400004)(136003)(396003)(199004)(189003)(7736002)(316002)(6506007)(86362001)(105586002)(2501003)(575784001)(25786009)(305945005)(2351001)(5660300001)(106356001)(6916009)(6486002)(2906002)(107886003)(6116002)(3846002)(8936002)(53936002)(97736004)(6436002)(4326008)(66066001)(81166006)(81156014)(8676002)(1730700003)(5640700003)(68736007)(2616005)(1076002)(76176011)(52116002)(36756003)(478600001)(6512007)(71200400001)(71190400001)(256004)(14444005)(99286004)(476003)(486006)(186003)(4744004)(446003)(11346002)(26005)(102836004)(386003)(14454004)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3342; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: oxXr8/SnOMogVgeiSNcOAD6RKB3njXCmJeJZzObry6zrCe1gNsRLS2Zb/TXOkYxb+DUrshXbWro1vZdHPSc2SYCjypG7q3lf7IWTWzVGyJiwcVhZW81XD0L9NDS2SLPg1came59kB02uyVz63WoOHsk90kiDu1qXv/Bs2HrI+5kz7GQnWhhaAgCVqPZMgEKiJSrI39w3mfR/ug0LiKaduKbZchORA3v4LIA9/h/Sm1V1PdfXBcDMs84jL0OhJWVWb7QH49TAP9AntkuY8yCaXRSsXOefwkR8GETTRw4iukqmsvCNijIq71HjLPeT2zRv spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: d14551b9-a96f-477c-54ca-08d66333633e X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:28.2537 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3342 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Spectrum-2 HW uses Bloom filter in order to skip lookups on specific eRPs. It uses crc-16-Msbit-first calculation over a specific layout of a rule's key fields combined with eRP ID as well as region ID. Per potential lookup, iff the Bloom filter entry of the calculated index is empty, then the lookup can be skipped. Hence, the mlxsw driver should update the Bloom filter entry per each rule insertion or deletion when rules are part of an eRP. Add functions for adding and deleting entries in the Bloom filter. In order to do so also add crc-16 computation based on the specific Spectrum-2 polynomial and a function for encoding the crc-16 input in the manner dictated by HW implementation. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- .../mlxsw/spectrum_acl_bloom_filter.c | 207 ++++++++++++++++++ .../mellanox/mlxsw/spectrum_acl_tcam.h | 12 + 2 files changed, 219 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c index 4685b730e703..505b87846acc 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_bloom_filter.c @@ -14,6 +14,213 @@ struct mlxsw_sp_acl_bf { refcount_t refcnt[0]; }; +/* Bloom filter uses a crc-16 hash over chunks of data which contain 4 key + * blocks, eRP ID and region ID. In Spectrum-2, region key is combined of up to + * 12 key blocks, so there can be up to 3 chunks in the Bloom filter key, + * depending on the actual number of key blocks used in the region. + * The layout of the Bloom filter key is as follows: + * + * +-------------------------+------------------------+------------------------+ + * | Chunk 2 Key blocks 11-8 | Chunk 1 Key blocks 7-4 | Chunk 0 Key blocks 3-0 | + * +-------------------------+------------------------+------------------------+ + */ +#define MLXSW_BLOOM_KEY_CHUNKS 3 +#define MLXSW_BLOOM_KEY_LEN 69 + +/* Each chunk size is 23 bytes. 18 bytes of it contain 4 key blocks, each is + * 36 bits, 2 bytes which hold eRP ID and region ID, and 3 bytes of zero + * padding. + * The layout of each chunk is as follows: + * + * +---------+----------------------+-----------------------------------+ + * | 3 bytes | 2 bytes | 18 bytes | + * +---------+-----------+----------+-----------------------------------+ + * | 183:158 | 157:148 | 147:144 | 143:0 | + * +---------+-----------+----------+-----------------------------------+ + * | 0 | region ID | eRP ID | 4 Key blocks (18 Bytes) | + * +---------+-----------+----------+-----------------------------------+ + */ +#define MLXSW_BLOOM_CHUNK_PAD_BYTES 3 +#define MLXSW_BLOOM_CHUNK_KEY_BYTES 18 +#define MLXSW_BLOOM_KEY_CHUNK_BYTES 23 + +/* The offset of the key block within a chunk is 5 bytes as it comes after + * 3 bytes of zero padding and 16 bits of region ID and eRP ID. + */ +#define MLXSW_BLOOM_CHUNK_KEY_OFFSET 5 + +/* Each chunk contains 4 key blocks. Chunk 2 uses key blocks 11-8, + * and we need to populate it with 4 key blocks copied from the entry encoded + * key. Since the encoded key contains a padding, key block 11 starts at offset + * 2. block 7 that is used in chunk 1 starts at offset 20 as 4 key blocks take + * 18 bytes. + * This array defines key offsets for easy access when copying key blocks from + * entry key to Bloom filter chunk. + */ +static const u8 chunk_key_offsets[MLXSW_BLOOM_KEY_CHUNKS] = {2, 20, 38}; + +/* This table is just the CRC of each possible byte. It is + * computed, Msbit first, for the Bloom filter polynomial + * which is 0x8529 (1 + x^3 + x^5 + x^8 + x^10 + x^15 and + * the implicit x^16). + */ +static const u16 mlxsw_sp_acl_bf_crc_tab[256] = { +0x0000, 0x8529, 0x8f7b, 0x0a52, 0x9bdf, 0x1ef6, 0x14a4, 0x918d, +0xb297, 0x37be, 0x3dec, 0xb8c5, 0x2948, 0xac61, 0xa633, 0x231a, +0xe007, 0x652e, 0x6f7c, 0xea55, 0x7bd8, 0xfef1, 0xf4a3, 0x718a, +0x5290, 0xd7b9, 0xddeb, 0x58c2, 0xc94f, 0x4c66, 0x4634, 0xc31d, +0x4527, 0xc00e, 0xca5c, 0x4f75, 0xdef8, 0x5bd1, 0x5183, 0xd4aa, +0xf7b0, 0x7299, 0x78cb, 0xfde2, 0x6c6f, 0xe946, 0xe314, 0x663d, +0xa520, 0x2009, 0x2a5b, 0xaf72, 0x3eff, 0xbbd6, 0xb184, 0x34ad, +0x17b7, 0x929e, 0x98cc, 0x1de5, 0x8c68, 0x0941, 0x0313, 0x863a, +0x8a4e, 0x0f67, 0x0535, 0x801c, 0x1191, 0x94b8, 0x9eea, 0x1bc3, +0x38d9, 0xbdf0, 0xb7a2, 0x328b, 0xa306, 0x262f, 0x2c7d, 0xa954, +0x6a49, 0xef60, 0xe532, 0x601b, 0xf196, 0x74bf, 0x7eed, 0xfbc4, +0xd8de, 0x5df7, 0x57a5, 0xd28c, 0x4301, 0xc628, 0xcc7a, 0x4953, +0xcf69, 0x4a40, 0x4012, 0xc53b, 0x54b6, 0xd19f, 0xdbcd, 0x5ee4, +0x7dfe, 0xf8d7, 0xf285, 0x77ac, 0xe621, 0x6308, 0x695a, 0xec73, +0x2f6e, 0xaa47, 0xa015, 0x253c, 0xb4b1, 0x3198, 0x3bca, 0xbee3, +0x9df9, 0x18d0, 0x1282, 0x97ab, 0x0626, 0x830f, 0x895d, 0x0c74, +0x91b5, 0x149c, 0x1ece, 0x9be7, 0x0a6a, 0x8f43, 0x8511, 0x0038, +0x2322, 0xa60b, 0xac59, 0x2970, 0xb8fd, 0x3dd4, 0x3786, 0xb2af, +0x71b2, 0xf49b, 0xfec9, 0x7be0, 0xea6d, 0x6f44, 0x6516, 0xe03f, +0xc325, 0x460c, 0x4c5e, 0xc977, 0x58fa, 0xddd3, 0xd781, 0x52a8, +0xd492, 0x51bb, 0x5be9, 0xdec0, 0x4f4d, 0xca64, 0xc036, 0x451f, +0x6605, 0xe32c, 0xe97e, 0x6c57, 0xfdda, 0x78f3, 0x72a1, 0xf788, +0x3495, 0xb1bc, 0xbbee, 0x3ec7, 0xaf4a, 0x2a63, 0x2031, 0xa518, +0x8602, 0x032b, 0x0979, 0x8c50, 0x1ddd, 0x98f4, 0x92a6, 0x178f, +0x1bfb, 0x9ed2, 0x9480, 0x11a9, 0x8024, 0x050d, 0x0f5f, 0x8a76, +0xa96c, 0x2c45, 0x2617, 0xa33e, 0x32b3, 0xb79a, 0xbdc8, 0x38e1, +0xfbfc, 0x7ed5, 0x7487, 0xf1ae, 0x6023, 0xe50a, 0xef58, 0x6a71, +0x496b, 0xcc42, 0xc610, 0x4339, 0xd2b4, 0x579d, 0x5dcf, 0xd8e6, +0x5edc, 0xdbf5, 0xd1a7, 0x548e, 0xc503, 0x402a, 0x4a78, 0xcf51, +0xec4b, 0x6962, 0x6330, 0xe619, 0x7794, 0xf2bd, 0xf8ef, 0x7dc6, +0xbedb, 0x3bf2, 0x31a0, 0xb489, 0x2504, 0xa02d, 0xaa7f, 0x2f56, +0x0c4c, 0x8965, 0x8337, 0x061e, 0x9793, 0x12ba, 0x18e8, 0x9dc1, +}; + +static u16 mlxsw_sp_acl_bf_crc_byte(u16 crc, u8 c) +{ + return (crc << 8) ^ mlxsw_sp_acl_bf_crc_tab[(crc >> 8) ^ c]; +} + +static u16 mlxsw_sp_acl_bf_crc(const u8 *buffer, size_t len) +{ + u16 crc = 0; + + while (len--) + crc = mlxsw_sp_acl_bf_crc_byte(crc, *buffer++); + return crc; +} + +static void +mlxsw_sp_acl_bf_key_encode(struct mlxsw_sp_acl_atcam_region *aregion, + struct mlxsw_sp_acl_atcam_entry *aentry, + char *output, u8 *len) +{ + struct mlxsw_afk_key_info *key_info = aregion->region->key_info; + u8 chunk_index, chunk_count, block_count; + char *chunk = output; + __be16 erp_region_id; + + block_count = mlxsw_afk_key_info_blocks_count_get(key_info); + chunk_count = 1 + ((block_count - 1) >> 2); + erp_region_id = cpu_to_be16(aentry->ht_key.erp_id | + (aregion->region->id << 4)); + for (chunk_index = MLXSW_BLOOM_KEY_CHUNKS - chunk_count; + chunk_index < MLXSW_BLOOM_KEY_CHUNKS; chunk_index++) { + memset(chunk, 0, MLXSW_BLOOM_CHUNK_PAD_BYTES); + memcpy(chunk + MLXSW_BLOOM_CHUNK_PAD_BYTES, &erp_region_id, + sizeof(erp_region_id)); + memcpy(chunk + MLXSW_BLOOM_CHUNK_KEY_OFFSET, + &aentry->ht_key.enc_key[chunk_key_offsets[chunk_index]], + MLXSW_BLOOM_CHUNK_KEY_BYTES); + chunk += MLXSW_BLOOM_KEY_CHUNK_BYTES; + } + *len = chunk_count * MLXSW_BLOOM_KEY_CHUNK_BYTES; +} + +static unsigned int +mlxsw_sp_acl_bf_rule_count_index_get(struct mlxsw_sp_acl_bf *bf, + unsigned int erp_bank, + unsigned int bf_index) +{ + return erp_bank * bf->bank_size + bf_index; +} + +static unsigned int +mlxsw_sp_acl_bf_index_get(struct mlxsw_sp_acl_bf *bf, + struct mlxsw_sp_acl_atcam_region *aregion, + struct mlxsw_sp_acl_atcam_entry *aentry) +{ + char bf_key[MLXSW_BLOOM_KEY_LEN]; + u8 bf_size; + + mlxsw_sp_acl_bf_key_encode(aregion, aentry, bf_key, &bf_size); + return mlxsw_sp_acl_bf_crc(bf_key, bf_size); +} + +int +mlxsw_sp_acl_bf_entry_add(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_bf *bf, + struct mlxsw_sp_acl_atcam_region *aregion, + unsigned int erp_bank, + struct mlxsw_sp_acl_atcam_entry *aentry) +{ + unsigned int rule_index; + char *peabfe_pl; + u16 bf_index; + int err; + + bf_index = mlxsw_sp_acl_bf_index_get(bf, aregion, aentry); + rule_index = mlxsw_sp_acl_bf_rule_count_index_get(bf, erp_bank, + bf_index); + + if (refcount_inc_not_zero(&bf->refcnt[rule_index])) + return 0; + + peabfe_pl = kmalloc(MLXSW_REG_PEABFE_LEN, GFP_KERNEL); + if (!peabfe_pl) + return -ENOMEM; + + mlxsw_reg_peabfe_pack(peabfe_pl); + mlxsw_reg_peabfe_rec_pack(peabfe_pl, 0, 1, erp_bank, bf_index); + err = mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(peabfe), peabfe_pl); + kfree(peabfe_pl); + if (err) + return err; + + refcount_set(&bf->refcnt[rule_index], 1); + return 0; +} + +void +mlxsw_sp_acl_bf_entry_del(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_bf *bf, + struct mlxsw_sp_acl_atcam_region *aregion, + unsigned int erp_bank, + struct mlxsw_sp_acl_atcam_entry *aentry) +{ + unsigned int rule_index; + char *peabfe_pl; + u16 bf_index; + + bf_index = mlxsw_sp_acl_bf_index_get(bf, aregion, aentry); + rule_index = mlxsw_sp_acl_bf_rule_count_index_get(bf, erp_bank, + bf_index); + + if (refcount_dec_and_test(&bf->refcnt[rule_index])) { + peabfe_pl = kmalloc(MLXSW_REG_PEABFE_LEN, GFP_KERNEL); + if (!peabfe_pl) + return; + + mlxsw_reg_peabfe_pack(peabfe_pl); + mlxsw_reg_peabfe_rec_pack(peabfe_pl, 0, 0, erp_bank, bf_index); + mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(peabfe), peabfe_pl); + kfree(peabfe_pl); + } +} + struct mlxsw_sp_acl_bf * mlxsw_sp_acl_bf_init(struct mlxsw_sp *mlxsw_sp, unsigned int num_erp_banks) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h index c65c902cb56a..30ac4d0132de 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h @@ -260,6 +260,18 @@ void mlxsw_sp_acl_erps_fini(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_bf; +int +mlxsw_sp_acl_bf_entry_add(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_bf *bf, + struct mlxsw_sp_acl_atcam_region *aregion, + unsigned int erp_bank, + struct mlxsw_sp_acl_atcam_entry *aentry); +void +mlxsw_sp_acl_bf_entry_del(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_bf *bf, + struct mlxsw_sp_acl_atcam_region *aregion, + unsigned int erp_bank, + struct mlxsw_sp_acl_atcam_entry *aentry); struct mlxsw_sp_acl_bf * mlxsw_sp_acl_bf_init(struct mlxsw_sp *mlxsw_sp, unsigned int num_erp_banks); void mlxsw_sp_acl_bf_fini(struct mlxsw_sp_acl_bf *bf); From patchwork Sun Dec 16 08:49:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014067 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="mV3PzzYU"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdKF1p2mz9s3Z for ; Sun, 16 Dec 2018 19:50:25 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730269AbeLPIuY (ORCPT ); Sun, 16 Dec 2018 03:50:24 -0500 Received: from mail-eopbgr60074.outbound.protection.outlook.com ([40.107.6.74]:56904 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730138AbeLPIuK (ORCPT ); Sun, 16 Dec 2018 03:50:10 -0500 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=Ta+XgTROisK4Qt3V8YLM+X9thb46uVMveorn7tmYL/Q=; b=mV3PzzYUOY/A170ORF4p64gWBtGVNtw2s6GrhQd4P32YtSPnnQM0fg7TdcjeOGOB9bVA8TzGFpJIFq/NCwoSdBZAMUjzWoe9MzYfSJSseMnFz5xIm4IqJHDqIaeLd1o0CIykHRcpI3apIHyCaJfrv0d6m32wxdNGKDXUQ+Ct6hg= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB3342.eurprd05.prod.outlook.com (10.170.238.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:29 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:29 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 05/12] mlxsw: spectrum_acl: Add Bloom filter update Thread-Topic: [PATCH net-next 05/12] mlxsw: spectrum_acl: Add Bloom filter update Thread-Index: AQHUlRxBikx9z32FD0+TPDn6Gmarog== Date: Sun, 16 Dec 2018 08:49:29 +0000 Message-ID: <20181216084851.4967-6-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3342; 6:2eg3ey9RuuSn0rCChWYcInhtlVywm4EU/gDAaQAHzlhgiKCgoKET6d78GEcY1hKXkYRGEXa3kgCa6ZewxMjDjcLKcN22/r0spC+sOq+u8LlZQakrgO7Ltkd7Dj5fT+NjRoiDpxD2dMeg9aALybthVW27SnbSqEVivySYU8K2eXNCgZYgrr1PUr8SrOqtx1HlwQGEcr0Sy955f+ElEms/2HG7eEDKOVcY+ZI3gQMVUr5gPkwVozaS85G43GBa8W+93a2UGTU1ZKLxj72ZopePnu52jdsq+hYbc58OJvecRZFIQPR1OtDafgQyT5jW9NjJdbgDp5iRvDk6qQvxqihBrVwk7owT5wi+fpHFtuNypP/Iy2fFgWOjOsXHu/xko8aoN++vDmAbUoFmoLfQ0Pp/HEkAX32UA2ijlAbixurDmCRXnXy6Jn+iCZK25i9IBi0iVLb5rp2hgxFXHSo1+Dg11Q==; 5:7XDMx4D9CJZSP1SbnxMVuwiEtnkai0Yn3fO+hQKm9NTjfbK3TW4xJzDCBdmwt/QCwpr+l+Yo3w5eNv24iXW55Ix5Q0eHW37iD0XVVrGEfbqmCJTaRpFkgmMqU7WAx64hyb7zlW1aOwHMj9YoR6mjSopTDBYCTvsVu6VECutF7T4=; 7:O0Jslxc+ii0y811oSQRuU4IP0/HOeX+3vqOdZoauA4ay2i3IhlVVSlRavkM6fQvpurWUtTkTE5mghCuZ04/SIVeqdFd/c0YH5S5S66evYXh7nnox+NXFZGTaYVYAoN1/s5oWga8S3FNmZG6jQCj9Pw== x-ms-office365-filtering-correlation-id: ac6e2247-f043-4681-3dfb-08d6633363ee x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB3342; x-ms-traffictypediagnostic: VI1PR05MB3342: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005020)(6040522)(2401047)(8121501046)(93006095)(93001095)(3231475)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB3342; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3342; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39850400004)(136003)(396003)(199004)(189003)(7736002)(15650500001)(316002)(6506007)(86362001)(105586002)(2501003)(25786009)(305945005)(2351001)(5660300001)(106356001)(6916009)(6486002)(2906002)(107886003)(6116002)(3846002)(8936002)(53936002)(97736004)(6436002)(4326008)(66066001)(81166006)(81156014)(8676002)(1730700003)(5640700003)(68736007)(2616005)(1076002)(76176011)(52116002)(36756003)(478600001)(6512007)(71200400001)(71190400001)(256004)(14444005)(99286004)(476003)(486006)(186003)(446003)(11346002)(26005)(102836004)(386003)(14454004)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3342; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: SWncRzS0PUyPcZb+2frF0485KrTtn78Gyl26PhuDI0FL61zOSLEp37Mr2QnBf0DE6C1ERV8iN2VLo/iy68BINwR11WmLWW/SasxZ64Yez6RBBxhAq/g044Jl2IxrsnGCyazKFCcxU7pZWaGbhL8Yi8OfTRuS41Gn7k2TpstQ9qNSjMg4ODlDwRS/e2MWjAojCaGEpyJueKmRDV7E14rzjROBRX7YZaR521uv7hUHjrRWorL5FdQIDyW7TipapMdh34W0wHQlVm8XU2o1R2QWxa9LYAKL2AK1kuojTiGwbb11GJdhpgA9zzU2PjqiT3e/ spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac6e2247-f043-4681-3dfb-08d6633363ee X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:29.4656 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3342 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Add Bloom filter update for rule insertion and rule removal scenarios. This is done within eRP module in order to assure that Bloom filter updates are done only for rules which are part of an eRP, as HW does not consult Bloom filter for entries when there is a single (master) mask in the region. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_acl_erp.c | 54 ++++++++++++++++++- .../mellanox/mlxsw/spectrum_acl_tcam.h | 8 +++ 2 files changed, 60 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c index bc3c731f06a1..1315619974e0 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c @@ -115,6 +115,19 @@ static const struct mlxsw_sp_acl_erp_table_ops erp_no_mask_ops = { .erp_destroy = mlxsw_sp_acl_erp_no_mask_destroy, }; +static bool +mlxsw_sp_acl_erp_table_is_used(const struct mlxsw_sp_acl_erp_table *erp_table) +{ + return erp_table->ops != &erp_single_mask_ops && + erp_table->ops != &erp_no_mask_ops; +} + +static unsigned int +mlxsw_sp_acl_erp_bank_get(const struct mlxsw_sp_acl_erp *erp) +{ + return erp->index % erp->erp_table->erp_core->num_erp_banks; +} + static unsigned int mlxsw_sp_acl_erp_table_entry_size(const struct mlxsw_sp_acl_erp_table *erp_table) { @@ -636,8 +649,7 @@ __mlxsw_sp_acl_erp_table_other_inc(struct mlxsw_sp_acl_erp_table *erp_table, /* If there are C-TCAM eRP or deltas in use we need to transition * the region to use eRP table, if it is not already done */ - if (erp_table->ops != &erp_two_masks_ops && - erp_table->ops != &erp_multiple_masks_ops) { + if (!mlxsw_sp_acl_erp_table_is_used(erp_table)) { err = mlxsw_sp_acl_erp_region_table_trans(erp_table); if (err) return err; @@ -961,6 +973,44 @@ void mlxsw_sp_acl_erp_mask_put(struct mlxsw_sp_acl_atcam_region *aregion, objagg_obj_put(aregion->erp_table->objagg, objagg_obj); } +int mlxsw_sp_acl_erp_bf_insert(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_atcam_region *aregion, + struct mlxsw_sp_acl_erp_mask *erp_mask, + struct mlxsw_sp_acl_atcam_entry *aentry) +{ + struct objagg_obj *objagg_obj = (struct objagg_obj *) erp_mask; + const struct mlxsw_sp_acl_erp *erp = objagg_obj_root_priv(objagg_obj); + unsigned int erp_bank; + + ASSERT_RTNL(); + if (!mlxsw_sp_acl_erp_table_is_used(erp->erp_table)) + return 0; + + erp_bank = mlxsw_sp_acl_erp_bank_get(erp); + return mlxsw_sp_acl_bf_entry_add(mlxsw_sp, + erp->erp_table->erp_core->bf, + aregion, erp_bank, aentry); +} + +void mlxsw_sp_acl_erp_bf_remove(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_atcam_region *aregion, + struct mlxsw_sp_acl_erp_mask *erp_mask, + struct mlxsw_sp_acl_atcam_entry *aentry) +{ + struct objagg_obj *objagg_obj = (struct objagg_obj *) erp_mask; + const struct mlxsw_sp_acl_erp *erp = objagg_obj_root_priv(objagg_obj); + unsigned int erp_bank; + + ASSERT_RTNL(); + if (!mlxsw_sp_acl_erp_table_is_used(erp->erp_table)) + return; + + erp_bank = mlxsw_sp_acl_erp_bank_get(erp); + mlxsw_sp_acl_bf_entry_del(mlxsw_sp, + erp->erp_table->erp_core->bf, + aregion, erp_bank, aentry); +} + bool mlxsw_sp_acl_erp_mask_is_ctcam(const struct mlxsw_sp_acl_erp_mask *erp_mask) { diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h index 30ac4d0132de..b649a4f97558 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h @@ -251,6 +251,14 @@ mlxsw_sp_acl_erp_mask_get(struct mlxsw_sp_acl_atcam_region *aregion, const char *mask, bool ctcam); void mlxsw_sp_acl_erp_mask_put(struct mlxsw_sp_acl_atcam_region *aregion, struct mlxsw_sp_acl_erp_mask *erp_mask); +int mlxsw_sp_acl_erp_bf_insert(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_atcam_region *aregion, + struct mlxsw_sp_acl_erp_mask *erp_mask, + struct mlxsw_sp_acl_atcam_entry *aentry); +void mlxsw_sp_acl_erp_bf_remove(struct mlxsw_sp *mlxsw_sp, + struct mlxsw_sp_acl_atcam_region *aregion, + struct mlxsw_sp_acl_erp_mask *erp_mask, + struct mlxsw_sp_acl_atcam_entry *aentry); int mlxsw_sp_acl_erp_region_init(struct mlxsw_sp_acl_atcam_region *aregion); void mlxsw_sp_acl_erp_region_fini(struct mlxsw_sp_acl_atcam_region *aregion); int mlxsw_sp_acl_erps_init(struct mlxsw_sp *mlxsw_sp, From patchwork Sun Dec 16 08:49:30 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014063 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="W6QPBd1y"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK92hZCz9s1c for ; Sun, 16 Dec 2018 19:50:21 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730237AbeLPIuQ (ORCPT ); Sun, 16 Dec 2018 03:50:16 -0500 Received: from mail-eopbgr60049.outbound.protection.outlook.com ([40.107.6.49]:51904 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729991AbeLPIuL (ORCPT ); Sun, 16 Dec 2018 03:50:11 -0500 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=iG5A28LwLx/sKzQ+4/yw8vPHkfCIpYZPIGKZEYGY53A=; b=W6QPBd1yQQPQtbCNeHc3mQ9mF3eQEWB1WeaVeh6Iy3kVJkqkyeQ7E8XARmpjT5hIGZKwJHIAP6mP/M/zu+Ir78iUS7ZlFixBzlqk7NAXyOspkEiljiJnyWboUf5bfxKoTTgJJ4j8LsNr6ki1DOBBhfZBueJ3ZXSOn31psXZtB3Y= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB3342.eurprd05.prod.outlook.com (10.170.238.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:30 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:30 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 06/12] mlxsw: spectrum_acl: Set A-TCAM rules in Bloom filter Thread-Topic: [PATCH net-next 06/12] mlxsw: spectrum_acl: Set A-TCAM rules in Bloom filter Thread-Index: AQHUlRxCgFEnu73h+kmbyLU7SNnDtw== Date: Sun, 16 Dec 2018 08:49:30 +0000 Message-ID: <20181216084851.4967-7-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB3342; 6:2KEa5x1+IBJ8nQo0NPE1iD2IHApAB17BYqvbhdCQ40kSmpxEZBWY86zx5LDmJ0g2bsNs7xDSpA7+FALiDimgWBARiJACD0K0jY9CmEkBhzyJmgbxa2PoNzMjwk2Gey0N1gzl/smjXKPe1zJS00bL3pDkaGnizkbblNY2sN9lvcD/g8lCoWVKi1DARmpZ6zV8WK42v/FGkv02kRm8aXpzQbIXtUoIBeHoI+1xcaayj5vBnD/2UjBcVu1InhTD42Um7O2Yph9mOndgSsbluEBHtLk/sSU5oW83TzDb4u4h2aMDelc17hBrE73bvU/xLojwbSDmZuuG27ehFbSojMbVNpf1GoPC7AcqADJnBcCm5vXVl2zGxJ19etjG0CZGU6WfHCDPeBsmrfKhUaGh50DbYJZHzS1BqgSOqsQVhm4ipZapRL4WMexGYN7VTbx9mkkGmB/se47RgRekZ+CTxeyguA==; 5:7KcsLZnincLfNQlbJdLTTK24C5VJSn7LT98eoocsVClnEo4iVL+4EyAQr76T088Q3FmUr6Eca69M6eBGMV+b1Eo2XuniFIL7rvkm44U9W36oWYZ7rakimSFbGss+hi45yQ+DIKH9UEKDaEDhOGH3z0Tt2xwQtAs8Gf729V5yzSY=; 7:+O3G0M0MmC9qmu9XaRgcUQLA5rbirhJNDRwjQa1WOYDBJB7929BkJ3VOn0AhPP4m379Ta3I2AIZmWaejKNQI9DQ+qlQRFI/jfa7I7NYwlPHABCcu9kfAILL4XWQPk82+2R/IfaS1GKc6ukpE1BKqXg== x-ms-office365-filtering-correlation-id: c9360474-b344-4fa5-ecf1-08d6633364a7 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB3342; x-ms-traffictypediagnostic: VI1PR05MB3342: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(5005020)(6040522)(2401047)(8121501046)(93006095)(93001095)(3231475)(944501520)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123558120)(20161123562045)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB3342; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB3342; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(346002)(376002)(39850400004)(136003)(396003)(199004)(189003)(7736002)(316002)(6506007)(86362001)(105586002)(2501003)(25786009)(305945005)(2351001)(5660300001)(106356001)(6916009)(6486002)(2906002)(107886003)(6116002)(3846002)(8936002)(53936002)(97736004)(6436002)(4326008)(66066001)(81166006)(81156014)(8676002)(1730700003)(5640700003)(68736007)(2616005)(1076002)(76176011)(52116002)(36756003)(478600001)(6512007)(71200400001)(71190400001)(256004)(14444005)(99286004)(476003)(486006)(186003)(446003)(11346002)(26005)(102836004)(386003)(14454004)(54906003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3342; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: Zij9hM41/UI3OssrSWc6iJLoaKi+Mt//5yjpcYmeYZXwEJdEniS7zKbZHU8xP0hHnq+LGrGiIBS1F7BZj7p1qFjSkuhM6xiaN/jYD9kFjGvLDvkbwzUdWIRjy3tCt56G6DPAjlgClLcHmVqW9M4bgaqjMdVEynJW7HUl8ZKCtixHgbBCxWmFwsZRxK8PPKu/LQLNOLflUuqx5UzmN14bAX3PK/NXxhplVV1Ln1lNiQqRGI9BeN+jKnJZ4EtxC5RkYfig9eGZ051BHHY9DR3m7HVXE+GMBKHHbl4c7IfouFT0Z7LWx4XgD486l7ee9x6P spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: c9360474-b344-4fa5-ecf1-08d6633364a7 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:30.6225 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3342 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Add calls to eRP module for updating Bloom filter when a rule is added or removed from the A-TCAM. eRP module will update the Bloom filter only for cases in which the region has an active eRP table. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- .../net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c index 75f11c2d7b97..aedfece86121 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c @@ -508,6 +508,13 @@ __mlxsw_sp_acl_atcam_entry_add(struct mlxsw_sp *mlxsw_sp, if (err) goto err_rhashtable_insert; + /* Bloom filter must be updated here, before inserting the rule into + * the A-TCAM. + */ + err = mlxsw_sp_acl_erp_bf_insert(mlxsw_sp, aregion, erp_mask, aentry); + if (err) + goto err_bf_insert; + err = mlxsw_sp_acl_atcam_region_entry_insert(mlxsw_sp, aregion, aentry, rulei); if (err) @@ -516,6 +523,8 @@ __mlxsw_sp_acl_atcam_entry_add(struct mlxsw_sp *mlxsw_sp, return 0; err_rule_insert: + mlxsw_sp_acl_erp_bf_remove(mlxsw_sp, aregion, erp_mask, aentry); +err_bf_insert: rhashtable_remove_fast(&aregion->entries_ht, &aentry->ht_node, mlxsw_sp_acl_atcam_entries_ht_params); err_rhashtable_insert: @@ -529,6 +538,7 @@ __mlxsw_sp_acl_atcam_entry_del(struct mlxsw_sp *mlxsw_sp, struct mlxsw_sp_acl_atcam_entry *aentry) { mlxsw_sp_acl_atcam_region_entry_remove(mlxsw_sp, aregion, aentry); + mlxsw_sp_acl_erp_bf_remove(mlxsw_sp, aregion, aentry->erp_mask, aentry); rhashtable_remove_fast(&aregion->entries_ht, &aentry->ht_node, mlxsw_sp_acl_atcam_entries_ht_params); mlxsw_sp_acl_erp_mask_put(aregion, aentry->erp_mask); From patchwork Sun Dec 16 08:49:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014068 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="KBWz1quE"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdLb4ctKz9s3C for ; Sun, 16 Dec 2018 19:51:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729831AbeLPIve (ORCPT ); Sun, 16 Dec 2018 03:51:34 -0500 Received: from mail-eopbgr60057.outbound.protection.outlook.com ([40.107.6.57]:14337 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729784AbeLPIve (ORCPT ); Sun, 16 Dec 2018 03:51:34 -0500 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=9yAmRFKDjkMHoo2qN51QWtX9xeBIdUuVF3uOzLqjwko=; b=KBWz1quEvXRc4E1veo4ZqiZnpP5GEdYmC+bUm6j6w7dosB91btEwIMfEnn9nlR9UctLQpF46sQw2Sa90MS2N7HNG+yp0rZzc/rMjbb807RvTU4zlKHkJPeSY8vS6/K35cakIVuJjA/jO+2ajRjNTBkswEyikj1jjRfGN3s/2ixE= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB5054.eurprd05.prod.outlook.com (20.177.52.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:32 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:32 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 07/12] mlxsw: spectrum_acl: Update Bloom filter on eRP transitions Thread-Topic: [PATCH net-next 07/12] mlxsw: spectrum_acl: Update Bloom filter on eRP transitions Thread-Index: AQHUlRxDCTNfn3nlfEix9SoEVFy49g== Date: Sun, 16 Dec 2018 08:49:32 +0000 Message-ID: <20181216084851.4967-8-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5054; 6:6MOeq4EoAC3zk+UOvgSr/xXg+ggoqcJt6IYlLulgFQscd5tolrgWKkk8eiupDRVZb0VsGD5pf73WgxDFh3ASTEtKBn9gHpWEWU4V5bZ1IC0bSVR3b7+R4QRVGH8s7TbthaUzj932IQeWCfITlYb3PaqZwElcI5d9SqgNkHTcgjRz6/IRk9GgmZmvpjWtl28d81k+6SQRAJY7o0sl8Rh14yok/OXlKXjzTQ84wh0JFAq/f5OBsoM6u+Ij58eOGxaeGWpqQwxkrxyjNKHPPu1Z4NQxm7poE9cr7a722u/j4zg2n+EX9t44WocixkpJJNTn5S+K6TY6hyf3dEJBOMKBH4MCiebb1eB2VoifYYQbkhzoFjLvHYkqj3rlTsLefkRLSBpxkPsisopkavSi8yj/dyV4oyIf7MB6rVV+YVvIKhkW+z2uh47G/+4EWokbmHIgmdcNayLQ94+54k4cJUkP0g==; 5:EBNuyF1pQgSz91PRAnkBd1TTNMP4Xa60Kw3Q7MDh7bFbSwCmu4atQUVgBfWdSaDWWl4Fx2wq8pkoascgmyVixPU8MAPz2LZI6SBxwLJDR6l+cHli/8Lfj3kk7EHSL2OX0WC89NIYpyPeH65iyN/2ftKZWokWUrQ2O4PN4ERxt6M=; 7:3Fr+FFvm5zdJYkth003GECAXb3Xtr+q8t1VShVu1bMgsqUEfm/asm7s8AS9NXX6zdDnzB3Ma+km7E2Ecozi3qTk99RZhLv0K6+PQbIObA2eRVuQjAylnJZrXtirIGoU37TqJqy7fMk22BSRvzDUcJw== x-ms-office365-filtering-correlation-id: 19ea2ec1-38c4-4774-c07e-08d663336558 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5054; x-ms-traffictypediagnostic: VI1PR05MB5054: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(6040522)(2401047)(8121501046)(5005006)(3231475)(944501520)(52105112)(93006095)(93001095)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5054; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5054; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(396003)(376002)(346002)(199004)(189003)(54906003)(11346002)(2351001)(102836004)(76176011)(446003)(26005)(105586002)(386003)(106356001)(36756003)(4326008)(6916009)(86362001)(2501003)(6436002)(6486002)(186003)(6506007)(71190400001)(71200400001)(52116002)(53936002)(5660300001)(478600001)(97736004)(14454004)(25786009)(107886003)(14444005)(6512007)(5640700003)(256004)(99286004)(66066001)(7736002)(8936002)(316002)(81166006)(305945005)(8676002)(68736007)(486006)(2906002)(81156014)(2616005)(3846002)(15650500001)(6116002)(476003)(1076002)(1730700003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5054; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: nwG3I9PlMDglXK+rwWk2wVa16Ph183LCVmVc7CS/n14Vx0Yd686UbJuFY6B6cuhGyeJ8Zscfczt8i/Gu+JhqRGCgFbArkdUBGfeWFD7UFw6E18lbBtisTZXPkAwXJ1thOn4uD0MDm57Q87S+XxPqRZ3HTIYhiySPFW+VEQv62TdxNqpAmUHKCTWW+ND3Vj98p6XzFgvAI0aaOLzQ9i1i6XwAOHnXtNMdFVc/aqrHXMBJXyjI61Qvl5TU+FMdC1SMRTcwIsJb+G+YEK5PsK0HQvSUQOyo1TSf3bcOs/cPb1O1FQLg3sc0pFAbLd9oNxAJ spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 19ea2ec1-38c4-4774-c07e-08d663336558 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:32.2517 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5054 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Bloom filter update is required only for rules which reside on an eRP. When the region has only a single rule pattern then eRP table is not used, however insertion of another pattern would trigger a move to an active eRP table so it is imperative to update the Bloom filter with all previously configured rules. Add a method that updates Bloom filter entries for all rules currently configured in the region, on the event of a transition from master mask to eRP, or vice versa. For that purpose, maintain a list of all A-TCAM rules within mlxsw_sp_acl_atcam_region. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- .../mellanox/mlxsw/spectrum_acl_atcam.c | 10 ++++ .../mellanox/mlxsw/spectrum_acl_erp.c | 53 +++++++++++++++++++ .../mellanox/mlxsw/spectrum_acl_tcam.h | 2 + 3 files changed, 65 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c index aedfece86121..80fb268d51a5 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_atcam.c @@ -323,6 +323,7 @@ mlxsw_sp_acl_atcam_region_init(struct mlxsw_sp *mlxsw_sp, aregion->region = region; aregion->atcam = atcam; mlxsw_sp_acl_atcam_region_type_init(aregion); + INIT_LIST_HEAD(&aregion->entries_list); err = rhashtable_init(&aregion->entries_ht, &mlxsw_sp_acl_atcam_entries_ht_params); @@ -356,6 +357,7 @@ void mlxsw_sp_acl_atcam_region_fini(struct mlxsw_sp_acl_atcam_region *aregion) mlxsw_sp_acl_erp_region_fini(aregion); aregion->ops->fini(aregion); rhashtable_destroy(&aregion->entries_ht); + WARN_ON(!list_empty(&aregion->entries_list)); } void mlxsw_sp_acl_atcam_chunk_init(struct mlxsw_sp_acl_atcam_region *aregion, @@ -499,6 +501,12 @@ __mlxsw_sp_acl_atcam_entry_add(struct mlxsw_sp *mlxsw_sp, mlxsw_sp_acl_erp_delta_value(delta, aentry->full_enc_key); mlxsw_sp_acl_erp_delta_clear(delta, aentry->ht_key.enc_key); + /* Add rule to the list of A-TCAM rules, assuming this + * rule is intended to A-TCAM. In case this rule does + * not fit into A-TCAM it will be removed from the list. + */ + list_add(&aentry->list, &aregion->entries_list); + /* We can't insert identical rules into the A-TCAM, so fail and * let the rule spill into C-TCAM */ @@ -528,6 +536,7 @@ __mlxsw_sp_acl_atcam_entry_add(struct mlxsw_sp *mlxsw_sp, rhashtable_remove_fast(&aregion->entries_ht, &aentry->ht_node, mlxsw_sp_acl_atcam_entries_ht_params); err_rhashtable_insert: + list_del(&aentry->list); mlxsw_sp_acl_erp_mask_put(aregion, erp_mask); return err; } @@ -541,6 +550,7 @@ __mlxsw_sp_acl_atcam_entry_del(struct mlxsw_sp *mlxsw_sp, mlxsw_sp_acl_erp_bf_remove(mlxsw_sp, aregion, aentry->erp_mask, aentry); rhashtable_remove_fast(&aregion->entries_ht, &aentry->ht_node, mlxsw_sp_acl_atcam_entries_ht_params); + list_del(&aentry->list); mlxsw_sp_acl_erp_mask_put(aregion, aentry->erp_mask); } diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c index 1315619974e0..3326c930f3fa 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c @@ -517,6 +517,48 @@ mlxsw_sp_acl_erp_table_expand(struct mlxsw_sp_acl_erp_table *erp_table) return err; } +static int +mlxsw_acl_erp_table_bf_add(struct mlxsw_sp_acl_erp_table *erp_table, + struct mlxsw_sp_acl_erp *erp) +{ + struct mlxsw_sp_acl_atcam_region *aregion = erp_table->aregion; + unsigned int erp_bank = mlxsw_sp_acl_erp_bank_get(erp); + struct mlxsw_sp_acl_atcam_entry *aentry; + int err; + + list_for_each_entry(aentry, &aregion->entries_list, list) { + err = mlxsw_sp_acl_bf_entry_add(aregion->region->mlxsw_sp, + erp_table->erp_core->bf, + aregion, erp_bank, aentry); + if (err) + goto bf_entry_add_err; + } + + return 0; + +bf_entry_add_err: + list_for_each_entry_continue_reverse(aentry, &aregion->entries_list, + list) + mlxsw_sp_acl_bf_entry_del(aregion->region->mlxsw_sp, + erp_table->erp_core->bf, + aregion, erp_bank, aentry); + return err; +} + +static void +mlxsw_acl_erp_table_bf_del(struct mlxsw_sp_acl_erp_table *erp_table, + struct mlxsw_sp_acl_erp *erp) +{ + struct mlxsw_sp_acl_atcam_region *aregion = erp_table->aregion; + unsigned int erp_bank = mlxsw_sp_acl_erp_bank_get(erp); + struct mlxsw_sp_acl_atcam_entry *aentry; + + list_for_each_entry_reverse(aentry, &aregion->entries_list, list) + mlxsw_sp_acl_bf_entry_del(aregion->region->mlxsw_sp, + erp_table->erp_core->bf, + aregion, erp_bank, aentry); +} + static int mlxsw_sp_acl_erp_region_table_trans(struct mlxsw_sp_acl_erp_table *erp_table) { @@ -551,6 +593,14 @@ mlxsw_sp_acl_erp_region_table_trans(struct mlxsw_sp_acl_erp_table *erp_table) if (err) goto err_table_master_rp_add; + /* Update Bloom filter before enabling eRP table, as rules + * on the master RP were not set to Bloom filter up to this + * point. + */ + err = mlxsw_acl_erp_table_bf_add(erp_table, master_rp); + if (err) + goto err_table_bf_add; + err = mlxsw_sp_acl_erp_table_enable(erp_table, false); if (err) goto err_table_enable; @@ -558,6 +608,8 @@ mlxsw_sp_acl_erp_region_table_trans(struct mlxsw_sp_acl_erp_table *erp_table) return 0; err_table_enable: + mlxsw_acl_erp_table_bf_del(erp_table, master_rp); +err_table_bf_add: mlxsw_sp_acl_erp_table_erp_del(master_rp); err_table_master_rp_add: __clear_bit(master_rp->index, erp_table->erp_index_bitmap); @@ -578,6 +630,7 @@ mlxsw_sp_acl_erp_region_master_mask_trans(struct mlxsw_sp_acl_erp_table *erp_tab master_rp = mlxsw_sp_acl_erp_table_master_rp(erp_table); if (!master_rp) return; + mlxsw_acl_erp_table_bf_del(erp_table, master_rp); mlxsw_sp_acl_erp_table_erp_del(master_rp); __clear_bit(master_rp->index, erp_table->erp_index_bitmap); mlxsw_sp_acl_erp_table_free(erp_core, erp_table->num_max_atcam_erps, diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h index b649a4f97558..0f1a9dee63de 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_tcam.h @@ -152,6 +152,7 @@ struct mlxsw_sp_acl_atcam { struct mlxsw_sp_acl_atcam_region { struct rhashtable entries_ht; /* A-TCAM only */ + struct list_head entries_list; /* A-TCAM only */ struct mlxsw_sp_acl_ctcam_region cregion; const struct mlxsw_sp_acl_atcam_region_ops *ops; struct mlxsw_sp_acl_tcam_region *region; @@ -174,6 +175,7 @@ struct mlxsw_sp_acl_atcam_chunk { struct mlxsw_sp_acl_atcam_entry { struct rhash_head ht_node; + struct list_head list; /* Member in entries_list */ struct mlxsw_sp_acl_atcam_entry_ht_key ht_key; char full_enc_key[MLXSW_REG_PTCEX_FLEX_KEY_BLOCKS_LEN]; /* Encoded key */ struct { From patchwork Sun Dec 16 08:49:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014055 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="yvmGjwgm"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK35H4Mz9s1c for ; Sun, 16 Dec 2018 19:50:15 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729847AbeLPItn (ORCPT ); Sun, 16 Dec 2018 03:49:43 -0500 Received: from mail-eopbgr60043.outbound.protection.outlook.com ([40.107.6.43]:1824 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729804AbeLPItm (ORCPT ); Sun, 16 Dec 2018 03:49:42 -0500 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=spElGP1xOlf7DHa1yW6QL3u9Vc+m4gMZ4f9OoH4HbBw=; b=yvmGjwgmKvwV7wwNZ3b0BpUAGfrSVe6TtQkI7bcwEfD53/ARJwZo5eJIlhx/ql1IcowrUSkNcpk91aLsBQD2zy2D7RruAV/nOCV9bO3i37csSgICioi6aGIcHsRgMELl4AwVezIIwvtFcouuHmdbW28KrxHuSrsouknD1bKDMA4= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB5054.eurprd05.prod.outlook.com (20.177.52.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:33 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:33 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 08/12] mlxsw: spectrum_acl: Set master RP index on transition to eRP Thread-Topic: [PATCH net-next 08/12] mlxsw: spectrum_acl: Set master RP index on transition to eRP Thread-Index: AQHUlRxE7GpXNsR/VEG8JyBYLZJRwA== Date: Sun, 16 Dec 2018 08:49:33 +0000 Message-ID: <20181216084851.4967-9-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5054; 6:bbnhTs2GpE2LgCjz2z9ef9EASogfOee+rcHu98Lw/63189hrWB8lUGKdV13aEovAHtu/+WCauIUc3g7Bdpt7cJBjqW7xUgCQxutgzOKrQqFYoK/PTHRccXUgVxMaNU0s03LdLry4lx0A5oq/eJzUDyRedF/cHpjkYHSse2pxosUZBI0yDCeOULxXhVf1/jxC23rNWzF9InpUzt5+Uss7u+q1i9uOfTA2JPvA7wMRCmviHqSMW70+7sAJv+Zbs/IYG8tT4j1eJsQA4jgNj6ZtgmCb/NRGh79xy1TQeDWRnaXlS5a2UaMbGjKCuX98+EblUC6XuenC96jHLfiRraPHu3/zeCiMQAOHJhTw/SN08N6hX1HdAo9V84mwZniWnb0xvigWDvuR8fzNqr6g4whpV6RAHRWeAK/9BMT8IR1fXVsAHJpaAiyc5qA/v9tag2UriTUsc05jEXTYOGdWpVhIqw==; 5:WS90iwNY4GMMJ425D0NOiiTltBqtlxwxvZ7yrGmUfDnauZM0Jt8FXv4geuMMi7jfog4fRIvkS1mUbt/JPiujZ8yWJvAreepDfp8VhSaYDFUt9o7k6LLryIJLCi1lMofxE75mwkOsT2Fyt2eaKFO0/mXRvwlJQDO0sBt8NrT0Do8=; 7:ZddakZ6CPffnCniYSrTKlzT1a+M+qOrBWoVduNmplRsRao1vGLGOpD4LW84PLGKe6D1jTjnexcjxXVV/ZjMdMOyRJuYFCfM7gJLes9oaLBxjVweYiwRFJsV4eg6e0Nusp/IlE0wbbVIq8nb9OOE1VA== x-ms-office365-filtering-correlation-id: 9f4d70e4-b459-468e-54db-08d663336653 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5054; x-ms-traffictypediagnostic: VI1PR05MB5054: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(6040522)(2401047)(8121501046)(5005006)(3231475)(944501520)(52105112)(93006095)(93001095)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5054; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5054; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(396003)(376002)(346002)(199004)(189003)(54906003)(11346002)(2351001)(102836004)(76176011)(446003)(26005)(105586002)(386003)(106356001)(36756003)(4326008)(6916009)(86362001)(2501003)(6436002)(6486002)(186003)(6506007)(71190400001)(71200400001)(52116002)(53936002)(5660300001)(478600001)(97736004)(14454004)(25786009)(107886003)(14444005)(6512007)(5640700003)(256004)(99286004)(66066001)(7736002)(8936002)(316002)(81166006)(305945005)(8676002)(68736007)(486006)(2906002)(81156014)(2616005)(3846002)(6116002)(476003)(1076002)(1730700003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5054; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: 4lvW4Xq2bzjHXxEbhp/5vDdh1+L23vkrqYNLb5Xqn5xpK/hJ86nkqRbsFNrdj15LNKKreoymJ4LXYehXhWE0CLHRQCY7UgvfVtVEr6gsA8gPOqDgJpou1exX+YWe5mTRzgxUmYMXnXqxiJOoUopoxY9ddlu2+TT6IqHHRbCgkYHkbupKMxX2Sy97GWp8buvzbgh8dzgqYUK8mW3RX3DxoV7spTwGpTDxHv/kk5V8S9kYmE7Zmv9+gR+cqQX0QIyXbTujaurs4hP7Js5lIlmiL/c+thXy9hCxWcJhO8Qp9xnl6YbUT7kA8u8L6zelPPtz spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f4d70e4-b459-468e-54db-08d663336653 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:33.5026 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5054 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Bloom filter is updated on transitions from a single rule pattern, also called master RP, to eRP table and vice versa. Since rules are being written to or deleted from the Bloom filter on such transitions, it is not required to keep the same eRP bank ID for the master RP. Change master RP index assignment so it will be assigned with zero. This is consistent with the assignment of the first available spot that is used for allocating eRP's indices. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c index 3326c930f3fa..1c19feefa5f2 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_acl_erp.c @@ -583,10 +583,10 @@ mlxsw_sp_acl_erp_region_table_trans(struct mlxsw_sp_acl_erp_table *erp_table) goto err_table_master_rp; } - /* Maintain the same eRP bank for the master RP, so that we - * wouldn't need to update the bloom filter + /* Make sure the master RP is using a valid index, as + * only a single eRP row is currently allocated. */ - master_rp->index = master_rp->index % erp_core->num_erp_banks; + master_rp->index = 0; __set_bit(master_rp->index, erp_table->erp_index_bitmap); err = mlxsw_sp_acl_erp_table_erp_add(erp_table, master_rp); From patchwork Sun Dec 16 08:49:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014056 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="d5dsO9W6"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK43K6hz9s3Z for ; Sun, 16 Dec 2018 19:50:16 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729910AbeLPIt5 (ORCPT ); Sun, 16 Dec 2018 03:49:57 -0500 Received: from mail-eopbgr60043.outbound.protection.outlook.com ([40.107.6.43]:1824 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729821AbeLPIt5 (ORCPT ); Sun, 16 Dec 2018 03:49:57 -0500 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=adUBvY52+qakoi6ZtnVRDQ832+krWh7U0JLnUl7g/r0=; b=d5dsO9W6HIDE5W9WBPF9KF4sDC5oTKwMYgXWKhTpf1K37lX90KDxNSJkn/QrdMreo33ptO0IBkrk8izOyOcNNC5lvcbOunolvl/94j7kpa6UUcAl/+m4xQZCSQR1Tf30F2xrL9BvWL1qpE5wx8Aw6JVHqlB91Sn88Yy+Z96d1kI= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB5054.eurprd05.prod.outlook.com (20.177.52.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:34 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:34 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 09/12] mlxsw: reg: Activate Bloom filter Thread-Topic: [PATCH net-next 09/12] mlxsw: reg: Activate Bloom filter Thread-Index: AQHUlRxEJDluVxaYd0K5NqdRPTNFkA== Date: Sun, 16 Dec 2018 08:49:34 +0000 Message-ID: <20181216084851.4967-10-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5054; 6:6atMz0QV51OQcZLSLidis+9h9ehNyz1uqm9LEHKSCVjYE4lU1VLeLZsdohkxyWidgNedBBQN5YRtYDAGUNuEvQtjsHuHG1qeYtBk1wPzLG6dy7aXaGQxABRPAkkXWOZch3gsliSZCbqa/nubx96mTRkazHanDmPiHs9p7ktMy0nhoihRLStAk2ksuZxnVXqVegml6zkfSbDvagN7fZpeGjN9WO9nYk+uXczE4v6irK1kJmwlxQN7Q13yVonVxRTB/vPyaWq7SESjzaHDVK/KeovWAYV2L5u1926g7ySyk2VH1kZzM8Bo7Dm+23NtAK6jUTD/RH366+CeOxEBougV2BPSHDzeDJTLRT1GtDxzb3yWDO4lUIfkInD6tNgcAG1aZidleViW2MDkMQsWxFWy/GrN2yMFlLnmNiH2JAU1cHqSpnKJPUQYDZ5tQwAHbCLjPQOkjhrNAkl5Wniq391dtw==; 5:D0Gf8CojbvH5FdEcNcG45Gff6rnG47fcS1Rx7pYiKJcb5yXkhoC70aGMSXNts7sJxbyqMun4HHpGXi8Dt5HwQHLkjER0jdb4q+d9P10UHeNg+HTQrNK8KmCzNcG1NZaCmpx0w0THl0VYYLomnb9sX/pIMCCtyQti5Ucn6MDBbbw=; 7:GBh74DPDMwo1X77JkB0ILD92l/nVkw0WmYpK9suULdf4jvHdc9k+pBxoqCsKtuOqyCfuHKTm+6fgYaMN9UDYVgDeJbtD5BAxc3pxtbiX1Mzc6iJlnNbzXnWBOBwAPwA0F8zEdbYb9uJekiIpVOAC4A== x-ms-office365-filtering-correlation-id: bfba4c7d-d650-4a10-ffc0-08d66333670e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5054; x-ms-traffictypediagnostic: VI1PR05MB5054: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(6040522)(2401047)(8121501046)(5005006)(3231475)(944501520)(52105112)(93006095)(93001095)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5054; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5054; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(396003)(376002)(346002)(199004)(189003)(54906003)(11346002)(2351001)(102836004)(76176011)(446003)(26005)(105586002)(386003)(106356001)(36756003)(4326008)(6916009)(86362001)(2501003)(6436002)(6486002)(186003)(6506007)(71190400001)(71200400001)(52116002)(53936002)(5660300001)(478600001)(97736004)(14454004)(25786009)(107886003)(6512007)(5640700003)(256004)(99286004)(66066001)(7736002)(8936002)(316002)(81166006)(305945005)(8676002)(68736007)(486006)(2906002)(81156014)(2616005)(3846002)(6116002)(476003)(1076002)(1730700003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5054; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: WF5cyz+oxU/ab+/Dqgq1wkVz0H6tvoatxnZz9/tgxlU8uNLAUEJc2VNCM4BtG2N/T5E6d/9kfoUFrQ4VjQOL2yBibOpVJbbWCF2Ulk9XVrYQPe6VaHrXs2Bk0cc91WtnTXFAvh1TAexwDAL/c7AkS/YM7zl0mSGZkOV6zQpRA98tqNRZWXRLJs9ooSTB8wQyQGi9fc+4hH6JoKzX00/dVHKe/JhAQkfoqaEJ/xwrcW40ge54kfmbqoigot30obCBPyhiUX1X/j9W6DDYxyiVPf7710qms4o+H2d+fU7IPc7PSQ634xl4jSG5AukSKYTt spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: bfba4c7d-d650-4a10-ffc0-08d66333670e X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:34.6104 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5054 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Now that mlxsw driver handles all aspects of updating the Bloom filter mechanism, set bf_bypass value to false and allow HW to use Bloom filter. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- drivers/net/ethernet/mellanox/mlxsw/reg.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 8e1f7ae4342a..9b48dffc9f63 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h @@ -2743,7 +2743,7 @@ mlxsw_reg_perpt_pack(char *payload, u8 erpt_bank, u8 erpt_index, mlxsw_reg_perpt_erpt_bank_set(payload, erpt_bank); mlxsw_reg_perpt_erpt_index_set(payload, erpt_index); mlxsw_reg_perpt_key_size_set(payload, key_size); - mlxsw_reg_perpt_bf_bypass_set(payload, true); + mlxsw_reg_perpt_bf_bypass_set(payload, false); mlxsw_reg_perpt_erp_id_set(payload, erp_id); mlxsw_reg_perpt_erpt_base_bank_set(payload, erpt_base_bank); mlxsw_reg_perpt_erpt_base_index_set(payload, erpt_base_index); @@ -3006,7 +3006,7 @@ static inline void mlxsw_reg_percr_pack(char *payload, u16 region_id) mlxsw_reg_percr_region_id_set(payload, region_id); mlxsw_reg_percr_atcam_ignore_prune_set(payload, false); mlxsw_reg_percr_ctcam_ignore_prune_set(payload, false); - mlxsw_reg_percr_bf_bypass_set(payload, true); + mlxsw_reg_percr_bf_bypass_set(payload, false); } /* PERERP - Policy-Engine Region eRP Register From patchwork Sun Dec 16 08:49:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014057 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="ahfp1trk"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK51FDBz9s1c for ; Sun, 16 Dec 2018 19:50:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730046AbeLPIuA (ORCPT ); Sun, 16 Dec 2018 03:50:00 -0500 Received: from mail-eopbgr60043.outbound.protection.outlook.com ([40.107.6.43]:1824 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729821AbeLPIuA (ORCPT ); Sun, 16 Dec 2018 03:50:00 -0500 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=3H54MvOuz4Fjgr6Et3AP30gqzBvnrk82Z98L4WoyOkA=; b=ahfp1trkiugKPb5B0oSX3fwHtyR4fE0ZQZV6m6uhBi8CuZjEBoDAwZE/qF14/TrvFImemm+hqaPoe/OPT2c0v1A9Z0DU6650FTJySscQ5dtFnqZoJcvVn3Fzytcj7cs1u81MeRsDU5Xy7SFwxH1PTzEx51GIOH/g2eWrb/jp+lE= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB5054.eurprd05.prod.outlook.com (20.177.52.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:35 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:35 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 10/12] selftests: mlxsw: Add Bloom filter simple test Thread-Topic: [PATCH net-next 10/12] selftests: mlxsw: Add Bloom filter simple test Thread-Index: AQHUlRxF6ZtWkPlxlUam2zsD8+YHOQ== Date: Sun, 16 Dec 2018 08:49:35 +0000 Message-ID: <20181216084851.4967-11-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5054; 6:jrw+/lLtFw2WpA2xmYffDyXj+bUFQb8YgWvjEReUHmFYxJnCCUNSWQ9Gy+ySm/KEcaQqFYk/qEIXmyyIJXnKfym4vg1YeYpR6ApRRBj6w/tyD1Rw00t5jTGkFVnQTsB8VoBTkNkktC2DNoD2/MTV1TVlnUmLmCu7xH8wecI0/zsXfzmBk7fSti+drvBQgwL8i/qGnZ/51eX5JleuKoMcF82zNcK1q0TbmEXe4502jaR6D19tXLwDO4ZZYXqsYNa91B+4FgYb6HcVFIEUsEfxc5DR67sSyZ6/WfLSr1Qxu8cYVq9CjfS5aroq6zs/VJWRaxd3ZYDMiSOQCjFBX0Kq4r+ULQKJjosNNqOjHdsX+Rkcp/ogBT+vDqq7nRtqUNtQeDPQxtoWpYbPpXL3jWNfljVOpIVhPQGJHE0bXb2U39XYJO8wMJRkiugVlFgwxGL17UHHiSnauNNh+7xxWVtlPA==; 5:9WX7qR3Ih1AIbyizBO+x8pSuGshBQZJwVHhRUim12AQEcNehsRCeO4uHz7tyiXQ+Lihd1c4I/1jYH0bV0xJrEX27qK5i3IW+6UB7k94tTdgu13yrr8Ia3ySYqunL8xOdC3kkDLsosnvGs+1+wg5Pth7fAheogR2ekRTZ8+iDi1I=; 7:s2l2o7ASOm9FNsgG4i5iy8qI0x3C0sLWL0DIPtotKQhL/i4Mw/IQ8Rv8MEJo0sRkIkh+t+kZh5CpKh3ham2pPQt0pM9cKyMnzYDDl/Xrb5QUzdYuaq6giGxCvJXJ5EwM2O0ONfPxF1G3cRcYqOz1pQ== x-ms-office365-filtering-correlation-id: ad1f42b2-4cef-4e23-581e-08d6633367b8 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5054; x-ms-traffictypediagnostic: VI1PR05MB5054: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(6040522)(2401047)(8121501046)(5005006)(3231475)(944501520)(52105112)(93006095)(93001095)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5054; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5054; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(396003)(376002)(346002)(199004)(189003)(54906003)(11346002)(2351001)(102836004)(76176011)(446003)(26005)(105586002)(386003)(106356001)(36756003)(4326008)(6916009)(86362001)(2501003)(6436002)(6486002)(186003)(6506007)(71190400001)(71200400001)(52116002)(53936002)(5660300001)(478600001)(97736004)(14454004)(25786009)(107886003)(14444005)(6512007)(5640700003)(256004)(99286004)(66066001)(7736002)(8936002)(316002)(81166006)(305945005)(8676002)(68736007)(486006)(2906002)(81156014)(2616005)(3846002)(6116002)(476003)(1076002)(1730700003)(473944003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5054; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: Xit2BGkVsHPLPpbeVSx4FRxDz0ScEmtq5y7VqwbMzmc6OHp/QS6eWF2F9cO0AfJhx3fdODCEeWqy+4FcSI5KG8786nYzzdjZAOS25UYwswy6nc5+TnHS5kYecOmOvM7ixIQTMmdDOPJagS41m6xc2ju8InXObtNgKE8RSlWME2XXPWOoFOm8mnTDFifxPd2YL/+DZ4SzPk6c4ijRSMCFYr2GTz+K8y0D7w1EWScZMSo5F/R6DKLLwXUAD/pzHujWXl7yzXRNxBKFx4A/3XCR5p91HDYUliamyJUPKgQ8I+LkKjvCOvcKFylmsvEFdEW6 spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad1f42b2-4cef-4e23-581e-08d6633367b8 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:35.7402 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5054 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Add a test that exercises Bloom filter code. Activate eRP table in the region by adding multiple rule patterns which with very high probability use different entries in the Bloom filter. Then send packets in order to check lookup hits on all relevant rules. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- .../drivers/net/mlxsw/spectrum-2/tc_flower.sh | 57 ++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh b/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh index 00ae99fbc253..ad66e3e94cc9 100755 --- a/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh +++ b/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh @@ -8,7 +8,8 @@ lib_dir=$(dirname $0)/../../../../net/forwarding ALL_TESTS="single_mask_test identical_filters_test two_masks_test \ - multiple_masks_test ctcam_edge_cases_test delta_simple_test" + multiple_masks_test ctcam_edge_cases_test delta_simple_test \ + bloom_simple_test" NUM_NETIFS=2 source $lib_dir/tc_common.sh source $lib_dir/lib.sh @@ -404,6 +405,60 @@ delta_simple_test() log_test "delta simple test ($tcflags)" } +bloom_simple_test() +{ + # Bloom filter requires that the eRP table is used. This test + # verifies that Bloom filter is not harming correctness of ACLs. + # First, make sure that eRP table is used and then set rule patterns + # which are distant enough and will result skipping a lookup after + # consulting the Bloom filter. Although some eRP lookups are skipped, + # the correct filter should be hit. + + RET=0 + + tc filter add dev $h2 ingress protocol ip pref 1 handle 101 flower \ + $tcflags dst_ip 192.0.2.2 action drop + tc filter add dev $h2 ingress protocol ip pref 5 handle 104 flower \ + $tcflags dst_ip 198.51.100.2 action drop + tc filter add dev $h2 ingress protocol ip pref 3 handle 103 flower \ + $tcflags dst_ip 192.0.0.0/8 action drop + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \ + -t ip -q + + tc_check_packets "dev $h2 ingress" 101 1 + check_err $? "Two filters - did not match highest priority" + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 198.51.100.1 -B 198.51.100.2 \ + -t ip -q + + tc_check_packets "dev $h2 ingress" 104 1 + check_err $? "Single filter - did not match" + + tc filter del dev $h2 ingress protocol ip pref 1 handle 101 flower + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \ + -t ip -q + + tc_check_packets "dev $h2 ingress" 103 1 + check_err $? "Low prio filter - did not match" + + tc filter add dev $h2 ingress protocol ip pref 2 handle 102 flower \ + $tcflags dst_ip 198.0.0.0/8 action drop + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 198.51.100.1 -B 198.51.100.2 \ + -t ip -q + + tc_check_packets "dev $h2 ingress" 102 1 + check_err $? "Two filters - did not match highest priority after add" + + tc filter del dev $h2 ingress protocol ip pref 3 handle 103 flower + tc filter del dev $h2 ingress protocol ip pref 2 handle 102 flower + tc filter del dev $h2 ingress protocol ip pref 5 handle 104 flower + + log_test "bloom simple test ($tcflags)" +} + setup_prepare() { h1=${NETIFS[p1]} From patchwork Sun Dec 16 08:49:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014058 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="EUcQIq8z"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK5673dz9s3Z for ; Sun, 16 Dec 2018 19:50:17 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730075AbeLPIuE (ORCPT ); Sun, 16 Dec 2018 03:50:04 -0500 Received: from mail-eopbgr60043.outbound.protection.outlook.com ([40.107.6.43]:1824 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1729991AbeLPIuD (ORCPT ); Sun, 16 Dec 2018 03:50:03 -0500 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=7ZDj+Znq3lBXdr327JtHeWuPODSQBQ0zOxwjFxuvDd8=; b=EUcQIq8zh6mU7uAsysT2qogIEFGlq+RBE9fRXYteEGJhYsTTbQi+klTNvM+wp5/iwxBZLQGBlHmdRoufr7T7ZPgfKg1ehGLQkay24xqrORBZvUg+nGKQGucPO2/M0WLujyK0s+Z9nNicTTnO3c5tDgAuBqpGn/A1tdQWc0ospkY= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB5054.eurprd05.prod.outlook.com (20.177.52.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:37 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:37 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 11/12] selftests: mlxsw: Add Bloom filter complex test Thread-Topic: [PATCH net-next 11/12] selftests: mlxsw: Add Bloom filter complex test Thread-Index: AQHUlRxGLm1ECSOeCUKTFtoFoNfNRA== Date: Sun, 16 Dec 2018 08:49:36 +0000 Message-ID: <20181216084851.4967-12-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5054; 6:O27WCPLR6znwiJYk7WdXcQNP6HpSQzJKUswUlwl/pJ37xBo3mPhkP+ntFozdOg9dXij8u4EFrok3EB6sba2UBvMzUSN+ozxRmf+uCxgJJoMvYl/XViTZN5/BJp8HceOtCxOp05x9npOtCP4DnXBnj72nHXmmLTpRswjiWx4GZx4n7u2wpHbf8tboOfrZ/sQCLmvxJ4f9WaBGxHuNwma9P1GvYOO/ruRJHPH9jKJ7kwZ1W+A7Anz0pCQChgflreQfWtsZhoEdBDN1hlCTAYOgG9RzFpJ97EQ8SwaAEA74O6ATZRcWlQ0Zu6wo05hzMo5fFnsQGqdSN0YrZVWTyXgTxbvl9jqjwjzbE+jrUP7CjQvZKTVPws18kU+1uOr6E2p7izxf5eGTLUEWyPliRzjjlZMMDU1IRM8crgGkz+wHiYudgH3Tv25WpUeb2A0Rcy5XzYlRg9F3gzDV0v7RZvERCQ==; 5:3FEqI3idX0qj3ft7uP4K56jx9l/x78xS1p2HN322UiZJXRw0MYTa4/DBDexTYLlf4/PempY5p3i7w4b1U+yIIRLbaZxUQfW38HqEQjtAC835oNGHYjWniWRcG9t+zaUYxvYTiI5CJi5D3G7Xxt2ezQ05aSPYVGZ8b245R2FJzts=; 7:JwLj1ag2O7/2GstmrgNod0dBSmT9HA2128zE3d6Kz1tBxoSAJ7Kq6YlBiaTZjRWIUa7ditxDsU89gVCyw2lkGQpNngvUa28NIQYiDDqaZxAO06t99xswaC/IwDfv22qqHJjkfFC8o1HIkplFgH6MHw== x-ms-office365-filtering-correlation-id: 25acd814-d2b2-46ec-e496-08d663336864 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5054; x-ms-traffictypediagnostic: VI1PR05MB5054: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(6040522)(2401047)(8121501046)(5005006)(3231475)(944501520)(52105112)(93006095)(93001095)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5054; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5054; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(396003)(376002)(346002)(199004)(189003)(54906003)(11346002)(2351001)(102836004)(76176011)(446003)(26005)(105586002)(386003)(106356001)(36756003)(4326008)(6916009)(86362001)(2501003)(6436002)(6486002)(186003)(6506007)(71190400001)(71200400001)(52116002)(53936002)(5660300001)(478600001)(97736004)(14454004)(25786009)(107886003)(14444005)(6512007)(5640700003)(256004)(99286004)(66066001)(7736002)(8936002)(316002)(81166006)(305945005)(8676002)(68736007)(486006)(2906002)(81156014)(2616005)(3846002)(6116002)(476003)(1076002)(1730700003)(473944003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5054; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: DFzcfS+vhReJmobKdo7JUKU4twdd3aK2airpOZAo2Fuu6ByiWVALHnw5nka18L5K19eSuTnTKvbdBulT8xiysTD+W3mGlzQaZ/38IUkOw/tQoX/9FmQC2DKuL7HUlgHnx2hE+rEuF17ajavxeb2mZfmuhhJh71aMaLc1uMswlvo0IVt97OYQW39EKCdEgPmkrGgodep77v/krP92yBaBgBTIFpvZMnuJInTA29B8MfSrEySNY464VNPOzb7TaNZ1lQEdm/t1Uw7lZtQYeJr4RKUG33nLd6MFIU70h5W+MPT39Gr9BSbAgNRZpwGdw0vz spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25acd814-d2b2-46ec-e496-08d663336864 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:36.8550 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5054 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan Bloom filter index computation is based on the values of {rule & mask, mask ID, region ID} and the computation also varies according to the region key size. Add a test that exercises the possible combinations by creating multiple chains using different key sizes and then pass a frame that is supposed to to produce a hit on all of the regions. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- .../drivers/net/mlxsw/spectrum-2/tc_flower.sh | 85 ++++++++++++++++++- 1 file changed, 84 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh b/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh index ad66e3e94cc9..a7667ebc578f 100755 --- a/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh +++ b/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh @@ -9,7 +9,7 @@ lib_dir=$(dirname $0)/../../../../net/forwarding ALL_TESTS="single_mask_test identical_filters_test two_masks_test \ multiple_masks_test ctcam_edge_cases_test delta_simple_test \ - bloom_simple_test" + bloom_simple_test bloom_complex_test" NUM_NETIFS=2 source $lib_dir/tc_common.sh source $lib_dir/lib.sh @@ -459,6 +459,89 @@ bloom_simple_test() log_test "bloom simple test ($tcflags)" } +bloom_complex_test() +{ + # Bloom filter index computation is affected from region ID, eRP + # ID and from the region key size. In order to excercise those parts + # of the Bloom filter code, use a series of regions, each with a + # different key size and send packet that should hit all of them. + local index + + RET=0 + NUM_CHAINS=4 + BASE_INDEX=100 + + # Create chain with up to 2 key blocks (ip_proto only) + tc chain add dev $h2 ingress chain 1 protocol ip flower \ + ip_proto tcp &> /dev/null + # Create chain with 2-4 key blocks (ip_proto, src MAC) + tc chain add dev $h2 ingress chain 2 protocol ip flower \ + ip_proto tcp \ + src_mac 00:00:00:00:00:00/FF:FF:FF:FF:FF:FF &> /dev/null + # Create chain with 4-8 key blocks (ip_proto, src & dst MAC, IPv4 dest) + tc chain add dev $h2 ingress chain 3 protocol ip flower \ + ip_proto tcp \ + dst_mac 00:00:00:00:00:00/FF:FF:FF:FF:FF:FF \ + src_mac 00:00:00:00:00:00/FF:FF:FF:FF:FF:FF \ + dst_ip 0.0.0.0/32 &> /dev/null + # Default chain contains all fields and therefore is 8-12 key blocks + tc chain add dev $h2 ingress chain 4 + + # We need at least 2 rules in every region to have eRP table active + # so create a dummy rule per chain using a different pattern + for i in $(eval echo {0..$NUM_CHAINS}); do + index=$((BASE_INDEX - 1 - i)) + tc filter add dev $h2 ingress chain $i protocol ip \ + pref 2 handle $index flower \ + $tcflags ip_proto tcp action drop + done + + # Add rules to test Bloom filter, each in a different chain + index=$BASE_INDEX + tc filter add dev $h2 ingress protocol ip \ + pref 1 handle $((++index)) flower \ + $tcflags dst_ip 192.0.0.0/16 action goto chain 1 + tc filter add dev $h2 ingress chain 1 protocol ip \ + pref 1 handle $((++index)) flower \ + $tcflags action goto chain 2 + tc filter add dev $h2 ingress chain 2 protocol ip \ + pref 1 handle $((++index)) flower \ + $tcflags src_mac $h1mac action goto chain 3 + tc filter add dev $h2 ingress chain 3 protocol ip \ + pref 1 handle $((++index)) flower \ + $tcflags dst_ip 192.0.0.0/8 action goto chain 4 + tc filter add dev $h2 ingress chain 4 protocol ip \ + pref 1 handle $((++index)) flower \ + $tcflags src_ip 192.0.2.0/24 action drop + + # Send a packet that is supposed to hit all chains + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.0.2.1 -B 192.0.2.2 \ + -t ip -q + + for i in $(eval echo {0..$NUM_CHAINS}); do + index=$((BASE_INDEX + i + 1)) + tc_check_packets "dev $h2 ingress" $index 1 + check_err $? "Did not match chain $i" + done + + # Rules cleanup + for i in $(eval echo {$NUM_CHAINS..0}); do + index=$((BASE_INDEX - i - 1)) + tc filter del dev $h2 ingress chain $i \ + pref 2 handle $index flower + index=$((BASE_INDEX + i + 1)) + tc filter del dev $h2 ingress chain $i \ + pref 1 handle $index flower + done + + # Chains cleanup + for i in $(eval echo {$NUM_CHAINS..1}); do + tc chain del dev $h2 ingress chain $i + done + + log_test "bloom complex test ($tcflags)" +} + setup_prepare() { h1=${NETIFS[p1]} From patchwork Sun Dec 16 08:49:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ido Schimmel X-Patchwork-Id: 1014060 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=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; 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.b="nUKHYPDC"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43HdK724vBz9s3Z for ; Sun, 16 Dec 2018 19:50:19 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730131AbeLPIuG (ORCPT ); Sun, 16 Dec 2018 03:50:06 -0500 Received: from mail-eopbgr60043.outbound.protection.outlook.com ([40.107.6.43]:1824 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1730055AbeLPIuF (ORCPT ); Sun, 16 Dec 2018 03:50:05 -0500 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=KfO8RdtzAnlwGN1zgE2iIwm6p3Be9K1AerngEvCfpn0=; b=nUKHYPDCZCTCSY/v1AEIDmE4Bs109Qhp7OgGg7a1CNlJ5MfzlrOwa8ue3ED04/Tc8M1AwzV5UXP5HJvttt/6CBMWWnr1fvSOMnFO9PVJHwDF5mCWqEKtqo8CgDMoQPD+EG3QUQtzAy+D47xQ1L8TY1P/0bX9jE6fTqLgIuqGZ+4= Received: from VI1PR05MB5630.eurprd05.prod.outlook.com (20.178.120.87) by VI1PR05MB5054.eurprd05.prod.outlook.com (20.177.52.79) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1425.22; Sun, 16 Dec 2018 08:49:38 +0000 Received: from VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf]) by VI1PR05MB5630.eurprd05.prod.outlook.com ([fe80::70a6:66a5:1421:bbcf%4]) with mapi id 15.20.1425.021; Sun, 16 Dec 2018 08:49:38 +0000 From: Ido Schimmel To: "netdev@vger.kernel.org" CC: "davem@davemloft.net" , Jiri Pirko , Nir Dotan , mlxsw , Ido Schimmel Subject: [PATCH net-next 12/12] selftests: mlxsw: Add Bloom delta test Thread-Topic: [PATCH net-next 12/12] selftests: mlxsw: Add Bloom delta test Thread-Index: AQHUlRxGL7uWdk/bcEmoN/5rXXrYiA== Date: Sun, 16 Dec 2018 08:49:37 +0000 Message-ID: <20181216084851.4967-13-idosch@mellanox.com> References: <20181216084851.4967-1-idosch@mellanox.com> In-Reply-To: <20181216084851.4967-1-idosch@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: AM5P190CA0019.EURP190.PROD.OUTLOOK.COM (2603:10a6:206:14::32) To VI1PR05MB5630.eurprd05.prod.outlook.com (2603:10a6:803:c9::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=idosch@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [193.47.165.251] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; VI1PR05MB5054; 6:O2z7fbZRaCpZIdvTT0hUDNrWbeNzT8CFwWQEbve+R+QAP1vRzz3v5292Z4+2kCqW+bmS37047tvS176Nfyosn4Uc80m7pXTpEkf4n0ZgffU7EslwQ7zFeQZaVDVpTRyTJolq424sHyLJ94o134nR0ad0M2e7l8HjVTqOYJ8R+TRKP3PgBEyQherAVknQ93qVachNctMvrzZ4CyQ+X9TYo8eLGG8afCvG/SLSPhfs6Dnt0M8mdJxiT2n350W2vy7hS1U7Pm7/4oeYJ3F65VUPtsfyrP2fZoXveWpRiHO5oio2XiKesOPwqmRFiPuH1pno72PLrj3XuMWPrYtLD8gqxfUxaSOohBtdZhRBb3QSiPbib2seCTAv0i4WZze/5Y0Ugbqq97QJNg+BUqOgr4BvTLHxIh2QIWvkmN8/CoUolcjJBXF4UvqCEN8H7A0ZO8JpVcICB+wcGj3FbW0Cw3tLKA==; 5:s377dD/uDBpEJjjIODnFpf1JW6ZAXQwOtDujpndbzT4GpwrUfe0TWDVZp68FFvDTqVlDDCig21vg10AqkdIH60nJzMKOvg6iDzyrDylccjU4HhnyGGaPN+/vx8KUuDZyMi1nxUzLFSzRInaeTzNpZnoKof3RwGVWco6SQO61XWw=; 7:kpYLxzolcJjcCF2fXOs/iPiHZvV7nk8a5z1J61vQbZb93zCuD7FQDra0mJ+ATr3FuSwXf8Mhzl+ezM+sfMqbhCMhWjjHZtqP9eEMFDwxH/Bz7t/xNkR59+P8KEhqlEttUax55o/OKgBpzXYJ4LUO9A== x-ms-office365-filtering-correlation-id: 246e7c7e-28e8-4433-86e5-08d663336910 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR05MB5054; x-ms-traffictypediagnostic: VI1PR05MB5054: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(999002)(6040522)(2401047)(8121501046)(5005006)(3231475)(944501520)(52105112)(93006095)(93001095)(10201501046)(3002001)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:VI1PR05MB5054; BCL:0; PCL:0; RULEID:; SRVR:VI1PR05MB5054; x-forefront-prvs: 0888B1D284 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(136003)(396003)(376002)(346002)(199004)(189003)(54906003)(11346002)(2351001)(102836004)(76176011)(446003)(26005)(105586002)(386003)(106356001)(36756003)(4326008)(6916009)(86362001)(2501003)(6436002)(6486002)(186003)(6506007)(71190400001)(71200400001)(52116002)(53936002)(5660300001)(478600001)(97736004)(14454004)(25786009)(107886003)(14444005)(6512007)(5640700003)(256004)(99286004)(66066001)(7736002)(8936002)(316002)(81166006)(305945005)(8676002)(68736007)(486006)(2906002)(81156014)(2616005)(3846002)(6116002)(476003)(1076002)(1730700003)(473944003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5054; H:VI1PR05MB5630.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-microsoft-antispam-message-info: TC9CKUauNHN4y/QYof9xtK7Rie1kvzrn+uJd5/z/kU9u3P8RCcppSgTGh80dbdYpDGgF/dAxzWlPxBu2IhG4d+eysGq+3dhmcCS/+pMj2aWdaj2iRLso2hi/ZTVz9UYwDyxTFmXFfr+nkJaXWS5tth1pPQU2AidzkSgHzN5WlzXd75SEhF9g6e43AjqyEuin32Z7iSC2iqgvPy2fImfvPLykOhEVb2fDmVcTkEIxwAdmwmcDM+RGu5FUXIZa4JKpBw66seIrcIiasEA70Bmvk2qyr8UUEET3W/CAa//Q15CVsIh/mQF14Q4KzAkyOqyL spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 246e7c7e-28e8-4433-86e5-08d663336910 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2018 08:49:37.9618 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5054 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Nir Dotan The eRP table is active when there is more than a single rule pattern. It may be that the patterns are close enough and use delta mechanism. Bloom filter index computation is based on the values of {rule & mask, mask ID, region ID} where the rule delta bits must be cleared. Add a test that exercises Bloom filter with delta mechanism. Configure rules within delta range and pass a packet which is supposed to hit the correct rule. Signed-off-by: Nir Dotan Signed-off-by: Ido Schimmel --- .../drivers/net/mlxsw/spectrum-2/tc_flower.sh | 37 ++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh b/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh index a7667ebc578f..b41d6256b2d0 100755 --- a/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh +++ b/tools/testing/selftests/drivers/net/mlxsw/spectrum-2/tc_flower.sh @@ -9,7 +9,7 @@ lib_dir=$(dirname $0)/../../../../net/forwarding ALL_TESTS="single_mask_test identical_filters_test two_masks_test \ multiple_masks_test ctcam_edge_cases_test delta_simple_test \ - bloom_simple_test bloom_complex_test" + bloom_simple_test bloom_complex_test bloom_delta_test" NUM_NETIFS=2 source $lib_dir/tc_common.sh source $lib_dir/lib.sh @@ -542,6 +542,41 @@ bloom_complex_test() log_test "bloom complex test ($tcflags)" } + +bloom_delta_test() +{ + # When multiple masks are used, the eRP table is activated. When + # masks are close enough (delta) the masks reside on the same + # eRP table. This test verifies that the eRP table is correctly + # allocated and used in delta condition and that Bloom filter is + # still functional with delta. + + RET=0 + + tc filter add dev $h2 ingress protocol ip pref 3 handle 103 flower \ + $tcflags dst_ip 192.1.0.0/16 action drop + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.1.2.1 -B 192.1.2.2 \ + -t ip -q + + tc_check_packets "dev $h2 ingress" 103 1 + check_err $? "Single filter - did not match" + + tc filter add dev $h2 ingress protocol ip pref 2 handle 102 flower \ + $tcflags dst_ip 192.2.1.0/24 action drop + + $MZ $h1 -c 1 -p 64 -a $h1mac -b $h2mac -A 192.2.1.1 -B 192.2.1.2 \ + -t ip -q + + tc_check_packets "dev $h2 ingress" 102 1 + check_err $? "Delta filters - did not match second filter" + + tc filter del dev $h2 ingress protocol ip pref 3 handle 103 flower + tc filter del dev $h2 ingress protocol ip pref 2 handle 102 flower + + log_test "bloom delta test ($tcflags)" +} + setup_prepare() { h1=${NETIFS[p1]}