diff options
author | Moni Shoua <monis@mellanox.com> | 2015-02-03 09:48:30 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-02-04 19:14:24 -0500 |
commit | 69a2338e05995b10225b2a131f7540d1305980e4 (patch) | |
tree | b18f6fbe1d3188505bdf1aeffba4fd493febb36b /drivers/net/bonding | |
parent | 61bd3857ff2c7daf756d49b41e6277bbdaa8f789 (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.c | 64 |
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 | ||
1184 | static 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 | |||
1191 | static 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> */ |
1185 | int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) | 1200 | int 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, | |||
1821 | static int bond_info_query(struct net_device *bond_dev, struct ifbond *info) | 1839 | static 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; |