Commit 24be0900 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'mlx5-misc-fixes-2025-08-25'

Mark Bloch says:

====================
mlx5 misc fixes 2025-08-25

This patchset provides misc bug fixes from the team to the mlx5 core
and Eth drivers.

v1: https://lore.kernel.org/20250824083944.523858-1-mbloch@nvidia.com
====================

Link: https://patch.msgid.link/20250825143435.598584-1-mbloch@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents aa125f08 aca0c31a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -160,7 +160,7 @@ static int mlx5_devlink_reload_fw_activate(struct devlink *devlink, struct netli
	if (err)
		return err;

	mlx5_unload_one_devl_locked(dev, true);
	mlx5_sync_reset_unload_flow(dev, true);
	err = mlx5_health_wait_pci_up(dev);
	if (err)
		NL_SET_ERR_MSG_MOD(extack, "FW activate aborted, PCI reads fail after reset");
+2 −1
Original line number Diff line number Diff line
@@ -575,7 +575,6 @@ int mlx5e_port_manual_buffer_config(struct mlx5e_priv *priv,
		if (err)
			return err;
	}
	priv->dcbx.xoff = xoff;

	/* Apply the settings */
	if (update_buffer) {
@@ -584,6 +583,8 @@ int mlx5e_port_manual_buffer_config(struct mlx5e_priv *priv,
			return err;
	}

	priv->dcbx.xoff = xoff;

	if (update_prio2buffer)
		err = mlx5e_port_set_priority2buffer(priv->mdev, prio2buffer);

+12 −0
Original line number Diff line number Diff line
@@ -66,11 +66,23 @@ struct mlx5e_port_buffer {
	struct mlx5e_bufferx_reg  buffer[MLX5E_MAX_NETWORK_BUFFER];
};

#ifdef CONFIG_MLX5_CORE_EN_DCB
int mlx5e_port_manual_buffer_config(struct mlx5e_priv *priv,
				    u32 change, unsigned int mtu,
				    struct ieee_pfc *pfc,
				    u32 *buffer_size,
				    u8 *prio2buffer);
#else
static inline int
mlx5e_port_manual_buffer_config(struct mlx5e_priv *priv,
				u32 change, unsigned int mtu,
				void *pfc,
				u32 *buffer_size,
				u8 *prio2buffer)
{
	return 0;
}
#endif

int mlx5e_port_query_buffer(struct mlx5e_priv *priv,
			    struct mlx5e_port_buffer *port_buffer);
+18 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@
#include "en.h"
#include "en/dim.h"
#include "en/txrx.h"
#include "en/port_buffer.h"
#include "en_tc.h"
#include "en_rep.h"
#include "en_accel/ipsec.h"
@@ -138,6 +139,8 @@ void mlx5e_update_carrier(struct mlx5e_priv *priv)
	if (up) {
		netdev_info(priv->netdev, "Link up\n");
		netif_carrier_on(priv->netdev);
		mlx5e_port_manual_buffer_config(priv, 0, priv->netdev->mtu,
						NULL, NULL, NULL);
	} else {
		netdev_info(priv->netdev, "Link down\n");
		netif_carrier_off(priv->netdev);
@@ -3040,9 +3043,11 @@ int mlx5e_set_dev_port_mtu(struct mlx5e_priv *priv)
	struct mlx5e_params *params = &priv->channels.params;
	struct net_device *netdev = priv->netdev;
	struct mlx5_core_dev *mdev = priv->mdev;
	u16 mtu;
	u16 mtu, prev_mtu;
	int err;

	mlx5e_query_mtu(mdev, params, &prev_mtu);

	err = mlx5e_set_mtu(mdev, params, params->sw_mtu);
	if (err)
		return err;
@@ -3052,6 +3057,18 @@ int mlx5e_set_dev_port_mtu(struct mlx5e_priv *priv)
		netdev_warn(netdev, "%s: VPort MTU %d is different than netdev mtu %d\n",
			    __func__, mtu, params->sw_mtu);

	if (mtu != prev_mtu && MLX5_BUFFER_SUPPORTED(mdev)) {
		err = mlx5e_port_manual_buffer_config(priv, 0, mtu,
						      NULL, NULL, NULL);
		if (err) {
			netdev_warn(netdev, "%s: Failed to set Xon/Xoff values with MTU %d (err %d), setting back to previous MTU %d\n",
				    __func__, mtu, err, prev_mtu);

			mlx5e_set_mtu(mdev, params, prev_mtu);
			return err;
		}
	}

	params->sw_mtu = mtu;
	return 0;
}
+7 −8
Original line number Diff line number Diff line
@@ -3734,6 +3734,13 @@ static int mlx5_fs_mode_validate(struct devlink *devlink, u32 id,
	char *value = val.vstr;
	u8 eswitch_mode;

	eswitch_mode = mlx5_eswitch_mode(dev);
	if (eswitch_mode == MLX5_ESWITCH_OFFLOADS) {
		NL_SET_ERR_MSG_FMT_MOD(extack,
				       "Changing fs mode is not supported when eswitch offloads enabled.");
		return -EOPNOTSUPP;
	}

	if (!strcmp(value, "dmfs"))
		return 0;

@@ -3759,14 +3766,6 @@ static int mlx5_fs_mode_validate(struct devlink *devlink, u32 id,
		return -EINVAL;
	}

	eswitch_mode = mlx5_eswitch_mode(dev);
	if (eswitch_mode == MLX5_ESWITCH_OFFLOADS) {
		NL_SET_ERR_MSG_FMT_MOD(extack,
				       "Moving to %s is not supported when eswitch offloads enabled.",
				       value);
		return -EOPNOTSUPP;
	}

	return 0;
}

Loading