diff options
author | Or Gerlitz <ogerlitz@mellanox.com> | 2015-03-02 11:22:15 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-02 15:27:19 -0500 |
commit | f5956fafb00afab474c3886b6297f9b5e7aff722 (patch) | |
tree | 9ab0d31f313444d0ec99563705e4a78435557c78 | |
parent | 38674a49f33a9b3ce4eafb8bbd4b18744b3943f9 (diff) |
net/mlx4_core: Fix wrong mask and error flow for the update-qp command
The bit mask for currently supported driver features (MLX4_UPDATE_QP_SUPPORTED_ATTRS)
of the update-qp command was defined twice (using enum value and pre-processor
define directive) and wrong.
The return value of the call to mlx4_update_qp() from within the SRIOV
resource-tracker was wrongly voided down.
Fix both issues.
issue: none
Fixes: 09e05c3f78e9 ('net/mlx4: Set vlan stripping policy by the right command')
Fixes: ce8d9e0d6746 ('net/mlx4_core: Add UPDATE_QP SRIOV wrapper support')
Signed-off-by: Matan Barak <matanb@mellanox.com>
Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/qp.c | 1 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | 9 | ||||
-rw-r--r-- | include/linux/mlx4/qp.h | 2 |
3 files changed, 7 insertions, 5 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/qp.c b/drivers/net/ethernet/mellanox/mlx4/qp.c index 2bb8553bd905..eda29dbbfcd2 100644 --- a/drivers/net/ethernet/mellanox/mlx4/qp.c +++ b/drivers/net/ethernet/mellanox/mlx4/qp.c | |||
@@ -412,7 +412,6 @@ err_icm: | |||
412 | 412 | ||
413 | EXPORT_SYMBOL_GPL(mlx4_qp_alloc); | 413 | EXPORT_SYMBOL_GPL(mlx4_qp_alloc); |
414 | 414 | ||
415 | #define MLX4_UPDATE_QP_SUPPORTED_ATTRS MLX4_UPDATE_QP_SMAC | ||
416 | int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn, | 415 | int mlx4_update_qp(struct mlx4_dev *dev, u32 qpn, |
417 | enum mlx4_update_qp_attr attr, | 416 | enum mlx4_update_qp_attr attr, |
418 | struct mlx4_update_qp_params *params) | 417 | struct mlx4_update_qp_params *params) |
diff --git a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c index 486e3d26cd4a..d97ca88c55b5 100644 --- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c +++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c | |||
@@ -713,7 +713,7 @@ static int update_vport_qp_param(struct mlx4_dev *dev, | |||
713 | struct mlx4_vport_oper_state *vp_oper; | 713 | struct mlx4_vport_oper_state *vp_oper; |
714 | struct mlx4_priv *priv; | 714 | struct mlx4_priv *priv; |
715 | u32 qp_type; | 715 | u32 qp_type; |
716 | int port; | 716 | int port, err = 0; |
717 | 717 | ||
718 | port = (qpc->pri_path.sched_queue & 0x40) ? 2 : 1; | 718 | port = (qpc->pri_path.sched_queue & 0x40) ? 2 : 1; |
719 | priv = mlx4_priv(dev); | 719 | priv = mlx4_priv(dev); |
@@ -738,7 +738,9 @@ static int update_vport_qp_param(struct mlx4_dev *dev, | |||
738 | } else { | 738 | } else { |
739 | struct mlx4_update_qp_params params = {.flags = 0}; | 739 | struct mlx4_update_qp_params params = {.flags = 0}; |
740 | 740 | ||
741 | mlx4_update_qp(dev, qpn, MLX4_UPDATE_QP_VSD, ¶ms); | 741 | err = mlx4_update_qp(dev, qpn, MLX4_UPDATE_QP_VSD, ¶ms); |
742 | if (err) | ||
743 | goto out; | ||
742 | } | 744 | } |
743 | } | 745 | } |
744 | 746 | ||
@@ -773,7 +775,8 @@ static int update_vport_qp_param(struct mlx4_dev *dev, | |||
773 | qpc->pri_path.feup |= MLX4_FSM_FORCE_ETH_SRC_MAC; | 775 | qpc->pri_path.feup |= MLX4_FSM_FORCE_ETH_SRC_MAC; |
774 | qpc->pri_path.grh_mylmc = (0x80 & qpc->pri_path.grh_mylmc) + vp_oper->mac_idx; | 776 | qpc->pri_path.grh_mylmc = (0x80 & qpc->pri_path.grh_mylmc) + vp_oper->mac_idx; |
775 | } | 777 | } |
776 | return 0; | 778 | out: |
779 | return err; | ||
777 | } | 780 | } |
778 | 781 | ||
779 | static int mpt_mask(struct mlx4_dev *dev) | 782 | static int mpt_mask(struct mlx4_dev *dev) |
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h index 2bbc62aa818a..551f85456c11 100644 --- a/include/linux/mlx4/qp.h +++ b/include/linux/mlx4/qp.h | |||
@@ -427,7 +427,7 @@ struct mlx4_wqe_inline_seg { | |||
427 | 427 | ||
428 | enum mlx4_update_qp_attr { | 428 | enum mlx4_update_qp_attr { |
429 | MLX4_UPDATE_QP_SMAC = 1 << 0, | 429 | MLX4_UPDATE_QP_SMAC = 1 << 0, |
430 | MLX4_UPDATE_QP_VSD = 1 << 2, | 430 | MLX4_UPDATE_QP_VSD = 1 << 1, |
431 | MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 2) - 1 | 431 | MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 2) - 1 |
432 | }; | 432 | }; |
433 | 433 | ||