diff options
| author | Parav Pandit <parav@mellanox.com> | 2018-08-14 03:36:20 -0400 |
|---|---|---|
| committer | Jason Gunthorpe <jgg@mellanox.com> | 2018-08-15 15:33:20 -0400 |
| commit | d12e2eed2743856b4493aeda4f6ed1bb0fa47e57 (patch) | |
| tree | b58328c91ce9e6b34dcb8b5328c290efd9bc0bf2 | |
| parent | 464b79b45aede2859eb46ae91786f0266868602b (diff) | |
IB/core: Update GID entries for netdevice whose mac address changes
Update all GID table entries of the netdevice whose MAC address changed.
Signed-off-by: Parav Pandit <parav@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
| -rw-r--r-- | drivers/infiniband/core/roce_gid_mgmt.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/infiniband/core/roce_gid_mgmt.c b/drivers/infiniband/core/roce_gid_mgmt.c index 69f58e907810..0d27af5ad951 100644 --- a/drivers/infiniband/core/roce_gid_mgmt.c +++ b/drivers/infiniband/core/roce_gid_mgmt.c | |||
| @@ -291,7 +291,7 @@ static void update_gid_ip(enum gid_op_type gid_op, | |||
| 291 | static void bond_delete_netdev_default_gids(struct ib_device *ib_dev, | 291 | static void bond_delete_netdev_default_gids(struct ib_device *ib_dev, |
| 292 | u8 port, | 292 | u8 port, |
| 293 | struct net_device *rdma_ndev, | 293 | struct net_device *rdma_ndev, |
| 294 | void *event_ndev) | 294 | struct net_device *event_ndev) |
| 295 | { | 295 | { |
| 296 | struct net_device *real_dev = rdma_vlan_dev_real_dev(event_ndev); | 296 | struct net_device *real_dev = rdma_vlan_dev_real_dev(event_ndev); |
| 297 | unsigned long gid_type_mask; | 297 | unsigned long gid_type_mask; |
| @@ -727,9 +727,9 @@ static int netdevice_event(struct notifier_block *this, unsigned long event, | |||
| 727 | static const struct netdev_event_work_cmd bonding_default_del_cmd_join = { | 727 | static const struct netdev_event_work_cmd bonding_default_del_cmd_join = { |
| 728 | .cb = del_netdev_default_ips_join, .filter = is_eth_port_inactive_slave}; | 728 | .cb = del_netdev_default_ips_join, .filter = is_eth_port_inactive_slave}; |
| 729 | static const struct netdev_event_work_cmd | 729 | static const struct netdev_event_work_cmd |
| 730 | default_del_cmd = { | 730 | netdev_del_cmd = { |
| 731 | .cb = bond_delete_netdev_default_gids, | 731 | .cb = del_netdev_ips, |
| 732 | .filter = pass_all_filter | 732 | .filter = is_eth_port_of_netdev |
| 733 | }; | 733 | }; |
| 734 | static const struct netdev_event_work_cmd bonding_event_ips_del_cmd = { | 734 | static const struct netdev_event_work_cmd bonding_event_ips_del_cmd = { |
| 735 | .cb = del_netdev_upper_ips, .filter = upper_device_filter}; | 735 | .cb = del_netdev_upper_ips, .filter = upper_device_filter}; |
| @@ -755,8 +755,9 @@ static int netdevice_event(struct notifier_block *this, unsigned long event, | |||
| 755 | break; | 755 | break; |
| 756 | 756 | ||
| 757 | case NETDEV_CHANGEADDR: | 757 | case NETDEV_CHANGEADDR: |
| 758 | cmds[0] = default_del_cmd; | 758 | cmds[0] = netdev_del_cmd; |
| 759 | cmds[1] = add_cmd; | 759 | cmds[1] = add_default_gid_cmd; |
| 760 | cmds[2] = add_cmd; | ||
| 760 | break; | 761 | break; |
| 761 | 762 | ||
| 762 | case NETDEV_CHANGEUPPER: | 763 | case NETDEV_CHANGEUPPER: |
