From patchwork Fri Nov 1 21:58:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188214 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 (no SPF record) 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="cB5fsfen"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bmD6ygbz9sP4 for ; Sat, 2 Nov 2019 09:03:08 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726650AbfKAWDH (ORCPT ); Fri, 1 Nov 2019 18:03:07 -0400 Received: from mail-eopbgr80085.outbound.protection.outlook.com ([40.107.8.85]:1441 "EHLO EUR04-VI1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727176AbfKAWDH (ORCPT ); Fri, 1 Nov 2019 18:03:07 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Gv/rJtkEYy6iz7/apQ9bA3STbXPzdJj91V6+87d3kNBbK53rGmKWY5x9BzSmSnPCO6uxahgszcsn+hdT0cWJdae5l6p2d2lUoy2VEGU8YCnzLOwZqfome5Bq3rAmZX+OTLs3+YajXWRyF1j2M3vWGJpw2phvWX0e/tXCwL11cqgqZWX1YIfDf9Kh5WVQFrup3b459t52T5WpfAaRsoXl5IZGXNGxJINyRghTvevmYFlv9hYhDHtwG/rhPU1epJB+rtGfjbb87b3W7WCoipkmyoeNKCxncohnpNq11+pGk8ZFSlSL+K3Iu+bhrx6SbXfWVch62ALfd2Naabx2/29JPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Lx74XHxWQflIlSHuZlxY6JfBomEFDjFEfPkLkAxxpjk=; b=dd5OrxpoMLAvZeLWEjAweB8l7yfEtNq+XCCf2KmVZ+Bnuub+unBUSqCHEahxUmM4R2ubx802nB3/gMVUAcZ16HJ2f83zuXYL/4+Po2GQfb2CqOZ7hNffvbr1vJJ3CZelLXFpfsJ+r3iUDipVsZLSxSe6KVWbxQbf26X6OO7blIe0k3YgPipBXSYHOHpNmGgx71GlMdkq5h5nB+INnwBZnHWFrVYNtijVnSLp/zFKtlIfL1shAC00wHQxMdrtiRN/FBKCgw14ikUUUC/1yBwoKyYdLGaVQ/rqI0Gk/IZzIa4JSUBQIMt8eR6JJytVBlabY8zIktXUYX83EoWPRBiztQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Lx74XHxWQflIlSHuZlxY6JfBomEFDjFEfPkLkAxxpjk=; b=cB5fsfenjet7mkT35759SWTLuJrobwftX93NPFKZTbQZ+6+cGu7AH0Qnvvyn0boohtPRIU3SBP3LYw+u6fWB2i0Kc5qucUNScDRHobgvC2NSuws6Ygwvl7Zrq6lqbFjG9afrrwohL8XjhtsQUP3LBXnDQXWa3vaHyDs6nvmvFFA= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB3293.eurprd05.prod.outlook.com (10.175.244.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.25; Fri, 1 Nov 2019 21:58:57 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:58:57 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Hamdan Igbaria , Alex Vesker , Saeed Mahameed Subject: [net-next 01/15] net/mlx5: DR, Replace CRC32 implementation to use kernel lib Thread-Topic: [net-next 01/15] net/mlx5: DR, Replace CRC32 implementation to use kernel lib Thread-Index: AQHVkP+PcUWI7/6xXE20CMQC1TfNQw== Date: Fri, 1 Nov 2019 21:58:57 +0000 Message-ID: <20191101215833.23975-2-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: b32d3ac9-f671-46bc-3653-08d75f16b1af x-ms-traffictypediagnostic: VI1PR05MB3293:|VI1PR05MB3293: x-ms-exchange-purlcount: 1 x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(39860400002)(136003)(376002)(346002)(396003)(199004)(189003)(4326008)(66066001)(6306002)(6116002)(3846002)(71190400001)(256004)(99286004)(107886003)(54906003)(14454004)(76176011)(6512007)(478600001)(14444005)(316002)(966005)(71200400001)(6506007)(1076003)(52116002)(36756003)(386003)(2906002)(66946007)(66556008)(6436002)(50226002)(7736002)(6486002)(66476007)(6916009)(305945005)(186003)(64756008)(81156014)(81166006)(486006)(8676002)(25786009)(476003)(11346002)(446003)(2616005)(5660300002)(26005)(86362001)(102836004)(66446008)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3293; H:VI1PR05MB5102.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-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: g2gsMDVy2XhuiZ/UOunQkOb8AJdVPkecGouWKDPSgnNszpQQor4VavD0IH2r9aFIft7PWmq/s/KvPSR2sP/yI4iKOXMETsTpLMofwBtjSdYZdVij7XILs9IIGuwHprzz2OvhNLEmPi1xyUz+SjKiJRY+pODvbRJ2b47H4BJJ6YyW/xiM2thm+asTvr+S/I9KDXrza2puWLFFIIp0BqQjksru7j2ivKqfBuD9kEfjMtMwmMpocLpuAI/dXtl4JqnLqoyJnHE+lFnClpu9yaNKfeII6QiiIrgMHITPmAPTKoLpIu/36XrDCsWNXU6HvvNIyryNW57XgvWc+bSRD8x4z/HaTLqyrFcklsPmKIfSqX9qZEwuKl7YFXJAWAMcjMS4u+2Hj0/i8LCywNu+0jrw+Ov6+Hw6Pm469xjl9QpDjsP8dfuRqCnBl1P0aD/gi9bHZObL/DfN/iNb5LDAEaTKFuOEBS8afy2/Yaar2wLt0l0= MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: b32d3ac9-f671-46bc-3653-08d75f16b1af X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:58:57.2842 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 50N8J75sIET5sJaX9imPqJMQNBqhc3ecR4cbTWtng9CkeW2ZDifyABsvNvwB4EXA/qKJo5xf19XutInwenpzKg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3293 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Hamdan Igbaria Use kernel function to calculate crc32 Instead of dr implementation since it has the same algorithm "slice by 8". Fixes: 26d688e33f88 ("net/mlx5: DR, Add Steering entry (STE) utilities") Signed-off-by: Hamdan Igbaria Reviewed-by: Alex Vesker Signed-off-by: Saeed Mahameed --- .../net/ethernet/mellanox/mlx5/core/Makefile | 2 +- .../mellanox/mlx5/core/steering/dr_crc32.c | 98 ------------------- .../mellanox/mlx5/core/steering/dr_domain.c | 3 - .../mellanox/mlx5/core/steering/dr_ste.c | 10 +- .../mellanox/mlx5/core/steering/dr_types.h | 3 - 5 files changed, 10 insertions(+), 106 deletions(-) delete mode 100644 drivers/net/ethernet/mellanox/mlx5/core/steering/dr_crc32.c diff --git a/drivers/net/ethernet/mellanox/mlx5/core/Makefile b/drivers/net/ethernet/mellanox/mlx5/core/Makefile index 5708fcc079ca..a6f390fdb971 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/Makefile +++ b/drivers/net/ethernet/mellanox/mlx5/core/Makefile @@ -70,7 +70,7 @@ mlx5_core-$(CONFIG_MLX5_EN_TLS) += en_accel/tls.o en_accel/tls_rxtx.o en_accel/t mlx5_core-$(CONFIG_MLX5_SW_STEERING) += steering/dr_domain.o steering/dr_table.o \ steering/dr_matcher.o steering/dr_rule.o \ - steering/dr_icm_pool.o steering/dr_crc32.o \ + steering/dr_icm_pool.o \ steering/dr_ste.o steering/dr_send.o \ steering/dr_cmd.o steering/dr_fw.o \ steering/dr_action.o steering/fs_dr.o diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_crc32.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_crc32.c deleted file mode 100644 index 9e2eccbb1eb8..000000000000 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_crc32.c +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB -/* Copyright (c) 2019 Mellanox Technologies. */ - -/* Copyright (c) 2011-2015 Stephan Brumme. All rights reserved. - * Slicing-by-16 contributed by Bulat Ziganshin - * - * This software is provided 'as-is', without any express or implied warranty. - * In no event will the author be held liable for any damages arising from the - * of this software. - * - * Permission is granted to anyone to use this software for any purpose, - * including commercial applications, and to alter it and redistribute it - * freely, subject to the following restrictions: - * - * 1. The origin of this software must not be misrepresented; you must not - * claim that you wrote the original software. - * 2. If you use this software in a product, an acknowledgment in the product - * documentation would be appreciated but is not required. - * 3. Altered source versions must be plainly marked as such, and must not be - * misrepresented as being the original software. - * - * Taken from http://create.stephan-brumme.com/crc32/ and adapted. - */ - -#include "dr_types.h" - -#define DR_STE_CRC_POLY 0xEDB88320L - -static u32 dr_ste_crc_tab32[8][256]; - -static void dr_crc32_calc_lookup_entry(u32 (*tbl)[256], u8 i, u8 j) -{ - tbl[i][j] = (tbl[i - 1][j] >> 8) ^ tbl[0][tbl[i - 1][j] & 0xff]; -} - -void mlx5dr_crc32_init_table(void) -{ - u32 crc, i, j; - - for (i = 0; i < 256; i++) { - crc = i; - for (j = 0; j < 8; j++) { - if (crc & 0x00000001L) - crc = (crc >> 1) ^ DR_STE_CRC_POLY; - else - crc = crc >> 1; - } - dr_ste_crc_tab32[0][i] = crc; - } - - /* Init CRC lookup tables according to crc_slice_8 algorithm */ - for (i = 0; i < 256; i++) { - dr_crc32_calc_lookup_entry(dr_ste_crc_tab32, 1, i); - dr_crc32_calc_lookup_entry(dr_ste_crc_tab32, 2, i); - dr_crc32_calc_lookup_entry(dr_ste_crc_tab32, 3, i); - dr_crc32_calc_lookup_entry(dr_ste_crc_tab32, 4, i); - dr_crc32_calc_lookup_entry(dr_ste_crc_tab32, 5, i); - dr_crc32_calc_lookup_entry(dr_ste_crc_tab32, 6, i); - dr_crc32_calc_lookup_entry(dr_ste_crc_tab32, 7, i); - } -} - -/* Compute CRC32 (Slicing-by-8 algorithm) */ -u32 mlx5dr_crc32_slice8_calc(const void *input_data, size_t length) -{ - const u32 *curr = (const u32 *)input_data; - const u8 *curr_char; - u32 crc = 0, one, two; - - if (!input_data) - return 0; - - /* Process eight bytes at once (Slicing-by-8) */ - while (length >= 8) { - one = *curr++ ^ crc; - two = *curr++; - - crc = dr_ste_crc_tab32[0][(two >> 24) & 0xff] - ^ dr_ste_crc_tab32[1][(two >> 16) & 0xff] - ^ dr_ste_crc_tab32[2][(two >> 8) & 0xff] - ^ dr_ste_crc_tab32[3][two & 0xff] - ^ dr_ste_crc_tab32[4][(one >> 24) & 0xff] - ^ dr_ste_crc_tab32[5][(one >> 16) & 0xff] - ^ dr_ste_crc_tab32[6][(one >> 8) & 0xff] - ^ dr_ste_crc_tab32[7][one & 0xff]; - - length -= 8; - } - - curr_char = (const u8 *)curr; - /* Remaining 1 to 7 bytes (standard algorithm) */ - while (length-- != 0) - crc = (crc >> 8) ^ dr_ste_crc_tab32[0][(crc & 0xff) - ^ *curr_char++]; - - return ((crc >> 24) & 0xff) | ((crc << 8) & 0xff0000) | - ((crc >> 8) & 0xff00) | ((crc << 24) & 0xff000000); -} diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c index 5b24732b18c0..a9da961d4d2f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_domain.c @@ -326,9 +326,6 @@ mlx5dr_domain_create(struct mlx5_core_dev *mdev, enum mlx5dr_domain_type type) goto uninit_resourses; } - /* Init CRC table for htbl CRC calculation */ - mlx5dr_crc32_init_table(); - return dmn; uninit_resourses: diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c index 4efe1b0be4a8..7e9d6cfc356f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c @@ -2,6 +2,7 @@ /* Copyright (c) 2019 Mellanox Technologies. */ #include +#include #include "dr_types.h" #define DR_STE_CRC_POLY 0xEDB88320L @@ -107,6 +108,13 @@ struct dr_hw_ste_format { u8 mask[DR_STE_SIZE_MASK]; }; +static u32 dr_ste_crc32_calc(const void *input_data, size_t length) +{ + u32 crc = crc32(0, input_data, length); + + return htonl(crc); +} + u32 mlx5dr_ste_calc_hash_index(u8 *hw_ste_p, struct mlx5dr_ste_htbl *htbl) { struct dr_hw_ste_format *hw_ste = (struct dr_hw_ste_format *)hw_ste_p; @@ -128,7 +136,7 @@ u32 mlx5dr_ste_calc_hash_index(u8 *hw_ste_p, struct mlx5dr_ste_htbl *htbl) bit = bit >> 1; } - crc32 = mlx5dr_crc32_slice8_calc(masked, DR_STE_SIZE_TAG); + crc32 = dr_ste_crc32_calc(masked, DR_STE_SIZE_TAG); index = crc32 & (htbl->chunk->num_of_entries - 1); return index; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h index 1cb3769d4e3c..d6d9bc5f4adf 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h @@ -962,9 +962,6 @@ void mlx5dr_ste_copy_param(u8 match_criteria, struct mlx5dr_match_param *set_param, struct mlx5dr_match_parameters *mask); -void mlx5dr_crc32_init_table(void); -u32 mlx5dr_crc32_slice8_calc(const void *input_data, size_t length); - struct mlx5dr_qp { struct mlx5_core_dev *mdev; struct mlx5_wq_qp wq; From patchwork Fri Nov 1 21:58:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188212 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 (no SPF record) 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="hMG0Bf4E"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bhF3hd1z9sP3 for ; Sat, 2 Nov 2019 08:59:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727756AbfKAV7k (ORCPT ); Fri, 1 Nov 2019 17:59:40 -0400 Received: from mail-eopbgr140048.outbound.protection.outlook.com ([40.107.14.48]:32389 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727387AbfKAV7i (ORCPT ); Fri, 1 Nov 2019 17:59:38 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=U4h9QB7L5IMPHWUktk9Q+SlNfA3GC7QH57I+HoE6vjd1mvNhRMV+TlU80b/1zqfWzPjsoZjGp9MD6QDuHhSfoSaZwhnK70qjBWmiKIOoXL1/l15sHDbkNiQ5vm8Ge9pJrmA5mz8J+u07UEsGhIbsqLY58KlmLthuDlbqFm5TClx1elQMd9OT6+VcNM5qxeeIq0eshXuenrUwj6dFo7mvj+DvS+FZ2Ir4sJVk1u8/0q+Ofb1tv0QwI6xCXZjvgYsVWjlHEXB+mqzvCAJTWWY3tNg+FvUSHSjUtqyLj0zoPry3sdy6ZlP3SBb9EVUw67sUE+qRD3qWgPAfJrj6sJu1Vw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=St3dVWlM0snSLmODrlu10WRlDk6zIBAJ+gKTpinPKL4=; b=TFrfG1YB2Slp74bV31o+Fk1170gikfjXpQPWjCN+ThUGYaG9s8tt8mAxiyynACoAgG89JjSWqZIhAhgWeOwRgUOmFCdgEzx06KDYMPVBRH7iiAzF49nimcpKFoJ2jq5qmfkxMRhyTZ+1FnKaMQYf218Q5QZp4x7dydjxFxQJjtq5czXHxmuPjtAlrH+chAYHflOlH7oNBdndGs5aYBd+3F73oxHGd1UYp0QVVDp6JLRFhu5rQ+tZyJ4IzO6TL6RJGbtBtTkaXKB/qh2nc6PCLuiLVY9rQbsvJfgMRE/9ntemsddR+AIaPO1vWZm1GuVy0DBkxdKz7hvhc1/hY+SSRA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=St3dVWlM0snSLmODrlu10WRlDk6zIBAJ+gKTpinPKL4=; b=hMG0Bf4EcZgpbsS2E7i3XimEJmCMhu3JaKc9nsC1R01erxr4gQPSpqPXQhFM5gnribn5RRAnQqo7o1/zbwYAK1FPIdYzGTCh/fW1ndE9MMTh6jqKOQOzwHhLQRArWxUrQhN+TwsQddg94s7ocnH6NHbdgGBffPi5L0xxTtV8Muw= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB3293.eurprd05.prod.outlook.com (10.175.244.18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.25; Fri, 1 Nov 2019 21:58:59 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:58:59 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Igor Leshchenko , Meir Lichtinger , Boris Pismenny , Saeed Mahameed Subject: [net-next 02/15] net/mlx5: FPGA, support network cards with standalone FPGA Thread-Topic: [net-next 02/15] net/mlx5: FPGA, support network cards with standalone FPGA Thread-Index: AQHVkP+Qr3Q9fhr2yE+RO6b3Cx0Rkw== Date: Fri, 1 Nov 2019 21:58:59 +0000 Message-ID: <20191101215833.23975-3-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 9c90bf6c-3435-49d2-49c1-08d75f16b2c6 x-ms-traffictypediagnostic: VI1PR05MB3293:|VI1PR05MB3293: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:109; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(366004)(39860400002)(136003)(376002)(346002)(396003)(199004)(189003)(4326008)(66066001)(6116002)(3846002)(71190400001)(256004)(99286004)(107886003)(54906003)(14454004)(76176011)(6512007)(478600001)(14444005)(316002)(71200400001)(6506007)(1076003)(52116002)(36756003)(386003)(2906002)(66946007)(66556008)(6436002)(50226002)(7736002)(6486002)(66476007)(6916009)(305945005)(186003)(64756008)(81156014)(81166006)(486006)(8676002)(25786009)(476003)(11346002)(446003)(2616005)(5660300002)(26005)(86362001)(102836004)(66446008)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB3293; H:VI1PR05MB5102.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-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 8+e3kpQlVCnqbUJ33LgTT+yS1iNMN1DZuKMUB+L+K3kbF5ov/yTXz1Lvhv9dvKLUN5gn49jkdjzC20Jsj0P0mMngDohA0Ru8Aqn6QZzLt9pp8HsOPhGTYD2V1co9COvNDAqUFPKo1s6yY7A9IYdUFM/+RQjF19649HaaMCPDxmVDiW0DSqzpbLxaC+aDvW4oK52nthshzkn6Jau8wBPNk+hSJalVtHCLr+gRUnlaoHqxpwzy5uKdTRRnj0wnbWRFD0+Lg+mrjVNQ99t+rB0g3EiCP86Fh9KirpD+gzgjyyj4rX9gqC20nZfk+7GJvAcq+RJI0CfwdSdMmk2EOEMTUkuwCmGCHNQvcSNjrAh5WFqbk180cR5uvqHM9ZlLFeT6aioPiaucAxWDLVdY5AtyOHkAYW7qv9N7y7YvOcM4pNOjRBS6On3+oqXB1ZluPE0J MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c90bf6c-3435-49d2-49c1-08d75f16b2c6 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:58:59.1112 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: WVgLRQM/hr1d/OHnr1XG6TjuzK1FLxhzk+tjuj4nbG9PeCKBi8nUKJd9I0gKEqRcFUZz8JZhYiZnnpLkisLhIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB3293 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Igor Leshenko Not all mlx5 cards with FPGA device use it for network processing. mlx5_core driver configures network connection to FPGA device for all mlx5 cards with installed FPGA. If FPGA is not a part of network path, driver crashes in this case Check FPGA name in function mlx5_fpga_device_start() and continue integrate FPGA into packets flow only for dedicated cards. Currently there are Newton and Edison cards. Signed-off-by: Igor Leshenko Reviewed-by: Meir Lichtinger Reviewed-by: Boris Pismenny Signed-off-by: Saeed Mahameed --- .../ethernet/mellanox/mlx5/core/fpga/cmd.h | 10 +-- .../ethernet/mellanox/mlx5/core/fpga/core.c | 61 +++++++++++++------ 2 files changed, 46 insertions(+), 25 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h b/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h index eb8b0fe0b4e1..11621d265d7e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/fpga/cmd.h @@ -35,11 +35,11 @@ #include -enum mlx5_fpga_device_id { - MLX5_FPGA_DEVICE_UNKNOWN = 0, - MLX5_FPGA_DEVICE_KU040 = 1, - MLX5_FPGA_DEVICE_KU060 = 2, - MLX5_FPGA_DEVICE_KU060_2 = 3, +enum mlx5_fpga_id { + MLX5_FPGA_NEWTON = 0, + MLX5_FPGA_EDISON = 1, + MLX5_FPGA_MORSE = 2, + MLX5_FPGA_MORSEQ = 3, }; enum mlx5_fpga_image { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c b/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c index d046d1ec2a86..2ce4241459ce 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fpga/core.c @@ -81,19 +81,28 @@ static const char *mlx5_fpga_image_name(enum mlx5_fpga_image image) } } -static const char *mlx5_fpga_device_name(u32 device) +static const char *mlx5_fpga_name(u32 fpga_id) { - switch (device) { - case MLX5_FPGA_DEVICE_KU040: - return "ku040"; - case MLX5_FPGA_DEVICE_KU060: - return "ku060"; - case MLX5_FPGA_DEVICE_KU060_2: - return "ku060_2"; - case MLX5_FPGA_DEVICE_UNKNOWN: - default: - return "unknown"; + static char ret[32]; + + switch (fpga_id) { + case MLX5_FPGA_NEWTON: + return "Newton"; + case MLX5_FPGA_EDISON: + return "Edison"; + case MLX5_FPGA_MORSE: + return "Morse"; + case MLX5_FPGA_MORSEQ: + return "MorseQ"; } + + snprintf(ret, sizeof(ret), "Unknown %d", fpga_id); + return ret; +} + +static int mlx5_is_fpga_lookaside(u32 fpga_id) +{ + return fpga_id != MLX5_FPGA_NEWTON && fpga_id != MLX5_FPGA_EDISON; } static int mlx5_fpga_device_load_check(struct mlx5_fpga_device *fdev) @@ -110,8 +119,12 @@ static int mlx5_fpga_device_load_check(struct mlx5_fpga_device *fdev) fdev->last_admin_image = query.admin_image; fdev->last_oper_image = query.oper_image; - mlx5_fpga_dbg(fdev, "Status %u; Admin image %u; Oper image %u\n", - query.status, query.admin_image, query.oper_image); + mlx5_fpga_info(fdev, "Status %u; Admin image %u; Oper image %u\n", + query.status, query.admin_image, query.oper_image); + + /* for FPGA lookaside projects FPGA load status is not important */ + if (mlx5_is_fpga_lookaside(MLX5_CAP_FPGA(fdev->mdev, fpga_id))) + return 0; if (query.status != MLX5_FPGA_STATUS_SUCCESS) { mlx5_fpga_err(fdev, "%s image failed to load; status %u\n", @@ -167,25 +180,30 @@ int mlx5_fpga_device_start(struct mlx5_core_dev *mdev) struct mlx5_fpga_device *fdev = mdev->fpga; unsigned int max_num_qps; unsigned long flags; - u32 fpga_device_id; + u32 fpga_id; int err; if (!fdev) return 0; - err = mlx5_fpga_device_load_check(fdev); + err = mlx5_fpga_caps(fdev->mdev); if (err) goto out; - err = mlx5_fpga_caps(fdev->mdev); + err = mlx5_fpga_device_load_check(fdev); if (err) goto out; - fpga_device_id = MLX5_CAP_FPGA(fdev->mdev, fpga_device); - mlx5_fpga_info(fdev, "%s:%u; %s image, version %u; SBU %06x:%04x version %d\n", - mlx5_fpga_device_name(fpga_device_id), - fpga_device_id, + fpga_id = MLX5_CAP_FPGA(fdev->mdev, fpga_id); + mlx5_fpga_info(fdev, "FPGA card %s:%u\n", mlx5_fpga_name(fpga_id), fpga_id); + + /* No QPs if FPGA does not participate in net processing */ + if (mlx5_is_fpga_lookaside(fpga_id)) + goto out; + + mlx5_fpga_info(fdev, "%s(%d): image, version %u; SBU %06x:%04x version %d\n", mlx5_fpga_image_name(fdev->last_oper_image), + fdev->last_oper_image, MLX5_CAP_FPGA(fdev->mdev, image_version), MLX5_CAP_FPGA(fdev->mdev, ieee_vendor_id), MLX5_CAP_FPGA(fdev->mdev, sandbox_product_id), @@ -264,6 +282,9 @@ void mlx5_fpga_device_stop(struct mlx5_core_dev *mdev) if (!fdev) return; + if (mlx5_is_fpga_lookaside(MLX5_CAP_FPGA(fdev->mdev, fpga_id))) + return; + spin_lock_irqsave(&fdev->state_lock, flags); if (fdev->state != MLX5_FPGA_STATUS_SUCCESS) { spin_unlock_irqrestore(&fdev->state_lock, flags); From patchwork Fri Nov 1 21:59:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188200 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 (no SPF record) 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="HAcgyWJ9"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bgb28Qnz9sP3 for ; Sat, 2 Nov 2019 08:59:07 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727295AbfKAV7G (ORCPT ); Fri, 1 Nov 2019 17:59:06 -0400 Received: from mail-eopbgr20063.outbound.protection.outlook.com ([40.107.2.63]:44510 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725989AbfKAV7F (ORCPT ); Fri, 1 Nov 2019 17:59:05 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AzWSIXHj/eY1nkjSoOG35PebmJWWreOyUnTvS8vlDgIglikQbHugbG1CuKkd8u5dV1zM1GnTGE3s4Rq6PTDGUyKqjudCGJujfHsFH3tMIPmv97YFgugBmpGReMRHlM8+b60Bli0OHuYNM5tq2BPkOawRHt22TxtUcbh4kq15vp2YJCwaeV/tQKdiD8tZmqYtjxzrmuOPtnr5ZR+CYm53TvCu6Q/f3KMTp+IcF7uaUpUkHKCflNTlvmt0ZF9mX+NaXcTAqJFdFBMpeajZanoLwEcyNdK1057e+xEID8q75AQ+G+rnAEKfmIb3k+04PBZIg94do6CYSQGLEEIk4Rbifw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OoY5bDFajYDw6hSnbkxSaCtEKC4/3R190uw228i7rew=; b=dbgHHgRvY3pWocw0WrQIBRVW4mWQYfebiUUEPnS+A7BMf7OF4bCpl66WtoHTWTZIDYsr7BgB+MsN1MyVdFrqgAwVXmm/JIN/pPt0fW0KDvASP/QxTn+Vs3tY930aeLgfcovkR8zdDMmTC9FiBqKmuCI9zMxu/DNTDD9DNyC0fZGxm5cVivVIeAtPbSYWgejwEbMA4xB8Gja9msfKPktQUmVYw9OTxMg5XYTysdlrZixNRMl6FNunbpihHd5dldpDgX0qYhqqckd5yMkciP5x1Rm9rZwFebbpgQs6589yfOXi8GEQUONlguvdKjmp0JrD5tS/QCHtc5w9szaztYWyvA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=OoY5bDFajYDw6hSnbkxSaCtEKC4/3R190uw228i7rew=; b=HAcgyWJ9sAOalUPgt2p5I00GhWACHLooQPMi7MlKeUGFQnsl/tnz0OjPeXBDH77G5jSJgcyfHVqJ6Nh8ykqbVj8A7qtizlMsl6MZrlMF6Kb3BhagGG7bD7ItpJfYOSikAGFmVETiQS7suLTwcMMwnO+A7kmYbGbTxaiuXY0kTGY= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB6173.eurprd05.prod.outlook.com (20.178.123.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Fri, 1 Nov 2019 21:59:01 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:01 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , zhong jiang , Saeed Mahameed Subject: [net-next 03/15] net/mlx5: Remove unneeded variable in mlx5_unload_one Thread-Topic: [net-next 03/15] net/mlx5: Remove unneeded variable in mlx5_unload_one Thread-Index: AQHVkP+R87Ea8dUsQEK/ff7+0/2eZQ== Date: Fri, 1 Nov 2019 21:59:00 +0000 Message-ID: <20191101215833.23975-4-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 4c3a8ef3-7894-4060-6bdc-08d75f16b3c5 x-ms-traffictypediagnostic: VI1PR05MB6173:|VI1PR05MB6173: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:813; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(189003)(199004)(476003)(5660300002)(486006)(14454004)(107886003)(76176011)(7736002)(478600001)(66066001)(52116002)(2906002)(71190400001)(8676002)(71200400001)(6486002)(102836004)(81166006)(36756003)(81156014)(50226002)(6436002)(386003)(8936002)(6506007)(25786009)(66446008)(66476007)(6512007)(6116002)(3846002)(6916009)(26005)(99286004)(11346002)(66946007)(64756008)(86362001)(305945005)(54906003)(4326008)(316002)(1076003)(186003)(446003)(2616005)(256004)(66556008); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB6173; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 01c2vpcU3ZxymcTc+eL+9zdAV1WM1RbEfIAeCjCyY9Bc+eLhoBJ8Ha4eD9KmjwRanQgiTtG43m3ijUp++vX+mF18A8gi8gXarht+Q2IJ6cTQqk5+yjVkXFtCo6VFKhfblV0eV0FL88WVwyqhV5ry1ZUKx6+DWnBU6Xss83BxaHXotccdGmkr7I7L5sbhRh0fizVfIVTSyF902T+z6thYG5DcFF3qq5hGxLIU8jzb/2WFj4Pr8CdlPl16B3FUv1aZ8HIGEjwdqgPuXFTLPSxLAMNp+5bhVrjZ5fo8USks/b/dbQWzwE58brdB//tPcwKHCMrilia3MVlSgCpg2Nc9mftvc0YJWqv98yNS46OQCs9590krxVzOzfSyn6gvunRj1lFR3L45sG4AkpHG6nGHsPgmCPgNq0QDNuNOw8W9mcrSLzuB7QtMr7RdHPExpZKq MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c3a8ef3-7894-4060-6bdc-08d75f16b3c5 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:01.0041 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: IhnmnaiutaM+hcw5uCREaxro6TPmS/e2nrydB/RKGQA9b9L9DMpLIGYurGE9DzO1p4uNtfmWgXg8VfCxj50Elg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6173 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: zhong jiang mlx5_unload_one do not need local variable to store different value, Hence just remove it. Signed-off-by: zhong jiang Acked-by: Saeed Mahameed Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/main.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/main.c b/drivers/net/ethernet/mellanox/mlx5/core/main.c index e47dd7c1b909..c9a091d3226c 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/main.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/main.c @@ -1228,8 +1228,6 @@ static int mlx5_load_one(struct mlx5_core_dev *dev, bool boot) static int mlx5_unload_one(struct mlx5_core_dev *dev, bool cleanup) { - int err = 0; - if (cleanup) { mlx5_unregister_device(dev); mlx5_drain_health_wq(dev); @@ -1257,7 +1255,7 @@ static int mlx5_unload_one(struct mlx5_core_dev *dev, bool cleanup) mlx5_function_teardown(dev, cleanup); out: mutex_unlock(&dev->intf_state_mutex); - return err; + return 0; } static int mlx5_mdev_init(struct mlx5_core_dev *dev, int profile_idx) From patchwork Fri Nov 1 21:59:02 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188201 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 (no SPF record) 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="ld6X/7Cd"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bgd2x9Hz9sP3 for ; Sat, 2 Nov 2019 08:59:09 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727315AbfKAV7I (ORCPT ); Fri, 1 Nov 2019 17:59:08 -0400 Received: from mail-eopbgr20063.outbound.protection.outlook.com ([40.107.2.63]:44510 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726983AbfKAV7I (ORCPT ); Fri, 1 Nov 2019 17:59:08 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lXKUhFa4TafpYmwN7ZBGA84361EWMcLca29jSLf/qP1B0AFF0haG1s1I/uL8QKd1PDAMuPuidNB/Ia3fUZUtyDqgrnMr+AwEYzcwsFPWLA9gB3pIY+voqhMrKK+tpv2hYz3RLl4x7MV73q0qkWtjXM29JllmgB/QVCTuGKsYBbUi3hggIjpzH6w7TMGBvBcJiC4pOrinUAqSFOtp+XpOnecIHPeoQwbLlkaDidQSkPtvQLMlVcTOxBzKjnIuU1aZYRHgsG/C5HZTVsXWB/grYHOG3dOHm2iySxeXmlNlPL4WWTXcaGBPHY22yMMCdziy6GPMHWsvJjCm1KcyiPv6Hw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XPuEE02MaelFlLy4WzFNugWUAEMYA32+1XOOg9n2vC8=; b=KWzgOSzhWB1IXhgziL4gpNSzQOYqyu7Vspyr6oDPKA++x7Da1DV4mqRkDO17RNMP7WWLOyQ+Ch6vj9AbIeFzUyPsgXD5lhjPY+N8OrIzaDslD1wBfW5TUOPZ58wMCTzIXm56pnMs3DqcCg4Xgw1FuYjKX4Adr1RsI2xG4lZn32oJ3sGrRIgosm0Cx+X2s8OAJwH9N9HYJsSWVjP9uqUy8W+yn5VddOR9HBdgTpih8UvFaLVFCCiJ2wrthRsuZxzs2K6RrKZlpuH91jsaoC9XS8IIRS+GdVXYnGosQ+FTgI2ZFs/XV/tpON/UwvecpLasJ4O670X+1oEpeMATZyfiGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XPuEE02MaelFlLy4WzFNugWUAEMYA32+1XOOg9n2vC8=; b=ld6X/7CdyA9qpADErE/VttB9uR037lq9E6j0KaBLW7/f43ZOVYAHjrSWZ5t/68N/56xP94DrmWu3+B0thXBrIffYQwF2cEs1DKwLjPBk4e36hnHIFJC7nBTH++4Y7Y0ZaJolYOBoR+uEdomDD0UZEO4fwcMGKWg3FJ+dQbojr5M= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB6173.eurprd05.prod.outlook.com (20.178.123.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Fri, 1 Nov 2019 21:59:03 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:02 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Aya Levin , Saeed Mahameed Subject: [net-next 04/15] net/mlx5: Clear VF's configuration on disabling SRIOV Thread-Topic: [net-next 04/15] net/mlx5: Clear VF's configuration on disabling SRIOV Thread-Index: AQHVkP+SJz+X/W03+0OxMz/xSXBv8Q== Date: Fri, 1 Nov 2019 21:59:02 +0000 Message-ID: <20191101215833.23975-5-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 237f5abc-6f12-4a20-d131-08d75f16b4e3 x-ms-traffictypediagnostic: VI1PR05MB6173:|VI1PR05MB6173: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1079; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(189003)(199004)(476003)(5660300002)(486006)(14454004)(107886003)(76176011)(7736002)(478600001)(66066001)(52116002)(2906002)(71190400001)(8676002)(71200400001)(6486002)(102836004)(81166006)(36756003)(81156014)(50226002)(6436002)(386003)(8936002)(6506007)(25786009)(66446008)(66476007)(6512007)(6116002)(3846002)(6916009)(26005)(99286004)(11346002)(66946007)(64756008)(86362001)(305945005)(54906003)(4326008)(316002)(1076003)(14444005)(186003)(446003)(2616005)(256004)(66556008); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB6173; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Ud5dWj43zdPXMc7XXcBHtWIDSmvKLjFAStGS68PlBweQZ1wRdw06eUpiB8XCZcqkZribRHcF0yQnJB6ksiL9UcfWWrU4S4bNV1vAPjZzG6rKOFhMSPafQ7gql9EqHOQF67M1TcGUpQJ4T2E5vL+QVEua22SEqv8BrqQ2KmspcdZy9b6+5b+QOa2rE9AVeOb/X4sNaKIJiKfJ8UEzHSVpXQ7DL7c40rI2Bj+AUmUkIdxyB0wNDgaJ6jTitmzQmxIdgymi8FukvqYgCn1S1lWdi4GWw/Yx+SY6FxKHsFjiyhBNaUBNIqT9EhJV4Se7yS/LKjfsKFl9hPdGkYcsre2pCUcp49KkG5WWt2vMqRakqRjcswDzu3X8DVNe54YA6amlJzmuA093hzrs39QaUbCdLfzlNaukFY3wSeqcjpaGnD6q7rhzGBoF0Q5WaP2D7OU5 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 237f5abc-6f12-4a20-d131-08d75f16b4e3 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:02.8031 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: oLjVhveGeiRGsh/h31VzGfiWnJZZKdJtHRl3QlQJ4Y8/wlWm1HHXSSX5KKXRdF4dL8LfWF6u2MvNfdvF0OzwWw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6173 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Aya Levin When setting number of VFs to 0 (disable SRIOV), clear VF's configuration. Signed-off-by: Aya Levin Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/eswitch.c | 13 ++++++++++++- drivers/net/ethernet/mellanox/mlx5/core/eswitch.h | 4 ++-- .../ethernet/mellanox/mlx5/core/eswitch_offloads.c | 4 ++-- drivers/net/ethernet/mellanox/mlx5/core/sriov.c | 10 +++++----- 4 files changed, 21 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c index 30aae76b6a1d..89a2806eceb8 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c @@ -1831,6 +1831,15 @@ static void mlx5_eswitch_event_handlers_unregister(struct mlx5_eswitch *esw) flush_workqueue(esw->work_queue); } +static void mlx5_eswitch_clear_vf_vports_info(struct mlx5_eswitch *esw) +{ + struct mlx5_vport *vport; + int i; + + mlx5_esw_for_each_vf_vport(esw, i, vport, esw->esw_funcs.num_vfs) + memset(&vport->info, 0, sizeof(vport->info)); +} + /* Public E-Switch API */ #define ESW_ALLOWED(esw) ((esw) && MLX5_ESWITCH_MANAGER((esw)->dev)) @@ -1923,7 +1932,7 @@ int mlx5_eswitch_enable(struct mlx5_eswitch *esw, int mode) return err; } -void mlx5_eswitch_disable(struct mlx5_eswitch *esw) +void mlx5_eswitch_disable(struct mlx5_eswitch *esw, bool clear_vf) { int old_mode; @@ -1952,6 +1961,8 @@ void mlx5_eswitch_disable(struct mlx5_eswitch *esw) mlx5_reload_interface(esw->dev, MLX5_INTERFACE_PROTOCOL_IB); mlx5_reload_interface(esw->dev, MLX5_INTERFACE_PROTOCOL_ETH); } + if (clear_vf) + mlx5_eswitch_clear_vf_vports_info(esw); } int mlx5_eswitch_init(struct mlx5_core_dev *dev) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h index 6bd6f5895244..804a7ed2b969 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h @@ -270,7 +270,7 @@ int mlx5_esw_modify_vport_rate(struct mlx5_eswitch *esw, u16 vport_num, int mlx5_eswitch_init(struct mlx5_core_dev *dev); void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw); int mlx5_eswitch_enable(struct mlx5_eswitch *esw, int mode); -void mlx5_eswitch_disable(struct mlx5_eswitch *esw); +void mlx5_eswitch_disable(struct mlx5_eswitch *esw, bool clear_vf); int mlx5_eswitch_set_vport_mac(struct mlx5_eswitch *esw, u16 vport, u8 mac[ETH_ALEN]); int mlx5_eswitch_set_vport_state(struct mlx5_eswitch *esw, @@ -603,7 +603,7 @@ void mlx5_eswitch_disable_pf_vf_vports(struct mlx5_eswitch *esw); static inline int mlx5_eswitch_init(struct mlx5_core_dev *dev) { return 0; } static inline void mlx5_eswitch_cleanup(struct mlx5_eswitch *esw) {} static inline int mlx5_eswitch_enable(struct mlx5_eswitch *esw, int mode) { return 0; } -static inline void mlx5_eswitch_disable(struct mlx5_eswitch *esw) {} +static inline void mlx5_eswitch_disable(struct mlx5_eswitch *esw, bool clear_vf) {} static inline bool mlx5_esw_lag_prereq(struct mlx5_core_dev *dev0, struct mlx5_core_dev *dev1) { return true; } static inline bool mlx5_eswitch_is_funcs_handler(struct mlx5_core_dev *dev) { return false; } static inline const u32 *mlx5_esw_query_functions(struct mlx5_core_dev *dev) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c index 00d71db15f22..cbd88f42350e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c @@ -1370,7 +1370,7 @@ static int esw_offloads_start(struct mlx5_eswitch *esw, return -EINVAL; } - mlx5_eswitch_disable(esw); + mlx5_eswitch_disable(esw, false); mlx5_eswitch_update_num_of_vfs(esw, esw->dev->priv.sriov.num_vfs); err = mlx5_eswitch_enable(esw, MLX5_ESWITCH_OFFLOADS); if (err) { @@ -2196,7 +2196,7 @@ static int esw_offloads_stop(struct mlx5_eswitch *esw, { int err, err1; - mlx5_eswitch_disable(esw); + mlx5_eswitch_disable(esw, false); err = mlx5_eswitch_enable(esw, MLX5_ESWITCH_LEGACY); if (err) { NL_SET_ERR_MSG_MOD(extack, "Failed setting eswitch to legacy"); diff --git a/drivers/net/ethernet/mellanox/mlx5/core/sriov.c b/drivers/net/ethernet/mellanox/mlx5/core/sriov.c index 61fcfd8b39b4..f641f1336402 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/sriov.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/sriov.c @@ -108,7 +108,7 @@ static int mlx5_device_enable_sriov(struct mlx5_core_dev *dev, int num_vfs) return 0; } -static void mlx5_device_disable_sriov(struct mlx5_core_dev *dev) +static void mlx5_device_disable_sriov(struct mlx5_core_dev *dev, bool clear_vf) { struct mlx5_core_sriov *sriov = &dev->priv.sriov; int num_vfs = pci_num_vf(dev->pdev); @@ -127,7 +127,7 @@ static void mlx5_device_disable_sriov(struct mlx5_core_dev *dev) } if (MLX5_ESWITCH_MANAGER(dev)) - mlx5_eswitch_disable(dev->priv.eswitch); + mlx5_eswitch_disable(dev->priv.eswitch, clear_vf); if (mlx5_wait_for_pages(dev, &dev->priv.vfs_pages)) mlx5_core_warn(dev, "timeout reclaiming VFs pages\n"); @@ -147,7 +147,7 @@ static int mlx5_sriov_enable(struct pci_dev *pdev, int num_vfs) err = pci_enable_sriov(pdev, num_vfs); if (err) { mlx5_core_warn(dev, "pci_enable_sriov failed : %d\n", err); - mlx5_device_disable_sriov(dev); + mlx5_device_disable_sriov(dev, true); } return err; } @@ -157,7 +157,7 @@ static void mlx5_sriov_disable(struct pci_dev *pdev) struct mlx5_core_dev *dev = pci_get_drvdata(pdev); pci_disable_sriov(pdev); - mlx5_device_disable_sriov(dev); + mlx5_device_disable_sriov(dev, true); } int mlx5_core_sriov_configure(struct pci_dev *pdev, int num_vfs) @@ -192,7 +192,7 @@ void mlx5_sriov_detach(struct mlx5_core_dev *dev) if (!mlx5_core_is_pf(dev)) return; - mlx5_device_disable_sriov(dev); + mlx5_device_disable_sriov(dev, false); } static u16 mlx5_get_max_vfs(struct mlx5_core_dev *dev) From patchwork Fri Nov 1 21:59:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188202 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 (no SPF record) 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="ZR+NCG8i"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bgj57MCz9sP3 for ; Sat, 2 Nov 2019 08:59:13 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727355AbfKAV7M (ORCPT ); Fri, 1 Nov 2019 17:59:12 -0400 Received: from mail-eopbgr20063.outbound.protection.outlook.com ([40.107.2.63]:44510 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726983AbfKAV7M (ORCPT ); Fri, 1 Nov 2019 17:59:12 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iKM2/e9CWiquXbgNPULy17aaDbwpMPRCP8GxLC9eNECb5iL+YnvJeCmRUozik0W94Mhi6hjjdlrrFwjDuUDY5Flgrz2VZXZ2wRXh21yD5IsRzg0yQP2mY0Xb4FZe7qRObCIT3wJW9eWydE/p48eNEFXdDMZONGxJ37G0ucTvpZUyfaLwyWbnnm7ddevL2ejNw4eukLzfgvX+cB/jc+1bPxY2gq51/eeQvNBBJ3Qwgss8+zUSp9OeIOeWCGi/8wioytsvmpiLPTGpQ8phiZ35Y2BrbPuGWjv4wT1pNNG+pSMBBxxHFqYyLGADFe52CtqfDxPnHQMCXfBeEeEcaqxlYA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MPuF+k1xk7yZSeJMUEAZB9OTzzltACQvZFTM9UW/Llk=; b=kf8G38Gg8rIyQPuiHaAYxybCcuRvsuAAGPUYhXMxv8oDeleQtR8nCRH7m5TsGp+Ca3lwpuFjBqXHMweg7rwJcoW6blTF+vAUZhLM8grxUYu+uIMlTt0LSBd+bNWnQvhg8835ROC9iALezyUFcdGb34PN3G+QoAAdF7qz6SqLBXz65UXdfKOMJqVu53LyJP7WKLbSYuanOTSSlj5yO9Iw7IZFRxJWBITL3OCra272yXiAf0j/XfS06dGsT+kC3uEoIbvMSh84EyC3F97cZ06CGRDdzwNJMpI/JjLAs/IyOfw5VIwVAZ9KXYsMOOKDD2+Q0Zw0aP1Xw3D535HHGRfswQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MPuF+k1xk7yZSeJMUEAZB9OTzzltACQvZFTM9UW/Llk=; b=ZR+NCG8ioI76W7zOusG2rW5VPjr2gjvrJiki3x7/dTGr2PV87UoydmQxm+ygbcOzeODx5bXdcKD6yZs7CoE1y8i8+IHDX3hS1TDlUuECz7pc3c0JYYCjc9QeEvU2jvxrHQo5mBGIQ7C504Jb29973+dBpYN/cKEzTDw+CZy0QhU= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB6173.eurprd05.prod.outlook.com (20.178.123.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Fri, 1 Nov 2019 21:59:05 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:05 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Vlad Buslov , Paul Blakey , Roi Dayan , Saeed Mahameed Subject: [net-next 05/15] net/mlx5e: Verify that rule has at least one fwd/drop action Thread-Topic: [net-next 05/15] net/mlx5e: Verify that rule has at least one fwd/drop action Thread-Index: AQHVkP+UcG65/DlPz0+MhctT0mftVQ== Date: Fri, 1 Nov 2019 21:59:05 +0000 Message-ID: <20191101215833.23975-6-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 76df1a95-4ea4-4f1b-7c55-08d75f16b63a x-ms-traffictypediagnostic: VI1PR05MB6173:|VI1PR05MB6173: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5516; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(189003)(199004)(476003)(5660300002)(15650500001)(486006)(14454004)(107886003)(76176011)(7736002)(478600001)(66066001)(52116002)(2906002)(71190400001)(8676002)(71200400001)(6486002)(102836004)(81166006)(36756003)(81156014)(50226002)(6436002)(386003)(8936002)(6506007)(25786009)(66446008)(66476007)(6512007)(6116002)(3846002)(6916009)(26005)(99286004)(11346002)(66946007)(64756008)(86362001)(305945005)(54906003)(4326008)(316002)(1076003)(14444005)(186003)(446003)(2616005)(256004)(66556008); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB6173; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: JUBIypVC25VV9e0y53FjtH/VSALD464F/NfcL6YNbXTMdmNVzRgxCorgKUAircSftke2ki70aI6UTYNucJMN1iQRDGUgMIJ+g3zA2Pzyl1kGw4R0XRkFXP1IGMzndd/Hx92f0fXITsUkHWN7Ak44DMqOx06Iiywxc53DArUw+xft+V8ViuhODiO86FgH7qdkHC8fqYaw9wITlK/XTsZX21y+nKdApC82Jb1r+WDzbcdPMfIBmFKqvRx2DpG5RfbfR5OqZ91ywauJz3kD3IPLSRZRVEJeVCLywIUjD9Na9d/+2Ey/tW83fFYzBfCKoNq1kOTF1eiVMxewBcWsoHIn4r6+HeObUKGybJLJ8dvjZ0qIXsQlIOaHcZnAwDDJ8IQiiwUbUd3mX8FxbnrBUq8eUMnq3+oXSh5R2cHRfD6B6zvTLlSKTD25C96NCT9CRtCO MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 76df1a95-4ea4-4f1b-7c55-08d75f16b63a X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:05.4675 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: y9e7Y3+bH6bF8YF5zkp7pxfBwuMTDKF8eIlBF+iYlhlRATAWkjur8X+6n26P5QnqdVNsBgVkmTufsfb3OIZSmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6173 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Vlad Buslov Currently, mlx5 tc layer doesn't verify that rule has at least one forward or drop action which leads to following firmware syndrome when user tries to offload such action: [ 1824.860501] mlx5_core 0000:81:00.0: mlx5_cmd_check:753:(pid 29458): SET_FLOW_TABLE_ENTRY(0x936) op_mod(0x0) failed, status bad parameter(0x3), syndrome (0x144b7a) Add check at the end of parse_tc_fdb_actions() that verifies that resulting attribute has action fwd or drop flag set. Signed-off-by: Vlad Buslov Reviewed-by: Paul Blakey Reviewed-by: Roi Dayan Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 3e78a727f3e6..8c4bce940bfb 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -3423,6 +3423,12 @@ static int parse_tc_fdb_actions(struct mlx5e_priv *priv, attr->action |= MLX5_FLOW_CONTEXT_ACTION_FWD_DEST; } + if (!(attr->action & + (MLX5_FLOW_CONTEXT_ACTION_FWD_DEST | MLX5_FLOW_CONTEXT_ACTION_DROP))) { + NL_SET_ERR_MSG(extack, "Rule must have at least one forward/drop action"); + return -EOPNOTSUPP; + } + if (attr->split_count > 0 && !mlx5_esw_has_fwd_fdb(priv->mdev)) { NL_SET_ERR_MSG_MOD(extack, "current firmware doesn't support split rule for port mirroring"); From patchwork Fri Nov 1 21:59:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188203 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 (no SPF record) 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="FxsQI0ay"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bgl3WDtz9sP3 for ; Sat, 2 Nov 2019 08:59:15 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727374AbfKAV7O (ORCPT ); Fri, 1 Nov 2019 17:59:14 -0400 Received: from mail-eopbgr20063.outbound.protection.outlook.com ([40.107.2.63]:44510 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727316AbfKAV7O (ORCPT ); Fri, 1 Nov 2019 17:59:14 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Wohec59Go1OKSZn6WwOE2ZRKLpuVAG31EAJg9GGEvUaJJRadwwUui5o6LAV+vYxXSXGopkG2SahcYQao8IDISplYsacQvwnttAHKVo5Q4QN0bJktN1eIk8kuNs0783W6BzlPG3LgSYEC3pe6udTkkeDims5w8yscWMtBH5RlEL60vTalUWWnDOnzICNQl++AXDpV4GnhUtRjxhLPLBNQekl5Sj/VGK2VngXwT9MU8iUoxIb3ELnkddOka3l+k3GIjK/ryYJhHEiHOt6wSgzv/3TqhGk/IcCShsNDmaPv6qTy3tG1AZlBA/dtxTqsfkMenIIKL2210Af0C+gZEbL3tA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D3yo5oRiJtKj9HEgyVzXD77h5SRnplQUMIt5wKbN+Mo=; b=m4w8rJZaxgyCniCOnLQM0rLTFoOKE+5D7q09Y85q0CVsC5J6qz3zmYOcdTraWX5aeCwSOUIL/fHbUkGlbD+Js1tSqe2lDsQLsM/QrTRo+VqJ9UR+q2xjeDMVRrmrgeii4fcIZddaKnRwrwOemrGkzeNe4MvhImCe+jA9pyOoY0bNSs0xJpg6SyR/FPxdtUjeRSOmeTHu/373cXWaZ5mWdZHGu+qTOAH5/7PkkKbA3SY7q9C9I4KC2kQJXiBt5uZJdHauhh2l3m9vmj7wNxZ/SnbXGa/wWQ08GjlLyjl0pfUgfe8nXEXZLSwrGW8gABOTiOipE98oxYaFaCDbX5szHQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D3yo5oRiJtKj9HEgyVzXD77h5SRnplQUMIt5wKbN+Mo=; b=FxsQI0ay7QAr6e/jE5HViz/iiy0ggb136Hb63CvBYD3+Db4t2asqYaQkWhv4fVhybeJQM57Uj1Yh6oF0+hRJUl8GHskXIui7poocFWLJxrDy7/3/HFIruia+eL+tOSOL0+UUWzbtU2Z+sA6eUylvUmmGnz9J0+1rIVHz1IsHXCg= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB6173.eurprd05.prod.outlook.com (20.178.123.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Fri, 1 Nov 2019 21:59:07 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:07 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Parav Pandit , Daniel Jurgens , Mark Bloch , Saeed Mahameed Subject: [net-next 06/15] net/mlx5: Do not hold group lock while allocating FTE in software Thread-Topic: [net-next 06/15] net/mlx5: Do not hold group lock while allocating FTE in software Thread-Index: AQHVkP+VKWcQdZnnp0e4j66TFVXb5A== Date: Fri, 1 Nov 2019 21:59:07 +0000 Message-ID: <20191101215833.23975-7-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 563485eb-f7ff-47aa-8cae-08d75f16b7f8 x-ms-traffictypediagnostic: VI1PR05MB6173:|VI1PR05MB6173: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1079; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(189003)(199004)(476003)(5660300002)(486006)(14454004)(107886003)(76176011)(7736002)(478600001)(66066001)(52116002)(2906002)(71190400001)(8676002)(71200400001)(6486002)(102836004)(81166006)(36756003)(81156014)(50226002)(6436002)(386003)(8936002)(6506007)(25786009)(66446008)(66476007)(6512007)(6116002)(3846002)(6916009)(26005)(99286004)(11346002)(66946007)(64756008)(86362001)(305945005)(54906003)(4326008)(316002)(1076003)(14444005)(186003)(446003)(2616005)(256004)(66556008); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB6173; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: jc6TPfjDBCu+gE36d3Unr/bzfBPYEKPlsmHseAGZpvrbp8U5F4/EFnizf5O7hGO173ZsnLY5ywNoB1oGl5Sq0ZN5puk5uHGF0p14AlLUaTl0QNNzCkCSdDHo6GE5hGUesjARChpQQgRj9Uzc5BUmHnAr2HF5R8qBOYw2xmJhsHm4EmBviddAbJjKKyqEapCiY/akKg5o5EeZzVJ3/jGoXZZv8Jo7qfMXKXBwgOKY8bBYxq6Je3wH35FTE9I3wx1+DmRDweF+2xM3PsnDJG/gIlVpszT5zfnH1zUGRIrARkmr7D4HlckhfEAen0WLX2KJfShYV9DJL2XmJyuxDurqUhQ3pe3rzjaQD/yEZqkb0JG0ipvDiNoi+EyWy9Tuwoko6giz59wkhjh2eQbqQZAzyvJSZvi02UMZ280zOUpuJVvq9olH0x4Z5dNzbu6+wi/H MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 563485eb-f7ff-47aa-8cae-08d75f16b7f8 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:07.8442 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 1QqdvX+HTGu2gTt6bKB4nBBCx3JJXaW/xkMgzVVqhB79t9akK25hlBtjVm2WbXNQelP5qBf2Wdk9aNMG2NBzCw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6173 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Parav Pandit FTE memory allocation using alloc_fte() doesn't have any dependency on the flow group. Hence, do not hold flow group lock while performing alloc_fte(). This helps to reduce contention of flow group lock. Signed-off-by: Parav Pandit Reviewed-by: Daniel Jurgens Reviewed-by: Mark Bloch Signed-off-by: Saeed Mahameed --- .../net/ethernet/mellanox/mlx5/core/fs_core.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c index 3bbb49354829..e5591f4f19b7 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c @@ -1814,6 +1814,13 @@ _mlx5_add_flow_rules(struct mlx5_flow_table *ft, return rule; } + fte = alloc_fte(ft, spec, flow_act); + if (IS_ERR(fte)) { + up_write_ref_node(&ft->node, false); + err = PTR_ERR(fte); + goto err_alloc_fte; + } + nested_down_write_ref_node(&g->node, FS_LOCK_PARENT); up_write_ref_node(&ft->node, false); @@ -1821,17 +1828,9 @@ _mlx5_add_flow_rules(struct mlx5_flow_table *ft, if (err) goto err_release_fg; - fte = alloc_fte(ft, spec, flow_act); - if (IS_ERR(fte)) { - err = PTR_ERR(fte); - goto err_release_fg; - } - err = insert_fte(g, fte); - if (err) { - kmem_cache_free(steering->ftes_cache, fte); + if (err) goto err_release_fg; - } nested_down_write_ref_node(&fte->node, FS_LOCK_CHILD); up_write_ref_node(&g->node, false); @@ -1843,6 +1842,8 @@ _mlx5_add_flow_rules(struct mlx5_flow_table *ft, err_release_fg: up_write_ref_node(&g->node, false); + kmem_cache_free(steering->ftes_cache, fte); +err_alloc_fte: tree_put_node(&g->node, false); return ERR_PTR(err); } From patchwork Fri Nov 1 21:59:09 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188204 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 (no SPF record) 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="hU1d4sQy"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bgr4DWdz9sP3 for ; Sat, 2 Nov 2019 08:59:20 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727440AbfKAV7T (ORCPT ); Fri, 1 Nov 2019 17:59:19 -0400 Received: from mail-eopbgr20063.outbound.protection.outlook.com ([40.107.2.63]:44510 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727316AbfKAV7T (ORCPT ); Fri, 1 Nov 2019 17:59:19 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=FUQIGYCH9i/wTkiS8lDQZIiVKVVO9zuGU2Wy/1TUULgnS+/grMqLmWPQvk7G9Iya/knrl0Iu/DG4qdYYDTbqi6lYuC2e7sUu86+VAzKNApNkF1v1CsFLtlo2imAm3pB5uapo7DaqelVMKOWTv4dBVRKttc5ER0nsn/e8+a0UTw5UrgHgIR27uDHEOEZEAbQnE47wnm6tnIZJpA/a4zFmZ68JEE0XCRerZZt27ioF+dGtLVR6GyehB/FqAib4LttufD+mGp5XSpJzPeeqAaT0AKM1b9SLYlhcyRWNUQFuAFU8+ZKN/jUJK60L+XWiAUZaHtzDmUHKN36ZJRWmNsopPw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tmRnUc8rC9AE7BacgqOYEymq9ruObte36wd+u8SzcLE=; b=NX32OJS0RcLFuKO04rari2F531/yq451HCCHu358I+iYk2juuqcAUmQUROdB1wwqZplOBnBO6pwtLrt2o6YZGFtL+39LV8p6fB+YyBvCTJHwSq/bHt0yhtiemCM+zpGIX3ic4OcKj1oUDMij2pbCckjWtJ4Vf/GT2IEC6xxXLo5X0Ft8wM51qcW1wr0PoUgTrE3DTu+tBAzHigcoM7WmIyAY/BU9G9p3dxQ7hmgSgsJuaWdhx5q5hFafufg3ScAlWdgGot2cXiqpR3HRDVmXyBqjcE0v1zrithy4DJQBQYbD2sXzRV5DbysRHbV7GMDVkVnoCTwbmjyAn3s3mnLzVQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tmRnUc8rC9AE7BacgqOYEymq9ruObte36wd+u8SzcLE=; b=hU1d4sQyaUruUwkwDONJ/5S29skIeNQr1ahaJ0ffsCB4/oQOtJGrm/WxVQELFn1F1if87u/m4v6HjxqcmghMzZDJ1hgfeXp7XPRJiPIExNOpTrxfrg7yqNrmDeaEIIiVPXT05DJBpK0njtw2fkGVw9DKdqtLyRV2y3DYoL0EBrM= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB6173.eurprd05.prod.outlook.com (20.178.123.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Fri, 1 Nov 2019 21:59:09 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:09 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Parav Pandit , Mark Bloch , Saeed Mahameed Subject: [net-next 07/15] net/mlx5: Support lockless FTE read lookups Thread-Topic: [net-next 07/15] net/mlx5: Support lockless FTE read lookups Thread-Index: AQHVkP+WiBheWLJSmUeDsWxLZbXpDQ== Date: Fri, 1 Nov 2019 21:59:09 +0000 Message-ID: <20191101215833.23975-8-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 83815d59-ed44-410d-8afd-08d75f16b907 x-ms-traffictypediagnostic: VI1PR05MB6173:|VI1PR05MB6173: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(189003)(199004)(476003)(5660300002)(486006)(14454004)(107886003)(76176011)(7736002)(478600001)(66066001)(52116002)(2906002)(71190400001)(8676002)(71200400001)(6486002)(102836004)(81166006)(36756003)(81156014)(50226002)(6436002)(386003)(8936002)(6506007)(25786009)(66446008)(66476007)(6512007)(6116002)(3846002)(6916009)(26005)(99286004)(11346002)(66946007)(64756008)(86362001)(305945005)(54906003)(4326008)(316002)(1076003)(14444005)(186003)(446003)(2616005)(256004)(66556008); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB6173; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kuOV2NY5quvSlR2x073EI318hRteilCm2WBS85H9cbItUy3vzHJQ+LfQ9Fw0Wnl6lSJfML0fMqe7KhyvTfjEH8jQonjGIQggM3OFKMJw1/2QkBrf+6Jjbd4l/VYVtMB+k8rrQCu9gFhLP4uj+UwiAdZRcPzcEmzR6zOFNTfEOqF4nhMdW/ZiPvpVALAeJ/8+07GozyFPZDtbQ/DQ6+o74nCzDeaMXtOPyW6XLzZ9Jt1vQ26r+v9HLRRoLHzY8cWMJ51Vn5P5oHMqHprjLPQpt3OQ1teWHODK9g7E8WDeLKDZQukbi+kGfsbTv1T+N5gepHAABxHifP9WNlF+o/VwrhxIR9BjWKJZrwr0Y7SlK/wCAgsWIIomec8ur5meq4IKaAZDy51LlQMmGgoSIsA+To6+apfCHG/levmp9n8oOJHRQuJMVQMKZAvHHoo+w/Pu MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 83815d59-ed44-410d-8afd-08d75f16b907 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:09.6301 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ZcXGJ6hL4bjp0xR2iUX6kAEJRjMgQtJDd/PqmwVq37PeW2W0dQFLcfKKschCnyRytEkv7S1NhLMp39ZJUOJ+AQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6173 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Parav Pandit During connection tracking offloads with high number of connections, (40K connections per second), flow table group lock contention is observed. To improve the performance by reducing lock contention, lockless FTE read lookup is performed as described below. Each flow table entry is refcounted. Flow table entry is removed when refcount drops to zero. rhash table allows rcu protected lookup. Each hash table entry insertion and removal is write lock protected. Hence, it is possible to perform lockless lookup in rhash table using following scheme. (a) Guard FTE entry lookup per group using rcu read lock. (b) Before freeing the FTE entry, wait for all readers to finish accessing the FTE. Below example of one reader and write in parallel racing, shows protection in effect with rcu lock. lookup_fte_locked() rcu_read_lock(); search_hash_table() existing_flow_group_write_lock(); tree_put_node(fte) drop_ref_cnt(fte) del_sw_fte(fte) del_hash_table_entry(); call_rcu(); existing_flow_group_write_unlock(); get_ref_cnt(fte) fails rcu_read_unlock(); rcu grace period(); [..] kmem_cache_free(fte); Signed-off-by: Parav Pandit Reviewed-by: Mark Bloch Signed-off-by: Saeed Mahameed --- .../net/ethernet/mellanox/mlx5/core/fs_core.c | 70 +++++++++++++++---- .../net/ethernet/mellanox/mlx5/core/fs_core.h | 1 + 2 files changed, 56 insertions(+), 15 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c index e5591f4f19b7..0246f5cdd355 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c @@ -531,9 +531,16 @@ static void del_hw_fte(struct fs_node *node) } } +static void del_sw_fte_rcu(struct rcu_head *head) +{ + struct fs_fte *fte = container_of(head, struct fs_fte, rcu); + struct mlx5_flow_steering *steering = get_steering(&fte->node); + + kmem_cache_free(steering->ftes_cache, fte); +} + static void del_sw_fte(struct fs_node *node) { - struct mlx5_flow_steering *steering = get_steering(node); struct mlx5_flow_group *fg; struct fs_fte *fte; int err; @@ -546,7 +553,8 @@ static void del_sw_fte(struct fs_node *node) rhash_fte); WARN_ON(err); ida_simple_remove(&fg->fte_allocator, fte->index - fg->start_index); - kmem_cache_free(steering->ftes_cache, fte); + + call_rcu(&fte->rcu, del_sw_fte_rcu); } static void del_hw_flow_group(struct fs_node *node) @@ -1623,22 +1631,47 @@ static u64 matched_fgs_get_version(struct list_head *match_head) } static struct fs_fte * -lookup_fte_locked(struct mlx5_flow_group *g, - const u32 *match_value, - bool take_write) +lookup_fte_for_write_locked(struct mlx5_flow_group *g, const u32 *match_value) { struct fs_fte *fte_tmp; - if (take_write) - nested_down_write_ref_node(&g->node, FS_LOCK_PARENT); - else - nested_down_read_ref_node(&g->node, FS_LOCK_PARENT); - fte_tmp = rhashtable_lookup_fast(&g->ftes_hash, match_value, - rhash_fte); + nested_down_write_ref_node(&g->node, FS_LOCK_PARENT); + + fte_tmp = rhashtable_lookup_fast(&g->ftes_hash, match_value, rhash_fte); if (!fte_tmp || !tree_get_node(&fte_tmp->node)) { fte_tmp = NULL; goto out; } + + if (!fte_tmp->node.active) { + tree_put_node(&fte_tmp->node, false); + fte_tmp = NULL; + goto out; + } + nested_down_write_ref_node(&fte_tmp->node, FS_LOCK_CHILD); + +out: + up_write_ref_node(&g->node, false); + return fte_tmp; +} + +static struct fs_fte * +lookup_fte_for_read_locked(struct mlx5_flow_group *g, const u32 *match_value) +{ + struct fs_fte *fte_tmp; + + if (!tree_get_node(&g->node)) + return NULL; + + rcu_read_lock(); + fte_tmp = rhashtable_lookup(&g->ftes_hash, match_value, rhash_fte); + if (!fte_tmp || !tree_get_node(&fte_tmp->node)) { + rcu_read_unlock(); + fte_tmp = NULL; + goto out; + } + rcu_read_unlock(); + if (!fte_tmp->node.active) { tree_put_node(&fte_tmp->node, false); fte_tmp = NULL; @@ -1646,14 +1679,21 @@ lookup_fte_locked(struct mlx5_flow_group *g, } nested_down_write_ref_node(&fte_tmp->node, FS_LOCK_CHILD); + out: - if (take_write) - up_write_ref_node(&g->node, false); - else - up_read_ref_node(&g->node); + tree_put_node(&g->node, false); return fte_tmp; } +static struct fs_fte * +lookup_fte_locked(struct mlx5_flow_group *g, const u32 *match_value, bool write) +{ + if (write) + return lookup_fte_for_write_locked(g, match_value); + else + return lookup_fte_for_read_locked(g, match_value); +} + static struct mlx5_flow_handle * try_add_to_existing_fg(struct mlx5_flow_table *ft, struct list_head *match_head, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h index 00717eba2256..f278298b0f6e 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.h @@ -202,6 +202,7 @@ struct fs_fte { enum fs_fte_status status; struct mlx5_fc *counter; struct rhash_head hash; + struct rcu_head rcu; int modify_mask; }; From patchwork Fri Nov 1 21:59:11 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188205 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 (no SPF record) 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="KiJIL7El"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bgt1WCZz9sP3 for ; Sat, 2 Nov 2019 08:59:22 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727499AbfKAV7V (ORCPT ); Fri, 1 Nov 2019 17:59:21 -0400 Received: from mail-eopbgr20063.outbound.protection.outlook.com ([40.107.2.63]:44510 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727387AbfKAV7U (ORCPT ); Fri, 1 Nov 2019 17:59:20 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RRVyqewR4FtejZ8ie2aVBuatM1fntKFx+zzCa0/GnchWKhVsGDBZD3uz/0II/jxJc9FcKJeHV8mtqDF3co1FK8xM0hqguIMh8iEWuCvw8o5/GU/H38RRheuuGCy35nKQCJKlomR2h2amBHCk6NcmVEI8flxgtO7iKAL9vQBOxhx+sXHW/b9aJyi3XbZbv4gZqTiezlHw//SWsi8ZUbU+jwSh47Sxla+7+0si3xyY2GRs2htLLSZBQH5bCCKtYg3jnFMI1bSSH/LbPkyh9moQWRyQ/8Eg0puEoBxfH2qyiWSiksnYPTfbMcMkQJl3dCB5wFvIlovV+cReVSspppQxBA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Boou3kkiZCVXfauaTFe73VEVXOlMrYjl05Ta42vmxtY=; b=a1yt9GekwvwSh94HjSEdQNrBv/5RxgwYaqYMMFLrQGi+2gDpv1+FnKvo9VRR8AFBK43vgZeWcZaroWbUHx3EbSuzF+8zpuSMeNjViZLXEvnncCSKrl/v6heUg4leasdRaGberrTKFF/brgxeGoCSILWziK+gwyJcJXzuK3eZOF7JPOYps9tUhve7/aDEdgWHztfuJQrfHZyzktJ33VND/fXpdu5A2IZBWmjf61Yo2z91zW2EIcGIX/PoBYWCuNG5CmCH25A6ws0XUJv6ST40dSQEqjt6HPQaigOGYEE6O0OeE3BmtRFzvIu13PK4ekQre4cBGxYGRVR3WF38GoT8Uw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Boou3kkiZCVXfauaTFe73VEVXOlMrYjl05Ta42vmxtY=; b=KiJIL7ElCu7RZoeZYcixvc5tKwgu7PSmA90MQKIeEiDFGnYgybCQwr+sg3nKr6cyO6QC+nQekOI4vMq9axqXkk1XSUyoWfQ1MaqenkdeU/rUm3BYMBmilt2lfY3ru00RYiUnPt7s0nIikd0+bg5Ia7aJUqznY68QC/AN3tPbyCk= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB6173.eurprd05.prod.outlook.com (20.178.123.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.24; Fri, 1 Nov 2019 21:59:11 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:11 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Saeed Mahameed , Tariq Toukan Subject: [net-next 08/15] net/mlx5e: TX, Dump WQs wqe descriptors on CQE with error events Thread-Topic: [net-next 08/15] net/mlx5e: TX, Dump WQs wqe descriptors on CQE with error events Thread-Index: AQHVkP+Xh4bJPRBYLE+khELyFVMUiQ== Date: Fri, 1 Nov 2019 21:59:11 +0000 Message-ID: <20191101215833.23975-9-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: bd92269b-271e-48c7-42d0-08d75f16b9e7 x-ms-traffictypediagnostic: VI1PR05MB6173:|VI1PR05MB6173: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:923; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(346002)(366004)(396003)(376002)(39860400002)(136003)(189003)(199004)(476003)(5660300002)(486006)(14454004)(107886003)(76176011)(7736002)(478600001)(66066001)(52116002)(2906002)(71190400001)(8676002)(71200400001)(6486002)(102836004)(81166006)(36756003)(81156014)(50226002)(6436002)(386003)(8936002)(6506007)(25786009)(66446008)(66476007)(6512007)(6116002)(3846002)(6916009)(26005)(99286004)(11346002)(66946007)(64756008)(86362001)(305945005)(54906003)(4326008)(316002)(1076003)(14444005)(186003)(446003)(2616005)(256004)(66556008)(505234006); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB6173; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: aCoAuhWdb7q8euquWLjCbqq3U7X5qcd3jPrB7/ZR7/RzC8O/1XTKNPQIUpdV/igLMVJCz9Wa4i3nfZZ3fkLnW0473mXYT4zsiXIWyZ3TEEvXrmT19KiHnPaCWNJIugOUvTZa+KXwCVXk+YxwrYhIF/qBhOPgO3tEHMIcTmix58rdRfDbdSySTo7AdrB+fJ1Gt0R2VyRLEyra1C65IWmr437IuFolAMpiKfRZm51dPr0FsmHFSqzLCkyRiQUeHLsclr/kq0qLGISPnL329BasdhqlpFFYXFevUeSWaA8Hkg57L6MJaLI16qWTiA8YyCv7IBoEN68XaGk8o1BJn36LSUMvCAUcgOxqvZBdpnPmmt5HbfVnzX3aOEHlp7/0yfVx7mrvI4MAUBbdAXf2XgTgZ2kVTGLF/ge9cz58DCEwy+94U29JlLT9Tyek/JMx8uoa MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd92269b-271e-48c7-42d0-08d75f16b9e7 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:11.4031 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: sP0obwKVXvbrmXzSOkMf08OLlDiovmFyZHX8oVOSfrMIWRbiEp7xigNklP0l34bAvql2b5ETtW4sT/vEQfAGqA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB6173 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Dump the Work Queue's TX WQE descriptor when a completion with error is received. Example: [5.331832] mlx5_core 0000:00:04.0 enp0s4: Error cqe on cqn 0xa, ci 0x1, TXQ-SQ qpn 0xe, opcode 0xd, syndrome 0x2, vendor syndrome 0x0 [5.333127] 00000000: 55 65 02 75 31 fe c2 d2 6b 6c 62 1e f9 e1 d8 5c [5.333837] 00000010: d3 b2 6c b8 89 e4 84 20 0b f4 3c e0 f3 75 41 ca [5.334568] 00000020: 46 00 00 00 cd 70 a0 92 18 3a 01 de 00 00 00 00 [5.335313] 00000030: 7d bc 05 89 b2 e9 00 02 1e 00 00 0e 00 00 30 d2 [5.335972] WQE DUMP: WQ size 1024 WQ cur size 0, WQE index 0x0, len: 64 [5.336710] 00000000: 00 00 00 1e 00 00 0e 04 00 00 00 08 00 00 00 00 [5.337524] 00000010: 00 00 00 00 00 00 00 00 00 00 00 00 00 12 33 33 [5.338151] 00000020: 00 00 00 16 52 54 00 00 00 01 86 dd 60 00 00 00 [5.338740] 00000030: 00 00 00 48 00 00 00 00 00 00 00 00 66 ba 58 14 Signed-off-by: Saeed Mahameed Signed-off-by: Tariq Toukan --- .../net/ethernet/mellanox/mlx5/core/en_tx.c | 6 ++++++ drivers/net/ethernet/mellanox/mlx5/core/wq.c | 18 ++++++++++++++++++ drivers/net/ethernet/mellanox/mlx5/core/wq.h | 1 + 3 files changed, 25 insertions(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c index d3a67a9b4eba..29730f52e315 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tx.c @@ -458,8 +458,14 @@ bool mlx5e_poll_tx_cq(struct mlx5e_cq *cq, int napi_budget) if (unlikely(get_cqe_opcode(cqe) == MLX5_CQE_REQ_ERR)) { if (!test_and_set_bit(MLX5E_SQ_STATE_RECOVERING, &sq->state)) { + struct mlx5e_tx_wqe_info *wi; + u16 ci; + + ci = mlx5_wq_cyc_ctr2ix(&sq->wq, sqcc); + wi = &sq->db.wqe_info[ci]; mlx5e_dump_error_cqe(sq, (struct mlx5_err_cqe *)cqe); + mlx5_wq_cyc_wqe_dump(&sq->wq, ci, wi->num_wqebbs); queue_work(cq->channel->priv->wq, &sq->recover_work); } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/wq.c b/drivers/net/ethernet/mellanox/mlx5/core/wq.c index dd2315ce4441..dab2625e1e59 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/wq.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/wq.c @@ -96,6 +96,24 @@ int mlx5_wq_cyc_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, return err; } +void mlx5_wq_cyc_wqe_dump(struct mlx5_wq_cyc *wq, u16 ix, u8 nstrides) +{ + size_t len; + void *wqe; + + if (!net_ratelimit()) + return; + + nstrides = max_t(u8, nstrides, 1); + + len = nstrides << wq->fbc.log_stride; + wqe = mlx5_wq_cyc_get_wqe(wq, ix); + + pr_info("WQE DUMP: WQ size %d WQ cur size %d, WQE index 0x%x, len: %ld\n", + mlx5_wq_cyc_get_size(wq), wq->cur_sz, ix, len); + print_hex_dump(KERN_WARNING, "", DUMP_PREFIX_OFFSET, 16, 1, wqe, len, false); +} + int mlx5_wq_qp_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, void *qpc, struct mlx5_wq_qp *wq, struct mlx5_wq_ctrl *wq_ctrl) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/wq.h b/drivers/net/ethernet/mellanox/mlx5/core/wq.h index 55791f71a778..27338c3c6136 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/wq.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/wq.h @@ -79,6 +79,7 @@ struct mlx5_wq_ll { int mlx5_wq_cyc_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, void *wqc, struct mlx5_wq_cyc *wq, struct mlx5_wq_ctrl *wq_ctrl); +void mlx5_wq_cyc_wqe_dump(struct mlx5_wq_cyc *wq, u16 ix, u8 nstrides); u32 mlx5_wq_cyc_get_size(struct mlx5_wq_cyc *wq); int mlx5_wq_qp_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, From patchwork Fri Nov 1 21:59:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188206 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 (no SPF record) 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="HBOpWyiO"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bgv3RJYz9sP3 for ; Sat, 2 Nov 2019 08:59:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727483AbfKAV7V (ORCPT ); Fri, 1 Nov 2019 17:59:21 -0400 Received: from mail-eopbgr70089.outbound.protection.outlook.com ([40.107.7.89]:20086 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727381AbfKAV7T (ORCPT ); Fri, 1 Nov 2019 17:59:19 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C1oibvjJJ0+Eafd/zFMWkZR7p12CB4nsQsBdbEC1M4N/68hU5lxmyq/9VSF6l/DlX65ZcxzWzacDbzPr086cag5D2nXXxEYrVpoFE74eNYzq1YyV8sn8ZLSOHT+6XMWzktGd0Bu6UWSH7Bz0JAR0XsNrUWkYKzx/YWS9CvhzbciGQM4gAtUfmiS066WNNDtRrTbbj9mYsORsZG1h4j8rPCmP9mhXeou2xU+Mfy3StKU/KCwHfbJ+iS8SyMk6+PyX1N/ZSO+bxUgWR65G5q5JsanMun6N7lXuwDFAI4uCUbR5+iETQP8HhNyEbb0+mp7ajHgjQpauiVvX4y6F3wFzyQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LYUq5XJZ4M2oOVUBUeseOUx8Wb+F/g3tnCrDKegTvxo=; b=a9w6L0kQPYQGqkG+RqnqTizCeX8Wp88lJi8f5/JtJo/OQmcDWvzKc8iahiznz3Xp7bWSCi/0g98g0S9pRdEy75Rt10uiBp20hAGueEUpKnohAETuibeNEvbK5SlqBnJYs/DpsLb8KXm7JxthgQV70XQ5JXP9JKg0O6OLeDAQHlfvBBusT5J9DUmPs54XZOQkpki5hqmb7jS5v7CqA3BhbshMwsGK8H6xwRTxAVGuGSDlpOT+dJXrAezerZb4iNmRd23q/hAEJdiM1IdJokLoExILvDeOBQ4K32lQZEddGFCCsAs81w1LwDFRsdp0uSgx5c8daOt+l8PUtmE+5SMoGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LYUq5XJZ4M2oOVUBUeseOUx8Wb+F/g3tnCrDKegTvxo=; b=HBOpWyiOJSCiEoyZeAi9AchDhbDxOdO36NprK3fdI8gAbn8RyBNRpJ6ErW2xRr4bCnQqVx6mk8n+xZOhgBvusgRqkQxZ6j6Jh07N4Aos4xRycE/OKBfwUiPNDgOd/nSiGOOOpLrEDxROYiv84jkAPbcpJClnxu+IavfT0FBrBHc= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB5679.eurprd05.prod.outlook.com (20.178.121.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 21:59:13 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:13 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Tariq Toukan , Saeed Mahameed Subject: [net-next 09/15] net/mlx5: WQ, Move short getters into header file Thread-Topic: [net-next 09/15] net/mlx5: WQ, Move short getters into header file Thread-Index: AQHVkP+YouD5slYLGkuY1H1+oVy2Cg== Date: Fri, 1 Nov 2019 21:59:13 +0000 Message-ID: <20191101215833.23975-10-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 159fde75-3117-474d-98ce-08d75f16bb26 x-ms-traffictypediagnostic: VI1PR05MB5679:|VI1PR05MB5679: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:49; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(189003)(199004)(4326008)(99286004)(316002)(2616005)(2906002)(6116002)(476003)(6512007)(3846002)(1076003)(36756003)(66946007)(14454004)(25786009)(54906003)(66066001)(66556008)(64756008)(486006)(11346002)(446003)(81156014)(6916009)(76176011)(305945005)(7736002)(26005)(66476007)(66446008)(86362001)(5660300002)(102836004)(386003)(6506007)(50226002)(6486002)(6436002)(81166006)(71190400001)(71200400001)(478600001)(8676002)(256004)(8936002)(107886003)(52116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5679; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: omXb2v7K9B0MWcOcdcn1vufuzb9OXBB/0YZptgTNkFy3itN9+KY1E+ZYcemfogh4otXO26ubSHqSO1oTpdjUxiBBfNDTpOSQIligHRGBbdMfzDYP7xzaitu/aEX9v7HLnPv1GiF7HUkBieieq3X0AKGBJWVgdd31Yjg+vpGTxFxdieSj5ZwxKFsXanIRnjuQKy8AkNVe5H2ooX+j4YSJu3p7+kTyM3rYPParPhx8VWyva/OjP4PIMwEYfyfqAhZrcCderA9z+lexwqyeNS/HQ0H1snLwHwcp1Yi2AM5goyTudmhEi8eO/NFKZf1F7YFJNuzpN/TBDOFCydBRqFvbXDwBAZhfOFFX1v7WMmr6AMbqzNOEIOrMLw+P27o3x3IFqpK0BQ+s8wLuuzMC86sE7V4V+hhrPATbWTQxDjQ4NsaCU+z7SZgA0VnXcPFI/WpJ MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 159fde75-3117-474d-98ce-08d75f16bb26 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:13.2241 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: +gfQV69KhJ567apixEWh25/XGPaOz0O1E2W0LCR3L0TrV5/WzxB8jAW7kY3y02gZ6VNfK5L+Zi6cx7yHdozPYw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5679 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Tariq Toukan Move short Work Queue API getter functions into the WQ header file. Signed-off-by: Tariq Toukan Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/wq.c | 20 ---------------- drivers/net/ethernet/mellanox/mlx5/core/wq.h | 24 ++++++++++++++++---- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/wq.c b/drivers/net/ethernet/mellanox/mlx5/core/wq.c index dab2625e1e59..f2a0e72285ba 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/wq.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/wq.c @@ -34,26 +34,6 @@ #include "wq.h" #include "mlx5_core.h" -u32 mlx5_wq_cyc_get_size(struct mlx5_wq_cyc *wq) -{ - return (u32)wq->fbc.sz_m1 + 1; -} - -u32 mlx5_cqwq_get_size(struct mlx5_cqwq *wq) -{ - return wq->fbc.sz_m1 + 1; -} - -u8 mlx5_cqwq_get_log_stride_size(struct mlx5_cqwq *wq) -{ - return wq->fbc.log_stride; -} - -u32 mlx5_wq_ll_get_size(struct mlx5_wq_ll *wq) -{ - return (u32)wq->fbc.sz_m1 + 1; -} - static u32 wq_get_byte_sz(u8 log_sz, u8 log_stride) { return ((u32)1 << log_sz) << log_stride; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/wq.h b/drivers/net/ethernet/mellanox/mlx5/core/wq.h index 27338c3c6136..d9a94bc223c0 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/wq.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/wq.h @@ -80,7 +80,6 @@ int mlx5_wq_cyc_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, void *wqc, struct mlx5_wq_cyc *wq, struct mlx5_wq_ctrl *wq_ctrl); void mlx5_wq_cyc_wqe_dump(struct mlx5_wq_cyc *wq, u16 ix, u8 nstrides); -u32 mlx5_wq_cyc_get_size(struct mlx5_wq_cyc *wq); int mlx5_wq_qp_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, void *qpc, struct mlx5_wq_qp *wq, @@ -89,16 +88,18 @@ int mlx5_wq_qp_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, int mlx5_cqwq_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, void *cqc, struct mlx5_cqwq *wq, struct mlx5_wq_ctrl *wq_ctrl); -u32 mlx5_cqwq_get_size(struct mlx5_cqwq *wq); -u8 mlx5_cqwq_get_log_stride_size(struct mlx5_cqwq *wq); int mlx5_wq_ll_create(struct mlx5_core_dev *mdev, struct mlx5_wq_param *param, void *wqc, struct mlx5_wq_ll *wq, struct mlx5_wq_ctrl *wq_ctrl); -u32 mlx5_wq_ll_get_size(struct mlx5_wq_ll *wq); void mlx5_wq_destroy(struct mlx5_wq_ctrl *wq_ctrl); +static inline u32 mlx5_wq_cyc_get_size(struct mlx5_wq_cyc *wq) +{ + return (u32)wq->fbc.sz_m1 + 1; +} + static inline int mlx5_wq_cyc_is_full(struct mlx5_wq_cyc *wq) { return wq->cur_sz == wq->sz; @@ -169,6 +170,16 @@ static inline int mlx5_wq_cyc_cc_bigger(u16 cc1, u16 cc2) return !equal && !smaller; } +static inline u32 mlx5_cqwq_get_size(struct mlx5_cqwq *wq) +{ + return wq->fbc.sz_m1 + 1; +} + +static inline u8 mlx5_cqwq_get_log_stride_size(struct mlx5_cqwq *wq) +{ + return wq->fbc.log_stride; +} + static inline u32 mlx5_cqwq_ctr2ix(struct mlx5_cqwq *wq, u32 ctr) { return ctr & wq->fbc.sz_m1; @@ -225,6 +236,11 @@ static inline struct mlx5_cqe64 *mlx5_cqwq_get_cqe(struct mlx5_cqwq *wq) return cqe; } +static inline u32 mlx5_wq_ll_get_size(struct mlx5_wq_ll *wq) +{ + return (u32)wq->fbc.sz_m1 + 1; +} + static inline int mlx5_wq_ll_is_full(struct mlx5_wq_ll *wq) { return wq->cur_sz == wq->fbc.sz_m1; From patchwork Fri Nov 1 21:59:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188207 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 (no SPF record) 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="dR5NKkm/"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bh16wTYz9sPK for ; Sat, 2 Nov 2019 08:59:29 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727653AbfKAV71 (ORCPT ); Fri, 1 Nov 2019 17:59:27 -0400 Received: from mail-eopbgr70089.outbound.protection.outlook.com ([40.107.7.89]:20086 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727316AbfKAV70 (ORCPT ); Fri, 1 Nov 2019 17:59:26 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KMiv9Bpc9PFL8vvEufAqQxCghBqYfraj6Yb3Qf0WgVpaCaxKmWHGEOLbyMWcN97p51wVpmuDZSQjntdxqzBFqocTBoD8BZjNLh+ZqLhstv1gP/iC1xHjbKfkNc8YlgIjSwwJJOYj2wlW0sdZG9ktsEg+PF/7veTJ+LMe6zYwHy9GfWQCpPoticB+gZ+LYsAtswAIydPpDUSsL0Nk1UWOnsivsBqjPQHVbLCrFveZ+HOsz533YZ2SZvi5bOb2edv0LauPWyfuzNonBSj25ILLyXGYKEdGD0I9/lRNzYjCEOtT+JOnYuyWm1H1VTlw88dzKMjrU9P7IiMdIZSQ8TOooA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZSDdDazULcwTk6gxzYCoRbdLBgjnNHqXgYl7afZgOnU=; b=XQlnsI/K/9XZL3O9qWsO52SIKBXCxiAvj1ktUfnnQAp0z8c0fQ1bpUiDR/sMA5VABGrtPSkL5WdF6wcyTSd+4pzNFR+7OESwVxEUXFd1JQDdZJ8HzOnUmwx05q60aPHBKUDLje2bIugLCgTGcCWRLtTNs3uwz2u6sguAfIfbLq8GbCoIfmFIItv6R6lRwJ4YGkZmf3u3Mqy+7UQAfSPSopxdTg99/GuyRWOoPv2vaBwHaAheAAaWc8kb2GcpsArTiYWIkSYccWq4fMBSOAkJUD0uhWzfbH/hmiTpXO6xcEXmaN96GZYBCgLzvK1FCD0yKPN6WvA1oV1bRilfn+oZMQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZSDdDazULcwTk6gxzYCoRbdLBgjnNHqXgYl7afZgOnU=; b=dR5NKkm/bMc1fFtN14AQhNq02EeUTuGVAtnlCCo0m7mBc7Igf1pLHpnc8CWwF40kbqipfFBAUN9G5fWVp7KK8sUTcfCBNm3zBKTy2Flr013LONsekM1hzSx/HlnKBkI4ndxW4hO7MR3P28gd64XWuCadMOPvW9ucCij6TYbFrkE= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB5679.eurprd05.prod.outlook.com (20.178.121.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 21:59:15 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:15 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Dmytro Linkin , Roi Dayan , Saeed Mahameed Subject: [net-next 10/15] net/mlx5e: Bit sized fields rewrite support Thread-Topic: [net-next 10/15] net/mlx5e: Bit sized fields rewrite support Thread-Index: AQHVkP+ZVSVq6uISwkSuYvFE4xi0hA== Date: Fri, 1 Nov 2019 21:59:15 +0000 Message-ID: <20191101215833.23975-11-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: e3750006-6fcd-4528-3e2f-08d75f16bc54 x-ms-traffictypediagnostic: VI1PR05MB5679:|VI1PR05MB5679: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:131; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(189003)(199004)(4326008)(99286004)(316002)(2616005)(2906002)(6116002)(476003)(6512007)(3846002)(1076003)(36756003)(66946007)(14454004)(25786009)(54906003)(66066001)(66556008)(64756008)(486006)(11346002)(446003)(81156014)(6916009)(76176011)(305945005)(7736002)(26005)(66476007)(66446008)(86362001)(5660300002)(102836004)(386003)(6506007)(50226002)(6486002)(6436002)(81166006)(71190400001)(71200400001)(478600001)(8676002)(256004)(8936002)(14444005)(107886003)(52116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5679; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xl6Y3afsSYwUd/8C5P7SQLfZrdGrosQGu+BCjSNu6YRGj0jBBZSnnwH/LIcHFTsWLbkc4bxiT8Y/pO09WYwzHAeHqSNUbOh6LWdHYspiJ4A7KN8ZgnK8vLn2Qu8LACRbEZg6JEp+PoxyUcgzXdajZV9me02Q6kt5UyDtUn+T4wHc2A4LaePXVsHgSuclOD+5DIAM1EH4nqUmYf45pFPYjrJZO5jlUKStsOfkx22s+Tj5emfhHzxJOlM8fun/lhkeaSuxLJVpvQQmwTm2mlUrIN++ALZLfvBcW27SF+WyT2RbZ1mYu5mRZTz/3hzew49BrTdJ3AIVHmdv6CfalAagYPfvEEJbYZDkLCUnCXDVogF8guagpvaH8/SALCAd0je7KVI6VeB12T6B0kqdd3PykVKa8/tayEejDxfPVFerRTrUQZk0mmxllxwT48XmJj4p MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: e3750006-6fcd-4528-3e2f-08d75f16bc54 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:15.2040 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nzQPCKzrTt4Ut4QP+r6m0nhJpERdGoo6xf+a93vYDNjKfleS31VeagUV3F6yK73yV6F7P+/VaeOiYUMoMGOvKA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5679 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Dmytro Linkin This patch doesn't change any functionality, but is a pre-step for adding support for rewriting of bit-sized fields, like DSCP and ECN in IPv4 header, similar fields in IPv6, etc. Signed-off-by: Dmytro Linkin Reviewed-by: Roi Dayan Signed-off-by: Saeed Mahameed --- .../net/ethernet/mellanox/mlx5/core/en_tc.c | 122 +++++++++--------- 1 file changed, 62 insertions(+), 60 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 8c4bce940bfb..67b73a00f8fa 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -2238,13 +2238,14 @@ static int set_pedit_val(u8 hdr_type, u32 mask, u32 val, u32 offset, struct mlx5_fields { u8 field; - u8 size; + u8 field_bsize; + u32 field_mask; u32 offset; u32 match_offset; }; -#define OFFLOAD(fw_field, size, field, off, match_field) \ - {MLX5_ACTION_IN_FIELD_OUT_ ## fw_field, size, \ +#define OFFLOAD(fw_field, field_bsize, field_mask, field, off, match_field) \ + {MLX5_ACTION_IN_FIELD_OUT_ ## fw_field, field_bsize, field_mask, \ offsetof(struct pedit_headers, field) + (off), \ MLX5_BYTE_OFF(fte_match_set_lyr_2_4, match_field)} @@ -2262,18 +2263,18 @@ struct mlx5_fields { }) static bool cmp_val_mask(void *valp, void *maskp, void *matchvalp, - void *matchmaskp, int size) + void *matchmaskp, u8 bsize) { bool same = false; - switch (size) { - case sizeof(u8): + switch (bsize) { + case 8: same = SAME_VAL_MASK(u8, valp, maskp, matchvalp, matchmaskp); break; - case sizeof(u16): + case 16: same = SAME_VAL_MASK(u16, valp, maskp, matchvalp, matchmaskp); break; - case sizeof(u32): + case 32: same = SAME_VAL_MASK(u32, valp, maskp, matchvalp, matchmaskp); break; } @@ -2282,41 +2283,42 @@ static bool cmp_val_mask(void *valp, void *maskp, void *matchvalp, } static struct mlx5_fields fields[] = { - OFFLOAD(DMAC_47_16, 4, eth.h_dest[0], 0, dmac_47_16), - OFFLOAD(DMAC_15_0, 2, eth.h_dest[4], 0, dmac_15_0), - OFFLOAD(SMAC_47_16, 4, eth.h_source[0], 0, smac_47_16), - OFFLOAD(SMAC_15_0, 2, eth.h_source[4], 0, smac_15_0), - OFFLOAD(ETHERTYPE, 2, eth.h_proto, 0, ethertype), - OFFLOAD(FIRST_VID, 2, vlan.h_vlan_TCI, 0, first_vid), - - OFFLOAD(IP_TTL, 1, ip4.ttl, 0, ttl_hoplimit), - OFFLOAD(SIPV4, 4, ip4.saddr, 0, src_ipv4_src_ipv6.ipv4_layout.ipv4), - OFFLOAD(DIPV4, 4, ip4.daddr, 0, dst_ipv4_dst_ipv6.ipv4_layout.ipv4), - - OFFLOAD(SIPV6_127_96, 4, ip6.saddr.s6_addr32[0], 0, + OFFLOAD(DMAC_47_16, 32, U32_MAX, eth.h_dest[0], 0, dmac_47_16), + OFFLOAD(DMAC_15_0, 16, U16_MAX, eth.h_dest[4], 0, dmac_15_0), + OFFLOAD(SMAC_47_16, 32, U32_MAX, eth.h_source[0], 0, smac_47_16), + OFFLOAD(SMAC_15_0, 16, U16_MAX, eth.h_source[4], 0, smac_15_0), + OFFLOAD(ETHERTYPE, 16, U16_MAX, eth.h_proto, 0, ethertype), + OFFLOAD(FIRST_VID, 16, U16_MAX, vlan.h_vlan_TCI, 0, first_vid), + + OFFLOAD(IP_TTL, 8, U8_MAX, ip4.ttl, 0, ttl_hoplimit), + OFFLOAD(SIPV4, 32, U32_MAX, ip4.saddr, 0, src_ipv4_src_ipv6.ipv4_layout.ipv4), + OFFLOAD(DIPV4, 32, U32_MAX, ip4.daddr, 0, dst_ipv4_dst_ipv6.ipv4_layout.ipv4), + + OFFLOAD(SIPV6_127_96, 32, U32_MAX, ip6.saddr.s6_addr32[0], 0, src_ipv4_src_ipv6.ipv6_layout.ipv6[0]), - OFFLOAD(SIPV6_95_64, 4, ip6.saddr.s6_addr32[1], 0, + OFFLOAD(SIPV6_95_64, 32, U32_MAX, ip6.saddr.s6_addr32[1], 0, src_ipv4_src_ipv6.ipv6_layout.ipv6[4]), - OFFLOAD(SIPV6_63_32, 4, ip6.saddr.s6_addr32[2], 0, + OFFLOAD(SIPV6_63_32, 32, U32_MAX, ip6.saddr.s6_addr32[2], 0, src_ipv4_src_ipv6.ipv6_layout.ipv6[8]), - OFFLOAD(SIPV6_31_0, 4, ip6.saddr.s6_addr32[3], 0, + OFFLOAD(SIPV6_31_0, 32, U32_MAX, ip6.saddr.s6_addr32[3], 0, src_ipv4_src_ipv6.ipv6_layout.ipv6[12]), - OFFLOAD(DIPV6_127_96, 4, ip6.daddr.s6_addr32[0], 0, + OFFLOAD(DIPV6_127_96, 32, U32_MAX, ip6.daddr.s6_addr32[0], 0, dst_ipv4_dst_ipv6.ipv6_layout.ipv6[0]), - OFFLOAD(DIPV6_95_64, 4, ip6.daddr.s6_addr32[1], 0, + OFFLOAD(DIPV6_95_64, 32, U32_MAX, ip6.daddr.s6_addr32[1], 0, dst_ipv4_dst_ipv6.ipv6_layout.ipv6[4]), - OFFLOAD(DIPV6_63_32, 4, ip6.daddr.s6_addr32[2], 0, + OFFLOAD(DIPV6_63_32, 32, U32_MAX, ip6.daddr.s6_addr32[2], 0, dst_ipv4_dst_ipv6.ipv6_layout.ipv6[8]), - OFFLOAD(DIPV6_31_0, 4, ip6.daddr.s6_addr32[3], 0, + OFFLOAD(DIPV6_31_0, 32, U32_MAX, ip6.daddr.s6_addr32[3], 0, dst_ipv4_dst_ipv6.ipv6_layout.ipv6[12]), - OFFLOAD(IPV6_HOPLIMIT, 1, ip6.hop_limit, 0, ttl_hoplimit), + OFFLOAD(IPV6_HOPLIMIT, 8, U8_MAX, ip6.hop_limit, 0, ttl_hoplimit), - OFFLOAD(TCP_SPORT, 2, tcp.source, 0, tcp_sport), - OFFLOAD(TCP_DPORT, 2, tcp.dest, 0, tcp_dport), - OFFLOAD(TCP_FLAGS, 1, tcp.ack_seq, 5, tcp_flags), + OFFLOAD(TCP_SPORT, 16, U16_MAX, tcp.source, 0, tcp_sport), + OFFLOAD(TCP_DPORT, 16, U16_MAX, tcp.dest, 0, tcp_dport), + /* in linux iphdr tcp_flags is 8 bits long */ + OFFLOAD(TCP_FLAGS, 8, U8_MAX, tcp.ack_seq, 5, tcp_flags), - OFFLOAD(UDP_SPORT, 2, udp.source, 0, udp_sport), - OFFLOAD(UDP_DPORT, 2, udp.dest, 0, udp_dport), + OFFLOAD(UDP_SPORT, 16, U16_MAX, udp.source, 0, udp_sport), + OFFLOAD(UDP_DPORT, 16, U16_MAX, udp.dest, 0, udp_dport), }; /* On input attr->max_mod_hdr_actions tells how many HW actions can be parsed at @@ -2329,19 +2331,17 @@ static int offload_pedit_fields(struct pedit_headers_action *hdrs, struct netlink_ext_ack *extack) { struct pedit_headers *set_masks, *add_masks, *set_vals, *add_vals; - void *headers_c = get_match_headers_criteria(*action_flags, - &parse_attr->spec); - void *headers_v = get_match_headers_value(*action_flags, - &parse_attr->spec); int i, action_size, nactions, max_actions, first, last, next_z; - void *s_masks_p, *a_masks_p, *vals_p; + void *headers_c, *headers_v, *action, *vals_p; + u32 *s_masks_p, *a_masks_p, s_mask, a_mask; struct mlx5_fields *f; - u8 cmd, field_bsize; - u32 s_mask, a_mask; unsigned long mask; __be32 mask_be32; __be16 mask_be16; - void *action; + u8 cmd; + + headers_c = get_match_headers_criteria(*action_flags, &parse_attr->spec); + headers_v = get_match_headers_value(*action_flags, &parse_attr->spec); set_masks = &hdrs[0].masks; add_masks = &hdrs[1].masks; @@ -2366,8 +2366,8 @@ static int offload_pedit_fields(struct pedit_headers_action *hdrs, s_masks_p = (void *)set_masks + f->offset; a_masks_p = (void *)add_masks + f->offset; - memcpy(&s_mask, s_masks_p, f->size); - memcpy(&a_mask, a_masks_p, f->size); + s_mask = *s_masks_p & f->field_mask; + a_mask = *a_masks_p & f->field_mask; if (!s_mask && !a_mask) /* nothing to offload here */ continue; @@ -2396,38 +2396,34 @@ static int offload_pedit_fields(struct pedit_headers_action *hdrs, vals_p = (void *)set_vals + f->offset; /* don't rewrite if we have a match on the same value */ if (cmp_val_mask(vals_p, s_masks_p, match_val, - match_mask, f->size)) + match_mask, f->field_bsize)) skip = true; /* clear to denote we consumed this field */ - memset(s_masks_p, 0, f->size); + *s_masks_p &= ~f->field_mask; } else { - u32 zero = 0; - cmd = MLX5_ACTION_TYPE_ADD; mask = a_mask; vals_p = (void *)add_vals + f->offset; /* add 0 is no change */ - if (!memcmp(vals_p, &zero, f->size)) + if ((*(u32 *)vals_p & f->field_mask) == 0) skip = true; /* clear to denote we consumed this field */ - memset(a_masks_p, 0, f->size); + *a_masks_p &= ~f->field_mask; } if (skip) continue; - field_bsize = f->size * BITS_PER_BYTE; - - if (field_bsize == 32) { + if (f->field_bsize == 32) { mask_be32 = *(__be32 *)&mask; mask = (__force unsigned long)cpu_to_le32(be32_to_cpu(mask_be32)); - } else if (field_bsize == 16) { + } else if (f->field_bsize == 16) { mask_be16 = *(__be16 *)&mask; mask = (__force unsigned long)cpu_to_le16(be16_to_cpu(mask_be16)); } - first = find_first_bit(&mask, field_bsize); - next_z = find_next_zero_bit(&mask, field_bsize, first); - last = find_last_bit(&mask, field_bsize); + first = find_first_bit(&mask, f->field_bsize); + next_z = find_next_zero_bit(&mask, f->field_bsize, first); + last = find_last_bit(&mask, f->field_bsize); if (first < next_z && next_z < last) { NL_SET_ERR_MSG_MOD(extack, "rewrite of few sub-fields isn't supported"); @@ -2440,16 +2436,22 @@ static int offload_pedit_fields(struct pedit_headers_action *hdrs, MLX5_SET(set_action_in, action, field, f->field); if (cmd == MLX5_ACTION_TYPE_SET) { - MLX5_SET(set_action_in, action, offset, first); + int start; + + /* if field is bit sized it can start not from first bit */ + start = find_first_bit((unsigned long *)&f->field_mask, + f->field_bsize); + + MLX5_SET(set_action_in, action, offset, first - start); /* length is num of bits to be written, zero means length of 32 */ MLX5_SET(set_action_in, action, length, (last - first + 1)); } - if (field_bsize == 32) + if (f->field_bsize == 32) MLX5_SET(set_action_in, action, data, ntohl(*(__be32 *)vals_p) >> first); - else if (field_bsize == 16) + else if (f->field_bsize == 16) MLX5_SET(set_action_in, action, data, ntohs(*(__be16 *)vals_p) >> first); - else if (field_bsize == 8) + else if (f->field_bsize == 8) MLX5_SET(set_action_in, action, data, *(u8 *)vals_p >> first); action += action_size; From patchwork Fri Nov 1 21:59:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188208 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 (no SPF record) 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="IaOiuPQq"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bh32m0yz9sP6 for ; Sat, 2 Nov 2019 08:59:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727665AbfKAV7a (ORCPT ); Fri, 1 Nov 2019 17:59:30 -0400 Received: from mail-eopbgr70089.outbound.protection.outlook.com ([40.107.7.89]:20086 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726229AbfKAV73 (ORCPT ); Fri, 1 Nov 2019 17:59:29 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ITlhpi5bwdODL/6zOZmZLQz3K2ttN7fZ2D1W3huRbLDuItvpgjngz1+/ZDjOM38b7BL5Hnhgft6Lax4nZJxq2j9/2veI6J8JU48XelRh0C0Ij8dUTsnceJJgjlu+EwTujJYe4Qs4phCsWNn2Y+y0coWrbbnOsVcHxzr8muvjXxeow0NX68yeryE3Z8VZzyuj8T5Eo6tRGFLRxdJRHQtzCT1OOaZZ+M5eZ1GAi43TyWHjx6mT0TNeUETpPiuYaKwqDhg4Kx17PQ8NpP9HV1jfL2l19sy0MUqE+8wzK2zLBlxkCMPt7cnn+e8qaZ5OLZGP+nS2jvWC5fj6INSxvP6Qng== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0y4Shym17BFqfvumBzXhZcznEwf7DxvknhT0B1Usahg=; b=NW0GSz9cfPylvHiXrRCtP6wNRabRfS2CY8hC7kEZHYLqmrpUDEO6486U9fcHPjIsfk5akw1rHmdElk109YnFFipvQtdrw+fQczmAz4ykAsTPf7Ukp/QZ9d/cvvbc97K6ts4ww43QlbYDC2smyle5yd4HspEdljH/L2+zZxSC7f3r9zMjXhZnwmttmFtCqtdV/JrJs8j5rp9alkahIL/YdkRKQXIr61guc3KSt3qSkUN/fARgjN+mZ/kkoy1R2HU4a+Wx1e/S4lHfyAvDZVGxpR9mpJcGh4WCfAnsg4YPykKS+XsYtM+RlVdb4xFc3jVSwL+NcnncxpqSyI9oQtbQ7g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0y4Shym17BFqfvumBzXhZcznEwf7DxvknhT0B1Usahg=; b=IaOiuPQqt/01BmBh+XfzTv67ORJefiev/vLs1dShBeo5ttS+QW5bZ7aj6Om6hZrQCFjxG7BtUaiCJbveUtsnNmBNUJYk29udYahUg59LSZG8f49ne2RWF0ZW36ffDw0FbcuT1a+5dBVCRAaaA9TJ72id8dH76C/9akSmNRrQj6k= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB5679.eurprd05.prod.outlook.com (20.178.121.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 21:59:17 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:17 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Dmytro Linkin , Roi Dayan , Saeed Mahameed Subject: [net-next 11/15] net/mlx5e: Add ToS (DSCP) header rewrite support Thread-Topic: [net-next 11/15] net/mlx5e: Add ToS (DSCP) header rewrite support Thread-Index: AQHVkP+bSHVluNV0l0SaaZp148ta/g== Date: Fri, 1 Nov 2019 21:59:16 +0000 Message-ID: <20191101215833.23975-12-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 2b2aaedd-c3b6-41e4-9fac-08d75f16bd6b x-ms-traffictypediagnostic: VI1PR05MB5679:|VI1PR05MB5679: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2887; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(189003)(199004)(4326008)(99286004)(316002)(2616005)(2906002)(6116002)(476003)(6512007)(3846002)(1076003)(36756003)(66946007)(14454004)(25786009)(54906003)(66066001)(66556008)(64756008)(486006)(11346002)(446003)(81156014)(6916009)(76176011)(305945005)(7736002)(26005)(66476007)(66446008)(86362001)(5660300002)(102836004)(386003)(6506007)(50226002)(6486002)(6436002)(81166006)(71190400001)(71200400001)(478600001)(8676002)(256004)(8936002)(107886003)(52116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5679; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WuUU11hDygsnvpHy2IgskF55J0U0Z4xtV+trUbHLZxmznpzrVPPkavmfAFDae4nIxtloXp21tbt7O6pwpk5rt/mtsW/Ak3bPsh2f0RkhBJlRWNyU6FMwrFrWwIvSYpFZlN4rTnC1btk8/43r2wJHk9hrHTEVgzIm3BZLFFnWuYA4tio+Om1841DrsMMknqn6ehiN2WqhLGpnb6IjP7OiBgzblB+hFRzR21f1884KGnTD6eMYsFRKPFZiFhVDvYZKcC9hS+igSJnt45taBFw004uY4+OrOY0LUvld+P6rs6i5tbOsf51DijFye8ZlX5NPl8wFMvpF8347vaDML5NlyQaxxpSvqBCBMviufKKQ5bErnjWpsvLmjNdqsZ+tjr4wcJIeYmxb+V393dGRpsXCn1lwXJkP/WM6S+qF/8IvRRBBR4jmcL1kUaF6TNRmHFu4 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2b2aaedd-c3b6-41e4-9fac-08d75f16bd6b X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:16.9789 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tshCs+cYCqj8neUPMiYpwvhkaObTInaCykhxODXMz9XwEbbq4ysYmxSZ3qv+bhOaW1fHwsfHJrHwQQlMzPaciw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5679 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Dmytro Linkin Add support for rewriting of DSCP part of ToS field. Next commands, for example, can be used to offload rewrite action: OVS: $ ovs-ofctl add-flow ovs-sriov "ip, in_port=REP, \ actions=mod_nw_tos:68, output:NIC" iproute2 (used retain mask, as tc command rewrite whole ToS field): $ tc filter add dev REP ingress protocol ip prio 1 flower skip_sw \ ip_proto icmp action pedit munge ip tos set 68 retain 0xfc pipe \ action mirred egress redirect dev NIC Signed-off-by: Dmytro Linkin Reviewed-by: Roi Dayan Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/en_tc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c index 67b73a00f8fa..4b4be896383f 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c @@ -2290,6 +2290,7 @@ static struct mlx5_fields fields[] = { OFFLOAD(ETHERTYPE, 16, U16_MAX, eth.h_proto, 0, ethertype), OFFLOAD(FIRST_VID, 16, U16_MAX, vlan.h_vlan_TCI, 0, first_vid), + OFFLOAD(IP_DSCP, 8, 0xfc, ip4.tos, 0, ip_dscp), OFFLOAD(IP_TTL, 8, U8_MAX, ip4.ttl, 0, ttl_hoplimit), OFFLOAD(SIPV4, 32, U32_MAX, ip4.saddr, 0, src_ipv4_src_ipv6.ipv4_layout.ipv4), OFFLOAD(DIPV4, 32, U32_MAX, ip4.daddr, 0, dst_ipv4_dst_ipv6.ipv4_layout.ipv4), From patchwork Fri Nov 1 21:59:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188209 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 (no SPF record) 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="cMvk0wNi"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bh54JPzz9sP6 for ; Sat, 2 Nov 2019 08:59:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727687AbfKAV7c (ORCPT ); Fri, 1 Nov 2019 17:59:32 -0400 Received: from mail-eopbgr70089.outbound.protection.outlook.com ([40.107.7.89]:20086 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727316AbfKAV7b (ORCPT ); Fri, 1 Nov 2019 17:59:31 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LCp5ESSbx9r5msz3UQh8wjt0RH4rsmdIzPI49Tw+FQlbXDXyYu1Xc97lw4IMEY1fTM5x62kJlagUdjeA6s8zvO+6zehUTK1UN5TfQ2zKmOYvHw1RP+0vjeWa3PWoRgdCeD3fMonsk5UQnjaGcb+mvvNPlbcGRjLcve+lv6uIyiA3TY1CdM4H9LptT3QcX8h9sUuAtZeXbGNn/HfyP7d2HP4bHCD73+IB0kauhfR0IP17SQ2qwWR8qHRd/whk4xbQAt2a4uzGOvdv+O5TuJn1lgRixygqsQrQdUyYJzk2adC4OlYDLKnS6VvTG1GyFo30DSpJTsWxWt+9i96Tzll4ag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PkLOLvw212IuN51QflcADcdOYb7h8bDbCUIfn0Ywb+Q=; b=DF/0oRaRDz0HDIWb/coqvEH7Ol/2bWGpDZAYhoFonjjY37HHp8w6F73coMm/CoZ0thN/yMEOSBRqTti/H87lpPzOeoUoyXug1OwCXCXO0PI7ydaL26wu+1LDnmp3w0XbGMrjyF9xvsTpsP0BIBIACwH8nc/oQ/sv9pZj89ZTAUXStEND/JN6SHXCdhNcnlxIr/5Gz5qQ7Goe8MOuK7L6F71uXEvbUjng4m5R8xcB4kdsWRk15LRHo17bO1ltRJvYSN22Axnd6YYWXOkacGM0StAnPC557rn0XBVeSc18DyIbfyPCS5TkB+yTb+ki+yB5akspZQ2RcMhsDeX89QSagQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PkLOLvw212IuN51QflcADcdOYb7h8bDbCUIfn0Ywb+Q=; b=cMvk0wNieidy8zwuDLpsgGwgdibtJviJQBM7G65kweP2WawqcrwNwdr5na3wiXWHeea86hw6KUA0rHeJfyst5OGby26Tspp+H/7CEixIeRQPAx2+asvnN4s3L3+dX//xnXNbrOuDSqBL6qnNZaJj+0Lx7PIns36J9ZNIq7G07MQ= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB5679.eurprd05.prod.outlook.com (20.178.121.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 21:59:18 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:18 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Li Rongqing , Saeed Mahameed Subject: [net-next 12/15] net/mlx5: rate limit alloc_ent error messages Thread-Topic: [net-next 12/15] net/mlx5: rate limit alloc_ent error messages Thread-Index: AQHVkP+c/NrYxf7smE63xa1+syOCLQ== Date: Fri, 1 Nov 2019 21:59:18 +0000 Message-ID: <20191101215833.23975-13-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 691cb064-625c-4572-e597-08d75f16be5a x-ms-traffictypediagnostic: VI1PR05MB5679:|VI1PR05MB5679: x-ld-processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:1247; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(189003)(199004)(4326008)(99286004)(316002)(2616005)(2906002)(6116002)(476003)(6512007)(3846002)(1076003)(36756003)(66946007)(14454004)(25786009)(54906003)(66066001)(66556008)(64756008)(486006)(11346002)(446003)(81156014)(6916009)(76176011)(305945005)(7736002)(26005)(66476007)(66446008)(86362001)(5660300002)(102836004)(386003)(6506007)(15650500001)(50226002)(6486002)(6436002)(81166006)(71190400001)(71200400001)(478600001)(8676002)(256004)(8936002)(14444005)(107886003)(52116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5679; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: l4pcK2h33QNCwkWW/GJSSQAH+WmEPAPIt/aJG7woDqX3wenXMuL3w28d7STp9GjGmFMjgZDZ08APuP8bpXWL158kLxFayMmMD/QvO3IC/gIjNHRORjup+7by7IonCobSe4HRiFeznC9aFRUWAhSUSl9ja0mCfL1HWBjSkQwlb30OjPUwlN9h630cSN8pBq+BaowgOiFPmYgnNtwwRK7pja0heThj7KQ/puD5R4rudSD8zbrYvsN4r+6lpLRBNZNo73hmmJEqkrvunqp60yiyTZDKT39MvDAF1gbKtDwhQ8c/XY4+l6Gw3MHUZN6X3Lchd6151wmxcD/73slOkArDbE8PDwoUCJOP/yeD3QhrDF33R4FUEj60M7MmQNwhYLcI2SLSKgS8XsfvJ4BnoqL2j2TlKXzkA40/h3qypXjeLbo0OYeZKHJE/cqitHJTry9o MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 691cb064-625c-4572-e597-08d75f16be5a X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:18.7299 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FBM73qAskE/t1IWHsTZqqyofMOuCtKG0gBoWTWCM+9pgYPQBDpCJKbMrqW1MnH+bfBK9+oW61yut4GECqD6Urw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5679 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Li RongQing when debug a bug, which triggers TX hang, and kernel log is spammed with the following info message [ 1172.044764] mlx5_core 0000:21:00.0: cmd_work_handler:930:(pid 8): failed to allocate command entry Signed-off-by: Li RongQing Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/cmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c index ea934cd02448..34cba97f7bf4 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/cmd.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/cmd.c @@ -866,7 +866,7 @@ static void cmd_work_handler(struct work_struct *work) if (!ent->page_queue) { alloc_ret = alloc_ent(cmd); if (alloc_ret < 0) { - mlx5_core_err(dev, "failed to allocate command entry\n"); + mlx5_core_err_rl(dev, "failed to allocate command entry\n"); if (ent->callback) { ent->callback(-EAGAIN, ent->context); mlx5_free_cmd_msg(dev, ent->out); From patchwork Fri Nov 1 21:59:20 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188210 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 (no SPF record) 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="cYrrY61G"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bh92gvQz9sPK for ; Sat, 2 Nov 2019 08:59:37 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727728AbfKAV7g (ORCPT ); Fri, 1 Nov 2019 17:59:36 -0400 Received: from mail-eopbgr70089.outbound.protection.outlook.com ([40.107.7.89]:20086 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726229AbfKAV7g (ORCPT ); Fri, 1 Nov 2019 17:59:36 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=b+eG8jwUlsSPy5ht/pbmXvIq9LWXYkowkct0JSULfoCoql7Navxw1pg/MaYXRQaKHC/qNn5ELT11S2q0s4eNUbWEuOQ1lHOOkLx9ufW9Qr2+4n8B21M6jv1pgbNVqL0fA5rC4ixRH9yi39hogjR8XDdEwk29tZy9S5bIZwwy7KNA3EjEP5MiTrx5EvM6nLfvyERBW5P4vxt9Y6dDxsuPlGnQ5YvHNXgiWHvHCyh/hispOSTbKhB9tuc0+RC3Betk7gTzZzxqHkrN5YUBSsytlAdTtOUYj0rSxKiet0mEi9DQ1bWaMomjMe9TPAR4yCCWwqHLfDIz2OZuBkCUS6Gmpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D/2OGVDcDeEW2aUUJxCGKp611pk3QaiqSAp+tQJT230=; b=X4pr+Ee7MyPZEaN2QAcioWowEpienLiOqZTzIsDUbXzSFVoUmp3bA1NNM3USvpFlFIFbkrjIjQeGbiovATUPXwxet6Cm7UxQGSKX40WrMjLgxDJBwlU8cIceFD233YC8ztrcENP1WVw4IivGAH0BhGeh349IfZWMtAzGt6hzaWIINS+gRCv/kJMTSQDhjaSYmskT5Zw3wdtjnE1C+dAVhvZQvMzheOwTG10M1r/Hf1JVoNSWnx0jAfGufMlFCU2lRDkwuABui9jwZUm4qmoowzdMHeNt4frQ9iEUHwOhRdM/y/mOUqMLyDWzHGNj2LRoTVc3kD1cweJFK3M6qs4iZg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=D/2OGVDcDeEW2aUUJxCGKp611pk3QaiqSAp+tQJT230=; b=cYrrY61GHxX4mIhO+R3KgOnuepEQ1LtFjhnQa7nFoO4heUqEFwiCL5kiKcVl1hukCSYJM/HJvdxCB4GweY6wBoPaDYlo5EEJM1DdTSqowW5DI1j0NNcP674mNEbN+rYk2IKrCwe2fWphqqJ1W1L1m7Rihm7p0oQoLutf1dwkRCE= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB5679.eurprd05.prod.outlook.com (20.178.121.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 21:59:20 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:20 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Erez Alfasi , Saeed Mahameed Subject: [net-next 13/15] net/mlx5: LAG, Use port enumerators Thread-Topic: [net-next 13/15] net/mlx5: LAG, Use port enumerators Thread-Index: AQHVkP+dy9CgyBlnJ0qf1TOHdd4l6g== Date: Fri, 1 Nov 2019 21:59:20 +0000 Message-ID: <20191101215833.23975-14-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: c0a4143b-7ba3-461a-0ebe-08d75f16bf71 x-ms-traffictypediagnostic: VI1PR05MB5679:|VI1PR05MB5679: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:4303; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(189003)(199004)(4326008)(99286004)(316002)(30864003)(2616005)(2906002)(6116002)(476003)(6512007)(3846002)(1076003)(36756003)(66946007)(14454004)(25786009)(54906003)(66066001)(66556008)(64756008)(486006)(11346002)(446003)(81156014)(6916009)(76176011)(305945005)(7736002)(26005)(66476007)(66446008)(86362001)(5660300002)(102836004)(386003)(6506007)(50226002)(6486002)(6436002)(81166006)(71190400001)(71200400001)(478600001)(8676002)(256004)(8936002)(14444005)(107886003)(52116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5679; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vTgcYAMH/axK3DcXXERLJBSvLsvadUWiIC60dVUHC0ONa88b0U/zUAf+dDR8eEyucUirLBVAO/tHEtudPlXYck7lqThPvgKxze+sxM1IjiZXuBCzlkks++z9UH99QKJy1iGlqp4sB1Tqp98o4NTEJgSSYHVPZUETKBvIY+LEzySSAce2EgyoPBrUIyqHsUvC2519V23SY8QWHLdio0VUQd/t1rP5OBa80oLyOgKEw2Txk9I/nD1yMamc1gND+eYnfnPmK8XfnQVd7QRUIJZv22BxZMbfxJXEd/mbYkFtr47nh5ZjlpK6ZaNDKCj6BDuRLTaUVs2vjgK1Y7QxO3GAS6aKmmba2xaLukUwECfrK0HMIajmLhvRw43DpNOvbuQSKma7Q/VvjYJFotR03uDEsf3zcmwYNz+BugdO7kyBJStWsWkGjUj+UUOEriBSESOu MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: c0a4143b-7ba3-461a-0ebe-08d75f16bf71 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:20.3790 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mtZJmyuEfk8HIQaydNHpFGb4YSjt1KuXVS1yMVHJIzpsA+Zdv+lLnVTfuwnibAV2oUh9n019koh5l02FF3aTFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5679 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Erez Alfasi Instead of using explicit array indexes, simply use ports enumerators to make the code more readable. Fixes: 7907f23adc18 ("net/mlx5: Implement RoCE LAG feature") Signed-off-by: Erez Alfasi Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/lag.c | 65 ++++++++++--------- drivers/net/ethernet/mellanox/mlx5/core/lag.h | 5 ++ .../net/ethernet/mellanox/mlx5/core/lag_mp.c | 56 ++++++++-------- 3 files changed, 69 insertions(+), 57 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag.c b/drivers/net/ethernet/mellanox/mlx5/core/lag.c index c5ef2ff26465..fc0d9583475d 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lag.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/lag.c @@ -145,34 +145,35 @@ static void mlx5_infer_tx_affinity_mapping(struct lag_tracker *tracker, { *port1 = 1; *port2 = 2; - if (!tracker->netdev_state[0].tx_enabled || - !tracker->netdev_state[0].link_up) { + if (!tracker->netdev_state[MLX5_LAG_P1].tx_enabled || + !tracker->netdev_state[MLX5_LAG_P1].link_up) { *port1 = 2; return; } - if (!tracker->netdev_state[1].tx_enabled || - !tracker->netdev_state[1].link_up) + if (!tracker->netdev_state[MLX5_LAG_P2].tx_enabled || + !tracker->netdev_state[MLX5_LAG_P2].link_up) *port2 = 1; } void mlx5_modify_lag(struct mlx5_lag *ldev, struct lag_tracker *tracker) { - struct mlx5_core_dev *dev0 = ldev->pf[0].dev; + struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev; u8 v2p_port1, v2p_port2; int err; mlx5_infer_tx_affinity_mapping(tracker, &v2p_port1, &v2p_port2); - if (v2p_port1 != ldev->v2p_map[0] || - v2p_port2 != ldev->v2p_map[1]) { - ldev->v2p_map[0] = v2p_port1; - ldev->v2p_map[1] = v2p_port2; + if (v2p_port1 != ldev->v2p_map[MLX5_LAG_P1] || + v2p_port2 != ldev->v2p_map[MLX5_LAG_P2]) { + ldev->v2p_map[MLX5_LAG_P1] = v2p_port1; + ldev->v2p_map[MLX5_LAG_P2] = v2p_port2; mlx5_core_info(dev0, "modify lag map port 1:%d port 2:%d", - ldev->v2p_map[0], ldev->v2p_map[1]); + ldev->v2p_map[MLX5_LAG_P1], + ldev->v2p_map[MLX5_LAG_P2]); err = mlx5_cmd_modify_lag(dev0, v2p_port1, v2p_port2); if (err) @@ -185,16 +186,17 @@ void mlx5_modify_lag(struct mlx5_lag *ldev, static int mlx5_create_lag(struct mlx5_lag *ldev, struct lag_tracker *tracker) { - struct mlx5_core_dev *dev0 = ldev->pf[0].dev; + struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev; int err; - mlx5_infer_tx_affinity_mapping(tracker, &ldev->v2p_map[0], - &ldev->v2p_map[1]); + mlx5_infer_tx_affinity_mapping(tracker, &ldev->v2p_map[MLX5_LAG_P1], + &ldev->v2p_map[MLX5_LAG_P2]); mlx5_core_info(dev0, "lag map port 1:%d port 2:%d", - ldev->v2p_map[0], ldev->v2p_map[1]); + ldev->v2p_map[MLX5_LAG_P1], ldev->v2p_map[MLX5_LAG_P2]); - err = mlx5_cmd_create_lag(dev0, ldev->v2p_map[0], ldev->v2p_map[1]); + err = mlx5_cmd_create_lag(dev0, ldev->v2p_map[MLX5_LAG_P1], + ldev->v2p_map[MLX5_LAG_P2]); if (err) mlx5_core_err(dev0, "Failed to create LAG (%d)\n", @@ -207,7 +209,7 @@ int mlx5_activate_lag(struct mlx5_lag *ldev, u8 flags) { bool roce_lag = !!(flags & MLX5_LAG_FLAG_ROCE); - struct mlx5_core_dev *dev0 = ldev->pf[0].dev; + struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev; int err; err = mlx5_create_lag(ldev, tracker); @@ -229,7 +231,7 @@ int mlx5_activate_lag(struct mlx5_lag *ldev, static int mlx5_deactivate_lag(struct mlx5_lag *ldev) { - struct mlx5_core_dev *dev0 = ldev->pf[0].dev; + struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev; bool roce_lag = __mlx5_lag_is_roce(ldev); int err; @@ -252,14 +254,15 @@ static int mlx5_deactivate_lag(struct mlx5_lag *ldev) static bool mlx5_lag_check_prereq(struct mlx5_lag *ldev) { - if (!ldev->pf[0].dev || !ldev->pf[1].dev) + if (!ldev->pf[MLX5_LAG_P1].dev || !ldev->pf[MLX5_LAG_P2].dev) return false; #ifdef CONFIG_MLX5_ESWITCH - return mlx5_esw_lag_prereq(ldev->pf[0].dev, ldev->pf[1].dev); + return mlx5_esw_lag_prereq(ldev->pf[MLX5_LAG_P1].dev, + ldev->pf[MLX5_LAG_P2].dev); #else - return (!mlx5_sriov_is_enabled(ldev->pf[0].dev) && - !mlx5_sriov_is_enabled(ldev->pf[1].dev)); + return (!mlx5_sriov_is_enabled(ldev->pf[MLX5_LAG_P1].dev) && + !mlx5_sriov_is_enabled(ldev->pf[MLX5_LAG_P2].dev)); #endif } @@ -285,8 +288,8 @@ static void mlx5_lag_remove_ib_devices(struct mlx5_lag *ldev) static void mlx5_do_bond(struct mlx5_lag *ldev) { - struct mlx5_core_dev *dev0 = ldev->pf[0].dev; - struct mlx5_core_dev *dev1 = ldev->pf[1].dev; + struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev; + struct mlx5_core_dev *dev1 = ldev->pf[MLX5_LAG_P2].dev; struct lag_tracker tracker; bool do_bond, roce_lag; int err; @@ -692,10 +695,11 @@ struct net_device *mlx5_lag_get_roce_netdev(struct mlx5_core_dev *dev) goto unlock; if (ldev->tracker.tx_type == NETDEV_LAG_TX_TYPE_ACTIVEBACKUP) { - ndev = ldev->tracker.netdev_state[0].tx_enabled ? - ldev->pf[0].netdev : ldev->pf[1].netdev; + ndev = ldev->tracker.netdev_state[MLX5_LAG_P1].tx_enabled ? + ldev->pf[MLX5_LAG_P1].netdev : + ldev->pf[MLX5_LAG_P2].netdev; } else { - ndev = ldev->pf[0].netdev; + ndev = ldev->pf[MLX5_LAG_P1].netdev; } if (ndev) dev_hold(ndev); @@ -717,7 +721,8 @@ bool mlx5_lag_intf_add(struct mlx5_interface *intf, struct mlx5_priv *priv) return true; ldev = mlx5_lag_dev_get(dev); - if (!ldev || !__mlx5_lag_is_roce(ldev) || ldev->pf[0].dev == dev) + if (!ldev || !__mlx5_lag_is_roce(ldev) || + ldev->pf[MLX5_LAG_P1].dev == dev) return true; /* If bonded, we do not add an IB device for PF1. */ @@ -746,11 +751,11 @@ int mlx5_lag_query_cong_counters(struct mlx5_core_dev *dev, ldev = mlx5_lag_dev_get(dev); if (ldev && __mlx5_lag_is_roce(ldev)) { num_ports = MLX5_MAX_PORTS; - mdev[0] = ldev->pf[0].dev; - mdev[1] = ldev->pf[1].dev; + mdev[MLX5_LAG_P1] = ldev->pf[MLX5_LAG_P1].dev; + mdev[MLX5_LAG_P2] = ldev->pf[MLX5_LAG_P2].dev; } else { num_ports = 1; - mdev[0] = dev; + mdev[MLX5_LAG_P1] = dev; } for (i = 0; i < num_ports; ++i) { diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag.h b/drivers/net/ethernet/mellanox/mlx5/core/lag.h index 1dea0b1c9826..f1068aac6406 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lag.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/lag.h @@ -7,6 +7,11 @@ #include "mlx5_core.h" #include "lag_mp.h" +enum { + MLX5_LAG_P1, + MLX5_LAG_P2, +}; + enum { MLX5_LAG_FLAG_ROCE = 1 << 0, MLX5_LAG_FLAG_SRIOV = 1 << 1, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c index 13e2944b1274..5169864dd656 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c @@ -11,10 +11,11 @@ static bool mlx5_lag_multipath_check_prereq(struct mlx5_lag *ldev) { - if (!ldev->pf[0].dev || !ldev->pf[1].dev) + if (!ldev->pf[MLX5_LAG_P1].dev || !ldev->pf[MLX5_LAG_P2].dev) return false; - return mlx5_esw_multipath_prereq(ldev->pf[0].dev, ldev->pf[1].dev); + return mlx5_esw_multipath_prereq(ldev->pf[MLX5_LAG_P1].dev, + ldev->pf[MLX5_LAG_P2].dev); } static bool __mlx5_lag_is_multipath(struct mlx5_lag *ldev) @@ -52,36 +53,36 @@ static void mlx5_lag_set_port_affinity(struct mlx5_lag *ldev, int port) switch (port) { case 0: - tracker.netdev_state[0].tx_enabled = true; - tracker.netdev_state[1].tx_enabled = true; - tracker.netdev_state[0].link_up = true; - tracker.netdev_state[1].link_up = true; + tracker.netdev_state[MLX5_LAG_P1].tx_enabled = true; + tracker.netdev_state[MLX5_LAG_P2].tx_enabled = true; + tracker.netdev_state[MLX5_LAG_P1].link_up = true; + tracker.netdev_state[MLX5_LAG_P2].link_up = true; break; case 1: - tracker.netdev_state[0].tx_enabled = true; - tracker.netdev_state[0].link_up = true; - tracker.netdev_state[1].tx_enabled = false; - tracker.netdev_state[1].link_up = false; + tracker.netdev_state[MLX5_LAG_P1].tx_enabled = true; + tracker.netdev_state[MLX5_LAG_P1].link_up = true; + tracker.netdev_state[MLX5_LAG_P2].tx_enabled = false; + tracker.netdev_state[MLX5_LAG_P2].link_up = false; break; case 2: - tracker.netdev_state[0].tx_enabled = false; - tracker.netdev_state[0].link_up = false; - tracker.netdev_state[1].tx_enabled = true; - tracker.netdev_state[1].link_up = true; + tracker.netdev_state[MLX5_LAG_P1].tx_enabled = false; + tracker.netdev_state[MLX5_LAG_P1].link_up = false; + tracker.netdev_state[MLX5_LAG_P2].tx_enabled = true; + tracker.netdev_state[MLX5_LAG_P2].link_up = true; break; default: - mlx5_core_warn(ldev->pf[0].dev, "Invalid affinity port %d", - port); + mlx5_core_warn(ldev->pf[MLX5_LAG_P1].dev, + "Invalid affinity port %d", port); return; } - if (tracker.netdev_state[0].tx_enabled) - mlx5_notifier_call_chain(ldev->pf[0].dev->priv.events, + if (tracker.netdev_state[MLX5_LAG_P1].tx_enabled) + mlx5_notifier_call_chain(ldev->pf[MLX5_LAG_P1].dev->priv.events, MLX5_DEV_EVENT_PORT_AFFINITY, (void *)0); - if (tracker.netdev_state[1].tx_enabled) - mlx5_notifier_call_chain(ldev->pf[1].dev->priv.events, + if (tracker.netdev_state[MLX5_LAG_P2].tx_enabled) + mlx5_notifier_call_chain(ldev->pf[MLX5_LAG_P2].dev->priv.events, MLX5_DEV_EVENT_PORT_AFFINITY, (void *)0); @@ -141,11 +142,12 @@ static void mlx5_lag_fib_route_event(struct mlx5_lag *ldev, /* Verify next hops are ports of the same hca */ fib_nh0 = fib_info_nh(fi, 0); fib_nh1 = fib_info_nh(fi, 1); - if (!(fib_nh0->fib_nh_dev == ldev->pf[0].netdev && - fib_nh1->fib_nh_dev == ldev->pf[1].netdev) && - !(fib_nh0->fib_nh_dev == ldev->pf[1].netdev && - fib_nh1->fib_nh_dev == ldev->pf[0].netdev)) { - mlx5_core_warn(ldev->pf[0].dev, "Multipath offload require two ports of the same HCA\n"); + if (!(fib_nh0->fib_nh_dev == ldev->pf[MLX5_LAG_P1].netdev && + fib_nh1->fib_nh_dev == ldev->pf[MLX5_LAG_P2].netdev) && + !(fib_nh0->fib_nh_dev == ldev->pf[MLX5_LAG_P2].netdev && + fib_nh1->fib_nh_dev == ldev->pf[MLX5_LAG_P1].netdev)) { + mlx5_core_warn(ldev->pf[MLX5_LAG_P1].dev, + "Multipath offload require two ports of the same HCA\n"); return; } @@ -267,8 +269,8 @@ static int mlx5_lag_fib_event(struct notifier_block *nb, return notifier_from_errno(-EINVAL); } fib_dev = fib_info_nh(fen_info->fi, 0)->fib_nh_dev; - if (fib_dev != ldev->pf[0].netdev && - fib_dev != ldev->pf[1].netdev) { + if (fib_dev != ldev->pf[MLX5_LAG_P1].netdev && + fib_dev != ldev->pf[MLX5_LAG_P2].netdev) { return NOTIFY_DONE; } fib_work = mlx5_lag_init_fib_work(ldev, event); From patchwork Fri Nov 1 21:59:22 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188211 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 (no SPF record) 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="dRUx2Lgo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bhC506Fz9sP6 for ; Sat, 2 Nov 2019 08:59:39 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727732AbfKAV7i (ORCPT ); Fri, 1 Nov 2019 17:59:38 -0400 Received: from mail-eopbgr70089.outbound.protection.outlook.com ([40.107.7.89]:20086 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727707AbfKAV7h (ORCPT ); Fri, 1 Nov 2019 17:59:37 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SmU3OHBflZNWQ0JrTx82919GOeVj05XtKa/B8VPddxqXyRhL9Ms9rt+EvLolyRYo3GPE3qRKb9KMpp3WaKpnZryO0WZYUL7dSir2h/d3cdrVb1vqBjicgMJzY0t7w7K2rWg6ZQlXEF4tjdcJAkqROzsc50Upq2LUAHr/H1iokZf5OkEbGsTmh3uWdq3lQGm5YrOc6OMpO656NsYtygrwLezPJ4Wygr4d/CNelsHcU+hKhbG0TF63PKUlN5Le8n6TgARnT9aCjX0Pg3jsL4iyYF/gyYnDBfpv/y5aGUuuiLXU2JzOUUjiuUM/Pnzb5shJLjj8ikxkXEvqm9FP2d1azg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Stu9fyL4IxrGedFkF1qhcMT5QAG78wCTkwhMu5sHAaE=; b=TH3r1NuvIafReN9GRBL3KH1uzgcc++M0NZzZiBlddSoK2W9d1qirk/1/zQ/6WUN6nMEmEJouc609RZFriDx78xrAeT9clFOS9pFrnY0FQqnY9vmZm+E4RMR1PUjeTUVclEVf7OgKAXJ13mkb1kiWa0Ie8eg4W0fJhyG+Aw1/PMrZDe4n6N32rt4EPp5pfWXzBE2/E2c1Tgw+hoL/Tcin66Ng1BkuGZbV39Wp/sr7dZQUM+UzSSfo++T8Xe7Uvo+8eyNBiBzQrX/cra/rHRd9Qp3CT8d0KpZNzjsamXMtr3iqgDtHQjQxr3/nZXYhoExuFKy9zkUtaP22rsNw44ouYg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Stu9fyL4IxrGedFkF1qhcMT5QAG78wCTkwhMu5sHAaE=; b=dRUx2LgogGwA4m/b8CAjjph6e3w9cqZNKd4/SCF8hVZMoOrUZdflSXli23K4Uefw4Y21ZjTJ54Xno/sdZ/C5rq88HvifZTBSlzm4FikjxR9GqNzFf+UpTFxDG92VNlYN+u5EMSBmsOq12EyUlwwzLW3oZd9icMoOoF29aiN0shc= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB5679.eurprd05.prod.outlook.com (20.178.121.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 21:59:22 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:22 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Erez Alfasi , Saeed Mahameed Subject: [net-next 14/15] net/mlx5: LAG, Use affinity type enumerators Thread-Topic: [net-next 14/15] net/mlx5: LAG, Use affinity type enumerators Thread-Index: AQHVkP+eJuwit3V/IkeIfeEgUeVKKA== Date: Fri, 1 Nov 2019 21:59:22 +0000 Message-ID: <20191101215833.23975-15-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: f5c830a8-750e-4bf0-7ef6-08d75f16c070 x-ms-traffictypediagnostic: VI1PR05MB5679:|VI1PR05MB5679: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3631; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(189003)(199004)(4326008)(99286004)(316002)(2616005)(2906002)(6116002)(476003)(6512007)(3846002)(1076003)(36756003)(66946007)(14454004)(25786009)(54906003)(66066001)(66556008)(64756008)(486006)(11346002)(446003)(81156014)(6916009)(76176011)(305945005)(7736002)(26005)(66476007)(66446008)(86362001)(5660300002)(102836004)(386003)(6506007)(50226002)(6486002)(6436002)(81166006)(71190400001)(71200400001)(478600001)(8676002)(256004)(8936002)(14444005)(107886003)(52116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5679; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WT8jDFKTzZJ0sAFztSX1bV5POBmx/bv8ZXl+Qin0zGiwJUpmSJ6FE6qIfGS3at2UvissZgqHAEEgx4l067iZPBrybniCOQ64pDa2vNzzmc5sayqis2OHkvlrJ94TFtaYoZwGhCFmJd3PEHSb90DL5eiorVhnn2CQrUjT0wEBoYYlcLTM6LrgV0lbqsqLhZdtKWhzRXssUuQVUTtuGNvgW0ImajrfrdFwi0n7Oc2AMeeRsTKNTGGRekgQTVxt3KcPq9KQmHQvJqr9q0t0PDCjy6ss1LWlQOKznuUIaMb4u15rNsKLQcgTTb3dd4mXXK6jcDPby8JMUGRRdRW1if3eqxnUm3qKHkrCxXKmaBjFlgeHOyvG1GHYv0J+2n8VDq/ze3vL+AbdmwtiCTmhRd25iczLHMjDy29GAhgbIq+R101LmhggAmBEWro4b1t5c/s4 MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: f5c830a8-750e-4bf0-7ef6-08d75f16c070 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:22.0270 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: F4dk1nqb8SnmXdb1Bcl2uyNmhLBS1PpzLt5aPSrE86tDzN+E2LPwcFYWQlr65cKqOLqPdit09nyFmHo94GQTtw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5679 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Erez Alfasi Instead of using explicit indexes, simply use affinity type enumerators to make the code more readable. Fixes: 544fe7c2e654 ("net/mlx5e: Activate HW multipath and handle port affinity based on FIB events") Signed-off-by: Erez Alfasi Signed-off-by: Saeed Mahameed --- drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c | 13 +++++++------ drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h | 6 ++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c index 5169864dd656..b70afa310ad2 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.c @@ -44,7 +44,8 @@ bool mlx5_lag_is_multipath(struct mlx5_core_dev *dev) * 2 - set affinity to port 2. * **/ -static void mlx5_lag_set_port_affinity(struct mlx5_lag *ldev, int port) +static void mlx5_lag_set_port_affinity(struct mlx5_lag *ldev, + enum mlx5_lag_port_affinity port) { struct lag_tracker tracker; @@ -52,19 +53,19 @@ static void mlx5_lag_set_port_affinity(struct mlx5_lag *ldev, int port) return; switch (port) { - case 0: + case MLX5_LAG_NORMAL_AFFINITY: tracker.netdev_state[MLX5_LAG_P1].tx_enabled = true; tracker.netdev_state[MLX5_LAG_P2].tx_enabled = true; tracker.netdev_state[MLX5_LAG_P1].link_up = true; tracker.netdev_state[MLX5_LAG_P2].link_up = true; break; - case 1: + case MLX5_LAG_P1_AFFINITY: tracker.netdev_state[MLX5_LAG_P1].tx_enabled = true; tracker.netdev_state[MLX5_LAG_P1].link_up = true; tracker.netdev_state[MLX5_LAG_P2].tx_enabled = false; tracker.netdev_state[MLX5_LAG_P2].link_up = false; break; - case 2: + case MLX5_LAG_P2_AFFINITY: tracker.netdev_state[MLX5_LAG_P1].tx_enabled = false; tracker.netdev_state[MLX5_LAG_P1].link_up = false; tracker.netdev_state[MLX5_LAG_P2].tx_enabled = true; @@ -159,7 +160,7 @@ static void mlx5_lag_fib_route_event(struct mlx5_lag *ldev, mlx5_activate_lag(ldev, &tracker, MLX5_LAG_FLAG_MULTIPATH); } - mlx5_lag_set_port_affinity(ldev, 0); + mlx5_lag_set_port_affinity(ldev, MLX5_LAG_NORMAL_AFFINITY); mp->mfi = fi; } @@ -184,7 +185,7 @@ static void mlx5_lag_fib_nexthop_event(struct mlx5_lag *ldev, } } else if (event == FIB_EVENT_NH_ADD && fib_info_num_path(fi) == 2) { - mlx5_lag_set_port_affinity(ldev, 0); + mlx5_lag_set_port_affinity(ldev, MLX5_LAG_NORMAL_AFFINITY); } } diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h index 6d14b1100be9..79be89e9c7a4 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/lag_mp.h @@ -7,6 +7,12 @@ #include "lag.h" #include "mlx5_core.h" +enum mlx5_lag_port_affinity { + MLX5_LAG_NORMAL_AFFINITY, + MLX5_LAG_P1_AFFINITY, + MLX5_LAG_P2_AFFINITY, +}; + struct lag_mp { struct notifier_block fib_nb; struct fib_info *mfi; /* used in tracking fib events */ From patchwork Fri Nov 1 21:59:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Saeed Mahameed X-Patchwork-Id: 1188213 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 (no SPF record) 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="RzINWEZo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 474bhK1gsWz9sP6 for ; Sat, 2 Nov 2019 08:59:45 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727772AbfKAV7o (ORCPT ); Fri, 1 Nov 2019 17:59:44 -0400 Received: from mail-eopbgr70089.outbound.protection.outlook.com ([40.107.7.89]:20086 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727707AbfKAV7m (ORCPT ); Fri, 1 Nov 2019 17:59:42 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LjTu5SG+vNzEVqSUnUjslctcTblC4sLbevSoN6l/mFa1SaxyRAxOeTNl/PBYBIVD9Xzr/ocx+/afaI32j6lZi5VoCtV/UAaKxWgvE8apVNMeWia2crIQqHTlveQq//OCUwgQNsuu5cbbioTlaAKIpyhuq3jDIzoxPx1tIPn58Et3uvdQKFi9daw+d9sR44JLoCz0vsEhXxlgdE4U+4NzxT1aUZ2pxS2PRZYEmCngI1nNK3PZZUMXrTpYng0cuC9Oaz6QfE6FIawoJ845Jj590yjuOFfyAYu2aKZhhxxCXbUHjJI1L48O49ft4T4yUwjyEj0hvlwEwb5/UaweEWmL1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yl5hMU1hKz2oV486NUyVt84ycBwfcIIduPrH3UjSon8=; b=TF6z1X7bXm49WvzgRuw8JXAm1/my2SB6trWdSw+fMBR6QVVgGnuJ6dlEcGLUozATXi7VOdtyI0l5wsgvPEvJkgc0i4nan8ltnYxG6WknrVzwtzENfMdt3nh287TterOKU211MzWkjc4D3NA1MEIi1uQuI4Jm3rvVwe7x93PgjEaSMsbo3wvLTdoF5nLE9Qp6uHmClU4Uq4gDt/JsO+0++IoefGD5KRaoAK9afx4ePDv+KPft2gHrj+JD2uNKMgfPFr8vcK6iWgE/8Lk85iMStEOodKxyEy9b3EZAYLX0QRhUZphG0O505Az5kcwfeFXRFvn2QDkre+yUgt0JJQztDQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mellanox.com; dmarc=pass action=none header.from=mellanox.com; dkim=pass header.d=mellanox.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yl5hMU1hKz2oV486NUyVt84ycBwfcIIduPrH3UjSon8=; b=RzINWEZoO6Fi0hkhTrJazcqUh2+2RKqviQDF5GAlX/NpQReFaCon8uCzz8R7oPz9JlPZ/E9PLdEdpFpQUHLyrdhPHMK0eRC6HbyBbKbfbRIj0eXZRP4g/uUnGvmNQqiiMvOYbKvToUsdQYfKppjd2KxNBGo8WbFa+3VWCy28ZtU= Received: from VI1PR05MB5102.eurprd05.prod.outlook.com (20.177.51.151) by VI1PR05MB5679.eurprd05.prod.outlook.com (20.178.121.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2408.24; Fri, 1 Nov 2019 21:59:23 +0000 Received: from VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e]) by VI1PR05MB5102.eurprd05.prod.outlook.com ([fe80::d41a:9a5d:5482:497e%5]) with mapi id 15.20.2408.024; Fri, 1 Nov 2019 21:59:23 +0000 From: Saeed Mahameed To: "David S. Miller" CC: "netdev@vger.kernel.org" , Alex Vesker , Saeed Mahameed Subject: [net-next 15/15] net/mlx5: DR, Support IPv4 and IPv6 mixed matcher Thread-Topic: [net-next 15/15] net/mlx5: DR, Support IPv4 and IPv6 mixed matcher Thread-Index: AQHVkP+f5DRbWnMbbEK0yzBGk3MscA== Date: Fri, 1 Nov 2019 21:59:23 +0000 Message-ID: <20191101215833.23975-16-saeedm@mellanox.com> References: <20191101215833.23975-1-saeedm@mellanox.com> In-Reply-To: <20191101215833.23975-1-saeedm@mellanox.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: git-send-email 2.21.0 x-originating-ip: [209.116.155.178] x-clientproxiedby: BYAPR05CA0076.namprd05.prod.outlook.com (2603:10b6:a03:e0::17) To VI1PR05MB5102.eurprd05.prod.outlook.com (2603:10a6:803:5e::23) authentication-results: spf=none (sender IP is ) smtp.mailfrom=saeedm@mellanox.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 335f8af3-01ec-4522-2308-08d75f16c173 x-ms-traffictypediagnostic: VI1PR05MB5679:|VI1PR05MB5679: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2958; x-forefront-prvs: 020877E0CB x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(4636009)(39860400002)(376002)(366004)(346002)(396003)(136003)(189003)(199004)(4326008)(99286004)(316002)(2616005)(2906002)(6116002)(476003)(6512007)(3846002)(1076003)(36756003)(66946007)(14454004)(25786009)(54906003)(66066001)(66556008)(64756008)(486006)(11346002)(446003)(81156014)(6916009)(76176011)(305945005)(7736002)(26005)(66476007)(66446008)(86362001)(5660300002)(102836004)(386003)(6506007)(50226002)(6486002)(6436002)(81166006)(71190400001)(71200400001)(478600001)(8676002)(256004)(8936002)(14444005)(107886003)(52116002)(186003); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR05MB5679; H:VI1PR05MB5102.eurprd05.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: mellanox.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Uq3pFFjAMzHswtpTrwTOxcBNOWW4DDZ8ucUdNK8zuG1jBmAOH0AacSds6bsbTwrIY6jX7gPFJDYCG5j8xfz5O7XiZ37DmPAYWJ/BoN7TeF4lPAapS1kQoRhW0Hlfm1KagCTJwPnYfR4457nOuzH8WdcRKcxHrPHaba+K6StJQXfzO56/cL49w27d2PMwU5T2blidf8zv7Oiw7Khb3Xc6IWMH6mwQR4nJDV9J6Qmdq7rtqMJSiUcWKrOaoxFaWO2waX+tl/fFyr6FWlKqMd56KSgZzyrP1lVex2bIhWseGQp7oz5zSw+3y03b1TQflQ5/Yx7lfG6MbXjm2FRG2aPGtSObgTB2aTCKmm+GfqOvVR8uvHtBgvyMMvg43YBNTOmnooSaXbnTbQDcyZoonEv5aRzft34jUPpsU7tUVhBLDXTe7rN+2psGm0htbgeK9cuV MIME-Version: 1.0 X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-Network-Message-Id: 335f8af3-01ec-4522-2308-08d75f16c173 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2019 21:59:23.7880 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: schlKJygCOM+89jJFc9ZhtgwsT+LqVAPpz4icUUU+LE0uwJTRT8dGCZdpcHRsXFax79sFZnJXSAruVua2HdnQg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR05MB5679 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Alex Vesker Until now SW steering supported matchers that are IPv4 and IPv6. The limitation was mixed matchers in which the outer header IP version was different from the inner header IP version. To support the mixed matcher we create all the possible ste_builder combinations, once we create a rule we select the correct one to be used for rule creation. Signed-off-by: Alex Vesker Signed-off-by: Saeed Mahameed --- .../mellanox/mlx5/core/steering/dr_matcher.c | 65 ++++++++++--------- .../mellanox/mlx5/core/steering/dr_rule.c | 13 ++-- .../mellanox/mlx5/core/steering/dr_types.h | 17 +++-- 3 files changed, 52 insertions(+), 43 deletions(-) diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c index 67dea7698fc9..5db947df8763 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_matcher.c @@ -146,17 +146,15 @@ dr_matcher_supp_flex_parser_vxlan_gpe(struct mlx5dr_domain *dmn) int mlx5dr_matcher_select_builders(struct mlx5dr_matcher *matcher, struct mlx5dr_matcher_rx_tx *nic_matcher, - bool ipv6) + enum mlx5dr_ipv outer_ipv, + enum mlx5dr_ipv inner_ipv) { - if (ipv6) { - nic_matcher->ste_builder = nic_matcher->ste_builder6; - nic_matcher->num_of_builders = nic_matcher->num_of_builders6; - } else { - nic_matcher->ste_builder = nic_matcher->ste_builder4; - nic_matcher->num_of_builders = nic_matcher->num_of_builders4; - } + nic_matcher->ste_builder = + nic_matcher->ste_builder_arr[outer_ipv][inner_ipv]; + nic_matcher->num_of_builders = + nic_matcher->num_of_builders_arr[outer_ipv][inner_ipv]; - if (!nic_matcher->num_of_builders) { + if (!nic_matcher->ste_builder) { mlx5dr_dbg(matcher->tbl->dmn, "Rule not supported on this matcher due to IP related fields\n"); return -EINVAL; @@ -167,26 +165,19 @@ int mlx5dr_matcher_select_builders(struct mlx5dr_matcher *matcher, static int dr_matcher_set_ste_builders(struct mlx5dr_matcher *matcher, struct mlx5dr_matcher_rx_tx *nic_matcher, - bool ipv6) + enum mlx5dr_ipv outer_ipv, + enum mlx5dr_ipv inner_ipv) { struct mlx5dr_domain_rx_tx *nic_dmn = nic_matcher->nic_tbl->nic_dmn; struct mlx5dr_domain *dmn = matcher->tbl->dmn; struct mlx5dr_match_param mask = {}; struct mlx5dr_match_misc3 *misc3; struct mlx5dr_ste_build *sb; - u8 *num_of_builders; bool inner, rx; int idx = 0; int ret, i; - if (ipv6) { - sb = nic_matcher->ste_builder6; - num_of_builders = &nic_matcher->num_of_builders6; - } else { - sb = nic_matcher->ste_builder4; - num_of_builders = &nic_matcher->num_of_builders4; - } - + sb = nic_matcher->ste_builder_arr[outer_ipv][inner_ipv]; rx = nic_dmn->ste_type == MLX5DR_STE_TYPE_RX; /* Create a temporary mask to track and clear used mask fields */ @@ -249,7 +240,7 @@ static int dr_matcher_set_ste_builders(struct mlx5dr_matcher *matcher, if (DR_MASK_IS_L2_DST(mask.outer, mask.misc, outer)) mlx5dr_ste_build_eth_l2_dst(&sb[idx++], &mask, inner, rx); - if (ipv6) { + if (outer_ipv == DR_RULE_IPV6) { if (dr_mask_is_dst_addr_set(&mask.outer)) mlx5dr_ste_build_eth_l3_ipv6_dst(&sb[idx++], &mask, inner, rx); @@ -325,7 +316,7 @@ static int dr_matcher_set_ste_builders(struct mlx5dr_matcher *matcher, if (DR_MASK_IS_L2_DST(mask.inner, mask.misc, inner)) mlx5dr_ste_build_eth_l2_dst(&sb[idx++], &mask, inner, rx); - if (ipv6) { + if (inner_ipv == DR_RULE_IPV6) { if (dr_mask_is_dst_addr_set(&mask.inner)) mlx5dr_ste_build_eth_l3_ipv6_dst(&sb[idx++], &mask, inner, rx); @@ -373,7 +364,8 @@ static int dr_matcher_set_ste_builders(struct mlx5dr_matcher *matcher, } } - *num_of_builders = idx; + nic_matcher->ste_builder = sb; + nic_matcher->num_of_builders_arr[outer_ipv][inner_ipv] = idx; return 0; } @@ -524,24 +516,33 @@ static void dr_matcher_uninit(struct mlx5dr_matcher *matcher) } } -static int dr_matcher_init_nic(struct mlx5dr_matcher *matcher, - struct mlx5dr_matcher_rx_tx *nic_matcher) +static int dr_matcher_set_all_ste_builders(struct mlx5dr_matcher *matcher, + struct mlx5dr_matcher_rx_tx *nic_matcher) { struct mlx5dr_domain *dmn = matcher->tbl->dmn; - int ret, ret_v4, ret_v6; - ret_v4 = dr_matcher_set_ste_builders(matcher, nic_matcher, false); - ret_v6 = dr_matcher_set_ste_builders(matcher, nic_matcher, true); + dr_matcher_set_ste_builders(matcher, nic_matcher, DR_RULE_IPV4, DR_RULE_IPV4); + dr_matcher_set_ste_builders(matcher, nic_matcher, DR_RULE_IPV4, DR_RULE_IPV6); + dr_matcher_set_ste_builders(matcher, nic_matcher, DR_RULE_IPV6, DR_RULE_IPV4); + dr_matcher_set_ste_builders(matcher, nic_matcher, DR_RULE_IPV6, DR_RULE_IPV6); - if (ret_v4 && ret_v6) { + if (!nic_matcher->ste_builder) { mlx5dr_dbg(dmn, "Cannot generate IPv4 or IPv6 rules with given mask\n"); return -EINVAL; } - if (!ret_v4) - nic_matcher->ste_builder = nic_matcher->ste_builder4; - else - nic_matcher->ste_builder = nic_matcher->ste_builder6; + return 0; +} + +static int dr_matcher_init_nic(struct mlx5dr_matcher *matcher, + struct mlx5dr_matcher_rx_tx *nic_matcher) +{ + struct mlx5dr_domain *dmn = matcher->tbl->dmn; + int ret; + + ret = dr_matcher_set_all_ste_builders(matcher, nic_matcher); + if (ret) + return ret; nic_matcher->e_anchor = mlx5dr_ste_htbl_alloc(dmn->ste_icm_pool, DR_CHUNK_SIZE_1, diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c index e8b656075c6f..90c79a133692 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_rule.c @@ -954,12 +954,12 @@ static int dr_rule_destroy_rule(struct mlx5dr_rule *rule) return 0; } -static bool dr_rule_is_ipv6(struct mlx5dr_match_param *param) +static enum mlx5dr_ipv dr_rule_get_ipv(struct mlx5dr_match_spec *spec) { - return (param->outer.ip_version == 6 || - param->inner.ip_version == 6 || - param->outer.ethertype == ETH_P_IPV6 || - param->inner.ethertype == ETH_P_IPV6); + if (spec->ip_version == 6 || spec->ethertype == ETH_P_IPV6) + return DR_RULE_IPV6; + + return DR_RULE_IPV4; } static bool dr_rule_skip(enum mlx5dr_domain_type domain, @@ -1023,7 +1023,8 @@ dr_rule_create_rule_nic(struct mlx5dr_rule *rule, ret = mlx5dr_matcher_select_builders(matcher, nic_matcher, - dr_rule_is_ipv6(param)); + dr_rule_get_ipv(¶m->outer), + dr_rule_get_ipv(¶m->inner)); if (ret) goto out_err; diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h index d6d9bc5f4adf..c1f45a60ee6b 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_types.h @@ -106,6 +106,12 @@ enum mlx5dr_action_type { DR_ACTION_TYP_MAX, }; +enum mlx5dr_ipv { + DR_RULE_IPV4, + DR_RULE_IPV6, + DR_RULE_IPV_MAX, +}; + struct mlx5dr_icm_pool; struct mlx5dr_icm_chunk; struct mlx5dr_icm_bucket; @@ -679,11 +685,11 @@ struct mlx5dr_matcher_rx_tx { struct mlx5dr_ste_htbl *s_htbl; struct mlx5dr_ste_htbl *e_anchor; struct mlx5dr_ste_build *ste_builder; - struct mlx5dr_ste_build ste_builder4[DR_RULE_MAX_STES]; - struct mlx5dr_ste_build ste_builder6[DR_RULE_MAX_STES]; + struct mlx5dr_ste_build ste_builder_arr[DR_RULE_IPV_MAX] + [DR_RULE_IPV_MAX] + [DR_RULE_MAX_STES]; u8 num_of_builders; - u8 num_of_builders4; - u8 num_of_builders6; + u8 num_of_builders_arr[DR_RULE_IPV_MAX][DR_RULE_IPV_MAX]; u64 default_icm_addr; struct mlx5dr_table_rx_tx *nic_tbl; }; @@ -812,7 +818,8 @@ mlx5dr_matcher_supp_flex_parser_icmp_v6(struct mlx5dr_cmd_caps *caps) int mlx5dr_matcher_select_builders(struct mlx5dr_matcher *matcher, struct mlx5dr_matcher_rx_tx *nic_matcher, - bool ipv6); + enum mlx5dr_ipv outer_ipv, + enum mlx5dr_ipv inner_ipv); static inline u32 mlx5dr_icm_pool_chunk_size_to_entries(enum mlx5dr_icm_chunk_size chunk_size)