Lines Matching refs:ipvlan

13 	struct ipvl_dev *ipvlan;  in ipvlan_set_port_mode()  local
19 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_set_port_mode()
20 flags = ipvlan->dev->flags; in ipvlan_set_port_mode()
22 err = dev_change_flags(ipvlan->dev, in ipvlan_set_port_mode()
26 err = dev_change_flags(ipvlan->dev, in ipvlan_set_port_mode()
48 list_for_each_entry_continue_reverse(ipvlan, &port->ipvlans, pnode) { in ipvlan_set_port_mode()
49 flags = ipvlan->dev->flags; in ipvlan_set_port_mode()
52 dev_change_flags(ipvlan->dev, flags | IFF_NOARP, in ipvlan_set_port_mode()
55 dev_change_flags(ipvlan->dev, flags & ~IFF_NOARP, in ipvlan_set_port_mode()
133 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_init() local
134 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_init()
151 ipvlan->pcpu_stats = netdev_alloc_pcpu_stats(struct ipvl_pcpu_stats); in ipvlan_init()
152 if (!ipvlan->pcpu_stats) in ipvlan_init()
158 free_percpu(ipvlan->pcpu_stats); in ipvlan_init()
169 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_uninit() local
170 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_uninit()
173 free_percpu(ipvlan->pcpu_stats); in ipvlan_uninit()
183 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_open() local
186 if (ipvlan->port->mode == IPVLAN_MODE_L3 || in ipvlan_open()
187 ipvlan->port->mode == IPVLAN_MODE_L3S) in ipvlan_open()
193 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode) in ipvlan_open()
194 ipvlan_ht_addr_add(ipvlan, addr); in ipvlan_open()
202 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_stop() local
203 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_stop()
210 list_for_each_entry_rcu(addr, &ipvlan->addrs, anode) in ipvlan_stop()
220 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_start_xmit() local
228 pcptr = this_cpu_ptr(ipvlan->pcpu_stats); in ipvlan_start_xmit()
235 this_cpu_inc(ipvlan->pcpu_stats->tx_drps); in ipvlan_start_xmit()
243 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_fix_features() local
246 features &= (ipvlan->sfeatures | ~IPVLAN_FEATURES); in ipvlan_fix_features()
247 features = netdev_increment_features(ipvlan->phy_dev->features, in ipvlan_fix_features()
257 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_change_rx_flags() local
258 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_change_rx_flags()
266 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_set_multicast_mac_filter() local
269 bitmap_fill(ipvlan->mac_filters, IPVLAN_MAC_FILTER_SIZE); in ipvlan_set_multicast_mac_filter()
284 bitmap_copy(ipvlan->mac_filters, mc_filters, in ipvlan_set_multicast_mac_filter()
287 dev_uc_sync(ipvlan->phy_dev, dev); in ipvlan_set_multicast_mac_filter()
288 dev_mc_sync(ipvlan->phy_dev, dev); in ipvlan_set_multicast_mac_filter()
294 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_stats64() local
296 if (ipvlan->pcpu_stats) { in ipvlan_get_stats64()
304 pcptr = per_cpu_ptr(ipvlan->pcpu_stats, idx); in ipvlan_get_stats64()
334 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_vlan_rx_add_vid() local
335 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_vlan_rx_add_vid()
343 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_vlan_rx_kill_vid() local
344 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_vlan_rx_kill_vid()
352 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_iflink() local
354 return READ_ONCE(ipvlan->phy_dev->ifindex); in ipvlan_get_iflink()
376 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_hard_header() local
377 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_hard_header()
395 static void ipvlan_adjust_mtu(struct ipvl_dev *ipvlan, struct net_device *dev) in ipvlan_adjust_mtu() argument
397 ipvlan->dev->mtu = dev->mtu; in ipvlan_adjust_mtu()
409 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_get_link_ksettings() local
411 return __ethtool_get_link_ksettings(ipvlan->phy_dev, cmd); in ipvlan_ethtool_get_link_ksettings()
423 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_get_msglevel() local
425 return ipvlan->msg_enable; in ipvlan_ethtool_get_msglevel()
430 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_set_msglevel() local
432 ipvlan->msg_enable = value; in ipvlan_ethtool_set_msglevel()
447 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_nl_changelink() local
448 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev); in ipvlan_nl_changelink()
453 if (!ns_capable(dev_net(ipvlan->phy_dev)->user_ns, CAP_NET_ADMIN)) in ipvlan_nl_changelink()
517 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_nl_fillinfo() local
518 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev); in ipvlan_nl_fillinfo()
540 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_link_new() local
576 ipvlan->phy_dev = phy_dev; in ipvlan_link_new()
577 ipvlan->dev = dev; in ipvlan_link_new()
578 ipvlan->sfeatures = IPVLAN_FEATURES; in ipvlan_link_new()
580 ipvlan_adjust_mtu(ipvlan, phy_dev); in ipvlan_link_new()
581 INIT_LIST_HEAD(&ipvlan->addrs); in ipvlan_link_new()
582 spin_lock_init(&ipvlan->addrs_lock); in ipvlan_link_new()
598 ipvlan->port = port; in ipvlan_link_new()
641 list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans); in ipvlan_link_new()
657 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_link_delete() local
660 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_link_delete()
661 list_for_each_entry_safe(addr, next, &ipvlan->addrs, anode) { in ipvlan_link_delete()
666 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_link_delete()
668 ida_free(&ipvlan->port->ida, dev->dev_id); in ipvlan_link_delete()
669 list_del_rcu(&ipvlan->pnode); in ipvlan_link_delete()
671 netdev_upper_dev_unlink(ipvlan->phy_dev, dev); in ipvlan_link_delete()
697 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_link_net() local
699 return dev_net(ipvlan->phy_dev); in ipvlan_get_link_net()
730 struct ipvl_dev *ipvlan, *next; in ipvlan_device_event() local
744 list_for_each_entry(ipvlan, &port->ipvlans, pnode) in ipvlan_device_event()
745 netif_stacked_transfer_operstate(ipvlan->phy_dev, in ipvlan_device_event()
746 ipvlan->dev); in ipvlan_device_event()
766 list_for_each_entry_safe(ipvlan, next, &port->ipvlans, pnode) in ipvlan_device_event()
767 ipvlan->dev->rtnl_link_ops->dellink(ipvlan->dev, in ipvlan_device_event()
773 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_device_event()
774 netif_inherit_tso_max(ipvlan->dev, dev); in ipvlan_device_event()
775 netdev_update_features(ipvlan->dev); in ipvlan_device_event()
780 list_for_each_entry(ipvlan, &port->ipvlans, pnode) in ipvlan_device_event()
781 ipvlan_adjust_mtu(ipvlan, dev); in ipvlan_device_event()
786 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_device_event()
787 err = netif_pre_changeaddr_notify(ipvlan->dev, in ipvlan_device_event()
796 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_device_event()
797 eth_hw_addr_set(ipvlan->dev, dev->dev_addr); in ipvlan_device_event()
798 call_netdevice_notifiers(NETDEV_CHANGEADDR, ipvlan->dev); in ipvlan_device_event()
809 list_for_each_entry(ipvlan, &port->ipvlans, pnode) in ipvlan_device_event()
810 call_netdevice_notifiers(event, ipvlan->dev); in ipvlan_device_event()
816 static int ipvlan_add_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6) in ipvlan_add_addr() argument
824 addr->master = ipvlan; in ipvlan_add_addr()
835 list_add_tail_rcu(&addr->anode, &ipvlan->addrs); in ipvlan_add_addr()
840 if (netif_running(ipvlan->dev)) in ipvlan_add_addr()
841 ipvlan_ht_addr_add(ipvlan, addr); in ipvlan_add_addr()
846 static void ipvlan_del_addr(struct ipvl_dev *ipvlan, void *iaddr, bool is_v6) in ipvlan_del_addr() argument
850 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_del_addr()
851 addr = ipvlan_find_addr(ipvlan, iaddr, is_v6); in ipvlan_del_addr()
853 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_del_addr()
859 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_del_addr()
865 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_is_valid_dev() local
870 if (!ipvlan || !ipvlan->port) in ipvlan_is_valid_dev()
877 static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) in ipvlan_add_addr6() argument
881 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr6()
882 if (ipvlan_addr_busy(ipvlan->port, ip6_addr, true)) in ipvlan_add_addr6()
883 netif_err(ipvlan, ifup, ipvlan->dev, in ipvlan_add_addr6()
885 ip6_addr, ipvlan->dev->name); in ipvlan_add_addr6()
887 ret = ipvlan_add_addr(ipvlan, ip6_addr, true); in ipvlan_add_addr6()
888 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr6()
892 static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) in ipvlan_del_addr6() argument
894 return ipvlan_del_addr(ipvlan, ip6_addr, true); in ipvlan_del_addr6()
902 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr6_event() local
909 if (ipvlan_add_addr6(ipvlan, &if6->addr)) in ipvlan_addr6_event()
914 ipvlan_del_addr6(ipvlan, &if6->addr); in ipvlan_addr6_event()
926 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr6_validator_event() local
933 if (ipvlan_addr_busy(ipvlan->port, &i6vi->i6vi_addr, true)) { in ipvlan_addr6_validator_event()
945 static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) in ipvlan_add_addr4() argument
949 spin_lock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr4()
950 if (ipvlan_addr_busy(ipvlan->port, ip4_addr, false)) in ipvlan_add_addr4()
951 netif_err(ipvlan, ifup, ipvlan->dev, in ipvlan_add_addr4()
953 ip4_addr, ipvlan->dev->name); in ipvlan_add_addr4()
955 ret = ipvlan_add_addr(ipvlan, ip4_addr, false); in ipvlan_add_addr4()
956 spin_unlock_bh(&ipvlan->addrs_lock); in ipvlan_add_addr4()
960 static void ipvlan_del_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) in ipvlan_del_addr4() argument
962 return ipvlan_del_addr(ipvlan, ip4_addr, false); in ipvlan_del_addr4()
970 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr4_event() local
979 if (ipvlan_add_addr4(ipvlan, &ip4_addr)) in ipvlan_addr4_event()
985 ipvlan_del_addr4(ipvlan, &ip4_addr); in ipvlan_addr4_event()
997 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr4_validator_event() local
1004 if (ipvlan_addr_busy(ipvlan->port, &ivi->ivi_addr, false)) { in ipvlan_addr4_validator_event()