| From foo@baz Fri Jul 3 19:59:52 PDT 2015 |
| From: Or Gerlitz <ogerlitz@mellanox.com> |
| Date: Thu, 25 Jun 2015 11:29:44 +0300 |
| Subject: mlx4: Disable HA for SRIOV PF RoCE devices |
| |
| From: Or Gerlitz <ogerlitz@mellanox.com> |
| |
| [ Upstream commit 7254acffeeec3c0a75b9c5364c29a6eb00014930 ] |
| |
| When in HA mode, the driver exposes an IB (RoCE) device instance with only |
| one port. Under SRIOV, the existing implementation doesn't go well with |
| the PF RoCE driver's role of Special QPs Para-Virtualization, etc. |
| |
| As such, disable HA for the mlx4 PF RoCE device in SRIOV mode. |
| |
| Fixes: a57500903093 ('IB/mlx4: Add port aggregation support') |
| Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/mellanox/mlx4/intf.c | 8 +++++++- |
| 1 file changed, 7 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/net/ethernet/mellanox/mlx4/intf.c |
| +++ b/drivers/net/ethernet/mellanox/mlx4/intf.c |
| @@ -93,8 +93,14 @@ int mlx4_register_interface(struct mlx4_ |
| mutex_lock(&intf_mutex); |
| |
| list_add_tail(&intf->list, &intf_list); |
| - list_for_each_entry(priv, &dev_list, dev_list) |
| + list_for_each_entry(priv, &dev_list, dev_list) { |
| + if (mlx4_is_mfunc(&priv->dev) && (intf->flags & MLX4_INTFF_BONDING)) { |
| + mlx4_dbg(&priv->dev, |
| + "SRIOV, disabling HA mode for intf proto %d\n", intf->protocol); |
| + intf->flags &= ~MLX4_INTFF_BONDING; |
| + } |
| mlx4_add_device(intf, priv); |
| + } |
| |
| mutex_unlock(&intf_mutex); |
| |