Lines Matching refs:slave
126 if (port->slave == NULL)
129 return bond_get_bond_by_slave(port->slave);
136 * Return the aggregator of the first slave in @bond, or %NULL if it can't be
143 struct slave *first_slave;
171 * __disable_port - disable the port's slave
176 bond_set_slave_inactive_flags(port->slave, BOND_SLAVE_NOTIFY_LATER);
180 * __enable_port - enable the port's slave, if it's up
185 struct slave *slave = port->slave;
187 if ((slave->link == BOND_LINK_UP) && bond_slave_is_up(slave))
188 bond_set_slave_active_flags(slave, BOND_SLAVE_NOTIFY_LATER);
192 * __port_is_enabled - check if the port's slave is in active state
197 return bond_is_active_slave(port->slave);
252 struct slave *slave = port->slave;
260 if (slave->link != BOND_LINK_UP)
263 switch (slave->speed) {
318 if (slave->speed != SPEED_UNKNOWN)
319 pr_warn_once("%s: (slave %s): unknown ethtool speed (%d) for port %d (set it to 0)\n",
320 slave->bond->dev->name,
321 slave->dev->name, slave->speed,
328 slave_dbg(slave->bond->dev, slave->dev, "Port %d Received link speed %d update from adapter\n",
343 struct slave *slave = port->slave;
349 if (slave->link == BOND_LINK_UP) {
350 switch (slave->duplex) {
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);
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;
754 struct slave *slave;
756 bond_for_each_slave_rcu(bond, slave, iter)
757 if (SLAVE_AD_INFO(slave)->aggregator.is_active)
758 return &(SLAVE_AD_INFO(slave)->aggregator);
785 slave_dbg(port->slave->bond->dev, port->slave->dev,
823 struct slave *slave = port->slave;
832 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.lacpdu_tx);
833 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.lacpdu_tx);
835 skb->dev = slave->dev;
847 ether_addr_copy(lacpdu_header->hdr.h_source, slave->perm_hwaddr);
867 struct slave *slave = port->slave;
878 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.marker_tx);
879 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.marker_tx);
882 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.marker_resp_tx);
883 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.marker_resp_tx);
889 skb->dev = slave->dev;
900 ether_addr_copy(marker_header->hdr.h_source, slave->perm_hwaddr);
913 * @update_slave_arr: Does slave array need update?
1019 slave_dbg(port->slave->bond->dev, port->slave->dev,
1082 atomic64_inc(&SLAVE_AD_INFO(port->slave)->stats.lacpdu_rx);
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,
1260 port->slave->dev,
1341 slave_dbg(port->slave->bond->dev, port->slave->dev,
1369 * @update_slave_arr: Does slave array need update?
1381 struct slave *slave;
1420 slave_dbg(bond->dev, port->slave->dev, "Port %d left LAG %d\n",
1435 net_warn_ratelimited("%s: (slave %s): Warning: Port %d was related to aggregator %d but was not on its port list\n",
1436 port->slave->bond->dev->name,
1437 port->slave->dev->name,
1443 bond_for_each_slave(bond, slave, iter) {
1444 aggregator = &(SLAVE_AD_INFO(slave)->aggregator);
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,
1601 net_warn_ratelimited("%s: (slave %s): Impossible agg select mode %d\n",
1602 curr->slave->bond->dev->name,
1603 curr->slave->dev->name,
1620 if (netif_running(port->slave->dev) &&
1621 netif_carrier_ok(port->slave->dev))
1631 * @update_slave_arr: Does slave array need update?
1658 struct bonding *bond = agg->slave->bond;
1660 struct slave *slave;
1668 bond_for_each_slave_rcu(bond, slave, iter) {
1669 agg = &(SLAVE_AD_INFO(slave)->aggregator);
1704 netdev_dbg(bond->dev, "(slave %s): best Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1705 best->slave ? best->slave->dev->name : "NULL",
1710 netdev_dbg(bond->dev, "(slave %s): best ports %p slave %p\n",
1711 best->slave ? best->slave->dev->name : "NULL",
1712 best->lag_ports, best->slave);
1714 bond_for_each_slave_rcu(bond, slave, iter) {
1715 agg = &(SLAVE_AD_INFO(slave)->aggregator);
1717 slave_dbg(bond->dev, slave->dev, "Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1730 netdev_dbg(bond->dev, "(slave %s): LAG %d chosen as the active LAG\n",
1731 best->slave ? best->slave->dev->name : "NULL",
1733 netdev_dbg(bond->dev, "(slave %s): Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1734 best->slave ? best->slave->dev->name : "NULL",
1792 aggregator->slave ?
1793 aggregator->slave->dev->name : "NULL",
1809 aggregator->slave = NULL;
1882 * @update_slave_arr: Does slave array need update?
1890 slave_dbg(port->slave->bond->dev, port->slave->dev,
1903 * @update_slave_arr: Does slave array need update?
1911 slave_dbg(port->slave->bond->dev, port->slave->dev,
1931 atomic64_inc(&SLAVE_AD_INFO(port->slave)->stats.marker_rx);
1932 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.marker_rx);
1941 slave_dbg(port->slave->bond->dev, port->slave->dev,
1958 atomic64_inc(&SLAVE_AD_INFO(port->slave)->stats.marker_resp_rx);
1959 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.marker_resp_rx);
2013 * bond_3ad_bind_slave - initialize a slave's port
2014 * @slave: slave struct to work on
2019 void bond_3ad_bind_slave(struct slave *slave)
2021 struct bonding *bond = bond_get_bond_by_slave(slave);
2025 /* check that the slave has not been initialized yet. */
2026 if (SLAVE_AD_INFO(slave)->port.slave != slave) {
2029 port = &(SLAVE_AD_INFO(slave)->port);
2033 port->slave = slave;
2034 port->actor_port_number = SLAVE_AD_INFO(slave)->id;
2050 aggregator = &(SLAVE_AD_INFO(slave)->aggregator);
2056 aggregator->slave = slave;
2063 * bond_3ad_unbind_slave - deinitialize a slave's port
2064 * @slave: slave struct to work on
2070 void bond_3ad_unbind_slave(struct slave *slave)
2075 struct bonding *bond = slave->bond;
2076 struct slave *slave_iter;
2082 aggregator = &(SLAVE_AD_INFO(slave)->aggregator);
2083 port = &(SLAVE_AD_INFO(slave)->port);
2085 /* if slave is null, the whole port is not initialized */
2086 if (!port->slave) {
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",
2105 * except the port related to this slave(thats ensure us that
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);
2210 slave_info(bond->dev, slave->dev, "Removing an active aggregator\n");
2220 port->slave = NULL;
2236 struct slave *slave;
2249 bond_for_each_slave(bond, slave, iter) {
2250 struct port *port = &(SLAVE_AD_INFO(slave))->port;
2299 struct slave *slave;
2316 slave = bond_first_slave_rcu(bond);
2317 port = slave ? &(SLAVE_AD_INFO(slave)->port) : NULL;
2321 if (!port->slave) {
2334 bond_for_each_slave_rcu(bond, slave, iter) {
2335 port = &(SLAVE_AD_INFO(slave)->port);
2336 if (!port->slave) {
2355 bond_for_each_slave_rcu(bond, slave, iter) {
2356 if (slave->should_notify) {
2377 * @slave: slave struct to work on
2383 static int bond_3ad_rx_indication(struct lacpdu *lacpdu, struct slave *slave)
2385 struct bonding *bond = slave->bond;
2391 port = &(SLAVE_AD_INFO(slave)->port);
2392 if (!port->slave) {
2393 net_warn_ratelimited("%s: Warning: port of slave %s is uninitialized\n",
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",
2429 stat = &SLAVE_AD_INFO(slave)->stats.marker_unknown_rx;
2436 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.lacpdu_unknown_rx);
2478 slave_err(port->slave->bond->dev,
2479 port->slave->dev,
2491 * bond_3ad_adapter_speed_duplex_changed - handle a slave's speed / duplex
2494 * @slave: slave struct to work on
2498 void bond_3ad_adapter_speed_duplex_changed(struct slave *slave)
2502 port = &(SLAVE_AD_INFO(slave)->port);
2504 /* if slave is null, the whole port is not initialized */
2505 if (!port->slave) {
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",
2519 * bond_3ad_handle_link_change - handle a slave's link status change indication
2520 * @slave: slave struct to work on
2525 void bond_3ad_handle_link_change(struct slave *slave, char link)
2531 port = &(SLAVE_AD_INFO(slave)->port);
2533 /* if slave is null, the whole port is not initialized */
2534 if (!port->slave) {
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);
2586 struct slave *first_slave;
2628 struct slave *slave;
2631 bond_for_each_slave_rcu(bond, slave, iter) {
2632 port = &(SLAVE_AD_INFO(slave)->port);
2663 struct slave *slave)
2675 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.lacpdu_illegal_rx);
2680 return bond_3ad_rx_indication(lacpdu, slave);
2698 struct slave *slave;
2703 bond_for_each_slave(bond, slave, iter) {
2704 port = &(SLAVE_AD_INFO(slave)->port);