aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2015-05-05 19:39:13 -0400
committerDavid S. Miller <davem@davemloft.net>2015-05-05 19:39:13 -0400
commitbc321ed2db8ee03b2f2ba809286d3bf4eef1e5e0 (patch)
tree525962c2f147a22285a41dcc9edaeb6fe63398e4
parent7aab5159fa0100ee3f80d1b0f55cd7e9b5823270 (diff)
parent2d3c739739e64619f4846746a06ff0a6adf8a155 (diff)
Merge branch 'mlx4'
Or Gerlitz says: ==================== mlx4 fixes for 4.1-rc2 Eran's fix is for a small off-by-one introduces on 4.1-rc1. Yisahi fixes an issue with comes into play only on VMs with many (> 256) vCPUs. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/en_port.c2
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/resource_tracker.c14
2 files changed, 8 insertions, 8 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_port.c b/drivers/net/ethernet/mellanox/mlx4/en_port.c
index 54f0e5ab2e55..0a56f010c846 100644
--- a/drivers/net/ethernet/mellanox/mlx4/en_port.c
+++ b/drivers/net/ethernet/mellanox/mlx4/en_port.c
@@ -139,7 +139,7 @@ static unsigned long en_stats_adder(__be64 *start, __be64 *next, int num)
139 int i; 139 int i;
140 int offset = next - start; 140 int offset = next - start;
141 141
142 for (i = 0; i <= num; i++) { 142 for (i = 0; i < num; i++) {
143 ret += be64_to_cpu(*curr); 143 ret += be64_to_cpu(*curr);
144 curr += offset; 144 curr += offset;
145 } 145 }
diff --git a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
index c7f28bf4b8e2..92fce1b98558 100644
--- a/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
+++ b/drivers/net/ethernet/mellanox/mlx4/resource_tracker.c
@@ -2845,7 +2845,7 @@ int mlx4_SW2HW_EQ_wrapper(struct mlx4_dev *dev, int slave,
2845{ 2845{
2846 int err; 2846 int err;
2847 int eqn = vhcr->in_modifier; 2847 int eqn = vhcr->in_modifier;
2848 int res_id = (slave << 8) | eqn; 2848 int res_id = (slave << 10) | eqn;
2849 struct mlx4_eq_context *eqc = inbox->buf; 2849 struct mlx4_eq_context *eqc = inbox->buf;
2850 int mtt_base = eq_get_mtt_addr(eqc) / dev->caps.mtt_entry_sz; 2850 int mtt_base = eq_get_mtt_addr(eqc) / dev->caps.mtt_entry_sz;
2851 int mtt_size = eq_get_mtt_size(eqc); 2851 int mtt_size = eq_get_mtt_size(eqc);
@@ -3051,7 +3051,7 @@ int mlx4_HW2SW_EQ_wrapper(struct mlx4_dev *dev, int slave,
3051 struct mlx4_cmd_info *cmd) 3051 struct mlx4_cmd_info *cmd)
3052{ 3052{
3053 int eqn = vhcr->in_modifier; 3053 int eqn = vhcr->in_modifier;
3054 int res_id = eqn | (slave << 8); 3054 int res_id = eqn | (slave << 10);
3055 struct res_eq *eq; 3055 struct res_eq *eq;
3056 int err; 3056 int err;
3057 3057
@@ -3108,7 +3108,7 @@ int mlx4_GEN_EQE(struct mlx4_dev *dev, int slave, struct mlx4_eqe *eqe)
3108 return 0; 3108 return 0;
3109 3109
3110 mutex_lock(&priv->mfunc.master.gen_eqe_mutex[slave]); 3110 mutex_lock(&priv->mfunc.master.gen_eqe_mutex[slave]);
3111 res_id = (slave << 8) | event_eq->eqn; 3111 res_id = (slave << 10) | event_eq->eqn;
3112 err = get_res(dev, slave, res_id, RES_EQ, &req); 3112 err = get_res(dev, slave, res_id, RES_EQ, &req);
3113 if (err) 3113 if (err)
3114 goto unlock; 3114 goto unlock;
@@ -3131,7 +3131,7 @@ int mlx4_GEN_EQE(struct mlx4_dev *dev, int slave, struct mlx4_eqe *eqe)
3131 3131
3132 memcpy(mailbox->buf, (u8 *) eqe, 28); 3132 memcpy(mailbox->buf, (u8 *) eqe, 28);
3133 3133
3134 in_modifier = (slave & 0xff) | ((event_eq->eqn & 0xff) << 16); 3134 in_modifier = (slave & 0xff) | ((event_eq->eqn & 0x3ff) << 16);
3135 3135
3136 err = mlx4_cmd(dev, mailbox->dma, in_modifier, 0, 3136 err = mlx4_cmd(dev, mailbox->dma, in_modifier, 0,
3137 MLX4_CMD_GEN_EQE, MLX4_CMD_TIME_CLASS_B, 3137 MLX4_CMD_GEN_EQE, MLX4_CMD_TIME_CLASS_B,
@@ -3157,7 +3157,7 @@ int mlx4_QUERY_EQ_wrapper(struct mlx4_dev *dev, int slave,
3157 struct mlx4_cmd_info *cmd) 3157 struct mlx4_cmd_info *cmd)
3158{ 3158{
3159 int eqn = vhcr->in_modifier; 3159 int eqn = vhcr->in_modifier;
3160 int res_id = eqn | (slave << 8); 3160 int res_id = eqn | (slave << 10);
3161 struct res_eq *eq; 3161 struct res_eq *eq;
3162 int err; 3162 int err;
3163 3163
@@ -4714,13 +4714,13 @@ static void rem_slave_eqs(struct mlx4_dev *dev, int slave)
4714 break; 4714 break;
4715 4715
4716 case RES_EQ_HW: 4716 case RES_EQ_HW:
4717 err = mlx4_cmd(dev, slave, eqn & 0xff, 4717 err = mlx4_cmd(dev, slave, eqn & 0x3ff,
4718 1, MLX4_CMD_HW2SW_EQ, 4718 1, MLX4_CMD_HW2SW_EQ,
4719 MLX4_CMD_TIME_CLASS_A, 4719 MLX4_CMD_TIME_CLASS_A,
4720 MLX4_CMD_NATIVE); 4720 MLX4_CMD_NATIVE);
4721 if (err) 4721 if (err)
4722 mlx4_dbg(dev, "rem_slave_eqs: failed to move slave %d eqs %d to SW ownership\n", 4722 mlx4_dbg(dev, "rem_slave_eqs: failed to move slave %d eqs %d to SW ownership\n",
4723 slave, eqn); 4723 slave, eqn & 0x3ff);
4724 atomic_dec(&eq->mtt->ref_count); 4724 atomic_dec(&eq->mtt->ref_count);
4725 state = RES_EQ_RESERVED; 4725 state = RES_EQ_RESERVED;
4726 break; 4726 break;