Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit db803a46 authored by David S. Miller's avatar David S. Miller
Browse files

Merge branch 'mlx4-misc-fixes'



Tariq Toukan says:

====================
mlx4 misc fixes

This patchset contains misc bug fixes from the team
to the mlx4 Core and Eth drivers.

Patch 1 by Inbar fixes a wrong ethtool indication for Wake-on-LAN.
The other 3 patches by Jack add a missing capability description,
and fixes the off-by-1 misalignment for the following capabilities
descriptions.

Series generated against net commit:
cc75f851 samples/bpf: fix bpf tunnel cleanup
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 9075bd20 bff0c684
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -223,6 +223,7 @@ static void mlx4_en_get_wol(struct net_device *netdev,
			    struct ethtool_wolinfo *wol)
{
	struct mlx4_en_priv *priv = netdev_priv(netdev);
	struct mlx4_caps *caps = &priv->mdev->dev->caps;
	int err = 0;
	u64 config = 0;
	u64 mask;
@@ -235,24 +236,24 @@ static void mlx4_en_get_wol(struct net_device *netdev,
	mask = (priv->port == 1) ? MLX4_DEV_CAP_FLAG_WOL_PORT1 :
		MLX4_DEV_CAP_FLAG_WOL_PORT2;

	if (!(priv->mdev->dev->caps.flags & mask)) {
	if (!(caps->flags & mask)) {
		wol->supported = 0;
		wol->wolopts = 0;
		return;
	}

	if (caps->wol_port[priv->port])
		wol->supported = WAKE_MAGIC;
	else
		wol->supported = 0;

	err = mlx4_wol_read(priv->mdev->dev, &config, priv->port);
	if (err) {
		en_err(priv, "Failed to get WoL information\n");
		return;
	}

	if (config & MLX4_EN_WOL_MAGIC)
		wol->supported = WAKE_MAGIC;
	else
		wol->supported = 0;

	if (config & MLX4_EN_WOL_ENABLED)
	if ((config & MLX4_EN_WOL_ENABLED) && (config & MLX4_EN_WOL_MAGIC))
		wol->wolopts = WAKE_MAGIC;
	else
		wol->wolopts = 0;
+7 −2
Original line number Diff line number Diff line
@@ -159,8 +159,9 @@ static void dump_dev_cap_flags2(struct mlx4_dev *dev, u64 flags)
		[32] = "Loopback source checks support",
		[33] = "RoCEv2 support",
		[34] = "DMFS Sniffer support (UC & MC)",
		[35] = "QinQ VST mode support",
		[36] = "sl to vl mapping table change event support"
		[35] = "Diag counters per port",
		[36] = "QinQ VST mode support",
		[37] = "sl to vl mapping table change event support",
	};
	int i;

@@ -764,6 +765,7 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
#define QUERY_DEV_CAP_CQ_TS_SUPPORT_OFFSET	0x3e
#define QUERY_DEV_CAP_MAX_PKEY_OFFSET		0x3f
#define QUERY_DEV_CAP_EXT_FLAGS_OFFSET		0x40
#define QUERY_DEV_CAP_WOL_OFFSET		0x43
#define QUERY_DEV_CAP_FLAGS_OFFSET		0x44
#define QUERY_DEV_CAP_RSVD_UAR_OFFSET		0x48
#define QUERY_DEV_CAP_UAR_SZ_OFFSET		0x49
@@ -920,6 +922,9 @@ int mlx4_QUERY_DEV_CAP(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
	MLX4_GET(ext_flags, outbox, QUERY_DEV_CAP_EXT_FLAGS_OFFSET);
	MLX4_GET(flags, outbox, QUERY_DEV_CAP_FLAGS_OFFSET);
	dev_cap->flags = flags | (u64)ext_flags << 32;
	MLX4_GET(field, outbox, QUERY_DEV_CAP_WOL_OFFSET);
	dev_cap->wol_port[1] = !!(field & 0x20);
	dev_cap->wol_port[2] = !!(field & 0x40);
	MLX4_GET(field, outbox, QUERY_DEV_CAP_RSVD_UAR_OFFSET);
	dev_cap->reserved_uars = field >> 4;
	MLX4_GET(field, outbox, QUERY_DEV_CAP_UAR_SZ_OFFSET);
+1 −0
Original line number Diff line number Diff line
@@ -129,6 +129,7 @@ struct mlx4_dev_cap {
	u32 dmfs_high_rate_qpn_range;
	struct mlx4_rate_limit_caps rl_caps;
	struct mlx4_port_cap port_cap[MLX4_MAX_PORTS + 1];
	bool wol_port[MLX4_MAX_PORTS + 1];
};

struct mlx4_func_cap {
+2 −0
Original line number Diff line number Diff line
@@ -424,6 +424,8 @@ static int mlx4_dev_cap(struct mlx4_dev *dev, struct mlx4_dev_cap *dev_cap)
	dev->caps.stat_rate_support  = dev_cap->stat_rate_support;
	dev->caps.max_gso_sz	     = dev_cap->max_gso_sz;
	dev->caps.max_rss_tbl_sz     = dev_cap->max_rss_tbl_sz;
	dev->caps.wol_port[1]          = dev_cap->wol_port[1];
	dev->caps.wol_port[2]          = dev_cap->wol_port[2];

	/* Save uar page shift */
	if (!mlx4_is_slave(dev)) {
+1 −0
Original line number Diff line number Diff line
@@ -620,6 +620,7 @@ struct mlx4_caps {
	u32			dmfs_high_rate_qpn_base;
	u32			dmfs_high_rate_qpn_range;
	u32			vf_caps;
	bool			wol_port[MLX4_MAX_PORTS + 1];
	struct mlx4_rate_limit_caps rl_caps;
};