Lines Matching refs:vlan

61 	struct macvlan_dev	*vlan;
127 struct macvlan_dev *vlan;
130 hlist_for_each_entry_rcu(vlan, &port->vlan_hash[idx], hlist,
132 if (ether_addr_equal_64bits(vlan->dev->dev_addr, addr))
133 return vlan;
139 const struct macvlan_dev *vlan,
144 struct hlist_head *h = &vlan->port->vlan_source_hash[idx];
148 entry->vlan == vlan)
154 static int macvlan_hash_add_source(struct macvlan_dev *vlan,
157 struct macvlan_port *port = vlan->port;
161 entry = macvlan_hash_lookup_source(vlan, addr);
170 entry->vlan = vlan;
173 vlan->macaddr_count++;
178 static void macvlan_hash_add(struct macvlan_dev *vlan)
180 struct macvlan_port *port = vlan->port;
181 const unsigned char *addr = vlan->dev->dev_addr;
184 hlist_add_head_rcu(&vlan->hlist, &port->vlan_hash[idx]);
193 static void macvlan_hash_del(struct macvlan_dev *vlan, bool sync)
195 hlist_del_rcu(&vlan->hlist);
200 static void macvlan_hash_change_addr(struct macvlan_dev *vlan,
203 macvlan_hash_del(vlan, true);
207 eth_hw_addr_set(vlan->dev, addr);
208 macvlan_hash_add(vlan);
230 const struct macvlan_dev *vlan,
233 struct net_device *dev = vlan->dev;
247 static u32 macvlan_hash_mix(const struct macvlan_dev *vlan)
249 return (u32)(((unsigned long)vlan) >> L1_CACHE_SHIFT);
253 static unsigned int mc_hash(const struct macvlan_dev *vlan,
258 val ^= macvlan_hash_mix(vlan);
268 const struct macvlan_dev *vlan;
277 hash_for_each_rcu(port->vlan_hash, i, vlan, hlist) {
278 if (vlan->dev == src || !(vlan->mode & mode))
281 hash = mc_hash(vlan, eth->h_dest);
282 if (!test_bit(hash, vlan->mc_filter))
288 err = macvlan_broadcast_one(nskb, vlan, eth,
291 macvlan_count_rx(vlan, skb->len + ETH_HLEN,
385 struct macvlan_dev *vlan)
392 if (entry->vlan == vlan)
395 vlan->macaddr_count = 0;
399 struct macvlan_dev *vlan)
406 dev = vlan->dev;
421 macvlan_count_rx(vlan, len, ret == NET_RX_SUCCESS, false);
435 if (entry->vlan->flags & MACVLAN_FLAG_NODST)
437 macvlan_forward_source_one(skb, entry->vlan);
450 const struct macvlan_dev *vlan;
478 vlan = src;
479 ret = macvlan_broadcast_one(skb, vlan, eth, 0) ?:
499 vlan = list_first_or_null_rcu(&port->vlans,
502 vlan = macvlan_hash_lookup(port, eth->h_dest);
503 if (!vlan || vlan->mode == MACVLAN_MODE_SOURCE)
506 dev = vlan->dev;
526 macvlan_count_rx(vlan, len, ret == NET_RX_SUCCESS, false);
532 const struct macvlan_dev *vlan = netdev_priv(dev);
533 const struct macvlan_port *port = vlan->port;
536 if (vlan->mode == MACVLAN_MODE_BRIDGE) {
549 dev_forward_skb(vlan->lowerdev, skb);
555 skb->dev = vlan->lowerdev;
560 static inline netdev_tx_t macvlan_netpoll_send_skb(struct macvlan_dev *vlan, struct sk_buff *skb)
563 return netpoll_send_skb(vlan->netpoll, skb);
573 struct macvlan_dev *vlan = netdev_priv(dev);
578 return macvlan_netpoll_send_skb(vlan, skb);
585 pcpu_stats = this_cpu_ptr(vlan->pcpu_stats);
591 this_cpu_inc(vlan->pcpu_stats->tx_dropped);
600 const struct macvlan_dev *vlan = netdev_priv(dev);
601 struct net_device *lowerdev = vlan->lowerdev;
616 struct macvlan_dev *vlan = netdev_priv(dev);
617 struct net_device *lowerdev = vlan->lowerdev;
620 if (macvlan_passthru(vlan->port)) {
621 if (!(vlan->flags & MACVLAN_FLAG_NOPROMISC)) {
630 if (macvlan_addr_busy(vlan->port, dev->dev_addr))
637 vlan->accel_priv =
643 if (IS_ERR_OR_NULL(vlan->accel_priv)) {
644 vlan->accel_priv = NULL;
663 macvlan_hash_add(vlan);
670 if (vlan->accel_priv) {
672 vlan->accel_priv);
673 vlan->accel_priv = NULL;
683 struct macvlan_dev *vlan = netdev_priv(dev);
684 struct net_device *lowerdev = vlan->lowerdev;
686 if (vlan->accel_priv) {
688 vlan->accel_priv);
689 vlan->accel_priv = NULL;
695 if (macvlan_passthru(vlan->port)) {
696 if (!(vlan->flags & MACVLAN_FLAG_NOPROMISC))
710 macvlan_hash_del(vlan, !dev->dismantle);
717 struct macvlan_dev *vlan = netdev_priv(dev);
718 struct net_device *lowerdev = vlan->lowerdev;
719 struct macvlan_port *port = vlan->port;
727 if (macvlan_addr_busy(vlan->port, addr))
738 macvlan_hash_change_addr(vlan, addr);
745 ether_addr_copy(vlan->port->perm_addr,
754 struct macvlan_dev *vlan = netdev_priv(dev);
764 if (vlan->mode == MACVLAN_MODE_PASSTHRU) {
765 macvlan_set_addr_change(vlan->port);
766 return dev_set_mac_address(vlan->lowerdev, addr, NULL);
769 if (macvlan_addr_busy(vlan->port, addr->sa_data))
777 struct macvlan_dev *vlan = netdev_priv(dev);
778 struct net_device *lowerdev = vlan->lowerdev;
783 if (!macvlan_passthru(vlan->port) && change & IFF_PROMISC)
792 struct macvlan_dev *vlan, int cutoff)
802 if (!vlan && ha->synced <= cutoff)
805 __set_bit(mc_hash(vlan, ha->addr), filter);
808 __set_bit(mc_hash(vlan, dev->broadcast), filter);
814 static void macvlan_recompute_bc_filter(struct macvlan_dev *vlan)
816 if (vlan->port->bc_cutoff < 0) {
817 bitmap_zero(vlan->port->bc_filter, MACVLAN_MC_FILTER_SZ);
821 macvlan_compute_filter(vlan->port->bc_filter, vlan->lowerdev, NULL,
822 vlan->port->bc_cutoff);
827 struct macvlan_dev *vlan = netdev_priv(dev);
829 macvlan_compute_filter(vlan->mc_filter, dev, vlan, 0);
831 dev_uc_sync(vlan->lowerdev, dev);
832 dev_mc_sync(vlan->lowerdev, dev);
835 * list of vlan->lowerdev too.
847 macvlan_compute_filter(vlan->port->mc_filter, vlan->lowerdev, NULL,
849 macvlan_recompute_bc_filter(vlan);
852 static void update_port_bc_cutoff(struct macvlan_dev *vlan, int cutoff)
854 if (vlan->port->bc_cutoff == cutoff)
857 vlan->port->bc_cutoff = cutoff;
858 macvlan_recompute_bc_filter(vlan);
863 struct macvlan_dev *vlan = netdev_priv(dev);
865 if (vlan->lowerdev->mtu < new_mtu)
922 struct macvlan_dev *vlan = netdev_priv(dev);
923 struct net_device *lowerdev = vlan->lowerdev;
924 struct macvlan_port *port = vlan->port;
938 vlan->pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats);
939 if (!vlan->pcpu_stats)
945 netdev_hold(lowerdev, &vlan->dev_tracker, GFP_KERNEL);
952 struct macvlan_dev *vlan = netdev_priv(dev);
953 struct macvlan_port *port = vlan->port;
955 free_percpu(vlan->pcpu_stats);
957 macvlan_flush_sources(port, vlan);
966 struct macvlan_dev *vlan = netdev_priv(dev);
968 if (vlan->pcpu_stats) {
976 p = per_cpu_ptr(vlan->pcpu_stats, i);
1006 struct macvlan_dev *vlan = netdev_priv(dev);
1007 struct net_device *lowerdev = vlan->lowerdev;
1015 struct macvlan_dev *vlan = netdev_priv(dev);
1016 struct net_device *lowerdev = vlan->lowerdev;
1028 struct macvlan_dev *vlan = netdev_priv(dev);
1034 if (!macvlan_passthru(vlan->port) && is_unicast_ether_addr(addr))
1053 struct macvlan_dev *vlan = netdev_priv(dev);
1059 if (!macvlan_passthru(vlan->port) && is_unicast_ether_addr(addr))
1080 const struct macvlan_dev *vlan = netdev_priv(dev);
1082 return __ethtool_get_link_ksettings(vlan->lowerdev, cmd);
1108 struct macvlan_dev *vlan = netdev_priv(dev);
1109 netdev_features_t lowerdev_features = vlan->lowerdev->features;
1113 features &= (vlan->set_features | ~MACVLAN_FEATURES);
1132 struct macvlan_dev *vlan = netdev_priv(dev);
1133 struct net_device *real_dev = vlan->lowerdev;
1148 vlan->netpoll = netpoll;
1156 struct macvlan_dev *vlan = netdev_priv(dev);
1157 struct netpoll *netpoll = vlan->netpoll;
1162 vlan->netpoll = NULL;
1170 struct macvlan_dev *vlan = netdev_priv(dev);
1172 return vlan->lowerdev->ifindex;
1213 struct macvlan_dev *vlan = netdev_priv(dev);
1216 netdev_put(vlan->lowerdev, &vlan->dev_tracker);
1396 static int macvlan_changelink_sources(struct macvlan_dev *vlan, u32 mode,
1411 return macvlan_hash_add_source(vlan, addr);
1417 entry = macvlan_hash_lookup_source(vlan, addr);
1420 vlan->macaddr_count--;
1423 macvlan_flush_sources(vlan->port, vlan);
1425 macvlan_flush_sources(vlan->port, vlan);
1428 ret = macvlan_hash_add_source(vlan, addr);
1441 ret = macvlan_hash_add_source(vlan, addr);
1456 struct macvlan_dev *vlan = netdev_priv(dev);
1505 vlan->lowerdev = lowerdev;
1506 vlan->dev = dev;
1507 vlan->port = port;
1508 vlan->set_features = MACVLAN_FEATURES;
1510 vlan->mode = MACVLAN_MODE_VEPA;
1512 vlan->mode = nla_get_u32(data[IFLA_MACVLAN_MODE]);
1515 vlan->flags = nla_get_u16(data[IFLA_MACVLAN_FLAGS]);
1517 if (vlan->mode == MACVLAN_MODE_PASSTHRU) {
1527 if (vlan->mode != MACVLAN_MODE_SOURCE) {
1532 err = macvlan_changelink_sources(vlan, macmode, data);
1537 vlan->bc_queue_len_req = MACVLAN_DEFAULT_BC_QUEUE_LEN;
1539 vlan->bc_queue_len_req = nla_get_u32(data[IFLA_MACVLAN_BC_QUEUE_LEN]);
1543 vlan, nla_get_s32(data[IFLA_MACVLAN_BC_CUTOFF]));
1554 list_add_tail_rcu(&vlan->list, &port->vlans);
1555 update_port_bc_queue_len(vlan->port);
1570 macvlan_flush_sources(port, vlan);
1586 struct macvlan_dev *vlan = netdev_priv(dev);
1588 if (vlan->mode == MACVLAN_MODE_SOURCE)
1589 macvlan_flush_sources(vlan->port, vlan);
1590 list_del_rcu(&vlan->list);
1591 update_port_bc_queue_len(vlan->port);
1593 netdev_upper_dev_unlink(vlan->lowerdev, dev);
1601 struct macvlan_dev *vlan = netdev_priv(dev);
1613 (vlan->mode == MACVLAN_MODE_PASSTHRU))
1615 if (vlan->mode == MACVLAN_MODE_SOURCE &&
1616 vlan->mode != mode)
1617 macvlan_flush_sources(vlan->port, vlan);
1622 bool promisc = (flags ^ vlan->flags) & MACVLAN_FLAG_NOPROMISC;
1623 if (macvlan_passthru(vlan->port) && promisc) {
1627 err = dev_set_promiscuity(vlan->lowerdev, -1);
1629 err = dev_set_promiscuity(vlan->lowerdev, 1);
1633 vlan->flags = flags;
1637 vlan->bc_queue_len_req = nla_get_u32(data[IFLA_MACVLAN_BC_QUEUE_LEN]);
1638 update_port_bc_queue_len(vlan->port);
1643 vlan, nla_get_s32(data[IFLA_MACVLAN_BC_CUTOFF]));
1646 vlan->mode = mode;
1648 if (vlan->mode != MACVLAN_MODE_SOURCE)
1651 ret = macvlan_changelink_sources(vlan, macmode, data);
1658 static size_t macvlan_get_size_mac(const struct macvlan_dev *vlan)
1660 if (vlan->macaddr_count == 0)
1663 + vlan->macaddr_count * nla_total_size(sizeof(u8) * ETH_ALEN);
1668 struct macvlan_dev *vlan = netdev_priv(dev);
1674 + macvlan_get_size_mac(vlan) /* IFLA_MACVLAN_MACADDR */
1681 const struct macvlan_dev *vlan,
1684 struct hlist_head *h = &vlan->port->vlan_source_hash[i];
1688 if (entry->vlan != vlan)
1699 struct macvlan_dev *vlan = netdev_priv(dev);
1700 struct macvlan_port *port = vlan->port;
1704 if (nla_put_u32(skb, IFLA_MACVLAN_MODE, vlan->mode))
1706 if (nla_put_u16(skb, IFLA_MACVLAN_FLAGS, vlan->flags))
1708 if (nla_put_u32(skb, IFLA_MACVLAN_MACADDR_COUNT, vlan->macaddr_count))
1710 if (vlan->macaddr_count > 0) {
1716 if (macvlan_fill_info_macaddr(skb, vlan, i))
1721 if (nla_put_u32(skb, IFLA_MACVLAN_BC_QUEUE_LEN, vlan->bc_queue_len_req))
1777 struct macvlan_dev *vlan;
1779 list_for_each_entry(vlan, &port->vlans, list) {
1780 if (vlan->bc_queue_len_req > max_bc_queue_len_req)
1781 max_bc_queue_len_req = vlan->bc_queue_len_req;
1790 struct macvlan_dev *vlan, *next;
1803 list_for_each_entry(vlan, &port->vlans, list)
1804 netif_stacked_transfer_operstate(vlan->lowerdev,
1805 vlan->dev);
1808 list_for_each_entry(vlan, &port->vlans, list) {
1809 netif_inherit_tso_max(vlan->dev, dev);
1810 netdev_update_features(vlan->dev);
1814 list_for_each_entry(vlan, &port->vlans, list) {
1815 if (vlan->dev->mtu <= dev->mtu)
1817 dev_set_mtu(vlan->dev, dev->mtu);
1824 vlan = list_first_entry_or_null(&port->vlans,
1828 if (vlan && macvlan_sync_address(vlan->dev, dev->dev_addr))
1837 list_for_each_entry_safe(vlan, next, &port->vlans, list)
1838 vlan->dev->rtnl_link_ops->dellink(vlan->dev, &list_kill);
1849 list_for_each_entry(vlan, &port->vlans, list)
1850 call_netdevice_notifiers(event, vlan->dev);