Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ca7beb1f authored by David S. Miller's avatar David S. Miller
Browse files

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: default avatarDavid S. Miller <davem@davemloft.net>
parents 85121d6e d5a52095
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -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
+4 −0
Original line number Diff line number Diff line
@@ -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);

+14 −2
Original line number Diff line number Diff line
@@ -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;
+1 −1
Original line number Diff line number Diff line
@@ -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);