diff options
author | Mahesh Bandewar <maheshb@google.com> | 2015-10-31 15:45:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-11-02 22:52:24 -0500 |
commit | 52bc67168109ade61014a36feedf09f4bc53d8f1 (patch) | |
tree | 48a4bb01acaecc60bd9d87c2dd4c4959e926b59e /drivers/net/bonding | |
parent | 7bb11dc9f59ddcb33ee317da77b235235aaa582a (diff) |
bonding: simplify / unify event handling code for 3ad mode.
Old logic of updating state-machine is not required since
ad_update_actor_keys() does it implicitly. The only loss is
the notification differentiation between speed vs. duplex
change. Now only one unified notification is printed.
Signed-off-by: Mahesh Bandewar <maheshb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r-- | drivers/net/bonding/bond_3ad.c | 38 | ||||
-rw-r--r-- | drivers/net/bonding/bond_main.c | 14 |
2 files changed, 8 insertions, 44 deletions
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c index b9816b7f319f..940e2ebbdea8 100644 --- a/drivers/net/bonding/bond_3ad.c +++ b/drivers/net/bonding/bond_3ad.c | |||
@@ -2348,39 +2348,14 @@ static void ad_update_actor_keys(struct port *port, bool reset) | |||
2348 | } | 2348 | } |
2349 | 2349 | ||
2350 | /** | 2350 | /** |
2351 | * bond_3ad_adapter_speed_changed - handle a slave's speed change indication | 2351 | * bond_3ad_adapter_speed_duplex_changed - handle a slave's speed / duplex |
2352 | * @slave: slave struct to work on | 2352 | * change indication |
2353 | * | 2353 | * |
2354 | * Handle reselection of aggregator (if needed) for this port. | ||
2355 | */ | ||
2356 | void bond_3ad_adapter_speed_changed(struct slave *slave) | ||
2357 | { | ||
2358 | struct port *port; | ||
2359 | |||
2360 | port = &(SLAVE_AD_INFO(slave)->port); | ||
2361 | |||
2362 | /* if slave is null, the whole port is not initialized */ | ||
2363 | if (!port->slave) { | ||
2364 | netdev_warn(slave->bond->dev, "speed changed for uninitialized port on %s\n", | ||
2365 | slave->dev->name); | ||
2366 | return; | ||
2367 | } | ||
2368 | |||
2369 | spin_lock_bh(&slave->bond->mode_lock); | ||
2370 | |||
2371 | ad_update_actor_keys(port, false); | ||
2372 | netdev_dbg(slave->bond->dev, "Port %d changed speed\n", port->actor_port_number); | ||
2373 | |||
2374 | spin_unlock_bh(&slave->bond->mode_lock); | ||
2375 | } | ||
2376 | |||
2377 | /** | ||
2378 | * bond_3ad_adapter_duplex_changed - handle a slave's duplex change indication | ||
2379 | * @slave: slave struct to work on | 2354 | * @slave: slave struct to work on |
2380 | * | 2355 | * |
2381 | * Handle reselection of aggregator (if needed) for this port. | 2356 | * Handle reselection of aggregator (if needed) for this port. |
2382 | */ | 2357 | */ |
2383 | void bond_3ad_adapter_duplex_changed(struct slave *slave) | 2358 | void bond_3ad_adapter_speed_duplex_changed(struct slave *slave) |
2384 | { | 2359 | { |
2385 | struct port *port; | 2360 | struct port *port; |
2386 | 2361 | ||
@@ -2388,17 +2363,16 @@ void bond_3ad_adapter_duplex_changed(struct slave *slave) | |||
2388 | 2363 | ||
2389 | /* if slave is null, the whole port is not initialized */ | 2364 | /* if slave is null, the whole port is not initialized */ |
2390 | if (!port->slave) { | 2365 | if (!port->slave) { |
2391 | netdev_warn(slave->bond->dev, "duplex changed for uninitialized port on %s\n", | 2366 | netdev_warn(slave->bond->dev, |
2367 | "speed/duplex changed for uninitialized port %s\n", | ||
2392 | slave->dev->name); | 2368 | slave->dev->name); |
2393 | return; | 2369 | return; |
2394 | } | 2370 | } |
2395 | 2371 | ||
2396 | spin_lock_bh(&slave->bond->mode_lock); | 2372 | spin_lock_bh(&slave->bond->mode_lock); |
2397 | |||
2398 | ad_update_actor_keys(port, false); | 2373 | ad_update_actor_keys(port, false); |
2399 | netdev_dbg(slave->bond->dev, "Port %d slave %s changed duplex\n", | 2374 | netdev_dbg(slave->bond->dev, "Port %d slave %s changed speed/duplex\n", |
2400 | port->actor_port_number, slave->dev->name); | 2375 | port->actor_port_number, slave->dev->name); |
2401 | |||
2402 | spin_unlock_bh(&slave->bond->mode_lock); | 2376 | spin_unlock_bh(&slave->bond->mode_lock); |
2403 | } | 2377 | } |
2404 | 2378 | ||
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index d0f23cd6e236..b4351caf8e01 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c | |||
@@ -2943,8 +2943,6 @@ static int bond_slave_netdev_event(unsigned long event, | |||
2943 | struct slave *slave = bond_slave_get_rtnl(slave_dev), *primary; | 2943 | struct slave *slave = bond_slave_get_rtnl(slave_dev), *primary; |
2944 | struct bonding *bond; | 2944 | struct bonding *bond; |
2945 | struct net_device *bond_dev; | 2945 | struct net_device *bond_dev; |
2946 | u32 old_speed; | ||
2947 | u8 old_duplex; | ||
2948 | 2946 | ||
2949 | /* A netdev event can be generated while enslaving a device | 2947 | /* A netdev event can be generated while enslaving a device |
2950 | * before netdev_rx_handler_register is called in which case | 2948 | * before netdev_rx_handler_register is called in which case |
@@ -2965,17 +2963,9 @@ static int bond_slave_netdev_event(unsigned long event, | |||
2965 | break; | 2963 | break; |
2966 | case NETDEV_UP: | 2964 | case NETDEV_UP: |
2967 | case NETDEV_CHANGE: | 2965 | case NETDEV_CHANGE: |
2968 | old_speed = slave->speed; | ||
2969 | old_duplex = slave->duplex; | ||
2970 | |||
2971 | bond_update_speed_duplex(slave); | 2966 | bond_update_speed_duplex(slave); |
2972 | 2967 | if (BOND_MODE(bond) == BOND_MODE_8023AD) | |
2973 | if (BOND_MODE(bond) == BOND_MODE_8023AD) { | 2968 | bond_3ad_adapter_speed_duplex_changed(slave); |
2974 | if (old_speed != slave->speed) | ||
2975 | bond_3ad_adapter_speed_changed(slave); | ||
2976 | if (old_duplex != slave->duplex) | ||
2977 | bond_3ad_adapter_duplex_changed(slave); | ||
2978 | } | ||
2979 | /* Fallthrough */ | 2969 | /* Fallthrough */ |
2980 | case NETDEV_DOWN: | 2970 | case NETDEV_DOWN: |
2981 | /* Refresh slave-array if applicable! | 2971 | /* Refresh slave-array if applicable! |