Lines Matching refs:ipvlan

10 	struct ipvl_dev *ipvlan;  in ipvlan_set_port_mode()  local
16 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_set_port_mode()
17 flags = ipvlan->dev->flags; in ipvlan_set_port_mode()
19 err = dev_change_flags(ipvlan->dev, in ipvlan_set_port_mode()
23 err = dev_change_flags(ipvlan->dev, in ipvlan_set_port_mode()
45 list_for_each_entry_continue_reverse(ipvlan, &port->ipvlans, pnode) { in ipvlan_set_port_mode()
46 flags = ipvlan->dev->flags; in ipvlan_set_port_mode()
49 dev_change_flags(ipvlan->dev, flags | IFF_NOARP, in ipvlan_set_port_mode()
52 dev_change_flags(ipvlan->dev, flags & ~IFF_NOARP, in ipvlan_set_port_mode()
129 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_init() local
130 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_init()
147 ipvlan->pcpu_stats = netdev_alloc_pcpu_stats(struct ipvl_pcpu_stats); in ipvlan_init()
148 if (!ipvlan->pcpu_stats) in ipvlan_init()
154 free_percpu(ipvlan->pcpu_stats); in ipvlan_init()
165 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_uninit() local
166 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_uninit()
169 free_percpu(ipvlan->pcpu_stats); in ipvlan_uninit()
179 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_open() local
182 if (ipvlan->port->mode == IPVLAN_MODE_L3 || in ipvlan_open()
183 ipvlan->port->mode == IPVLAN_MODE_L3S) in ipvlan_open()
189 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode) in ipvlan_open()
190 ipvlan_ht_addr_add(ipvlan, addr); in ipvlan_open()
198 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_stop() local
199 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_stop()
206 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode) in ipvlan_stop()
216 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_start_xmit() local
224 pcptr = this_cpu_ptr(ipvlan->pcpu_stats); in ipvlan_start_xmit()
231 this_cpu_inc(ipvlan->pcpu_stats->tx_drps); in ipvlan_start_xmit()
239 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_fix_features() local
242 features &= (ipvlan->sfeatures | ~IPVLAN_FEATURES); in ipvlan_fix_features()
243 features = netdev_increment_features(ipvlan->phy_dev->features, in ipvlan_fix_features()
253 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_change_rx_flags() local
254 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_change_rx_flags()
262 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_set_multicast_mac_filter() local
265 bitmap_fill(ipvlan->mac_filters, IPVLAN_MAC_FILTER_SIZE); in ipvlan_set_multicast_mac_filter()
280 bitmap_copy(ipvlan->mac_filters, mc_filters, in ipvlan_set_multicast_mac_filter()
283 dev_uc_sync(ipvlan->phy_dev, dev); in ipvlan_set_multicast_mac_filter()
284 dev_mc_sync(ipvlan->phy_dev, dev); in ipvlan_set_multicast_mac_filter()
290 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_stats64() local
292 if (ipvlan->pcpu_stats) { in ipvlan_get_stats64()
300 pcptr = per_cpu_ptr(ipvlan->pcpu_stats, idx); in ipvlan_get_stats64()
329 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_vlan_rx_add_vid() local
330 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_vlan_rx_add_vid()
338 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_vlan_rx_kill_vid() local
339 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_vlan_rx_kill_vid()
347 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_iflink() local
349 return ipvlan->phy_dev->ifindex; in ipvlan_get_iflink()
371 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_hard_header() local
372 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_hard_header()
389 static void ipvlan_adjust_mtu(struct ipvl_dev *ipvlan, struct net_device *dev) in ipvlan_adjust_mtu() argument
391 ipvlan->dev->mtu = dev->mtu; in ipvlan_adjust_mtu()
403 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_get_link_ksettings() local
405 return __ethtool_get_link_ksettings(ipvlan->phy_dev, cmd); in ipvlan_ethtool_get_link_ksettings()
417 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_get_msglevel() local
419 return ipvlan->msg_enable; in ipvlan_ethtool_get_msglevel()
424 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_set_msglevel() local
426 ipvlan->msg_enable = value; in ipvlan_ethtool_set_msglevel()
441 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_nl_changelink() local
442 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev); in ipvlan_nl_changelink()
447 if (!ns_capable(dev_net(ipvlan->phy_dev)->user_ns, CAP_NET_ADMIN)) in ipvlan_nl_changelink()
511 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_nl_fillinfo() local
512 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev); in ipvlan_nl_fillinfo()
534 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_link_new() local
568 ipvlan->phy_dev = phy_dev; in ipvlan_link_new()
569 ipvlan->dev = dev; in ipvlan_link_new()
570 ipvlan->sfeatures = IPVLAN_FEATURES; in ipvlan_link_new()
572 ipvlan_adjust_mtu(ipvlan, phy_dev); in ipvlan_link_new()
573 INIT_LIST_HEAD(&ipvlan->addrs); in ipvlan_link_new()
574 spin_lock_init(&ipvlan->addrs_lock); in ipvlan_link_new()
590 ipvlan->port = port; in ipvlan_link_new()
633 list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans); in ipvlan_link_new()
649 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_link_delete() local
652 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_link_delete()
653 list_for_each_entry_safe(addr, next, &ipvlan->addrs, anode) { in ipvlan_link_delete()
658 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_link_delete()
660 ida_simple_remove(&ipvlan->port->ida, dev->dev_id); in ipvlan_link_delete()
661 list_del_rcu(&ipvlan->pnode); in ipvlan_link_delete()
663 netdev_upper_dev_unlink(ipvlan->phy_dev, dev); in ipvlan_link_delete()
689 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_link_net() local
691 return dev_net(ipvlan->phy_dev); in ipvlan_get_link_net()
722 struct ipvl_dev *ipvlan, *next; in ipvlan_device_event() local
734 list_for_each_entry(ipvlan, &port->ipvlans, pnode) in ipvlan_device_event()
735 netif_stacked_transfer_operstate(ipvlan->phy_dev, in ipvlan_device_event()
736 ipvlan->dev); in ipvlan_device_event()
755 list_for_each_entry_safe(ipvlan, next, &port->ipvlans, pnode) in ipvlan_device_event()
756 ipvlan->dev->rtnl_link_ops->dellink(ipvlan->dev, in ipvlan_device_event()
762 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_device_event()
763 ipvlan->dev->gso_max_size = dev->gso_max_size; in ipvlan_device_event()
764 ipvlan->dev->gso_max_segs = dev->gso_max_segs; in ipvlan_device_event()
765 netdev_update_features(ipvlan->dev); in ipvlan_device_event()
770 list_for_each_entry(ipvlan, &port->ipvlans, pnode) in ipvlan_device_event()
771 ipvlan_adjust_mtu(ipvlan, dev); in ipvlan_device_event()
776 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_device_event()
777 err = dev_pre_changeaddr_notify(ipvlan->dev, in ipvlan_device_event()
786 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_device_event()
787 ether_addr_copy(ipvlan->dev->dev_addr, dev->dev_addr); in ipvlan_device_event()
788 call_netdevice_notifiers(NETDEV_CHANGEADDR, ipvlan->dev); in ipvlan_device_event()
800 static int ipvlan_add_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6) in ipvlan_add_addr() argument
808 addr->master = ipvlan; in ipvlan_add_addr()
819 list_add_tail_rcu(&addr->anode, &ipvlan->addrs); in ipvlan_add_addr()
824 if (netif_running(ipvlan->dev)) in ipvlan_add_addr()
825 ipvlan_ht_addr_add(ipvlan, addr); in ipvlan_add_addr()
830 static void ipvlan_del_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6) in ipvlan_del_addr() argument
834 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_del_addr()
835 addr = ipvlan_find_addr(ipvlan, iaddr, is_v6); in ipvlan_del_addr()
837 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_del_addr()
843 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_del_addr()
849 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_is_valid_dev() local
854 if (!ipvlan || !ipvlan->port) in ipvlan_is_valid_dev()
861 static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) in ipvlan_add_addr6() argument
865 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr6()
866 if (ipvlan_addr_busy(ipvlan->port, ip6_addr, true)) in ipvlan_add_addr6()
867 netif_err(ipvlan, ifup, ipvlan->dev, in ipvlan_add_addr6()
869 ip6_addr, ipvlan->dev->name); in ipvlan_add_addr6()
871 ret = ipvlan_add_addr(ipvlan, ip6_addr, true); in ipvlan_add_addr6()
872 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr6()
876 static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) in ipvlan_del_addr6() argument
878 return ipvlan_del_addr(ipvlan, ip6_addr, true); in ipvlan_del_addr6()
886 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr6_event() local
893 if (ipvlan_add_addr6(ipvlan, &if6->addr)) in ipvlan_addr6_event()
898 ipvlan_del_addr6(ipvlan, &if6->addr); in ipvlan_addr6_event()
910 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr6_validator_event() local
917 if (ipvlan_addr_busy(ipvlan->port, &i6vi->i6vi_addr, true)) { in ipvlan_addr6_validator_event()
929 static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) in ipvlan_add_addr4() argument
933 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr4()
934 if (ipvlan_addr_busy(ipvlan->port, ip4_addr, false)) in ipvlan_add_addr4()
935 netif_err(ipvlan, ifup, ipvlan->dev, in ipvlan_add_addr4()
937 ip4_addr, ipvlan->dev->name); in ipvlan_add_addr4()
939 ret = ipvlan_add_addr(ipvlan, ip4_addr, false); in ipvlan_add_addr4()
940 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr4()
944 static void ipvlan_del_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) in ipvlan_del_addr4() argument
946 return ipvlan_del_addr(ipvlan, ip4_addr, false); in ipvlan_del_addr4()
954 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr4_event() local
963 if (ipvlan_add_addr4(ipvlan, &ip4_addr)) in ipvlan_addr4_event()
969 ipvlan_del_addr4(ipvlan, &ip4_addr); in ipvlan_addr4_event()
981 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr4_validator_event() local
988 if (ipvlan_addr_busy(ipvlan->port, &ivi->ivi_addr, false)) { in ipvlan_addr4_validator_event()