From nobody Tue Oct 15 17:43:21 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4XShK54dwJz5YlYp; Tue, 15 Oct 2024 17:43:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4XShK52JVzz4ZYC; Tue, 15 Oct 2024 17:43:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1729014201; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eESH7wp7mMDP2njfi0h9KWquvgO2b23hwnzXzpJUgfo=; b=IqBZ4m0i2FOT3VTnfSWXoiQDMLsk2u6fUktodRNoQF4rbHudRIcy4lv/M6hnr9qPqIgGHu SpXNwteG4jckC5BRyYwmWKBU6PUvYXMHhPjsEdcTwRFAaIySv1dK3UkfJ0y3Qo5HXCJUHL sw4dVVbg8TvDR4ZwH4Ub7lJyGI7pjMwqSQJw1wxPskJNxyW9Ib1dU9cipUSvI2G4Xqc4hG ZQn/rZ91q6b3aX63anxgXtFqAthSfc8TdZQsVc74ABjLG6x/7ZtRvTxk635DcQt0yxX2/+ Fhr13Pb8P5XU1exNvKQg7erH0qvBW1yWI01vBe4hnC8/UeO1f72x8vPTNV8Fag== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1729014201; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=eESH7wp7mMDP2njfi0h9KWquvgO2b23hwnzXzpJUgfo=; b=yAnEmSy2cFHEky1QiKhVoOUSzzEKKUqkvR0n519MlcReJOkNFyeIEw/CT1nLPdHfjZdIFo CwO20msNnmpscVtIQomALMPbyA3Oj6hBSkHkiWvjtsKXm4L+fY+ntGH1XRkH/BgQ0j3zgG XbpoMdvdXUZYYNddqxh0urhVewpTXL8NVk+OyIEA7Q9n0IjPE3EC30RHa+cXs4nKWiXEC6 VC2d5WUu+kC9sIGeanKdNFUifjyFrUnQbSfTsEhUQ6dYgkLzflJlfuyueWHxhNAxL3TlvI bbbY2bY13uKCrFshCj7eYG4+7utchz7YpIPiRg/xNK4WV5LohFb4kGXHDeVlaw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1729014201; a=rsa-sha256; cv=none; b=CGQOjLD8HDzX7I9YWE/uUeie7iJ0ZQPkWNtbM00avOBKQxvnd234zgpG/HWq4S6QOuV9H3 BWmJ7+c4w5gSbX1xMGR6ssNqd3HE3zRm465gmJ3lNmcnQKOTUKF9MRVvlqU7PCMT2L22Cn CrW4QBY/QUL892H/m2c+ddZLfASuSieDC69Noi+pUemTa3XaautoIl88bAhPyJQ/Z+T3YW 4KTnvUDkaFYkbtr7YFqfiLbQ2IT5ZBR1Myr/dP7RpXVQcS3sAVU7jfAqUph9cf9+DK+jbu cgmxlMstHfnQV6QAy2N/lvpycDC/KBvUwTpgBh8tCnrPlhSbSZsyzNtkYvTXrQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4XShK51vb6zXQC; Tue, 15 Oct 2024 17:43:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 49FHhL37062771; Tue, 15 Oct 2024 17:43:21 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 49FHhLes062768; Tue, 15 Oct 2024 17:43:21 GMT (envelope-from git) Date: Tue, 15 Oct 2024 17:43:21 GMT Message-Id: <202410151743.49FHhLes062768@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Osama Abboud Subject: git: d0419551d96c - main - ena: Support max large LLQ depth from the device List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: osamaabb X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d0419551d96c8f995bdf6388a8e69684be33f9b5 Auto-Submitted: auto-generated The branch main has been updated by osamaabb: URL: https://cgit.FreeBSD.org/src/commit/?id=d0419551d96c8f995bdf6388a8e69684be33f9b5 commit d0419551d96c8f995bdf6388a8e69684be33f9b5 Author: Osama Abboud AuthorDate: 2024-08-07 06:24:22 +0000 Commit: Osama Abboud CommitDate: 2024-10-15 17:38:32 +0000 ena: Support max large LLQ depth from the device Large LLQ depth size is currently calculated by dividing the maximum possible size of LLQ by 2. In newer paltforms, starting from r8g the size of BAR2, which contains LLQ, will be increased, and the maximum depth of wide LLQ will be set according to a value set by the device, instead of hardcoded division by 2. The new value will be stored by the device in max_wide_llq_depth field for drivers that expose ENA_ADMIN_LLQ_FEATURE_VERSION_1 or higher to the device. There is an assumption that max_llq_depth >= max_wide_llq_depth, since they both use the same bar, and if it is possible to have a wide LLQ of size max_wide_llq_depth, it is possible to have a normal LLQ of the same size, since it will occupy half of the space. Also moved the large LLQ case calculation of max_tx_queue_size before its rounddown. Approved by: cperciva (mentor) MFC after: 2 weeks Sponsored by: Amazon, Inc. --- sys/dev/ena/ena.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index fadba819652b..28a4d7842306 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -2831,28 +2831,34 @@ ena_calc_io_queue_size(struct ena_calc_queue_size_ctx *ctx, struct ena_adapter * max_queues->max_packet_rx_descs); } - /* round down to the nearest power of 2 */ - max_tx_queue_size = 1 << (flsl(max_tx_queue_size) - 1); - max_rx_queue_size = 1 << (flsl(max_rx_queue_size) - 1); - - /* - * When using large headers, we multiply the entry size by 2, - * and therefore divide the queue size by 2, leaving the amount - * of memory used by the queues unchanged. - */ if (adapter->llq_policy == ENA_ADMIN_LIST_ENTRY_SIZE_256B) { - if (ena_dev->tx_mem_queue_type == - ENA_ADMIN_PLACEMENT_POLICY_DEV) { - max_tx_queue_size /= 2; - ena_log(ctx->pdev, INFO, - "Using large headers and decreasing maximum Tx queue size to %d\n", - max_tx_queue_size); + if (ena_dev->tx_mem_queue_type == ENA_ADMIN_PLACEMENT_POLICY_DEV) { + if (llq->max_wide_llq_depth != max_tx_queue_size) { + if (llq->max_wide_llq_depth == 0) { + /* if there is no large llq max depth from device, we divide + * the queue size by 2, leaving the amount of memory + * used by the queues unchanged. + */ + max_tx_queue_size /= 2; + } else { + max_tx_queue_size = llq->max_wide_llq_depth; + } + ena_log(ctx->pdev, INFO, + "Using large LLQ headers and decreasing maximum Tx queue size to %d\n", + max_tx_queue_size); + } else { + ena_log(ctx->pdev, INFO, "Using large LLQ headers\n"); + } } else { ena_log(ctx->pdev, WARN, "Using large headers failed: LLQ is disabled or device does not support large headers\n"); } } + /* round down to the nearest power of 2 */ + max_tx_queue_size = 1 << (flsl(max_tx_queue_size) - 1); + max_rx_queue_size = 1 << (flsl(max_rx_queue_size) - 1); + tx_queue_size = clamp_val(tx_queue_size, ENA_MIN_RING_SIZE, max_tx_queue_size); rx_queue_size = clamp_val(rx_queue_size, ENA_MIN_RING_SIZE,