aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding
diff options
context:
space:
mode:
authorMahesh Bandewar <maheshb@google.com>2015-10-31 15:45:11 -0400
committerDavid S. Miller <davem@davemloft.net>2015-11-02 22:52:24 -0500
commit52bc67168109ade61014a36feedf09f4bc53d8f1 (patch)
tree48a4bb01acaecc60bd9d87c2dd4c4959e926b59e /drivers/net/bonding
parent7bb11dc9f59ddcb33ee317da77b235235aaa582a (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.c38
-rw-r--r--drivers/net/bonding/bond_main.c14
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 */
2356void 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 */
2383void bond_3ad_adapter_duplex_changed(struct slave *slave) 2358void 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!