[PATCH rdma-next v1 0/7] RoCE LAG/Bonding GID table fixes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



From: Leon Romanovsky <leonro@xxxxxxxxxxxx>

Changelog v0->v1:
 * Don't rely on explicit pointer casting from void to required by
   functions where it is supplied - Patch 3 and 5.

----------------------------------------------------------------------------
>From Parav,

Currently RoCE LAG/Bonding has following issues.

1. When NETDEV_CHANGEUPPER occurs, netdevice_event_changeupper() attempts to
delete default GID entries of the upper device, but they are actually
added based on lower netdev, so bonding_default_del_cmd() fails to
delete such entries.

2. Due to that when master bond device is fully setup, its default GID
entries cannot be added because old entries exist. This is incorrect and
confusing; when using bonding/lag mode, always add the default GID entries
for the master bond device. So implement a filter, callback function to detect
the master-slave relationship in bonding mode and delete the lower netdev's
default GIDs and add master bond device's default GIDs.

3. When FAILOVER event occurs, it cannot delete the master bond device's
default GIDs they are of lower netdevice during NETDEV_UP event handling.
So always add default GIDs of master bond netdevice if bonding is used
for rdma device's netdevice.

4. When MAC address is changed, it only updates the default GID entries.
IP based GIDs are untouched, but it is incorrect. Some HCAs such as mlx5
GIDs contains the MAC address as well at HCA hardware level. Therefore
update (delete/add) IP based GIDs as well.

Thanks

Parav Pandit (7):
  IB/core: Add comment for change upper netevent handling
  IB/core: Avoid confusing del_netdev_default_ips
  IB/core: Delete lower netdevice default GID entries in bonding
    scenario
  IB/core: Consider adding default GIDs of bond device
  IB/core: Add default GIDs of the bond master netdev
  IB/core: Update GID entries for netdevice whose mac address changes
  IB/core: Change filter function return type from int to bool

 drivers/infiniband/core/core_priv.h     |   4 +-
 drivers/infiniband/core/roce_gid_mgmt.c | 304 +++++++++++++++++++++++---------
 2 files changed, 223 insertions(+), 85 deletions(-)

--
2.14.4




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux