Subject: Re: [PATCH 00/10] Add HA and LAG support to mlx4 RoCE and SRIOV services

From: Or Gerlitz <[email-masked]>
Date: Tue, 3 Feb 2015 16:59:19 +0200

On 2/3/2015 4:48 PM, Or Gerlitz wrote:
> Hi Dave,
>
> This series takes advanges of bonding mlx4 Ethernet devices to support
> a model of High-Availability and Link Aggregation for more environments.

+Jay and Jiri, sorry for not adding you guys, guess you are subscribed...

>
> The mlx4 driver reacts on netdev events generated by bonding when
> slave state changes happen by programming a HW V2P (Virt-to-Phys)
> port table. Bonding was extended to expose these state changes
> through netdev events.
>
> When an mlx4 interface such as the mlx4 IB/RoCE driver is subject to
> this policy, QPs are created over virtual ports which are mapped
> to one of the two physical ports. When a failure happens, the
> re-programming of the V2P table allows traffic to keep flowing.
>
> The mlx4 Ethernet driver interfaces are not subject to this
> policy and act as usual.
>
> A 2nd use-case for this model would be to add HA and Link Aggregation
> support to single ported mlx4 Ethernet VFs. In this case, the PF Ethernet
> intrfaces are bonded, all the VFs see single port devices (which is
> supported already today), and VF QPs are subject to V2P.
>
> Moni and Or.
>
> Moni Shoua (10):
>    net/core: Add event for a change in slave state
>    net/bonding: Move slave state changes to a helper function
>    net/bonding: Notify state change on slaves
>    net/mlx4_core: Port aggregation low level interface
>    net/mlx4_core: Port aggregation upper layer interface
>    net/mlx4_en: Port aggregation configuration
>    IB/mlx4: Reuse mlx4_mac_to_u64()
>    IB/mlx4: Add port aggregation support
>    IB/mlx4: Create mirror flows in port aggregation mode
>    IB/mlx4: Load balance ports in port aggregation mode
>
>   drivers/infiniband/hw/mlx4/ah.c                    |    1 +
>   drivers/infiniband/hw/mlx4/main.c                  |  161 ++++++++++++++++--
>   drivers/infiniband/hw/mlx4/mlx4_ib.h               |   17 ++-
>   drivers/infiniband/hw/mlx4/qp.c                    |   31 +++--
>   drivers/net/bonding/bond_main.c                    |  106 +++++++++---
>   drivers/net/ethernet/mellanox/mlx4/cmd.c           |    9 +
>   drivers/net/ethernet/mellanox/mlx4/en_main.c       |    8 +
>   drivers/net/ethernet/mellanox/mlx4/en_netdev.c     |  176 ++++++++++++++++++++
>   drivers/net/ethernet/mellanox/mlx4/en_resources.c  |    8 +-
>   drivers/net/ethernet/mellanox/mlx4/fw.c            |   56 ++++++-
>   drivers/net/ethernet/mellanox/mlx4/intf.c          |   54 ++++++
>   drivers/net/ethernet/mellanox/mlx4/main.c          |   89 ++++++++++
>   drivers/net/ethernet/mellanox/mlx4/mlx4.h          |    3 +
>   drivers/net/ethernet/mellanox/mlx4/mlx4_en.h       |    5 +
>   drivers/net/ethernet/mellanox/mlx4/qp.c            |    2 +
>   .../net/ethernet/mellanox/mlx4/resource_tracker.c  |    3 +
>   include/linux/mlx4/cmd.h                           |    7 +
>   include/linux/mlx4/device.h                        |   11 +-
>   include/linux/mlx4/driver.h                        |   19 ++
>   include/linux/mlx4/qp.h                            |    1 +
>   include/linux/netdevice.h                          |   15 ++
>   include/net/bonding.h                              |   17 ++
>   net/core/dev.c                                     |   20 +++
>   net/core/rtnetlink.c                               |    1 +
>   24 files changed, 756 insertions(+), 64 deletions(-)
>