From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id AC9EDA0548; Thu, 27 May 2021 11:34:31 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 28A22410F0; Thu, 27 May 2021 11:34:28 +0200 (CEST) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2066.outbound.protection.outlook.com [40.107.92.66]) by mails.dpdk.org (Postfix) with ESMTP id 7FD7B407FF for ; Thu, 27 May 2021 11:34:25 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BCf0lxcLxKkaPfO2dPgpfYeJsvTP49x0bwXQooPr6QAnGjld0I856VQFkzX72ityBhduPedXijTb7C2VoENuZiXWeZWZ5wmWAbhpBEd9YzQQGuwPMRZmgFvwK9q8jkkVuFRoNEeNB1hua3eucgPliie8eJsA/uVpek6kgdW+tkCjZGI5Ba3cvtPoE7CRaPFuhujcsaUAuUdplZM4hutc6LuIrpExuDkAwkFdKboV65ELsGh1yJT9wpKbUKJ7cfWwtDO7+fr4WS9SgJFYsm+lcWHyN/6R4d4dr3+xe6+ckYuSAyiXaVDagKivuauMnRgY2N7nL3UeVaUGxLmO7KWr4w== 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=As8UIQ6MySHuSI+30RNh+vFbWRkJ1H7BWTRBODrHtkI=; b=a8SPbOYTrPh7B4jK0W4N7U0kYDZLweGA9jLG9PnN7CExdLT+6mx513ODOajb6FbrhRSwbbarHuXZIR6+5YoV9epONORVt+tvVskQUHoqSNK8oKPuozfYiLhrqvmLSZzbJYaqR8An6ZFhqQWQwjPqjCeYj8sBiitLF7vok8lgXQJm3dGgcIz1Vx/d0WEoaiYAOioSjVx0p3ETdjtpcQ7LTxEZghcs33m0AP50aBiLhGan2Qcl1fvdwybuFlsUn81tMO7FK1yls8YXyBniSG+RnejjvEHqyp0bLsR07QeuuhWvILfhES33+yxUJZT0Pkf371CN7ChO7ZGqKNWQi1TB1w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.112.34) smtp.rcpttodomain=dpdk.org smtp.mailfrom=nvidia.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=As8UIQ6MySHuSI+30RNh+vFbWRkJ1H7BWTRBODrHtkI=; b=cLL3YFynefXTlG/G0I4/0iUUwso5444aoI8RgMUY+rL+06fPrcTpv6K/qySDdOkLcfeRtOqVVqgAMjkrS7u/G1nhJzmI0W0XCfclIh/otyCrLMA9hzzNizcj0dGWX1PhHSvP0XNkz8n4m7Ae5haBaZBDpPy1tyg2+A4T6iAIT/d/jiXtOAXPKvqVgur0w8n0cQuxm0U9XVeZ5h/OVbeSWC9zQgo+rPnrByaeO2SWscWOY44MOKvcb97621wSJX20IljTurMzUXDDPDx52skykjnzwv2LjQmmOgq4uNUEyfyo+JAIRWiNsWnaxL7Bsj+mHL/55htDj/tJvWnhlhm6nA== Received: from MWHPR14CA0068.namprd14.prod.outlook.com (2603:10b6:300:81::30) by BL0PR12MB2339.namprd12.prod.outlook.com (2603:10b6:207:4e::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.23; Thu, 27 May 2021 09:34:24 +0000 Received: from CO1NAM11FT009.eop-nam11.prod.protection.outlook.com (2603:10b6:300:81:cafe::71) by MWHPR14CA0068.outlook.office365.com (2603:10b6:300:81::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21 via Frontend Transport; Thu, 27 May 2021 09:34:23 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.112.34) smtp.mailfrom=nvidia.com; dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.112.34 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.112.34; helo=mail.nvidia.com; Received: from mail.nvidia.com (216.228.112.34) by CO1NAM11FT009.mail.protection.outlook.com (10.13.175.61) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.4129.25 via Frontend Transport; Thu, 27 May 2021 09:34:23 +0000 Received: from nvidia.com (172.20.145.6) by HQMAIL107.nvidia.com (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Thu, 27 May 2021 09:34:21 +0000 From: Suanming Mou To: , CC: , Date: Thu, 27 May 2021 12:34:00 +0300 Message-ID: <20210527093403.1153127-2-suanmingm@nvidia.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210527093403.1153127-1-suanmingm@nvidia.com> References: <20210527093403.1153127-1-suanmingm@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [172.20.145.6] X-ClientProxiedBy: HQMAIL107.nvidia.com (172.20.187.13) To HQMAIL107.nvidia.com (172.20.187.13) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b78e2c4d-102e-4b80-262b-08d920f29cda X-MS-TrafficTypeDiagnostic: BL0PR12MB2339: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:6108; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Xl9/NxhgFgYQ9eeBguve4/kLOKEToE9psLzvBKrMrQ4P3shs5lhtImwa98hFeNdythplBgjPEM1GnKdpIDMXe8kCMVClY95q9xxwV2IJ7mk02qTsh0q1MkLn2nw4CuY6quHHwzq6WhnB/5Btrctl9G2nx6oieqNCR/0vO4kdkIsuSFm7ckUg9FRgABJgUpkoqEsTa8jEbcHAxHJ+WTw3Jj8SHM0uVrsMY0mRQRveLlxE+c6Z+YY4jKsZLa6+kiJWxXXPNVN030JG9aOxe31Bphs3NQ1l7lXYz0To53xRQovcz5af1TXKAHauqqrvSNUJ5IftRElNjiV+E5xbPkl57vg4bsC+VUZE7t6G/CyUlUzxNe8yzBVo2G8X04WVZYTeE7avjvPu/NW/oget2dUX3KLTPXNUh7fDQKtKoj9Pt+0rzTUMnx3vVA2mSEtgxQ2ts+9xYHCUUTtB5rtpSBCUekIgvp7zjWOlTPEnt05zD1PG5726eGp4hopGlVRJvTzjiUhLDG5xiEukubrLGTGzwQmrtihTRzHh9rAd69W5Psk77Rsx38/9XCmJHublrSSu7z1qISP4q8Lmqqs5KfLkF9s2Zvl2SdXghvcbip54oWEd65/vcRZ5/bmL98KcYXdIo1Lxo7gAIoQ05eelw3AiO7AmdyehWc2QxjGpJm7AYD8= X-Forefront-Antispam-Report: CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE; SFS:(4636009)(136003)(346002)(39860400002)(396003)(376002)(36840700001)(46966006)(2616005)(8676002)(6286002)(7696005)(426003)(70586007)(356005)(36906005)(82740400003)(54906003)(6666004)(8936002)(82310400003)(55016002)(86362001)(336012)(7636003)(26005)(47076005)(83380400001)(70206006)(36756003)(316002)(6636002)(186003)(478600001)(2906002)(4326008)(110136005)(5660300002)(1076003)(16526019)(36860700001); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2021 09:34:23.4323 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b78e2c4d-102e-4b80-262b-08d920f29cda X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: CO1NAM11FT009.eop-nam11.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB2339 Subject: [dpdk-dev] [PATCH 1/4] net/mlx5: add index allocate with up limit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" The index pool can be used as ID allocator. In the ID allocator case, to support the maximum ID can be allocated is very useful since some registers only want limited bits of ID. This patch add the maximum ID configurable for the index pool. Signed-off-by: Suanming Mou --- drivers/net/mlx5/mlx5_utils.c | 14 ++++++++++++-- drivers/net/mlx5/mlx5_utils.h | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_utils.c b/drivers/net/mlx5/mlx5_utils.c index 18fe23e4fb..bf2b2ebc72 100644 --- a/drivers/net/mlx5/mlx5_utils.c +++ b/drivers/net/mlx5/mlx5_utils.c @@ -270,6 +270,9 @@ mlx5_ipool_create(struct mlx5_indexed_pool_config *cfg) if (i > 0) pool->grow_tbl[i] += pool->grow_tbl[i - 1]; } + if (!pool->cfg.max_idx) + pool->cfg.max_idx = + mlx5_trunk_idx_offset_get(pool, TRUNK_MAX_IDX + 1); return pool; } @@ -282,9 +285,11 @@ mlx5_ipool_grow(struct mlx5_indexed_pool *pool) size_t trunk_size = 0; size_t data_size; size_t bmp_size; - uint32_t idx; + uint32_t idx, cur_max_idx, i; - if (pool->n_trunk_valid == TRUNK_MAX_IDX) + cur_max_idx = mlx5_trunk_idx_offset_get(pool, pool->n_trunk_valid); + if (pool->n_trunk_valid == TRUNK_MAX_IDX || + cur_max_idx >= pool->cfg.max_idx) return -ENOMEM; if (pool->n_trunk_valid == pool->n_trunk) { /* No free trunk flags, expand trunk list. */ @@ -336,6 +341,11 @@ mlx5_ipool_grow(struct mlx5_indexed_pool *pool) trunk->bmp = rte_bitmap_init_with_all_set(data_size, &trunk->data [RTE_CACHE_LINE_ROUNDUP(data_size * pool->cfg.size)], bmp_size); + /* Clear the overhead bits in the trunk if it happens. */ + if (cur_max_idx + data_size > pool->cfg.max_idx) { + for (i = pool->cfg.max_idx - cur_max_idx; i < data_size; i++) + rte_bitmap_clear(trunk->bmp, i); + } MLX5_ASSERT(trunk->bmp); pool->n_trunk_valid++; #ifdef POOL_DEBUG diff --git a/drivers/net/mlx5/mlx5_utils.h b/drivers/net/mlx5/mlx5_utils.h index b54517c6df..15870e14c2 100644 --- a/drivers/net/mlx5/mlx5_utils.h +++ b/drivers/net/mlx5/mlx5_utils.h @@ -208,6 +208,7 @@ struct mlx5_indexed_pool_config { uint32_t need_lock:1; /* Lock is needed for multiple thread usage. */ uint32_t release_mem_en:1; /* Rlease trunk when it is free. */ + uint32_t max_idx; /* The maximum index can be allocated. */ const char *type; /* Memory allocate type name. */ void *(*malloc)(uint32_t flags, size_t size, unsigned int align, int socket); -- 2.25.1