Lines Matching refs:ipvlan
12 void ipvlan_adjust_mtu(struct ipvl_dev *ipvlan, struct net_device *dev) in ipvlan_adjust_mtu() argument
14 ipvlan->dev->mtu = dev->mtu - ipvlan->mtu_adj; in ipvlan_adjust_mtu()
19 struct ipvl_dev *ipvlan; in ipvlan_set_port_mode() local
22 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_set_port_mode()
24 ipvlan->dev->flags |= IFF_NOARP; in ipvlan_set_port_mode()
26 ipvlan->dev->flags &= ~IFF_NOARP; in ipvlan_set_port_mode()
114 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_init() local
115 const struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_init()
126 ipvlan->pcpu_stats = alloc_percpu(struct ipvl_pcpu_stats); in ipvlan_init()
127 if (!ipvlan->pcpu_stats) in ipvlan_init()
135 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_uninit() local
136 struct ipvl_port *port = ipvlan->port; in ipvlan_uninit()
138 free_percpu(ipvlan->pcpu_stats); in ipvlan_uninit()
147 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_open() local
148 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_open()
151 if (ipvlan->port->mode == IPVLAN_MODE_L3) in ipvlan_open()
156 list_for_each_entry(addr, &ipvlan->addrs, anode) in ipvlan_open()
157 ipvlan_ht_addr_add(ipvlan, addr); in ipvlan_open()
164 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_stop() local
165 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_stop()
173 list_for_each_entry(addr, &ipvlan->addrs, anode) in ipvlan_stop()
182 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_start_xmit() local
190 pcptr = this_cpu_ptr(ipvlan->pcpu_stats); in ipvlan_start_xmit()
197 this_cpu_inc(ipvlan->pcpu_stats->tx_drps); in ipvlan_start_xmit()
205 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_fix_features() local
207 return features & (ipvlan->sfeatures | ~IPVLAN_FEATURES); in ipvlan_fix_features()
212 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_change_rx_flags() local
213 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_change_rx_flags()
221 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_set_multicast_mac_filter() local
224 bitmap_fill(ipvlan->mac_filters, IPVLAN_MAC_FILTER_SIZE); in ipvlan_set_multicast_mac_filter()
239 bitmap_copy(ipvlan->mac_filters, mc_filters, in ipvlan_set_multicast_mac_filter()
242 dev_uc_sync(ipvlan->phy_dev, dev); in ipvlan_set_multicast_mac_filter()
243 dev_mc_sync(ipvlan->phy_dev, dev); in ipvlan_set_multicast_mac_filter()
249 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_stats64() local
251 if (ipvlan->pcpu_stats) { in ipvlan_get_stats64()
259 pcptr = per_cpu_ptr(ipvlan->pcpu_stats, idx); in ipvlan_get_stats64()
289 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_vlan_rx_add_vid() local
290 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_vlan_rx_add_vid()
298 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_vlan_rx_kill_vid() local
299 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_vlan_rx_kill_vid()
307 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_get_iflink() local
309 return ipvlan->phy_dev->ifindex; in ipvlan_get_iflink()
331 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_hard_header() local
332 struct net_device *phy_dev = ipvlan->phy_dev; in ipvlan_hard_header()
352 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_get_settings() local
354 return __ethtool_get_settings(ipvlan->phy_dev, cmd); in ipvlan_ethtool_get_settings()
366 const struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_get_msglevel() local
368 return ipvlan->msg_enable; in ipvlan_ethtool_get_msglevel()
373 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_ethtool_set_msglevel() local
375 ipvlan->msg_enable = value; in ipvlan_ethtool_set_msglevel()
389 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_nl_changelink() local
390 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev); in ipvlan_nl_changelink()
421 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_nl_fillinfo() local
422 struct ipvl_port *port = ipvlan_port_get_rtnl(ipvlan->phy_dev); in ipvlan_nl_fillinfo()
441 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_link_new() local
467 ipvlan->phy_dev = phy_dev; in ipvlan_link_new()
468 ipvlan->dev = dev; in ipvlan_link_new()
469 ipvlan->port = port; in ipvlan_link_new()
470 ipvlan->sfeatures = IPVLAN_FEATURES; in ipvlan_link_new()
471 INIT_LIST_HEAD(&ipvlan->addrs); in ipvlan_link_new()
490 list_add_tail_rcu(&ipvlan->pnode, &port->ipvlans); in ipvlan_link_new()
504 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_link_delete() local
507 list_for_each_entry_safe(addr, next, &ipvlan->addrs, anode) { in ipvlan_link_delete()
513 list_del_rcu(&ipvlan->pnode); in ipvlan_link_delete()
515 netdev_upper_dev_unlink(ipvlan->phy_dev, dev); in ipvlan_link_delete()
560 struct ipvl_dev *ipvlan, *next; in ipvlan_device_event() local
571 list_for_each_entry(ipvlan, &port->ipvlans, pnode) in ipvlan_device_event()
572 netif_stacked_transfer_operstate(ipvlan->phy_dev, in ipvlan_device_event()
573 ipvlan->dev); in ipvlan_device_event()
580 list_for_each_entry_safe(ipvlan, next, &port->ipvlans, in ipvlan_device_event()
582 ipvlan->dev->rtnl_link_ops->dellink(ipvlan->dev, in ipvlan_device_event()
588 list_for_each_entry(ipvlan, &port->ipvlans, pnode) { in ipvlan_device_event()
589 ipvlan->dev->features = dev->features & IPVLAN_FEATURES; in ipvlan_device_event()
590 ipvlan->dev->gso_max_size = dev->gso_max_size; in ipvlan_device_event()
591 netdev_features_change(ipvlan->dev); in ipvlan_device_event()
596 list_for_each_entry(ipvlan, &port->ipvlans, pnode) in ipvlan_device_event()
597 ipvlan_adjust_mtu(ipvlan, dev); in ipvlan_device_event()
607 static int ipvlan_add_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) in ipvlan_add_addr6() argument
611 if (ipvlan_addr_busy(ipvlan->port, ip6_addr, true)) { in ipvlan_add_addr6()
612 netif_err(ipvlan, ifup, ipvlan->dev, in ipvlan_add_addr6()
614 ip6_addr, ipvlan->dev->name); in ipvlan_add_addr6()
621 addr->master = ipvlan; in ipvlan_add_addr6()
624 list_add_tail(&addr->anode, &ipvlan->addrs); in ipvlan_add_addr6()
629 if (netif_running(ipvlan->dev)) in ipvlan_add_addr6()
630 ipvlan_ht_addr_add(ipvlan, addr); in ipvlan_add_addr6()
635 static void ipvlan_del_addr6(struct ipvl_dev *ipvlan, struct in6_addr *ip6_addr) in ipvlan_del_addr6() argument
639 addr = ipvlan_find_addr(ipvlan, ip6_addr, true); in ipvlan_del_addr6()
655 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr6_event() local
664 if (!ipvlan || !ipvlan->port) in ipvlan_addr6_event()
669 if (ipvlan_add_addr6(ipvlan, &if6->addr)) in ipvlan_addr6_event()
674 ipvlan_del_addr6(ipvlan, &if6->addr); in ipvlan_addr6_event()
681 static int ipvlan_add_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) in ipvlan_add_addr4() argument
685 if (ipvlan_addr_busy(ipvlan->port, ip4_addr, false)) { in ipvlan_add_addr4()
686 netif_err(ipvlan, ifup, ipvlan->dev, in ipvlan_add_addr4()
688 ip4_addr, ipvlan->dev->name); in ipvlan_add_addr4()
695 addr->master = ipvlan; in ipvlan_add_addr4()
698 list_add_tail(&addr->anode, &ipvlan->addrs); in ipvlan_add_addr4()
703 if (netif_running(ipvlan->dev)) in ipvlan_add_addr4()
704 ipvlan_ht_addr_add(ipvlan, addr); in ipvlan_add_addr4()
709 static void ipvlan_del_addr4(struct ipvl_dev *ipvlan, struct in_addr *ip4_addr) in ipvlan_del_addr4() argument
713 addr = ipvlan_find_addr(ipvlan, ip4_addr, false); in ipvlan_del_addr4()
729 struct ipvl_dev *ipvlan = netdev_priv(dev); in ipvlan_addr4_event() local
735 if (!ipvlan || !ipvlan->port) in ipvlan_addr4_event()
741 if (ipvlan_add_addr4(ipvlan, &ip4_addr)) in ipvlan_addr4_event()
747 ipvlan_del_addr4(ipvlan, &ip4_addr); in ipvlan_addr4_event()