aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2016-09-19 22:10:25 -0400
committerDavid S. Miller <davem@davemloft.net>2016-09-19 22:10:25 -0400
commit7675bb2b176ea05bf4904223d760d1889f819714 (patch)
treec2cd546376bf110d9b1dc28021c9f45f3308faa7
parent7ac327318e09a53e3df431dfd3f664dac7aba4df (diff)
parent6c419ba8e2580ab17c164db6e918e163d3537ec1 (diff)
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 37dd348 "bna: fix crash in bnad_get_strings()" ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/eswitch.c1
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c20
-rw-r--r--drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c4
3 files changed, 17 insertions, 8 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
index 8b78f156214e..b247949df135 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
@@ -1554,6 +1554,7 @@ int mlx5_eswitch_enable_sriov(struct mlx5_eswitch *esw, int nvfs, int mode)
1554 1554
1555abort: 1555abort:
1556 esw_enable_vport(esw, 0, UC_ADDR_CHANGE); 1556 esw_enable_vport(esw, 0, UC_ADDR_CHANGE);
1557 esw->mode = SRIOV_NONE;
1557 return err; 1558 return err;
1558} 1559}
1559 1560
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
index 3dc83a9459a4..7de40e6b0c25 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c
@@ -446,7 +446,7 @@ out:
446 446
447static int esw_offloads_start(struct mlx5_eswitch *esw) 447static int esw_offloads_start(struct mlx5_eswitch *esw)
448{ 448{
449 int err, num_vfs = esw->dev->priv.sriov.num_vfs; 449 int err, err1, num_vfs = esw->dev->priv.sriov.num_vfs;
450 450
451 if (esw->mode != SRIOV_LEGACY) { 451 if (esw->mode != SRIOV_LEGACY) {
452 esw_warn(esw->dev, "Can't set offloads mode, SRIOV legacy not enabled\n"); 452 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)
455 455
456 mlx5_eswitch_disable_sriov(esw); 456 mlx5_eswitch_disable_sriov(esw);
457 err = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_OFFLOADS); 457 err = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_OFFLOADS);
458 if (err) 458 if (err) {
459 esw_warn(esw->dev, "Failed set eswitch to offloads, err %d\n", err); 459 esw_warn(esw->dev, "Failed setting eswitch to offloads, err %d\n", err);
460 err1 = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_LEGACY);
461 if (err1)
462 esw_warn(esw->dev, "Failed setting eswitch back to legacy, err %d\n", err);
463 }
460 return err; 464 return err;
461} 465}
462 466
@@ -508,12 +512,16 @@ create_ft_err:
508 512
509static int esw_offloads_stop(struct mlx5_eswitch *esw) 513static int esw_offloads_stop(struct mlx5_eswitch *esw)
510{ 514{
511 int err, num_vfs = esw->dev->priv.sriov.num_vfs; 515 int err, err1, num_vfs = esw->dev->priv.sriov.num_vfs;
512 516
513 mlx5_eswitch_disable_sriov(esw); 517 mlx5_eswitch_disable_sriov(esw);
514 err = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_LEGACY); 518 err = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_LEGACY);
515 if (err) 519 if (err) {
516 esw_warn(esw->dev, "Failed set eswitch legacy mode. err %d\n", err); 520 esw_warn(esw->dev, "Failed setting eswitch to legacy, err %d\n", err);
521 err1 = mlx5_eswitch_enable_sriov(esw, num_vfs, SRIOV_OFFLOADS);
522 if (err1)
523 esw_warn(esw->dev, "Failed setting eswitch back to offloads, err %d\n", err);
524 }
517 525
518 return err; 526 return err;
519} 527}
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
index 9134010e2921..287ade151ec8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_cmd.c
@@ -425,11 +425,11 @@ struct mlx5_cmd_fc_bulk *
425mlx5_cmd_fc_bulk_alloc(struct mlx5_core_dev *dev, u16 id, int num) 425mlx5_cmd_fc_bulk_alloc(struct mlx5_core_dev *dev, u16 id, int num)
426{ 426{
427 struct mlx5_cmd_fc_bulk *b; 427 struct mlx5_cmd_fc_bulk *b;
428 int outlen = sizeof(*b) + 428 int outlen =
429 MLX5_ST_SZ_BYTES(query_flow_counter_out) + 429 MLX5_ST_SZ_BYTES(query_flow_counter_out) +
430 MLX5_ST_SZ_BYTES(traffic_counter) * num; 430 MLX5_ST_SZ_BYTES(traffic_counter) * num;
431 431
432 b = kzalloc(outlen, GFP_KERNEL); 432 b = kzalloc(sizeof(*b) + outlen, GFP_KERNEL);
433 if (!b) 433 if (!b)
434 return NULL; 434 return NULL;
435 435