Lines Matching refs:slave
130 if (port->slave == NULL)
133 return bond_get_bond_by_slave(port->slave);
140 * Return the aggregator of the first slave in @bond, or %NULL if it can't be
147 struct slave *first_slave;
175 * __disable_port - disable the port's slave
180 bond_set_slave_inactive_flags(port->slave, BOND_SLAVE_NOTIFY_LATER);
184 * __enable_port - enable the port's slave, if it's up
189 struct slave *slave = port->slave;
191 if ((slave->link == BOND_LINK_UP) && bond_slave_is_up(slave))
192 bond_set_slave_active_flags(slave, BOND_SLAVE_NOTIFY_LATER);
196 * __port_is_enabled - check if the port's slave is in active state
201 return bond_is_active_slave(port->slave);
259 struct slave *slave = port->slave;
267 if (slave->link != BOND_LINK_UP)
270 switch (slave->speed) {
337 if (slave->speed != SPEED_UNKNOWN)
338 pr_err_once("%s: (slave %s): unknown ethtool speed (%d) for port %d (set it to 0)\n",
339 slave->bond->dev->name,
340 slave->dev->name, slave->speed,
347 slave_dbg(slave->bond->dev, slave->dev, "Port %d Received link speed %d update from adapter\n",
362 struct slave *slave = port->slave;
368 if (slave->link == BOND_LINK_UP) {
369 switch (slave->duplex) {
372 slave_dbg(slave->bond->dev, slave->dev, "Port %d Received status full duplex update from adapter\n",
378 slave_dbg(slave->bond->dev, slave->dev, "Port %d Received status NOT full duplex update from adapter\n",
388 const struct bonding *bond = bond_get_bond_by_slave(port->slave);
513 slave_dbg(port->slave->bond->dev, port->slave->dev,
517 slave_dbg(port->slave->bond->dev, port->slave->dev,
780 struct bonding *bond = aggregator->slave->bond;
782 struct slave *slave;
784 bond_for_each_slave_rcu(bond, slave, iter)
785 if (SLAVE_AD_INFO(slave)->aggregator.is_active)
786 return &(SLAVE_AD_INFO(slave)->aggregator);
813 slave_dbg(port->slave->bond->dev, port->slave->dev,
851 struct slave *slave = port->slave;
860 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.lacpdu_tx);
861 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.lacpdu_tx);
863 skb->dev = slave->dev;
875 ether_addr_copy(lacpdu_header->hdr.h_source, slave->perm_hwaddr);
895 struct slave *slave = port->slave;
906 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.marker_tx);
907 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.marker_tx);
910 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.marker_resp_tx);
911 atomic64_inc(&BOND_AD_INFO(slave->bond).stats.marker_resp_tx);
917 skb->dev = slave->dev;
928 ether_addr_copy(marker_header->hdr.h_source, slave->perm_hwaddr);
941 * @update_slave_arr: Does slave array need update?
1047 slave_dbg(port->slave->bond->dev, port->slave->dev,
1110 atomic64_inc(&SLAVE_AD_INFO(port->slave)->stats.lacpdu_rx);
1111 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.lacpdu_rx);
1165 slave_dbg(port->slave->bond->dev, port->slave->dev,
1217 slave_err(port->slave->bond->dev, port->slave->dev, "An illegal loopback occurred on slave\n"
1287 slave_dbg(port->slave->bond->dev,
1288 port->slave->dev,
1370 slave_dbg(port->slave->bond->dev, port->slave->dev,
1398 * @update_slave_arr: Does slave array need update?
1410 struct slave *slave;
1449 slave_dbg(bond->dev, port->slave->dev, "Port %d left LAG %d\n",
1464 net_warn_ratelimited("%s: (slave %s): Warning: Port %d was related to aggregator %d but was not on its port list\n",
1465 port->slave->bond->dev->name,
1466 port->slave->dev->name,
1472 bond_for_each_slave(bond, slave, iter) {
1473 aggregator = &(SLAVE_AD_INFO(slave)->aggregator);
1498 slave_dbg(bond->dev, slave->dev, "Port %d joined LAG %d (existing LAG)\n",
1545 slave_dbg(bond->dev, port->slave->dev, "Port %d joined LAG %d (new LAG)\n",
1549 slave_err(bond->dev, port->slave->dev,
1631 net_warn_ratelimited("%s: (slave %s): Impossible agg select mode %d\n",
1632 curr->slave->bond->dev->name,
1633 curr->slave->dev->name,
1650 if (netif_running(port->slave->dev) &&
1651 netif_carrier_ok(port->slave->dev))
1661 * @update_slave_arr: Does slave array need update?
1688 struct bonding *bond = agg->slave->bond;
1690 struct slave *slave;
1698 bond_for_each_slave_rcu(bond, slave, iter) {
1699 agg = &(SLAVE_AD_INFO(slave)->aggregator);
1734 netdev_dbg(bond->dev, "(slave %s): best Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1735 best->slave ? best->slave->dev->name : "NULL",
1740 netdev_dbg(bond->dev, "(slave %s): best ports %p slave %p\n",
1741 best->slave ? best->slave->dev->name : "NULL",
1742 best->lag_ports, best->slave);
1744 bond_for_each_slave_rcu(bond, slave, iter) {
1745 agg = &(SLAVE_AD_INFO(slave)->aggregator);
1747 slave_dbg(bond->dev, slave->dev, "Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1760 netdev_dbg(bond->dev, "(slave %s): LAG %d chosen as the active LAG\n",
1761 best->slave ? best->slave->dev->name : "NULL",
1763 netdev_dbg(bond->dev, "(slave %s): Agg=%d; P=%d; a k=%d; p k=%d; Ind=%d; Act=%d\n",
1764 best->slave ? best->slave->dev->name : "NULL",
1822 aggregator->slave ?
1823 aggregator->slave->dev->name : "NULL",
1839 aggregator->slave = NULL;
1912 * @update_slave_arr: Does slave array need update?
1920 slave_dbg(port->slave->bond->dev, port->slave->dev,
1933 * @update_slave_arr: Does slave array need update?
1941 slave_dbg(port->slave->bond->dev, port->slave->dev,
1961 atomic64_inc(&SLAVE_AD_INFO(port->slave)->stats.marker_rx);
1962 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.marker_rx);
1971 slave_dbg(port->slave->bond->dev, port->slave->dev,
1988 atomic64_inc(&SLAVE_AD_INFO(port->slave)->stats.marker_resp_rx);
1989 atomic64_inc(&BOND_AD_INFO(port->slave->bond).stats.marker_resp_rx);
2037 * bond_3ad_bind_slave - initialize a slave's port
2038 * @slave: slave struct to work on
2043 void bond_3ad_bind_slave(struct slave *slave)
2045 struct bonding *bond = bond_get_bond_by_slave(slave);
2049 /* check that the slave has not been initialized yet. */
2050 if (SLAVE_AD_INFO(slave)->port.slave != slave) {
2053 port = &(SLAVE_AD_INFO(slave)->port);
2057 port->slave = slave;
2058 port->actor_port_number = SLAVE_AD_INFO(slave)->id;
2074 aggregator = &(SLAVE_AD_INFO(slave)->aggregator);
2080 aggregator->slave = slave;
2087 * bond_3ad_unbind_slave - deinitialize a slave's port
2088 * @slave: slave struct to work on
2094 void bond_3ad_unbind_slave(struct slave *slave)
2099 struct bonding *bond = slave->bond;
2100 struct slave *slave_iter;
2106 aggregator = &(SLAVE_AD_INFO(slave)->aggregator);
2107 port = &(SLAVE_AD_INFO(slave)->port);
2109 /* if slave is null, the whole port is not initialized */
2110 if (!port->slave) {
2111 slave_warn(bond->dev, slave->dev, "Trying to unbind an uninitialized port\n");
2115 slave_dbg(bond->dev, slave->dev, "Unbinding Link Aggregation Group %d\n",
2129 * except the port related to this slave(thats ensure us that
2154 slave_dbg(bond->dev, slave->dev, "Some port(s) related to LAG %d - replacing with LAG %d\n",
2160 slave_info(bond->dev, slave->dev, "Removing an active aggregator\n");
2191 slave_warn(bond->dev, slave->dev, "unbinding aggregator, and could not find a new aggregator for its ports\n");
2200 slave_info(bond->dev, slave->dev, "Removing an active aggregator\n");
2210 slave_dbg(bond->dev, slave->dev, "Unbinding port %d\n", port->actor_port_number);
2234 slave_info(bond->dev, slave->dev, "Removing an active aggregator\n");
2244 port->slave = NULL;
2260 struct slave *slave;
2273 bond_for_each_slave(bond, slave, iter) {
2274 struct port *port = &(SLAVE_AD_INFO(slave))->port;
2323 struct slave *slave;
2340 slave = bond_first_slave_rcu(bond);
2341 port = slave ? &(SLAVE_AD_INFO(slave)->port) : NULL;
2345 if (!port->slave) {
2358 bond_for_each_slave_rcu(bond, slave, iter) {
2359 port = &(SLAVE_AD_INFO(slave)->port);
2360 if (!port->slave) {
2379 bond_for_each_slave_rcu(bond, slave, iter) {
2380 if (slave->should_notify) {
2401 * @slave: slave struct to work on
2407 static int bond_3ad_rx_indication(struct lacpdu *lacpdu, struct slave *slave)
2409 struct bonding *bond = slave->bond;
2415 port = &(SLAVE_AD_INFO(slave)->port);
2416 if (!port->slave) {
2417 net_warn_ratelimited("%s: Warning: port of slave %s is uninitialized\n",
2418 slave->dev->name, slave->bond->dev->name);
2425 slave_dbg(slave->bond->dev, slave->dev,
2429 spin_lock(&slave->bond->mode_lock);
2431 spin_unlock(&slave->bond->mode_lock);
2441 slave_dbg(slave->bond->dev, slave->dev, "Received Marker Information on port %d\n",
2446 slave_dbg(slave->bond->dev, slave->dev, "Received Marker Response on port %d\n",
2451 slave_dbg(slave->bond->dev, slave->dev, "Received an unknown Marker subtype on port %d\n",
2453 stat = &SLAVE_AD_INFO(slave)->stats.marker_unknown_rx;
2460 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.lacpdu_unknown_rx);
2502 slave_err(port->slave->bond->dev,
2503 port->slave->dev,
2515 * bond_3ad_adapter_speed_duplex_changed - handle a slave's speed / duplex
2518 * @slave: slave struct to work on
2522 void bond_3ad_adapter_speed_duplex_changed(struct slave *slave)
2526 port = &(SLAVE_AD_INFO(slave)->port);
2528 /* if slave is null, the whole port is not initialized */
2529 if (!port->slave) {
2530 slave_warn(slave->bond->dev, slave->dev,
2535 spin_lock_bh(&slave->bond->mode_lock);
2537 spin_unlock_bh(&slave->bond->mode_lock);
2538 slave_dbg(slave->bond->dev, slave->dev, "Port %d changed speed/duplex\n",
2543 * bond_3ad_handle_link_change - handle a slave's link status change indication
2544 * @slave: slave struct to work on
2549 void bond_3ad_handle_link_change(struct slave *slave, char link)
2555 port = &(SLAVE_AD_INFO(slave)->port);
2557 /* if slave is null, the whole port is not initialized */
2558 if (!port->slave) {
2559 slave_warn(slave->bond->dev, slave->dev, "link status changed for uninitialized port\n");
2563 spin_lock_bh(&slave->bond->mode_lock);
2582 spin_unlock_bh(&slave->bond->mode_lock);
2584 slave_dbg(slave->bond->dev, slave->dev, "Port %d changed link status to %s\n",
2591 bond_update_slave_arr(slave->bond, NULL);
2610 struct slave *first_slave;
2652 struct slave *slave;
2655 bond_for_each_slave_rcu(bond, slave, iter) {
2656 port = &(SLAVE_AD_INFO(slave)->port);
2687 struct slave *slave)
2699 atomic64_inc(&SLAVE_AD_INFO(slave)->stats.lacpdu_illegal_rx);
2704 return bond_3ad_rx_indication(lacpdu, slave);
2722 struct slave *slave;
2727 bond_for_each_slave(bond, slave, iter) {
2728 port = &(SLAVE_AD_INFO(slave)->port);