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

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

Merge branch 'mlx5-fixes'



Or Gerlitz says:

====================
mlx5 fixes to 4.8-rc6

This series series has a fix from Roi to memory corruption bug in
the bulk flow counters code and two late and hopefully last fixes
from me to the new eswitch offloads code.

Series done over net commit 37dd3482 "bna: fix crash in bnad_get_strings()"
====================

Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parents 7ac32731 6c419ba8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1554,6 +1554,7 @@ int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs, int mode)

abort:
	esw_enable_vport(esw, 0, UC_ADDR_CHANGE);
	esw->mode = SRIOV_NONE;
	return err;
}

+14 −6
Original line number Diff line number Diff line
@@ -446,7 +446,7 @@ mlx5_eswitch_create_vport_rx_rule(struct mlx5_eswitch *esw, int vport, u32 tirn)

static int esw_offloads_start(struct mlx5_eswitch *esw)
{
	int err, num_vfs = esw->dev->priv.sriov.num_vfs;
	int err, err1, num_vfs = esw->dev->priv.sriov.num_vfs;

	if (esw->mode != SRIOV_LEGACY) {
		esw_warn(esw->dev, "Can't set offloads mode, SRIOV legacy not enabled\n");
@@ -455,8 +455,12 @@ static int esw_offloads_start(struct mlx5_eswitch *esw)

	mlx5_eswitch_disable_sriov(esw);
	err = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_OFFLOADS);
	if (err)
		esw_warn(esw->dev, "Failed set eswitch to offloads, err %d\n", err);
	if (err) {
		esw_warn(esw->dev, "Failed setting eswitch to offloads, err %d\n", err);
		err1 = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_LEGACY);
		if (err1)
			esw_warn(esw->dev, "Failed setting eswitch back to legacy, err %d\n", err);
	}
	return err;
}

@@ -508,12 +512,16 @@ int esw_offloads_init(struct mlx5_eswitch *esw, int nvports)

static int esw_offloads_stop(struct mlx5_eswitch *esw)
{
	int err, num_vfs = esw->dev->priv.sriov.num_vfs;
	int err, err1, num_vfs = esw->dev->priv.sriov.num_vfs;

	mlx5_eswitch_disable_sriov(esw);
	err = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_LEGACY);
	if (err)
		esw_warn(esw->dev, "Failed set eswitch legacy mode. err %d\n", err);
	if (err) {
		esw_warn(esw->dev, "Failed setting eswitch to legacy, err %d\n", err);
		err1 = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_OFFLOADS);
		if (err1)
			esw_warn(esw->dev, "Failed setting eswitch back to offloads, err %d\n", err);
	}

	return err;
}
+2 −2
Original line number Diff line number Diff line
@@ -425,11 +425,11 @@ struct mlx5_cmd_fc_bulk *
mlx5_cmd_fc_bulk_alloc(struct mlx5_core_dev *dev, u16 id, int num)
{
	struct mlx5_cmd_fc_bulk *b;
	int outlen = sizeof(*b) +
	int outlen =
		MLX5_ST_SZ_BYTES(query_flow_counter_out) +
		MLX5_ST_SZ_BYTES(traffic_counter) * num;

	b = kzalloc(outlen, GFP_KERNEL);
	b = kzalloc(sizeof(*b) + outlen, GFP_KERNEL);
	if (!b)
		return NULL;