aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bonding
diff options
context:
space:
mode:
authorMoni Shoua <monis@mellanox.com>2015-02-03 09:48:30 -0500
committerDavid S. Miller <davem@davemloft.net>2015-02-04 19:14:24 -0500
commit69a2338e05995b10225b2a131f7540d1305980e4 (patch)
treeb18f6fbe1d3188505bdf1aeffba4fd493febb36b /drivers/net/bonding
parent61bd3857ff2c7daf756d49b41e6277bbdaa8f789 (diff)
net/bonding: Move slave state changes to a helper function
Move slave state changes to a helper function, this is a pre-step for adding functionality of dispatching an event when this helper is called. This commit doesn't add new functionality. Signed-off-by: Moni Shoua <monis@mellanox.com> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bonding')
-rw-r--r--drivers/net/bonding/bond_main.c64
1 files changed, 38 insertions, 26 deletions
diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c
index c9e519cb9214..92fe3a1bf52b 100644
--- a/drivers/net/bonding/bond_main.c
+++ b/drivers/net/bonding/bond_main.c
@@ -790,7 +790,7 @@ void bond_change_active_slave(struct bonding *bond, struct slave *new_active)
790 } 790 }
791 791
792 new_active->delay = 0; 792 new_active->delay = 0;
793 new_active->link = BOND_LINK_UP; 793 bond_set_slave_link_state(new_active, BOND_LINK_UP);
794 794
795 if (BOND_MODE(bond) == BOND_MODE_8023AD) 795 if (BOND_MODE(bond) == BOND_MODE_8023AD)
796 bond_3ad_handle_link_change(new_active, BOND_LINK_UP); 796 bond_3ad_handle_link_change(new_active, BOND_LINK_UP);
@@ -1181,6 +1181,21 @@ static void bond_free_slave(struct slave *slave)
1181 kfree(slave); 1181 kfree(slave);
1182} 1182}
1183 1183
1184static void bond_fill_ifbond(struct bonding *bond, struct ifbond *info)
1185{
1186 info->bond_mode = BOND_MODE(bond);
1187 info->miimon = bond->params.miimon;
1188 info->num_slaves = bond->slave_cnt;
1189}
1190
1191static void bond_fill_ifslave(struct slave *slave, struct ifslave *info)
1192{
1193 strcpy(info->slave_name, slave->dev->name);
1194 info->link = slave->link;
1195 info->state = bond_slave_state(slave);
1196 info->link_failure_count = slave->link_failure_count;
1197}
1198
1184/* enslave device <slave> to bond device <master> */ 1199/* enslave device <slave> to bond device <master> */
1185int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) 1200int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
1186{ 1201{
@@ -1444,19 +1459,22 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
1444 if (bond->params.miimon) { 1459 if (bond->params.miimon) {
1445 if (bond_check_dev_link(bond, slave_dev, 0) == BMSR_LSTATUS) { 1460 if (bond_check_dev_link(bond, slave_dev, 0) == BMSR_LSTATUS) {
1446 if (bond->params.updelay) { 1461 if (bond->params.updelay) {
1447 new_slave->link = BOND_LINK_BACK; 1462 bond_set_slave_link_state(new_slave,
1463 BOND_LINK_BACK);
1448 new_slave->delay = bond->params.updelay; 1464 new_slave->delay = bond->params.updelay;
1449 } else { 1465 } else {
1450 new_slave->link = BOND_LINK_UP; 1466 bond_set_slave_link_state(new_slave,
1467 BOND_LINK_UP);
1451 } 1468 }
1452 } else { 1469 } else {
1453 new_slave->link = BOND_LINK_DOWN; 1470 bond_set_slave_link_state(new_slave, BOND_LINK_DOWN);
1454 } 1471 }
1455 } else if (bond->params.arp_interval) { 1472 } else if (bond->params.arp_interval) {
1456 new_slave->link = (netif_carrier_ok(slave_dev) ? 1473 bond_set_slave_link_state(new_slave,
1457 BOND_LINK_UP : BOND_LINK_DOWN); 1474 (netif_carrier_ok(slave_dev) ?
1475 BOND_LINK_UP : BOND_LINK_DOWN));
1458 } else { 1476 } else {
1459 new_slave->link = BOND_LINK_UP; 1477 bond_set_slave_link_state(new_slave, BOND_LINK_UP);
1460 } 1478 }
1461 1479
1462 if (new_slave->link != BOND_LINK_DOWN) 1480 if (new_slave->link != BOND_LINK_DOWN)
@@ -1821,11 +1839,7 @@ static int bond_release_and_destroy(struct net_device *bond_dev,
1821static int bond_info_query(struct net_device *bond_dev, struct ifbond *info) 1839static int bond_info_query(struct net_device *bond_dev, struct ifbond *info)
1822{ 1840{
1823 struct bonding *bond = netdev_priv(bond_dev); 1841 struct bonding *bond = netdev_priv(bond_dev);
1824 1842 bond_fill_ifbond(bond, info);
1825 info->bond_mode = BOND_MODE(bond);
1826 info->miimon = bond->params.miimon;
1827 info->num_slaves = bond->slave_cnt;
1828
1829 return 0; 1843 return 0;
1830} 1844}
1831 1845
@@ -1839,10 +1853,7 @@ static int bond_slave_info_query(struct net_device *bond_dev, struct ifslave *in
1839 bond_for_each_slave(bond, slave, iter) { 1853 bond_for_each_slave(bond, slave, iter) {
1840 if (i++ == (int)info->slave_id) { 1854 if (i++ == (int)info->slave_id) {
1841 res = 0; 1855 res = 0;
1842 strcpy(info->slave_name, slave->dev->name); 1856 bond_fill_ifslave(slave, info);
1843 info->link = slave->link;
1844 info->state = bond_slave_state(slave);
1845 info->link_failure_count = slave->link_failure_count;
1846 break; 1857 break;
1847 } 1858 }
1848 } 1859 }
@@ -1872,7 +1883,7 @@ static int bond_miimon_inspect(struct bonding *bond)
1872 if (link_state) 1883 if (link_state)
1873 continue; 1884 continue;
1874 1885
1875 slave->link = BOND_LINK_FAIL; 1886 bond_set_slave_link_state(slave, BOND_LINK_FAIL);
1876 slave->delay = bond->params.downdelay; 1887 slave->delay = bond->params.downdelay;
1877 if (slave->delay) { 1888 if (slave->delay) {
1878 netdev_info(bond->dev, "link status down for %sinterface %s, disabling it in %d ms\n", 1889 netdev_info(bond->dev, "link status down for %sinterface %s, disabling it in %d ms\n",
@@ -1887,7 +1898,7 @@ static int bond_miimon_inspect(struct bonding *bond)
1887 case BOND_LINK_FAIL: 1898 case BOND_LINK_FAIL:
1888 if (link_state) { 1899 if (link_state) {
1889 /* recovered before downdelay expired */ 1900 /* recovered before downdelay expired */
1890 slave->link = BOND_LINK_UP; 1901 bond_set_slave_link_state(slave, BOND_LINK_UP);
1891 slave->last_link_up = jiffies; 1902 slave->last_link_up = jiffies;
1892 netdev_info(bond->dev, "link status up again after %d ms for interface %s\n", 1903 netdev_info(bond->dev, "link status up again after %d ms for interface %s\n",
1893 (bond->params.downdelay - slave->delay) * 1904 (bond->params.downdelay - slave->delay) *
@@ -1909,7 +1920,7 @@ static int bond_miimon_inspect(struct bonding *bond)
1909 if (!link_state) 1920 if (!link_state)
1910 continue; 1921 continue;
1911 1922
1912 slave->link = BOND_LINK_BACK; 1923 bond_set_slave_link_state(slave, BOND_LINK_BACK);
1913 slave->delay = bond->params.updelay; 1924 slave->delay = bond->params.updelay;
1914 1925
1915 if (slave->delay) { 1926 if (slave->delay) {
@@ -1922,7 +1933,8 @@ static int bond_miimon_inspect(struct bonding *bond)
1922 /*FALLTHRU*/ 1933 /*FALLTHRU*/
1923 case BOND_LINK_BACK: 1934 case BOND_LINK_BACK:
1924 if (!link_state) { 1935 if (!link_state) {
1925 slave->link = BOND_LINK_DOWN; 1936 bond_set_slave_link_state(slave,
1937 BOND_LINK_DOWN);
1926 netdev_info(bond->dev, "link status down again after %d ms for interface %s\n", 1938 netdev_info(bond->dev, "link status down again after %d ms for interface %s\n",
1927 (bond->params.updelay - slave->delay) * 1939 (bond->params.updelay - slave->delay) *
1928 bond->params.miimon, 1940 bond->params.miimon,
@@ -1960,7 +1972,7 @@ static void bond_miimon_commit(struct bonding *bond)
1960 continue; 1972 continue;
1961 1973
1962 case BOND_LINK_UP: 1974 case BOND_LINK_UP:
1963 slave->link = BOND_LINK_UP; 1975 bond_set_slave_link_state(slave, BOND_LINK_UP);
1964 slave->last_link_up = jiffies; 1976 slave->last_link_up = jiffies;
1965 1977
1966 primary = rtnl_dereference(bond->primary_slave); 1978 primary = rtnl_dereference(bond->primary_slave);
@@ -2000,7 +2012,7 @@ static void bond_miimon_commit(struct bonding *bond)
2000 if (slave->link_failure_count < UINT_MAX) 2012 if (slave->link_failure_count < UINT_MAX)
2001 slave->link_failure_count++; 2013 slave->link_failure_count++;
2002 2014
2003 slave->link = BOND_LINK_DOWN; 2015 bond_set_slave_link_state(slave, BOND_LINK_DOWN);
2004 2016
2005 if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP || 2017 if (BOND_MODE(bond) == BOND_MODE_ACTIVEBACKUP ||
2006 BOND_MODE(bond) == BOND_MODE_8023AD) 2018 BOND_MODE(bond) == BOND_MODE_8023AD)
@@ -2583,7 +2595,7 @@ static void bond_ab_arp_commit(struct bonding *bond)
2583 struct slave *current_arp_slave; 2595 struct slave *current_arp_slave;
2584 2596
2585 current_arp_slave = rtnl_dereference(bond->current_arp_slave); 2597 current_arp_slave = rtnl_dereference(bond->current_arp_slave);
2586 slave->link = BOND_LINK_UP; 2598 bond_set_slave_link_state(slave, BOND_LINK_UP);
2587 if (current_arp_slave) { 2599 if (current_arp_slave) {
2588 bond_set_slave_inactive_flags( 2600 bond_set_slave_inactive_flags(
2589 current_arp_slave, 2601 current_arp_slave,
@@ -2606,7 +2618,7 @@ static void bond_ab_arp_commit(struct bonding *bond)
2606 if (slave->link_failure_count < UINT_MAX) 2618 if (slave->link_failure_count < UINT_MAX)
2607 slave->link_failure_count++; 2619 slave->link_failure_count++;
2608 2620
2609 slave->link = BOND_LINK_DOWN; 2621 bond_set_slave_link_state(slave, BOND_LINK_DOWN);
2610 bond_set_slave_inactive_flags(slave, 2622 bond_set_slave_inactive_flags(slave,
2611 BOND_SLAVE_NOTIFY_NOW); 2623 BOND_SLAVE_NOTIFY_NOW);
2612 2624
@@ -2685,7 +2697,7 @@ static bool bond_ab_arp_probe(struct bonding *bond)
2685 * up when it is actually down 2697 * up when it is actually down
2686 */ 2698 */
2687 if (!bond_slave_is_up(slave) && slave->link == BOND_LINK_UP) { 2699 if (!bond_slave_is_up(slave) && slave->link == BOND_LINK_UP) {
2688 slave->link = BOND_LINK_DOWN; 2700 bond_set_slave_link_state(slave, BOND_LINK_DOWN);
2689 if (slave->link_failure_count < UINT_MAX) 2701 if (slave->link_failure_count < UINT_MAX)
2690 slave->link_failure_count++; 2702 slave->link_failure_count++;
2691 2703
@@ -2705,7 +2717,7 @@ static bool bond_ab_arp_probe(struct bonding *bond)
2705 if (!new_slave) 2717 if (!new_slave)
2706 goto check_state; 2718 goto check_state;
2707 2719
2708 new_slave->link = BOND_LINK_BACK; 2720 bond_set_slave_link_state(new_slave, BOND_LINK_BACK);
2709 bond_set_slave_active_flags(new_slave, BOND_SLAVE_NOTIFY_LATER); 2721 bond_set_slave_active_flags(new_slave, BOND_SLAVE_NOTIFY_LATER);
2710 bond_arp_send_all(bond, new_slave); 2722 bond_arp_send_all(bond, new_slave);
2711 new_slave->last_link_up = jiffies; 2723 new_slave->last_link_up = jiffies;