Lines Matching refs:bond_dev
263 static int bond_init(struct net_device *bond_dev);
264 static void bond_uninit(struct net_device *bond_dev);
265 static void bond_get_stats(struct net_device *bond_dev,
375 static int bond_vlan_rx_add_vid(struct net_device *bond_dev, in bond_vlan_rx_add_vid() argument
378 struct bonding *bond = netdev_priv(bond_dev); in bond_vlan_rx_add_vid()
409 static int bond_vlan_rx_kill_vid(struct net_device *bond_dev, in bond_vlan_rx_kill_vid() argument
412 struct bonding *bond = netdev_priv(bond_dev); in bond_vlan_rx_kill_vid()
438 struct net_device *bond_dev = xs->xso.dev; in bond_ipsec_dev() local
442 bond = netdev_priv(bond_dev); in bond_ipsec_dev()
455 bond_dev->name, slave->dev->name, xs->xso.real_dev->name); in bond_ipsec_dev()
466 static int bond_ipsec_add_sa(struct net_device *bond_dev, in bond_ipsec_add_sa() argument
477 if (!bond_dev) in bond_ipsec_add_sa()
481 bond = netdev_priv(bond_dev); in bond_ipsec_add_sa()
523 struct net_device *bond_dev = bond->dev; in bond_ipsec_add_sa_all() local
538 slave_warn(bond_dev, real_dev, in bond_ipsec_add_sa_all()
551 slave_warn(bond_dev, real_dev, "%s: failed to add SA\n", __func__); in bond_ipsec_add_sa_all()
578 static void bond_ipsec_del_sa(struct net_device *bond_dev, in bond_ipsec_del_sa() argument
583 if (!bond_dev || !xs->xso.real_dev) in bond_ipsec_del_sa()
591 slave_warn(bond_dev, real_dev, "%s: no slave xdo_dev_state_delete\n", __func__); in bond_ipsec_del_sa()
600 struct net_device *bond_dev = bond->dev; in bond_ipsec_del_sa_all() local
618 slave_warn(bond_dev, real_dev, in bond_ipsec_del_sa_all()
639 static void bond_ipsec_free_sa(struct net_device *bond_dev, in bond_ipsec_free_sa() argument
646 if (!bond_dev) in bond_ipsec_free_sa()
649 bond = netdev_priv(bond_dev); in bond_ipsec_free_sa()
911 static void bond_hw_addr_flush(struct net_device *bond_dev, in bond_hw_addr_flush() argument
914 struct bonding *bond = netdev_priv(bond_dev); in bond_hw_addr_flush()
916 dev_uc_unsync(slave_dev, bond_dev); in bond_hw_addr_flush()
917 dev_mc_unsync(slave_dev, bond_dev); in bond_hw_addr_flush()
972 static int bond_set_dev_addr(struct net_device *bond_dev, in bond_set_dev_addr() argument
977 slave_dbg(bond_dev, slave_dev, "bond_dev=%p slave_dev=%p slave_dev->addr_len=%d\n", in bond_set_dev_addr()
978 bond_dev, slave_dev, slave_dev->addr_len); in bond_set_dev_addr()
979 err = netif_pre_changeaddr_notify(bond_dev, slave_dev->dev_addr, NULL); in bond_set_dev_addr()
983 __dev_addr_set(bond_dev, slave_dev->dev_addr, slave_dev->addr_len); in bond_set_dev_addr()
984 bond_dev->addr_assign_type = NET_ADDR_STOLEN; in bond_set_dev_addr()
985 call_netdevice_notifiers(NETDEV_CHANGEADDR, bond_dev); in bond_set_dev_addr()
1421 static void bond_poll_controller(struct net_device *bond_dev) in bond_poll_controller() argument
1423 struct bonding *bond = netdev_priv(bond_dev); in bond_poll_controller()
1449 static void bond_netpoll_cleanup(struct net_device *bond_dev) in bond_netpoll_cleanup() argument
1451 struct bonding *bond = netdev_priv(bond_dev); in bond_netpoll_cleanup()
1484 static void bond_netpoll_cleanup(struct net_device *bond_dev) in bond_netpoll_cleanup() argument
1512 static int bond_header_create(struct sk_buff *skb, struct net_device *bond_dev, in bond_header_create() argument
1516 struct bonding *bond = netdev_priv(bond_dev); in bond_header_create()
1558 static void bond_setup_by_slave(struct net_device *bond_dev, in bond_setup_by_slave() argument
1561 bool was_up = !!(bond_dev->flags & IFF_UP); in bond_setup_by_slave()
1563 dev_close(bond_dev); in bond_setup_by_slave()
1565 bond_dev->header_ops = slave_dev->header_ops ? in bond_setup_by_slave()
1568 bond_dev->type = slave_dev->type; in bond_setup_by_slave()
1569 bond_dev->hard_header_len = slave_dev->hard_header_len; in bond_setup_by_slave()
1570 bond_dev->needed_headroom = slave_dev->needed_headroom; in bond_setup_by_slave()
1571 bond_dev->addr_len = slave_dev->addr_len; in bond_setup_by_slave()
1573 memcpy(bond_dev->broadcast, slave_dev->broadcast, in bond_setup_by_slave()
1577 bond_dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST); in bond_setup_by_slave()
1578 bond_dev->flags |= (IFF_POINTOPOINT | IFF_NOARP); in bond_setup_by_slave()
1581 dev_open(bond_dev, NULL); in bond_setup_by_slave()
1835 #define BOND_NL_ERR(bond_dev, extack, errmsg) do { \ argument
1839 netdev_err(bond_dev, "Error: %s\n", errmsg); \
1842 #define SLAVE_NL_ERR(bond_dev, slave_dev, extack, errmsg) do { \ argument
1846 slave_err(bond_dev, slave_dev, "Error: %s\n", errmsg); \
1854 static void bond_ether_setup(struct net_device *bond_dev) in bond_ether_setup() argument
1856 unsigned int flags = bond_dev->flags & (IFF_SLAVE | IFF_UP); in bond_ether_setup()
1858 ether_setup(bond_dev); in bond_ether_setup()
1859 bond_dev->flags |= IFF_MASTER | flags; in bond_ether_setup()
1860 bond_dev->priv_flags &= ~IFF_TX_SKB_SHARING; in bond_ether_setup()
1863 void bond_xdp_set_features(struct net_device *bond_dev) in bond_xdp_set_features() argument
1865 struct bonding *bond = netdev_priv(bond_dev); in bond_xdp_set_features()
1873 xdp_clear_features_flag(bond_dev); in bond_xdp_set_features()
1882 xdp_set_features_flag(bond_dev, val); in bond_xdp_set_features()
1886 int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev, in bond_enslave() argument
1889 struct bonding *bond = netdev_priv(bond_dev); in bond_enslave()
1897 BOND_NL_ERR(bond_dev, extack, in bond_enslave()
1904 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
1909 if (bond_dev == slave_dev) { in bond_enslave()
1910 BOND_NL_ERR(bond_dev, extack, "Cannot enslave bond to itself."); in bond_enslave()
1917 slave_dbg(bond_dev, slave_dev, "is NETIF_F_VLAN_CHALLENGED\n"); in bond_enslave()
1918 if (vlan_uses_dev(bond_dev)) { in bond_enslave()
1919 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
1923 …slave_warn(bond_dev, slave_dev, "enslaved VLAN challenged slave. Adding VLANs will be blocked as l… in bond_enslave()
1926 slave_dbg(bond_dev, slave_dev, "is !NETIF_F_VLAN_CHALLENGED\n"); in bond_enslave()
1930 slave_dbg(bond_dev, slave_dev, "is esp-hw-offload capable\n"); in bond_enslave()
1938 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
1951 if (bond_dev->type != slave_dev->type) { in bond_enslave()
1954 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
1958 slave_dbg(bond_dev, slave_dev, "change device type from %d to %d\n", in bond_enslave()
1959 bond_dev->type, slave_dev->type); in bond_enslave()
1962 bond_dev); in bond_enslave()
1965 slave_err(bond_dev, slave_dev, "refused to change device type\n"); in bond_enslave()
1970 dev_uc_flush(bond_dev); in bond_enslave()
1971 dev_mc_flush(bond_dev); in bond_enslave()
1974 bond_setup_by_slave(bond_dev, slave_dev); in bond_enslave()
1976 bond_ether_setup(bond_dev); in bond_enslave()
1979 bond_dev); in bond_enslave()
1981 } else if (bond_dev->type != slave_dev->type) { in bond_enslave()
1982 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
1989 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
1997 …slave_warn(bond_dev, slave_dev, "The slave device specified does not support setting the MAC addre… in bond_enslave()
2002 slave_warn(bond_dev, slave_dev, "Setting fail_over_mac to active for active-backup mode\n"); in bond_enslave()
2004 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
2039 slave_err(bond_dev, slave_dev, "Error %d calling dev_set_mtu\n", res); in bond_enslave()
2055 memcpy(ss.__data, bond_dev->dev_addr, bond_dev->addr_len); in bond_enslave()
2059 memcmp(slave_dev->dev_addr, bond_dev->dev_addr, bond_dev->addr_len) == 0) { in bond_enslave()
2071 slave_err(bond_dev, slave_dev, "Error %d calling set_mac_address\n", res); in bond_enslave()
2083 slave_err(bond_dev, slave_dev, "Opening slave failed\n"); in bond_enslave()
2100 res = vlan_vids_add_by_dev(slave_dev, bond_dev); in bond_enslave()
2102 slave_err(bond_dev, slave_dev, "Couldn't add bond vlan ids\n"); in bond_enslave()
2152 slave_dbg(bond_dev, slave_dev, "Initial state of slave is BOND_LINK_%s\n", in bond_enslave()
2195 slave_dbg(bond_dev, slave_dev, "This slave is always active in trunk mode\n"); in bond_enslave()
2214 …slave_info(bond_dev, slave_dev, "master_dev is using netpoll, but new slave device does not suppor… in bond_enslave()
2221 if (!(bond_dev->features & NETIF_F_LRO)) in bond_enslave()
2227 slave_dbg(bond_dev, slave_dev, "Error %d calling netdev_rx_handler_register\n", res); in bond_enslave()
2233 slave_dbg(bond_dev, slave_dev, "Error %d calling bond_master_upper_dev_link\n", res); in bond_enslave()
2241 slave_dbg(bond_dev, slave_dev, "Error %d calling bond_sysfs_slave_add\n", res); in bond_enslave()
2250 if (bond_dev->flags & IFF_PROMISC) { in bond_enslave()
2257 if (bond_dev->flags & IFF_ALLMULTI) { in bond_enslave()
2260 if (bond_dev->flags & IFF_PROMISC) in bond_enslave()
2266 if (bond_dev->flags & IFF_UP) { in bond_enslave()
2267 netif_addr_lock_bh(bond_dev); in bond_enslave()
2268 dev_mc_sync_multiple(slave_dev, bond_dev); in bond_enslave()
2269 dev_uc_sync_multiple(slave_dev, bond_dev); in bond_enslave()
2270 netif_addr_unlock_bh(bond_dev); in bond_enslave()
2295 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
2309 SLAVE_NL_ERR(bond_dev, slave_dev, extack, in bond_enslave()
2318 slave_dbg(bond_dev, slave_dev, "Error %d calling ndo_bpf\n", res); in bond_enslave()
2330 bond_xdp_set_features(bond_dev); in bond_enslave()
2332 slave_info(bond_dev, slave_dev, "Enslaving as %s interface with %s link\n", in bond_enslave()
2351 vlan_vids_del_by_dev(slave_dev, bond_dev); in bond_enslave()
2392 if (ether_addr_equal_64bits(bond_dev->dev_addr, in bond_enslave()
2394 eth_hw_addr_random(bond_dev); in bond_enslave()
2395 if (bond_dev->type != ARPHRD_ETHER) { in bond_enslave()
2396 dev_close(bond_dev); in bond_enslave()
2397 bond_ether_setup(bond_dev); in bond_enslave()
2415 static int __bond_release_one(struct net_device *bond_dev, in __bond_release_one() argument
2419 struct bonding *bond = netdev_priv(bond_dev); in __bond_release_one()
2422 int old_flags = bond_dev->flags; in __bond_release_one()
2423 netdev_features_t old_features = bond_dev->features; in __bond_release_one()
2427 !netdev_has_upper_dev(slave_dev, bond_dev)) { in __bond_release_one()
2428 slave_dbg(bond_dev, slave_dev, "cannot release slave\n"); in __bond_release_one()
2437 slave_info(bond_dev, slave_dev, "interface not enslaved\n"); in __bond_release_one()
2457 slave_warn(bond_dev, slave_dev, "failed to unload XDP program\n"); in __bond_release_one()
2474 slave_info(bond_dev, slave_dev, "Releasing %s interface\n", in __bond_release_one()
2483 if (ether_addr_equal_64bits(bond_dev->dev_addr, slave->perm_hwaddr) && in __bond_release_one()
2485 …slave_warn(bond_dev, slave_dev, "the permanent HWaddr of slave - %pM - is still in use by bond - s… in __bond_release_one()
2522 eth_hw_addr_random(bond_dev); in __bond_release_one()
2534 if (!(bond_dev->features & NETIF_F_VLAN_CHALLENGED) && in __bond_release_one()
2536 …slave_info(bond_dev, slave_dev, "last VLAN challenged slave left bond - VLAN blocking is removed\n… in __bond_release_one()
2538 vlan_vids_del_by_dev(slave_dev, bond_dev); in __bond_release_one()
2559 bond_hw_addr_flush(bond_dev, slave_dev); in __bond_release_one()
2589 bond_xdp_set_features(bond_dev); in __bond_release_one()
2596 int bond_release(struct net_device *bond_dev, struct net_device *slave_dev) in bond_release() argument
2598 return __bond_release_one(bond_dev, slave_dev, false, false); in bond_release()
2604 static int bond_release_and_destroy(struct net_device *bond_dev, in bond_release_and_destroy() argument
2607 struct bonding *bond = netdev_priv(bond_dev); in bond_release_and_destroy()
2610 ret = __bond_release_one(bond_dev, slave_dev, false, true); in bond_release_and_destroy()
2612 bond_dev->reg_state != NETREG_UNREGISTERING) { in bond_release_and_destroy()
2613 bond_dev->priv_flags |= IFF_DISABLE_NETPOLL; in bond_release_and_destroy()
2614 netdev_info(bond_dev, "Destroying bond\n"); in bond_release_and_destroy()
2616 unregister_netdevice(bond_dev); in bond_release_and_destroy()
2621 static void bond_info_query(struct net_device *bond_dev, struct ifbond *info) in bond_info_query() argument
2623 struct bonding *bond = netdev_priv(bond_dev); in bond_info_query()
2628 static int bond_slave_info_query(struct net_device *bond_dev, struct ifslave *info) in bond_slave_info_query() argument
2630 struct bonding *bond = netdev_priv(bond_dev); in bond_slave_info_query()
2959 struct net_device *bond_dev = slave->bond->dev; in bond_handle_vlan() local
2975 slave_dbg(bond_dev, slave_dev, "inner tag: proto %X vid %X\n", in bond_handle_vlan()
2988 slave_dbg(bond_dev, slave_dev, "outer tag: proto %X vid %X\n", in bond_handle_vlan()
3004 struct net_device *bond_dev = slave->bond->dev; in bond_arp_send() local
3008 slave_dbg(bond_dev, slave_dev, "arp %d on slave: dst %pI4 src %pI4\n", in bond_arp_send()
3225 struct net_device *bond_dev = slave->bond->dev; in bond_ns_send() local
3230 slave_dbg(bond_dev, slave_dev, "NS on slave: dst %pI6c src %pI6c\n", in bond_ns_send()
3906 struct net_device *bond_dev) in bond_master_netdev_event() argument
3908 struct bonding *event_bond = netdev_priv(bond_dev); in bond_master_netdev_event()
3910 netdev_dbg(bond_dev, "%s called\n", __func__); in bond_master_netdev_event()
3918 xfrm_dev_state_flush(dev_net(bond_dev), bond_dev, true); in bond_master_netdev_event()
3936 struct net_device *bond_dev; in bond_slave_netdev_event() local
3947 bond_dev = slave->bond->dev; in bond_slave_netdev_event()
3951 slave_dbg(bond_dev, slave_dev, "%s called\n", __func__); in bond_slave_netdev_event()
3955 if (bond_dev->type != ARPHRD_ETHER) in bond_slave_netdev_event()
3956 bond_release_and_destroy(bond_dev, slave_dev); in bond_slave_netdev_event()
3958 __bond_release_one(bond_dev, slave_dev, false, true); in bond_slave_netdev_event()
4040 bond_xdp_set_features(bond_dev); in bond_slave_netdev_event()
4333 static int bond_open(struct net_device *bond_dev) in bond_open() argument
4335 struct bonding *bond = netdev_priv(bond_dev); in bond_open()
4396 static int bond_close(struct net_device *bond_dev) in bond_close() argument
4398 struct bonding *bond = netdev_priv(bond_dev); in bond_close()
4419 bond_hw_addr_flush(bond_dev, slave->dev); in bond_close()
4425 bond_hw_addr_flush(bond_dev, slave->dev); in bond_close()
4501 static void bond_get_stats(struct net_device *bond_dev, in bond_get_stats() argument
4504 struct bonding *bond = netdev_priv(bond_dev); in bond_get_stats()
4513 nest_level = bond_get_lowest_level_rcu(bond_dev); in bond_get_stats()
4534 static int bond_eth_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd) in bond_eth_ioctl() argument
4536 struct bonding *bond = netdev_priv(bond_dev); in bond_eth_ioctl()
4539 netdev_dbg(bond_dev, "bond_eth_ioctl: cmd=%d\n", cmd); in bond_eth_ioctl()
4571 static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd) in bond_do_ioctl() argument
4573 struct bonding *bond = netdev_priv(bond_dev); in bond_do_ioctl()
4583 netdev_dbg(bond_dev, "bond_ioctl: cmd=%d\n", cmd); in bond_do_ioctl()
4592 bond_info_query(bond_dev, &k_binfo); in bond_do_ioctl()
4603 res = bond_slave_info_query(bond_dev, &k_sinfo); in bond_do_ioctl()
4613 net = dev_net(bond_dev); in bond_do_ioctl()
4620 slave_dbg(bond_dev, slave_dev, "slave_dev=%p:\n", slave_dev); in bond_do_ioctl()
4627 res = bond_enslave(bond_dev, slave_dev, NULL); in bond_do_ioctl()
4630 res = bond_release(bond_dev, slave_dev); in bond_do_ioctl()
4633 res = bond_set_dev_addr(bond_dev, slave_dev); in bond_do_ioctl()
4647 static int bond_siocdevprivate(struct net_device *bond_dev, struct ifreq *ifr, in bond_siocdevprivate() argument
4654 return bond_do_ioctl(bond_dev, &ifrdata, SIOCBONDINFOQUERY); in bond_siocdevprivate()
4656 return bond_do_ioctl(bond_dev, &ifrdata, SIOCBONDSLAVEINFOQUERY); in bond_siocdevprivate()
4658 return bond_do_ioctl(bond_dev, ifr, SIOCBONDENSLAVE); in bond_siocdevprivate()
4660 return bond_do_ioctl(bond_dev, ifr, SIOCBONDRELEASE); in bond_siocdevprivate()
4662 return bond_do_ioctl(bond_dev, ifr, SIOCBONDSETHWADDR); in bond_siocdevprivate()
4664 return bond_do_ioctl(bond_dev, ifr, SIOCBONDCHANGEACTIVE); in bond_siocdevprivate()
4670 static void bond_change_rx_flags(struct net_device *bond_dev, int change) in bond_change_rx_flags() argument
4672 struct bonding *bond = netdev_priv(bond_dev); in bond_change_rx_flags()
4676 bond_dev->flags & IFF_PROMISC ? 1 : -1); in bond_change_rx_flags()
4680 bond_dev->flags & IFF_ALLMULTI ? 1 : -1); in bond_change_rx_flags()
4683 static void bond_set_rx_mode(struct net_device *bond_dev) in bond_set_rx_mode() argument
4685 struct bonding *bond = netdev_priv(bond_dev); in bond_set_rx_mode()
4693 dev_uc_sync(slave->dev, bond_dev); in bond_set_rx_mode()
4694 dev_mc_sync(slave->dev, bond_dev); in bond_set_rx_mode()
4698 dev_uc_sync_multiple(slave->dev, bond_dev); in bond_set_rx_mode()
4699 dev_mc_sync_multiple(slave->dev, bond_dev); in bond_set_rx_mode()
4761 static int bond_change_mtu(struct net_device *bond_dev, int new_mtu) in bond_change_mtu() argument
4763 struct bonding *bond = netdev_priv(bond_dev); in bond_change_mtu()
4768 netdev_dbg(bond_dev, "bond=%p, new_mtu=%d\n", bond, new_mtu); in bond_change_mtu()
4771 slave_dbg(bond_dev, slave->dev, "s %p c_m %p\n", in bond_change_mtu()
4785 slave_dbg(bond_dev, slave->dev, "err %d setting mtu to %d\n", in bond_change_mtu()
4791 WRITE_ONCE(bond_dev->mtu, new_mtu); in bond_change_mtu()
4803 tmp_res = dev_set_mtu(rollback_slave->dev, bond_dev->mtu); in bond_change_mtu()
4805 slave_dbg(bond_dev, rollback_slave->dev, "unwind err %d\n", in bond_change_mtu()
4818 static int bond_set_mac_address(struct net_device *bond_dev, void *addr) in bond_set_mac_address() argument
4820 struct bonding *bond = netdev_priv(bond_dev); in bond_set_mac_address()
4827 return bond_alb_set_mac_address(bond_dev, addr); in bond_set_mac_address()
4830 netdev_dbg(bond_dev, "%s: bond=%p\n", __func__, bond); in bond_set_mac_address()
4843 slave_dbg(bond_dev, slave->dev, "%s: slave=%p\n", in bond_set_mac_address()
4853 slave_dbg(bond_dev, slave->dev, "%s: err %d\n", in bond_set_mac_address()
4860 dev_addr_set(bond_dev, ss->__data); in bond_set_mac_address()
4864 memcpy(tmp_ss.__data, bond_dev->dev_addr, bond_dev->addr_len); in bond_set_mac_address()
4865 tmp_ss.ss_family = bond_dev->type; in bond_set_mac_address()
4876 slave_dbg(bond_dev, rollback_slave->dev, "%s: unwind err %d\n", in bond_set_mac_address()
5032 struct net_device *bond_dev) in bond_xmit_roundrobin() argument
5034 struct bonding *bond = netdev_priv(bond_dev); in bond_xmit_roundrobin()
5041 return bond_tx_drop(bond_dev, skb); in bond_xmit_roundrobin()
5053 struct net_device *bond_dev) in bond_xmit_activebackup() argument
5055 struct bonding *bond = netdev_priv(bond_dev); in bond_xmit_activebackup()
5062 return bond_tx_drop(bond_dev, skb); in bond_xmit_activebackup()
5307 struct net_device *bond_dev, in bond_xmit_broadcast() argument
5310 struct bonding *bond = netdev_priv(bond_dev); in bond_xmit_broadcast()
5336 bond_dev->name, __func__); in bond_xmit_broadcast()
5351 dev_core_stats_tx_dropped_inc(bond_dev); in bond_xmit_broadcast()
5602 bond_xdp_get_xmit_slave(struct net_device *bond_dev, struct xdp_buff *xdp) in bond_xdp_get_xmit_slave() argument
5604 struct bonding *bond = netdev_priv(bond_dev); in bond_xdp_get_xmit_slave()
5625 netdev_err(bond_dev, "Unknown bonding mode %d for xdp xmit\n", in bond_xdp_get_xmit_slave()
5636 static int bond_xdp_xmit(struct net_device *bond_dev, in bond_xdp_xmit() argument
5651 slave_dev = bond_xdp_get_xmit_slave(bond_dev, &xdp); in bond_xdp_xmit()
5840 static int bond_ethtool_get_link_ksettings(struct net_device *bond_dev, in bond_ethtool_get_link_ksettings() argument
5843 struct bonding *bond = netdev_priv(bond_dev); in bond_ethtool_get_link_ksettings()
5876 static void bond_ethtool_get_drvinfo(struct net_device *bond_dev, in bond_ethtool_get_drvinfo() argument
5884 static int bond_ethtool_get_ts_info(struct net_device *bond_dev, in bond_ethtool_get_ts_info() argument
5887 struct bonding *bond = netdev_priv(bond_dev); in bond_ethtool_get_ts_info()
5972 static void bond_destructor(struct net_device *bond_dev) in bond_destructor() argument
5974 struct bonding *bond = netdev_priv(bond_dev); in bond_destructor()
5982 void bond_setup(struct net_device *bond_dev) in bond_setup() argument
5984 struct bonding *bond = netdev_priv(bond_dev); in bond_setup()
5990 bond->dev = bond_dev; in bond_setup()
5993 ether_setup(bond_dev); in bond_setup()
5994 bond_dev->max_mtu = ETH_MAX_MTU; in bond_setup()
5995 bond_dev->netdev_ops = &bond_netdev_ops; in bond_setup()
5996 bond_dev->ethtool_ops = &bond_ethtool_ops; in bond_setup()
5998 bond_dev->needs_free_netdev = true; in bond_setup()
5999 bond_dev->priv_destructor = bond_destructor; in bond_setup()
6001 SET_NETDEV_DEVTYPE(bond_dev, &bond_type); in bond_setup()
6004 bond_dev->flags |= IFF_MASTER; in bond_setup()
6005 bond_dev->priv_flags |= IFF_BONDING | IFF_UNICAST_FLT | IFF_NO_QUEUE; in bond_setup()
6006 bond_dev->priv_flags &= ~(IFF_XMIT_DST_RELEASE | IFF_TX_SKB_SHARING); in bond_setup()
6010 bond_dev->xfrmdev_ops = &bond_xfrmdev_ops; in bond_setup()
6016 bond_dev->lltx = true; in bond_setup()
6019 bond_dev->netns_immutable = true; in bond_setup()
6028 bond_dev->hw_features = MASTER_UPPER_DEV_VLAN_FEATURES | in bond_setup()
6034 bond_dev->hw_features |= NETIF_F_GSO_ENCAP_ALL; in bond_setup()
6035 bond_dev->features |= bond_dev->hw_features; in bond_setup()
6036 bond_dev->features |= NETIF_F_HW_VLAN_CTAG_TX | NETIF_F_HW_VLAN_STAG_TX; in bond_setup()
6037 bond_dev->features |= NETIF_F_GSO_PARTIAL; in bond_setup()
6039 bond_dev->hw_features |= BOND_XFRM_FEATURES; in bond_setup()
6042 bond_dev->features |= BOND_XFRM_FEATURES; in bond_setup()
6049 static void bond_uninit(struct net_device *bond_dev) in bond_uninit() argument
6051 struct bonding *bond = netdev_priv(bond_dev); in bond_uninit()
6055 bond_netpoll_cleanup(bond_dev); in bond_uninit()
6059 __bond_release_one(bond_dev, slave->dev, true, true); in bond_uninit()
6060 netdev_info(bond_dev, "Released all slaves\n"); in bond_uninit()
6466 static int bond_init(struct net_device *bond_dev) in bond_init() argument
6468 struct bonding *bond = netdev_priv(bond_dev); in bond_init()
6469 struct bond_net *bn = net_generic(dev_net(bond_dev), bond_net_id); in bond_init()
6471 netdev_dbg(bond_dev, "Begin bond_init\n"); in bond_init()
6474 bond_dev->name); in bond_init()
6481 netdev_lockdep_set_classes(bond_dev); in bond_init()
6490 if (is_zero_ether_addr(bond_dev->dev_addr) && in bond_init()
6491 bond_dev->addr_assign_type == NET_ADDR_PERM) in bond_init()
6492 eth_hw_addr_random(bond_dev); in bond_init()
6509 struct net_device *bond_dev; in bond_create() local
6515 bond_dev = alloc_netdev_mq(sizeof(struct bonding), in bond_create()
6518 if (!bond_dev) in bond_create()
6521 bond = netdev_priv(bond_dev); in bond_create()
6522 dev_net_set(bond_dev, net); in bond_create()
6523 bond_dev->rtnl_link_ops = &bond_link_ops; in bond_create()
6525 res = register_netdevice(bond_dev); in bond_create()
6527 free_netdev(bond_dev); in bond_create()
6531 netif_carrier_off(bond_dev); in bond_create()