From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AF0D7285073; Fri, 8 Aug 2025 14:53:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754664828; cv=none; b=WkiUEylcGQZ+149D4TBWqMvYOvebpoDLhh0pqseOTMc1hRrHnWNpQbwulVNdxzSTOtdq5wIxkLByGZ9AnKrjh282bZZqsx1zJ/juLbn+BhZR2mDjG1pQf/jvNysTd42irk7SgnOlHeLDSOC2lRULTRvXWtigq1JzSXMkAdlpuyg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754664828; c=relaxed/simple; bh=02ll7Hf0om4fnk8EYgvdpXG5XbOBZ69wid9PsjkjrbY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rNPXWcYPg1W+1ERbRb+s/DDqWQYF3fl3zUo8gMMfaU/IsWJHb6LSZRnRKPzlI8urUOQ7cSlJwmfKiglFMAVp9WwJEl8A6QApuK8IvGKsXrrIsb6OUVKdO0+/V/YVnZd3Jy2KiGvzIEpGoWM8o5xJ2q+LgItMkOQ6vBvstbfgiAM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ieTOHJ/i; arc=none smtp.client-ip=209.85.128.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ieTOHJ/i" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-458bdde7dedso15573635e9.0; Fri, 08 Aug 2025 07:53:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1754664825; x=1755269625; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9p9LD1mijTOfq8tIKHOFs1U4bUaxs+wWUrmPNl8XewU=; b=ieTOHJ/iFXHn2pPOwnTLtbd8UXHjM+DTnCZVeW6MNCUHJsWh36pJAyNSS5jMhUaSZc BikfVsO2iOBRphzI1ZtmvJ1ybZhZlVaLli/cS/DAxDzozOsaMASoLJ7zyCVyK1FnuyP4 +F0Rpm2QFjQyQcnCAj98e0tu7DJixKFZxWLwrDHHo/673lt8EhbCJsBWJVg2EWXO2IYX 4SiuAjGCO8z5LreCNUr1BwyMhqDWmdsNIdmA+swipWc74lQ9N0e4/DGt/8RThSHrb/Il Ot5ZltLT93qS53BNKPxmrXLNDQK76MhLa9bZMfeYT7oUf+UOdichfmoSD77WwUImQwyT bmIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1754664825; x=1755269625; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=9p9LD1mijTOfq8tIKHOFs1U4bUaxs+wWUrmPNl8XewU=; b=CtFCUzcXyqqJ4gnakylpdeZsoxo6i4CbpcIAiMJKKizmkVOL089l/hv+1gARsUvTWz 6Z4pSv7Vpab/yj17BlyzpNWedems4P0mUhROEHgxrpgHV1x+RqT003BohvgmYeUQuWv6 +9kfUZcA7TUsrHED6LtRHDhQ6ZbXLptUIcVXi5t8PAcVApobYhaN73E9BTxw/+/PGpkG if2kgukRWrhP7dHZFrbIjQFsON32ik5dszAuFuWj1Yz4ApDI++bMybXB/5wNwJgQZau9 t6wc6j5MxmvrHsdcF9Woc16YKEdWoPEWAM0JOddEmeu04dmEnAo1M5fcVhqdOXrLSHKB ZIcg== X-Forwarded-Encrypted: i=1; AJvYcCUVTi2aeaBbkQ/Zcs8AqwSkxvPxUoWGhlSYFvgyowH1YbgPJIun+Ml9wv895NTSP2TQy05wyS9Cn13KFM8=@vger.kernel.org, AJvYcCXA4C8tSq5j1E/yXr3umpW/QSW9m1SXnWeYE/EhmZy6keTiEhxqzWzaYp/pCGPWdGKdXfThG2WF@vger.kernel.org X-Gm-Message-State: AOJu0Yx9ezDaQCoig9cSFQ1aBpnb42z/SIGvLIQHOGKjXPWZoUduXroV 4mqohntJPGSMp6NBQZ5gFyHpQ7zBYzMfe8Gs23L8mDqgGAhqERTyDoJ/ X-Gm-Gg: ASbGncuN8AM47tSSk51nsXY7Drk3CvLmR4gw40wgWRdnLQeNtYHQsbvWHvEXZOUWC9g kQw7sT43Hvgq67EuRbi1LQe8PAbQzvtzMILsizkG4XxD9DNUjGkZKRSarHycVkjJNYC+Qo7y/lT +WW0k50ta4zCDYVulnJriJG4r43bbKeuRDvJqulZxwK3BmzlJ7kGOn+NXvp/7Z9kiJomHwLf1vM XHLRrdKvP5IzQPMX2VLZ+ARwOs5a/WWwc2Q+scaItheGfOfWHbvwVPNTvEHrR+yuDhJAcFAeiNx oPxlCYkJx5qvz/kvY4wcnshI8HjEIFmcGcUt3nshQKwF8y+WCeLGoJV1P2V0sAk/q2ow/BcvK4Q zglEUvw== X-Google-Smtp-Source: AGHT+IGlgOMI6ZnPBkKmy8QhyHf1W8wbiTfYGljRndSxueqmSFD8PGJ7zTSBX7PrhPt1WOVvaRBF9g== X-Received: by 2002:a05:600c:46c7:b0:456:1a41:f932 with SMTP id 5b1f17b1804b1-459f4f048d7mr28240155e9.22.1754664824793; Fri, 08 Aug 2025 07:53:44 -0700 (PDT) Received: from 127.com ([2620:10d:c092:600::1:a360]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-459e58400f5sm135106725e9.2.2025.08.08.07.53.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 08 Aug 2025 07:53:44 -0700 (PDT) From: Pavel Begunkov To: Jakub Kicinski , netdev@vger.kernel.org Cc: asml.silence@gmail.com, Eric Dumazet , Willem de Bruijn , Paolo Abeni , andrew+netdev@lunn.ch, horms@kernel.org, davem@davemloft.net, sdf@fomichev.me, almasrymina@google.com, dw@davidwei.uk, michael.chan@broadcom.com, dtatulea@nvidia.com, ap420073@gmail.com, linux-kernel@vger.kernel.org Subject: [RFC v2 09/24] eth: bnxt: support setting size of agg buffers via ethtool Date: Fri, 8 Aug 2025 15:54:32 +0100 Message-ID: <9915abc33cd70b8fc14f35ada2f77a282aa666ba.1754657711.git.asml.silence@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: netdev@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Jakub Kicinski bnxt seems to be able to aggregate data up to 32kB without any issue. The driver is already capable of doing this for systems with higher order pages. While for systems with 4k pages we historically preferred to stick to small buffers because they are easier to allocate, the zero-copy APIs remove the allocation problem. The ZC mem is pre-allocated and fixed size. Signed-off-by: Jakub Kicinski Signed-off-by: Pavel Begunkov --- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 3 ++- .../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index ac841d02d7ad..56aafae568f8 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -758,7 +758,8 @@ struct nqe_cn { #define BNXT_RX_PAGE_SHIFT PAGE_SHIFT #endif -#define BNXT_RX_PAGE_SIZE (1 << BNXT_RX_PAGE_SHIFT) +#define BNXT_MAX_RX_PAGE_SIZE (1 << 15) +#define BNXT_RX_PAGE_SIZE (1 << BNXT_RX_PAGE_SHIFT) #define BNXT_MAX_MTU 9500 diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c index 1b37612b1c01..2e130eeeabe5 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c @@ -835,6 +835,8 @@ static void bnxt_get_ringparam(struct net_device *dev, ering->rx_jumbo_pending = bp->rx_agg_ring_size; ering->tx_pending = bp->tx_ring_size; + kernel_ering->rx_buf_len_max = BNXT_MAX_RX_PAGE_SIZE; + kernel_ering->rx_buf_len = bp->rx_page_size; kernel_ering->hds_thresh_max = BNXT_HDS_THRESHOLD_MAX; } @@ -862,6 +864,21 @@ static int bnxt_set_ringparam(struct net_device *dev, return -EINVAL; } + if (!kernel_ering->rx_buf_len) /* Zero means restore default */ + kernel_ering->rx_buf_len = BNXT_RX_PAGE_SIZE; + + if (kernel_ering->rx_buf_len != bp->rx_page_size && + !(bp->flags & BNXT_FLAG_CHIP_P5_PLUS)) { + NL_SET_ERR_MSG_MOD(extack, "changing rx-buf-len not supported"); + return -EINVAL; + } + if (!is_power_of_2(kernel_ering->rx_buf_len) || + kernel_ering->rx_buf_len < BNXT_RX_PAGE_SIZE || + kernel_ering->rx_buf_len > BNXT_MAX_RX_PAGE_SIZE) { + NL_SET_ERR_MSG_MOD(extack, "rx-buf-len out of range, or not power of 2"); + return -ERANGE; + } + if (netif_running(dev)) bnxt_close_nic(bp, false, false); @@ -874,6 +891,7 @@ static int bnxt_set_ringparam(struct net_device *dev, bp->rx_ring_size = ering->rx_pending; bp->tx_ring_size = ering->tx_pending; + bp->rx_page_size = kernel_ering->rx_buf_len; bnxt_set_ring_params(bp); if (netif_running(dev)) @@ -5489,7 +5507,8 @@ const struct ethtool_ops bnxt_ethtool_ops = { ETHTOOL_COALESCE_STATS_BLOCK_USECS | ETHTOOL_COALESCE_USE_ADAPTIVE_RX | ETHTOOL_COALESCE_USE_CQE, - .supported_ring_params = ETHTOOL_RING_USE_TCP_DATA_SPLIT | + .supported_ring_params = ETHTOOL_RING_USE_RX_BUF_LEN | + ETHTOOL_RING_USE_TCP_DATA_SPLIT | ETHTOOL_RING_USE_HDS_THRS, .get_link_ksettings = bnxt_get_link_ksettings, .set_link_ksettings = bnxt_set_link_ksettings, -- 2.49.0