mirror of https://gitee.com/openkylin/linux.git
Merge branch 'mlx'
Or Gerlitz says: ==================== Mellanox driver update to 4.3-rc4 Small set of fixes for net, which includes Carol's patches, a fix from Achiad to have the right behaviour for mlx5 Eth devices w.r.t VLANs in promiscuous mode, a good-bye patch from Ido who left Mellanox and the 1st patch from Jiri to our NIC drivers (I love one-liners)... ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
ca7beb1fa7
|
@ -6778,7 +6778,6 @@ F: drivers/scsi/megaraid/
|
||||||
|
|
||||||
MELLANOX ETHERNET DRIVER (mlx4_en)
|
MELLANOX ETHERNET DRIVER (mlx4_en)
|
||||||
M: Amir Vadai <amirv@mellanox.com>
|
M: Amir Vadai <amirv@mellanox.com>
|
||||||
M: Ido Shamay <idos@mellanox.com>
|
|
||||||
L: netdev@vger.kernel.org
|
L: netdev@vger.kernel.org
|
||||||
S: Supported
|
S: Supported
|
||||||
W: http://www.mellanox.com
|
W: http://www.mellanox.com
|
||||||
|
|
|
@ -1364,6 +1364,10 @@ int mlx4_test_interrupts(struct mlx4_dev *dev)
|
||||||
* and performing a NOP command
|
* and performing a NOP command
|
||||||
*/
|
*/
|
||||||
for(i = 0; !err && (i < dev->caps.num_comp_vectors); ++i) {
|
for(i = 0; !err && (i < dev->caps.num_comp_vectors); ++i) {
|
||||||
|
/* Make sure request_irq was called */
|
||||||
|
if (!priv->eq_table.eq[i].have_irq)
|
||||||
|
continue;
|
||||||
|
|
||||||
/* Temporary use polling for command completions */
|
/* Temporary use polling for command completions */
|
||||||
mlx4_cmd_use_polling(dev);
|
mlx4_cmd_use_polling(dev);
|
||||||
|
|
||||||
|
|
|
@ -598,6 +598,8 @@ void mlx5e_enable_vlan_filter(struct mlx5e_priv *priv)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
priv->vlan.filter_disabled = false;
|
priv->vlan.filter_disabled = false;
|
||||||
|
if (priv->netdev->flags & IFF_PROMISC)
|
||||||
|
return;
|
||||||
mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, 0);
|
mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -607,6 +609,8 @@ void mlx5e_disable_vlan_filter(struct mlx5e_priv *priv)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
priv->vlan.filter_disabled = true;
|
priv->vlan.filter_disabled = true;
|
||||||
|
if (priv->netdev->flags & IFF_PROMISC)
|
||||||
|
return;
|
||||||
mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, 0);
|
mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -717,8 +721,12 @@ void mlx5e_set_rx_mode_work(struct work_struct *work)
|
||||||
bool enable_broadcast = !ea->broadcast_enabled && broadcast_enabled;
|
bool enable_broadcast = !ea->broadcast_enabled && broadcast_enabled;
|
||||||
bool disable_broadcast = ea->broadcast_enabled && !broadcast_enabled;
|
bool disable_broadcast = ea->broadcast_enabled && !broadcast_enabled;
|
||||||
|
|
||||||
if (enable_promisc)
|
if (enable_promisc) {
|
||||||
mlx5e_add_eth_addr_rule(priv, &ea->promisc, MLX5E_PROMISC);
|
mlx5e_add_eth_addr_rule(priv, &ea->promisc, MLX5E_PROMISC);
|
||||||
|
if (!priv->vlan.filter_disabled)
|
||||||
|
mlx5e_add_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID,
|
||||||
|
0);
|
||||||
|
}
|
||||||
if (enable_allmulti)
|
if (enable_allmulti)
|
||||||
mlx5e_add_eth_addr_rule(priv, &ea->allmulti, MLX5E_ALLMULTI);
|
mlx5e_add_eth_addr_rule(priv, &ea->allmulti, MLX5E_ALLMULTI);
|
||||||
if (enable_broadcast)
|
if (enable_broadcast)
|
||||||
|
@ -730,8 +738,12 @@ void mlx5e_set_rx_mode_work(struct work_struct *work)
|
||||||
mlx5e_del_eth_addr_from_flow_table(priv, &ea->broadcast);
|
mlx5e_del_eth_addr_from_flow_table(priv, &ea->broadcast);
|
||||||
if (disable_allmulti)
|
if (disable_allmulti)
|
||||||
mlx5e_del_eth_addr_from_flow_table(priv, &ea->allmulti);
|
mlx5e_del_eth_addr_from_flow_table(priv, &ea->allmulti);
|
||||||
if (disable_promisc)
|
if (disable_promisc) {
|
||||||
|
if (!priv->vlan.filter_disabled)
|
||||||
|
mlx5e_del_vlan_rule(priv, MLX5E_VLAN_RULE_TYPE_ANY_VID,
|
||||||
|
0);
|
||||||
mlx5e_del_eth_addr_from_flow_table(priv, &ea->promisc);
|
mlx5e_del_eth_addr_from_flow_table(priv, &ea->promisc);
|
||||||
|
}
|
||||||
|
|
||||||
ea->promisc_enabled = promisc_enabled;
|
ea->promisc_enabled = promisc_enabled;
|
||||||
ea->allmulti_enabled = allmulti_enabled;
|
ea->allmulti_enabled = allmulti_enabled;
|
||||||
|
|
|
@ -311,7 +311,7 @@ static int mlx5_query_port_pvlc(struct mlx5_core_dev *dev, u32 *pvlc,
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
memset(in, 0, sizeof(in));
|
memset(in, 0, sizeof(in));
|
||||||
MLX5_SET(ptys_reg, in, local_port, local_port);
|
MLX5_SET(pvlc_reg, in, local_port, local_port);
|
||||||
|
|
||||||
err = mlx5_core_access_reg(dev, in, sizeof(in), pvlc,
|
err = mlx5_core_access_reg(dev, in, sizeof(in), pvlc,
|
||||||
pvlc_size, MLX5_REG_PVLC, 0, 0);
|
pvlc_size, MLX5_REG_PVLC, 0, 0);
|
||||||
|
|
Loading…
Reference in New Issue