• Home
  • Raw
  • Download

Lines Matching +full:primary +full:- +full:bond

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * drivers/net/bond/bond_netlink.c - Netlink interface for bonding
41 if (nla_put_u8(skb, IFLA_BOND_SLAVE_MII_STATUS, slave->link)) in bond_fill_slave_info()
45 slave->link_failure_count)) in bond_fill_slave_info()
49 slave_dev->addr_len, slave->perm_hwaddr)) in bond_fill_slave_info()
52 if (nla_put_u16(skb, IFLA_BOND_SLAVE_QUEUE_ID, slave->queue_id)) in bond_fill_slave_info()
55 if (BOND_MODE(slave->bond) == BOND_MODE_8023AD) { in bond_fill_slave_info()
59 ad_port = &SLAVE_AD_INFO(slave)->port; in bond_fill_slave_info()
60 agg = SLAVE_AD_INFO(slave)->port.aggregator; in bond_fill_slave_info()
63 agg->aggregator_identifier)) in bond_fill_slave_info()
67 ad_port->actor_oper_port_state)) in bond_fill_slave_info()
71 ad_port->partner_oper.port_state)) in bond_fill_slave_info()
79 return -EMSGSIZE; in bond_fill_slave_info()
123 return -EINVAL; in bond_validate()
125 return -EADDRNOTAVAIL; in bond_validate()
135 struct bonding *bond = netdev_priv(bond_dev); in bond_slave_changelink() local
148 slave_dev->name, queue_id); in bond_slave_changelink()
150 err = __bond_opt_set(bond, BOND_OPT_QUEUE_ID, &newval); in bond_slave_changelink()
162 struct bonding *bond = netdev_priv(bond_dev); in bond_changelink() local
174 err = __bond_opt_set(bond, BOND_OPT_MODE, &newval); in bond_changelink()
187 return -ENODEV; in bond_changelink()
188 active_slave = slave_dev->name; in bond_changelink()
191 err = __bond_opt_set(bond, BOND_OPT_ACTIVE_SLAVE, &newval); in bond_changelink()
199 err = __bond_opt_set(bond, BOND_OPT_MIIMON, &newval); in bond_changelink()
207 err = __bond_opt_set(bond, BOND_OPT_UPDELAY, &newval); in bond_changelink()
215 err = __bond_opt_set(bond, BOND_OPT_DOWNDELAY, &newval); in bond_changelink()
223 err = __bond_opt_set(bond, BOND_OPT_PEER_NOTIF_DELAY, &newval); in bond_changelink()
231 err = __bond_opt_set(bond, BOND_OPT_USE_CARRIER, &newval); in bond_changelink()
239 netdev_err(bond->dev, "ARP monitoring cannot be used with MII monitoring\n"); in bond_changelink()
240 return -EINVAL; in bond_changelink()
244 err = __bond_opt_set(bond, BOND_OPT_ARP_INTERVAL, &newval); in bond_changelink()
252 bond_option_arp_ip_targets_clear(bond); in bond_changelink()
257 return -EINVAL; in bond_changelink()
262 err = __bond_opt_set(bond, BOND_OPT_ARP_TARGETS, in bond_changelink()
268 if (i == 0 && bond->params.arp_interval) in bond_changelink()
269 netdev_warn(bond->dev, "Removing last arp target with arp_interval on\n"); in bond_changelink()
277 netdev_err(bond->dev, "ARP validating cannot be used with MII monitoring\n"); in bond_changelink()
278 return -EINVAL; in bond_changelink()
282 err = __bond_opt_set(bond, BOND_OPT_ARP_VALIDATE, &newval); in bond_changelink()
291 err = __bond_opt_set(bond, BOND_OPT_ARP_ALL_TARGETS, &newval); in bond_changelink()
298 char *primary = ""; in bond_changelink() local
302 primary = dev->name; in bond_changelink()
304 bond_opt_initstr(&newval, primary); in bond_changelink()
305 err = __bond_opt_set(bond, BOND_OPT_PRIMARY, &newval); in bond_changelink()
314 err = __bond_opt_set(bond, BOND_OPT_PRIMARY_RESELECT, &newval); in bond_changelink()
323 err = __bond_opt_set(bond, BOND_OPT_FAIL_OVER_MAC, &newval); in bond_changelink()
332 err = __bond_opt_set(bond, BOND_OPT_XMIT_HASH, &newval); in bond_changelink()
341 err = __bond_opt_set(bond, BOND_OPT_RESEND_IGMP, &newval); in bond_changelink()
350 err = __bond_opt_set(bond, BOND_OPT_NUM_PEER_NOTIF, &newval); in bond_changelink()
359 err = __bond_opt_set(bond, BOND_OPT_ALL_SLAVES_ACTIVE, &newval); in bond_changelink()
368 err = __bond_opt_set(bond, BOND_OPT_MINLINKS, &newval); in bond_changelink()
377 err = __bond_opt_set(bond, BOND_OPT_LP_INTERVAL, &newval); in bond_changelink()
386 err = __bond_opt_set(bond, BOND_OPT_PACKETS_PER_SLAVE, &newval); in bond_changelink()
395 err = __bond_opt_set(bond, BOND_OPT_LACP_RATE, &newval); in bond_changelink()
404 err = __bond_opt_set(bond, BOND_OPT_AD_SELECT, &newval); in bond_changelink()
413 err = __bond_opt_set(bond, BOND_OPT_AD_ACTOR_SYS_PRIO, &newval); in bond_changelink()
422 err = __bond_opt_set(bond, BOND_OPT_AD_USER_PORT_KEY, &newval); in bond_changelink()
428 return -EINVAL; in bond_changelink()
432 err = __bond_opt_set(bond, BOND_OPT_AD_ACTOR_SYSTEM, &newval); in bond_changelink()
440 err = __bond_opt_set(bond, BOND_OPT_TLB_DYNAMIC_LB, &newval); in bond_changelink()
460 struct bonding *bond = netdev_priv(bond_dev); in bond_newlink() local
463 bond_work_init_all(bond); in bond_newlink()
509 static int bond_option_active_slave_get_ifindex(struct bonding *bond) in bond_option_active_slave_get_ifindex() argument
515 slave = bond_option_active_slave_get_rcu(bond); in bond_option_active_slave_get_ifindex()
516 ifindex = slave ? slave->ifindex : 0; in bond_option_active_slave_get_ifindex()
524 struct bonding *bond = netdev_priv(bond_dev); in bond_fill_info() local
528 struct slave *primary; in bond_fill_info() local
530 if (nla_put_u8(skb, IFLA_BOND_MODE, BOND_MODE(bond))) in bond_fill_info()
533 ifindex = bond_option_active_slave_get_ifindex(bond); in bond_fill_info()
537 if (nla_put_u32(skb, IFLA_BOND_MIIMON, bond->params.miimon)) in bond_fill_info()
541 bond->params.updelay * bond->params.miimon)) in bond_fill_info()
545 bond->params.downdelay * bond->params.miimon)) in bond_fill_info()
549 bond->params.peer_notif_delay * bond->params.miimon)) in bond_fill_info()
552 if (nla_put_u8(skb, IFLA_BOND_USE_CARRIER, bond->params.use_carrier)) in bond_fill_info()
555 if (nla_put_u32(skb, IFLA_BOND_ARP_INTERVAL, bond->params.arp_interval)) in bond_fill_info()
564 if (bond->params.arp_targets[i]) { in bond_fill_info()
565 if (nla_put_be32(skb, i, bond->params.arp_targets[i])) in bond_fill_info()
576 if (nla_put_u32(skb, IFLA_BOND_ARP_VALIDATE, bond->params.arp_validate)) in bond_fill_info()
580 bond->params.arp_all_targets)) in bond_fill_info()
583 primary = rtnl_dereference(bond->primary_slave); in bond_fill_info()
584 if (primary && in bond_fill_info()
585 nla_put_u32(skb, IFLA_BOND_PRIMARY, primary->dev->ifindex)) in bond_fill_info()
589 bond->params.primary_reselect)) in bond_fill_info()
593 bond->params.fail_over_mac)) in bond_fill_info()
597 bond->params.xmit_policy)) in bond_fill_info()
601 bond->params.resend_igmp)) in bond_fill_info()
605 bond->params.num_peer_notif)) in bond_fill_info()
609 bond->params.all_slaves_active)) in bond_fill_info()
613 bond->params.min_links)) in bond_fill_info()
617 bond->params.lp_interval)) in bond_fill_info()
620 packets_per_slave = bond->params.packets_per_slave; in bond_fill_info()
626 bond->params.lacp_fast)) in bond_fill_info()
630 bond->params.ad_select)) in bond_fill_info()
634 bond->params.tlb_dynamic_lb)) in bond_fill_info()
637 if (BOND_MODE(bond) == BOND_MODE_8023AD) { in bond_fill_info()
642 bond->params.ad_actor_sys_prio)) in bond_fill_info()
646 bond->params.ad_user_port_key)) in bond_fill_info()
650 ETH_ALEN, &bond->params.ad_actor_system)) in bond_fill_info()
653 if (!bond_3ad_get_active_agg_info(bond, &info)) { in bond_fill_info()
684 return -EMSGSIZE; in bond_fill_info()
707 struct bonding *bond; in bond_fill_linkxstats() local
711 bond = netdev_priv(dev); in bond_fill_linkxstats()
717 bond = slave->bond; in bond_fill_linkxstats()
720 return -EINVAL; in bond_fill_linkxstats()
725 return -EMSGSIZE; in bond_fill_linkxstats()
726 if (BOND_MODE(bond) == BOND_MODE_8023AD) { in bond_fill_linkxstats()
730 stats = &SLAVE_AD_INFO(slave)->stats; in bond_fill_linkxstats()
732 stats = &BOND_AD_INFO(bond).stats; in bond_fill_linkxstats()
737 return -EMSGSIZE; in bond_fill_linkxstats()
743 return -EMSGSIZE; in bond_fill_linkxstats()
753 .kind = "bond",
785 MODULE_ALIAS_RTNL_LINK("bond");