Lines Matching defs:bond
133 * __get_first_agg - get the first aggregator in the bond
136 * Return the aggregator of the first slave in @bond, or %NULL if it can't be
142 struct bonding *bond = __get_bond_by_port(port);
146 /* If there's no bond for this port, or bond has no slaves */
147 if (bond == NULL)
151 first_slave = bond_first_slave_rcu(bond);
208 struct bonding *bond = __get_bond_by_port(port);
210 if (bond == NULL)
213 return bond->params.ad_select;
222 struct bonding *bond = __get_bond_by_port(port);
224 if (bond == NULL)
227 return atomic_read(&BOND_AD_INFO(bond).agg_select_timer) ? 1 : 0;
320 slave->bond->dev->name,
328 slave_dbg(slave->bond->dev, slave->dev, "Port %d Received link speed %d update from adapter\n",
353 slave_dbg(slave->bond->dev, slave->dev, "Port %d Received status full duplex update from adapter\n",
359 slave_dbg(slave->bond->dev, slave->dev, "Port %d Received status NOT full duplex update from adapter\n",
369 const struct bonding *bond = bond_get_bond_by_slave(port->slave);
371 port->actor_system = BOND_AD_INFO(bond).system.sys_mac_addr;
372 port->actor_system_priority = BOND_AD_INFO(bond).system.sys_priority;
494 slave_dbg(port->slave->bond->dev, port->slave->dev,
498 slave_dbg(port->slave->bond->dev, port->slave->dev,
752 struct bonding *bond = aggregator->slave->bond;
756 bond_for_each_slave_rcu(bond, slave, iter)
785 slave_dbg(port->slave->bond->dev, port->slave->dev,
833 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.lacpdu_tx);
879 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.marker_tx);
883 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.marker_resp_tx);
1019 slave_dbg(port->slave->bond->dev, port->slave->dev,
1083 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.lacpdu_rx);
1137 slave_dbg(port->slave->bond->dev, port->slave->dev,
1189 slave_err(port->slave->bond->dev, port->slave->dev, "An illegal loopback occurred on slave\n"
1259 slave_dbg(port->slave->bond->dev,
1341 slave_dbg(port->slave->bond->dev, port->slave->dev,
1380 struct bonding *bond;
1388 bond = __get_bond_by_port(port);
1420 slave_dbg(bond->dev, port->slave->dev, "Port %d left LAG %d\n",
1436 port->slave->bond->dev->name,
1443 bond_for_each_slave(bond, slave, iter) {
1469 slave_dbg(bond->dev, slave->dev, "Port %d joined LAG %d (existing LAG)\n",
1516 slave_dbg(bond->dev, port->slave->dev, "Port %d joined LAG %d (new LAG)\n",
1520 slave_err(bond->dev, port->slave->dev,
1602 curr->slave->bond->dev->name,
1644 * set of slaves in the bond changes.
1648 * set of slaves in the bond changes.
1650 * FIXME: this function MUST be called with the first agg in the bond, or
1652 * called with the bond itself, and retrieve the first agg from it.
1658 struct bonding *bond = agg->slave->bond;
1668 bond_for_each_slave_rcu(bond, slave, iter) {
1704 netdev_dbg(bond->dev, "(slave %s): best Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1710 netdev_dbg(bond->dev, "(slave %s): best ports %p slave %p\n",
1714 bond_for_each_slave_rcu(bond, slave, iter) {
1717 slave_dbg(bond->dev, slave->dev, "Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1726 net_warn_ratelimited("%s: Warning: No 802.3ad response from the link partner for any adapters in the bond\n",
1727 bond->dev->name);
1730 netdev_dbg(bond->dev, "(slave %s): LAG %d chosen as the active LAG\n",
1733 netdev_dbg(bond->dev, "(slave %s): Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1770 bond_3ad_set_carrier(bond);
1890 slave_dbg(port->slave->bond->dev, port->slave->dev,
1911 slave_dbg(port->slave->bond->dev, port->slave->dev,
1932 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.marker_rx);
1941 slave_dbg(port->slave->bond->dev, port->slave->dev,
1959 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.marker_resp_rx);
1971 * @bond: bonding struct
1976 * any down to up transitions of the bond.
1978 void bond_3ad_initiate_agg_selection(struct bonding *bond, int timeout)
1980 atomic_set(&BOND_AD_INFO(bond).agg_select_timer, timeout);
1984 * bond_3ad_initialize - initialize a bond's 802.3ad parameters and structures
1985 * @bond: bonding struct to work on
1988 * Can be called only after the mac address of the bond is set.
1990 void bond_3ad_initialize(struct bonding *bond, u16 tick_resolution)
1992 BOND_AD_INFO(bond).aggregator_identifier = 0;
1993 BOND_AD_INFO(bond).system.sys_priority =
1994 bond->params.ad_actor_sys_prio;
1995 if (is_zero_ether_addr(bond->params.ad_actor_system))
1996 BOND_AD_INFO(bond).system.sys_mac_addr =
1997 *((struct mac_addr *)bond->dev->dev_addr);
1999 BOND_AD_INFO(bond).system.sys_mac_addr =
2000 *((struct mac_addr *)bond->params.ad_actor_system);
2007 bond_3ad_initiate_agg_selection(bond,
2021 struct bonding *bond = bond_get_bond_by_slave(slave);
2031 ad_initialize_port(port, bond->params.lacp_fast);
2038 port->actor_admin_port_key = bond->params.ad_user_port_key << 6;
2040 /* actor system is the bond's system */
2054 aggregator->aggregator_mac_address = *((struct mac_addr *)bond->dev->dev_addr);
2055 aggregator->aggregator_identifier = ++BOND_AD_INFO(bond).aggregator_identifier;
2075 struct bonding *bond = slave->bond;
2081 spin_lock_bh(&bond->mode_lock);
2087 slave_warn(bond->dev, slave->dev, "Trying to unbind an uninitialized port\n");
2091 slave_dbg(bond->dev, slave->dev, "Unbinding Link Aggregation Group %d\n",
2112 bond_for_each_slave(bond, slave_iter, iter) {
2130 slave_dbg(bond->dev, slave->dev, "Some port(s) related to LAG %d - replacing with LAG %d\n",
2136 slave_info(bond->dev, slave->dev, "Removing an active aggregator\n");
2167 slave_warn(bond->dev, slave->dev, "unbinding aggregator, and could not find a new aggregator for its ports\n");
2176 slave_info(bond->dev, slave->dev, "Removing an active aggregator\n");
2186 slave_dbg(bond->dev, slave->dev, "Unbinding port %d\n", port->actor_port_number);
2189 bond_for_each_slave(bond, slave_iter, iter) {
2210 slave_info(bond->dev, slave->dev, "Removing an active aggregator\n");
2223 spin_unlock_bh(&bond->mode_lock);
2228 * @bond: bonding struct to work on
2231 * settings so the bond device will use the new values when it gets upped.
2233 void bond_3ad_update_ad_actor_settings(struct bonding *bond)
2240 BOND_AD_INFO(bond).system.sys_priority = bond->params.ad_actor_sys_prio;
2241 if (is_zero_ether_addr(bond->params.ad_actor_system))
2242 BOND_AD_INFO(bond).system.sys_mac_addr =
2243 *((struct mac_addr *)bond->dev->dev_addr);
2245 BOND_AD_INFO(bond).system.sys_mac_addr =
2246 *((struct mac_addr *)bond->params.ad_actor_system);
2248 spin_lock_bh(&bond->mode_lock);
2249 bond_for_each_slave(bond, slave, iter) {
2255 spin_unlock_bh(&bond->mode_lock);
2260 * @bond: bonding structure
2264 static bool bond_agg_timer_advance(struct bonding *bond)
2269 val = atomic_read(&BOND_AD_INFO(bond).agg_select_timer);
2273 if (atomic_cmpxchg(&BOND_AD_INFO(bond).agg_select_timer,
2291 * related to any aggregator, and selects the active aggregator for a bond.
2295 struct bonding *bond = container_of(work, struct bonding,
2308 spin_lock_bh(&bond->mode_lock);
2312 if (!bond_has_slaves(bond))
2315 if (bond_agg_timer_advance(bond)) {
2316 slave = bond_first_slave_rcu(bond);
2319 /* select the active aggregator for the bond */
2322 net_warn_ratelimited("%s: Warning: bond's first port is uninitialized\n",
2323 bond->dev->name);
2330 bond_3ad_set_carrier(bond);
2334 bond_for_each_slave_rcu(bond, slave, iter) {
2338 bond->dev->name);
2355 bond_for_each_slave_rcu(bond, slave, iter) {
2362 spin_unlock_bh(&bond->mode_lock);
2365 bond_slave_arr_work_rearm(bond, 0);
2368 bond_slave_state_notify(bond);
2371 queue_delayed_work(bond->wq, &bond->ad_work, ad_delta_in_ticks);
2385 struct bonding *bond = slave->bond;
2394 slave->dev->name, slave->bond->dev->name);
2401 slave_dbg(slave->bond->dev, slave->dev,
2405 spin_lock(&slave->bond->mode_lock);
2407 spin_unlock(&slave->bond->mode_lock);
2417 slave_dbg(slave->bond->dev, slave->dev, "Received Marker Information on port %d\n",
2422 slave_dbg(slave->bond->dev, slave->dev, "Received Marker Response on port %d\n",
2427 slave_dbg(slave->bond->dev, slave->dev, "Received an unknown Marker subtype on port %d\n",
2431 stat = &BOND_AD_INFO(bond).stats.marker_unknown_rx;
2437 atomic64_inc(&BOND_AD_INFO(bond).stats.lacpdu_unknown_rx);
2478 slave_err(port->slave->bond->dev,
2506 slave_warn(slave->bond->dev, slave->dev,
2511 spin_lock_bh(&slave->bond->mode_lock);
2513 spin_unlock_bh(&slave->bond->mode_lock);
2514 slave_dbg(slave->bond->dev, slave->dev, "Port %d changed speed/duplex\n",
2535 slave_warn(slave->bond->dev, slave->dev, "link status changed for uninitialized port\n");
2539 spin_lock_bh(&slave->bond->mode_lock);
2558 spin_unlock_bh(&slave->bond->mode_lock);
2560 slave_dbg(slave->bond->dev, slave->dev, "Port %d changed link status to %s\n",
2567 bond_update_slave_arr(slave->bond, NULL);
2572 * @bond: bonding structure
2583 int bond_3ad_set_carrier(struct bonding *bond)
2590 first_slave = bond_first_slave_rcu(bond);
2598 if (__agg_active_ports(active) < bond->params.min_links) {
2599 if (netif_carrier_ok(bond->dev)) {
2600 netif_carrier_off(bond->dev);
2603 } else if (!netif_carrier_ok(bond->dev)) {
2604 netif_carrier_on(bond->dev);
2607 } else if (netif_carrier_ok(bond->dev)) {
2608 netif_carrier_off(bond->dev);
2617 * @bond: bonding struct to work on
2618 * @ad_info: ad_info struct to fill with the bond's info
2623 int __bond_3ad_get_active_agg_info(struct bonding *bond,
2631 bond_for_each_slave_rcu(bond, slave, iter) {
2651 int bond_3ad_get_active_agg_info(struct bonding *bond, struct ad_info *ad_info)
2656 ret = __bond_3ad_get_active_agg_info(bond, ad_info);
2662 int bond_3ad_lacpdu_recv(const struct sk_buff *skb, struct bonding *bond,
2676 atomic64_inc(&BOND_AD_INFO(bond).stats.lacpdu_illegal_rx);
2685 * @bond: bonding struct
2690 * Hold bond->mode_lock,
2692 * no matter bond is up or down.
2694 void bond_3ad_update_lacp_rate(struct bonding *bond)
2701 lacp_fast = bond->params.lacp_fast;
2702 spin_lock_bh(&bond->mode_lock);
2703 bond_for_each_slave(bond, slave, iter) {
2710 spin_unlock_bh(&bond->mode_lock);