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)
|
||||
M: Amir Vadai <amirv@mellanox.com>
|
||||
M: Ido Shamay <idos@mellanox.com>
|
||||
L: netdev@vger.kernel.org
|
||||
S: Supported
|
||||
W: http://www.mellanox.com
|
||||
|
|
|
@ -1364,6 +1364,10 @@ int mlx4_test_interrupts(struct mlx4_dev *dev)
|
|||
* and performing a NOP command
|
||||
*/
|
||||
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 */
|
||||
mlx4_cmd_use_polling(dev);
|
||||
|
||||
|
|
|
@ -598,6 +598,8 @@ void mlx5e_enable_vlan_filter(struct mlx5e_priv *priv)
|
|||
return;
|
||||
|
||||
priv->vlan.filter_disabled = false;
|
||||
if (priv->netdev->flags & IFF_PROMISC)
|
||||
return;
|
||||
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;
|
||||
|
||||
priv->vlan.filter_disabled = true;
|
||||
if (priv->netdev->flags & IFF_PROMISC)
|
||||
return;
|
||||
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 disable_broadcast = ea->broadcast_enabled && !broadcast_enabled;
|
||||
|
||||
if (enable_promisc)
|
||||
if (enable_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)
|
||||
mlx5e_add_eth_addr_rule(priv, &ea->allmulti, MLX5E_ALLMULTI);
|
||||
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);
|
||||
if (disable_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);
|
||||
}
|
||||
|
||||
ea->promisc_enabled = promisc_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;
|
||||
|
||||
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,
|
||||
pvlc_size, MLX5_REG_PVLC, 0, 0);
|
||||
|
|
Loading…
Reference in New Issue