|
@@ -135,6 +135,7 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
|
|
|
struct net_device *event_netdev = ifa->ifa_dev->dev;
|
|
|
struct nes_device *nesdev;
|
|
|
struct net_device *netdev;
|
|
|
+ struct net_device *upper_dev;
|
|
|
struct nes_vnic *nesvnic;
|
|
|
unsigned int is_bonded;
|
|
|
|
|
@@ -145,8 +146,9 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
|
|
|
nesdev, nesdev->netdev[0]->name);
|
|
|
netdev = nesdev->netdev[0];
|
|
|
nesvnic = netdev_priv(netdev);
|
|
|
+ upper_dev = netdev_master_upper_dev_get(netdev);
|
|
|
is_bonded = netif_is_bond_slave(netdev) &&
|
|
|
- (netdev->master == event_netdev);
|
|
|
+ (upper_dev == event_netdev);
|
|
|
if ((netdev == event_netdev) || is_bonded) {
|
|
|
if (nesvnic->rdma_enabled == 0) {
|
|
|
nes_debug(NES_DBG_NETDEV, "Returning without processing event for %s since"
|
|
@@ -179,9 +181,9 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
|
|
|
/* fall through */
|
|
|
case NETDEV_CHANGEADDR:
|
|
|
/* Add the address to the IP table */
|
|
|
- if (netdev->master)
|
|
|
+ if (upper_dev)
|
|
|
nesvnic->local_ipaddr =
|
|
|
- ((struct in_device *)netdev->master->ip_ptr)->ifa_list->ifa_address;
|
|
|
+ ((struct in_device *)upper_dev->ip_ptr)->ifa_list->ifa_address;
|
|
|
else
|
|
|
nesvnic->local_ipaddr = ifa->ifa_address;
|
|
|
|