summaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorParav Pandit <parav@mellanox.com>2018-08-14 10:36:20 +0300
committerJason Gunthorpe <jgg@mellanox.com>2018-08-15 13:33:20 -0600
commitd12e2eed2743856b4493aeda4f6ed1bb0fa47e57 (patch)
treeb58328c91ce9e6b34dcb8b5328c290efd9bc0bf2 /drivers/infiniband
parent464b79b45aede2859eb46ae91786f0266868602b (diff)
downloadlinux-d12e2eed2743856b4493aeda4f6ed1bb0fa47e57.tar.bz2
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>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/core/roce_gid_mgmt.c13
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,
static void bond_delete_netdev_default_gids(struct ib_device *ib_dev,
u8 port,
struct net_device *rdma_ndev,
- void *event_ndev)
+ struct net_device *event_ndev)
{
struct net_device *real_dev = rdma_vlan_dev_real_dev(event_ndev);
unsigned long gid_type_mask;
@@ -727,9 +727,9 @@ static int netdevice_event(struct notifier_block *this, unsigned long event,
static const struct netdev_event_work_cmd bonding_default_del_cmd_join = {
.cb = del_netdev_default_ips_join, .filter = is_eth_port_inactive_slave};
static const struct netdev_event_work_cmd
- default_del_cmd = {
- .cb = bond_delete_netdev_default_gids,
- .filter = pass_all_filter
+ netdev_del_cmd = {
+ .cb = del_netdev_ips,
+ .filter = is_eth_port_of_netdev
};
static const struct netdev_event_work_cmd bonding_event_ips_del_cmd = {
.cb = del_netdev_upper_ips, .filter = upper_device_filter};
@@ -755,8 +755,9 @@ static int netdevice_event(struct notifier_block *this, unsigned long event,
break;
case NETDEV_CHANGEADDR:
- cmds[0] = default_del_cmd;
- cmds[1] = add_cmd;
+ cmds[0] = netdev_del_cmd;
+ cmds[1] = add_default_gid_cmd;
+ cmds[2] = add_cmd;
break;
case NETDEV_CHANGEUPPER: