aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c')
-rw-r--r--sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c b/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c
index 0dcca1077a60..28401048a427 100644
--- a/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c
+++ b/sys/dev/mlx5/mlx5_en/mlx5_en_ethtool.c
@@ -1124,16 +1124,8 @@ mlx5e_ethtool_handler(SYSCTL_HANDLER_ARGS)
/* import HW LRO mode */
if (priv->params_ethtool.hw_lro != 0 &&
MLX5_CAP_ETH(priv->mdev, lro_cap)) {
+ priv->params.hw_lro_en = true;
priv->params_ethtool.hw_lro = 1;
- /* check if feature should actually be enabled */
- if (if_getcapenable(priv->ifp) & IFCAP_LRO) {
- priv->params.hw_lro_en = true;
- } else {
- priv->params.hw_lro_en = false;
-
- mlx5_en_warn(priv->ifp, "To enable HW LRO "
- "please also enable LRO via ifconfig(8).\n");
- }
} else {
/* return an error if HW does not support this feature */
if (priv->params_ethtool.hw_lro != 0)
@@ -1141,7 +1133,13 @@ mlx5e_ethtool_handler(SYSCTL_HANDLER_ARGS)
priv->params.hw_lro_en = false;
priv->params_ethtool.hw_lro = 0;
}
- /* restart network interface, if any */
+
+ error = mlx5e_hw_lro_update_tirs(priv);
+
+ /*
+ * Restart network interface, if any. This
+ * re-populates rx wqes with proper segment sizes.
+ */
if (was_opened)
mlx5e_open_locked(priv->ifp);
break;
@@ -1479,12 +1477,6 @@ mlx5e_create_ethtool(struct mlx5e_priv *priv)
mlx5e_params_desc[2 * x], CTLTYPE_U64 | CTLFLAG_RD |
CTLFLAG_MPSAFE, priv, x, &mlx5e_ethtool_handler, "QU",
mlx5e_params_desc[2 * x + 1]);
- } else if (strcmp(mlx5e_params_desc[2 * x], "hw_lro") == 0) {
- /* read-only, but tunable parameters */
- SYSCTL_ADD_PROC(&priv->sysctl_ctx, SYSCTL_CHILDREN(node), OID_AUTO,
- mlx5e_params_desc[2 * x], CTLTYPE_U64 | CTLFLAG_RDTUN |
- CTLFLAG_MPSAFE, priv, x, &mlx5e_ethtool_handler, "QU",
- mlx5e_params_desc[2 * x + 1]);
} else {
/*
* NOTE: In FreeBSD-11 and newer the