From: Saeed Mahameed <saeed@kernel•org>
To: "David S. Miller" <davem@davemloft•net>,
Jakub Kicinski <kuba@kernel•org>, Paolo Abeni <pabeni@redhat•com>,
Eric Dumazet <edumazet@google•com>
Cc: Saeed Mahameed <saeedm@nvidia•com>,
netdev@vger•kernel.org, Tariq Toukan <tariqt@nvidia•com>,
Gal Pressman <gal@nvidia•com>,
Leon Romanovsky <leonro@nvidia•com>,
Dragos Tatulea <dtatulea@nvidia•com>
Subject: [net-next 11/11] net/mlx5e: Support ethtool tcp-data-split settings
Date: Thu, 16 Jan 2025 13:55:29 -0800 [thread overview]
Message-ID: <20250116215530.158886-12-saeed@kernel.org> (raw)
In-Reply-To: <20250116215530.158886-1-saeed@kernel.org>
From: Saeed Mahameed <saeedm@nvidia•com>
Try enabling HW GRO when requested.
Signed-off-by: Saeed Mahameed <saeedm@nvidia•com>
Reviewed-by: Dragos Tatulea <dtatulea@nvidia•com>
Reviewed-by: Tariq Toukan <tariqt@nvidia•com>
---
.../ethernet/mellanox/mlx5/core/en_ethtool.c | 49 +++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
index cae39198b4db..ee188e033e99 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_ethtool.c
@@ -349,6 +349,14 @@ void mlx5e_ethtool_get_ringparam(struct mlx5e_priv *priv,
(priv->channels.params.packet_merge.type == MLX5E_PACKET_MERGE_SHAMPO) ?
ETHTOOL_TCP_DATA_SPLIT_ENABLED :
ETHTOOL_TCP_DATA_SPLIT_DISABLED;
+
+ /* if HW GRO is not enabled due to external limitations but is wanted,
+ * report HDS state as unknown so it won't get truned off explicitly.
+ */
+ if (kernel_param->tcp_data_split == ETHTOOL_TCP_DATA_SPLIT_DISABLED &&
+ priv->netdev->wanted_features & NETIF_F_GRO_HW)
+ kernel_param->tcp_data_split = ETHTOOL_TCP_DATA_SPLIT_UNKNOWN;
+
}
static void mlx5e_get_ringparam(struct net_device *dev,
@@ -361,6 +369,43 @@ static void mlx5e_get_ringparam(struct net_device *dev,
mlx5e_ethtool_get_ringparam(priv, param, kernel_param);
}
+static bool mlx5e_ethtool_set_tcp_data_split(struct mlx5e_priv *priv,
+ u8 tcp_data_split)
+{
+ bool enable = (tcp_data_split == ETHTOOL_TCP_DATA_SPLIT_ENABLED);
+ struct net_device *dev = priv->netdev;
+
+ if (tcp_data_split == ETHTOOL_TCP_DATA_SPLIT_UNKNOWN)
+ return true;
+
+ if (enable && !(dev->hw_features & NETIF_F_GRO_HW)) {
+ netdev_warn(dev, "TCP-data-split is not supported when GRO HW is not supported\n");
+ return false; /* GRO HW is not supported */
+ }
+
+ if (enable && (dev->features & NETIF_F_GRO_HW)) {
+ /* Already enabled */
+ dev->wanted_features |= NETIF_F_GRO_HW;
+ return true;
+ }
+
+ if (!enable && !(dev->features & NETIF_F_GRO_HW)) {
+ /* Already disabled */
+ dev->wanted_features &= ~NETIF_F_GRO_HW;
+ return true;
+ }
+
+ /* Try enable or disable GRO HW */
+ if (enable)
+ dev->wanted_features |= NETIF_F_GRO_HW;
+ else
+ dev->wanted_features &= ~NETIF_F_GRO_HW;
+
+ netdev_change_features(dev);
+
+ return enable == !!(dev->features & NETIF_F_GRO_HW);
+}
+
int mlx5e_ethtool_set_ringparam(struct mlx5e_priv *priv,
struct ethtool_ringparam *param,
struct netlink_ext_ack *extack)
@@ -419,6 +464,9 @@ static int mlx5e_set_ringparam(struct net_device *dev,
{
struct mlx5e_priv *priv = netdev_priv(dev);
+ if (!mlx5e_ethtool_set_tcp_data_split(priv, kernel_param->tcp_data_split))
+ return -EINVAL;
+
return mlx5e_ethtool_set_ringparam(priv, param, extack);
}
@@ -2613,6 +2661,7 @@ const struct ethtool_ops mlx5e_ethtool_ops = {
ETHTOOL_COALESCE_MAX_FRAMES |
ETHTOOL_COALESCE_USE_ADAPTIVE |
ETHTOOL_COALESCE_USE_CQE,
+ .supported_ring_params = ETHTOOL_RING_USE_TCP_DATA_SPLIT,
.get_drvinfo = mlx5e_get_drvinfo,
.get_link = ethtool_op_get_link,
.get_link_ext_state = mlx5e_get_link_ext_state,
--
2.48.0
prev parent reply other threads:[~2025-01-16 21:56 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-16 21:55 [pull request][net-next 00/11] mlx5 updates 2025-01-16 Saeed Mahameed
2025-01-16 21:55 ` [net-next 01/11] net: Kconfig NET_DEVMEM selects GENERIC_ALLOCATOR Saeed Mahameed
2025-01-16 21:55 ` [net-next 02/11] net/mlx5e: SHAMPO: Reorganize mlx5_rq_shampo_alloc Saeed Mahameed
2025-01-16 21:55 ` [net-next 03/11] net/mlx5e: SHAMPO: Remove redundant params Saeed Mahameed
2025-01-16 21:55 ` [net-next 04/11] net/mlx5e: SHAMPO: Improve hw gro capability checking Saeed Mahameed
2025-01-16 21:55 ` [net-next 05/11] net/mlx5e: SHAMPO: Separate pool for headers Saeed Mahameed
2025-01-16 21:55 ` [net-next 06/11] net/mlx5e: SHAMPO: Headers page pool stats Saeed Mahameed
2025-01-16 21:55 ` [net-next 07/11] net/mlx5e: Convert over to netmem Saeed Mahameed
2025-02-05 20:14 ` Mina Almasry
2025-04-09 12:40 ` Dragos Tatulea
2025-01-16 21:55 ` [net-next 08/11] net/mlx5e: Handle iov backed netmems Saeed Mahameed
2025-01-16 21:55 ` [net-next 09/11] net/mlx5e: Add support for UNREADABLE netmem page pools Saeed Mahameed
2025-01-16 21:55 ` [net-next 10/11] net/mlx5e: Implement queue mgmt ops and single channel swap Saeed Mahameed
2025-01-16 23:21 ` Jakub Kicinski
2025-01-16 23:46 ` Saeed Mahameed
2025-01-16 23:54 ` Jakub Kicinski
2025-01-24 0:39 ` Stanislav Fomichev
2025-01-24 0:55 ` Jakub Kicinski
2025-01-24 3:11 ` Saeed Mahameed
2025-01-24 15:26 ` Jakub Kicinski
2025-01-24 19:34 ` Saeed Mahameed
2025-01-27 19:27 ` Jakub Kicinski
2025-01-16 21:55 ` Saeed Mahameed [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250116215530.158886-12-saeed@kernel.org \
--to=saeed@kernel$(echo .)org \
--cc=davem@davemloft$(echo .)net \
--cc=dtatulea@nvidia$(echo .)com \
--cc=edumazet@google$(echo .)com \
--cc=gal@nvidia$(echo .)com \
--cc=kuba@kernel$(echo .)org \
--cc=leonro@nvidia$(echo .)com \
--cc=netdev@vger$(echo .)kernel.org \
--cc=pabeni@redhat$(echo .)com \
--cc=saeedm@nvidia$(echo .)com \
--cc=tariqt@nvidia$(echo .)com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox