Lines Matching refs:vlan
58 struct macvlan_dev *vlan;
123 struct macvlan_dev *vlan;
126 hlist_for_each_entry_rcu(vlan, &port->vlan_hash[idx], hlist,
128 if (ether_addr_equal_64bits(vlan->dev->dev_addr, addr))
129 return vlan;
135 const struct macvlan_dev *vlan,
140 struct hlist_head *h = &vlan->port->vlan_source_hash[idx];
144 entry->vlan == vlan)
150 static int macvlan_hash_add_source(struct macvlan_dev *vlan,
153 struct macvlan_port *port = vlan->port;
157 entry = macvlan_hash_lookup_source(vlan, addr);
166 entry->vlan = vlan;
169 vlan->macaddr_count++;
174 static void macvlan_hash_add(struct macvlan_dev *vlan)
176 struct macvlan_port *port = vlan->port;
177 const unsigned char *addr = vlan->dev->dev_addr;
180 hlist_add_head_rcu(&vlan->hlist, &port->vlan_hash[idx]);
189 static void macvlan_hash_del(struct macvlan_dev *vlan, bool sync)
191 hlist_del_rcu(&vlan->hlist);
196 static void macvlan_hash_change_addr(struct macvlan_dev *vlan,
199 macvlan_hash_del(vlan, true);
203 memcpy(vlan->dev->dev_addr, addr, ETH_ALEN);
204 macvlan_hash_add(vlan);
226 const struct macvlan_dev *vlan,
229 struct net_device *dev = vlan->dev;
243 static u32 macvlan_hash_mix(const struct macvlan_dev *vlan)
245 return (u32)(((unsigned long)vlan) >> L1_CACHE_SHIFT);
249 static unsigned int mc_hash(const struct macvlan_dev *vlan,
254 val ^= macvlan_hash_mix(vlan);
264 const struct macvlan_dev *vlan;
274 hlist_for_each_entry_rcu(vlan, &port->vlan_hash[i], hlist) {
275 if (vlan->dev == src || !(vlan->mode & mode))
278 hash = mc_hash(vlan, eth->h_dest);
279 if (!test_bit(hash, vlan->mc_filter))
286 nskb, vlan, eth,
289 macvlan_count_rx(vlan, skb->len + ETH_HLEN,
379 struct macvlan_dev *vlan)
391 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);
434 macvlan_forward_source_one(skb, entry->vlan);
444 const struct macvlan_dev *vlan;
469 vlan = src;
470 ret = macvlan_broadcast_one(skb, vlan, eth, 0) ?:
485 vlan = list_first_or_null_rcu(&port->vlans,
488 vlan = macvlan_hash_lookup(port, eth->h_dest);
489 if (!vlan || vlan->mode == MACVLAN_MODE_SOURCE)
492 dev = vlan->dev;
512 macvlan_count_rx(vlan, len, ret == NET_RX_SUCCESS, false);
518 const struct macvlan_dev *vlan = netdev_priv(dev);
519 const struct macvlan_port *port = vlan->port;
522 if (vlan->mode == MACVLAN_MODE_BRIDGE) {
535 dev_forward_skb(vlan->lowerdev, skb);
541 skb->dev = vlan->lowerdev;
546 static inline netdev_tx_t macvlan_netpoll_send_skb(struct macvlan_dev *vlan, struct sk_buff *skb)
549 return netpoll_send_skb(vlan->netpoll, skb);
559 struct macvlan_dev *vlan = netdev_priv(dev);
564 return macvlan_netpoll_send_skb(vlan, skb);
571 pcpu_stats = this_cpu_ptr(vlan->pcpu_stats);
577 this_cpu_inc(vlan->pcpu_stats->tx_dropped);
586 const struct macvlan_dev *vlan = netdev_priv(dev);
587 struct net_device *lowerdev = vlan->lowerdev;
602 struct macvlan_dev *vlan = netdev_priv(dev);
603 struct net_device *lowerdev = vlan->lowerdev;
606 if (macvlan_passthru(vlan->port)) {
607 if (!(vlan->flags & MACVLAN_FLAG_NOPROMISC)) {
616 if (macvlan_addr_busy(vlan->port, dev->dev_addr))
623 vlan->accel_priv =
629 if (IS_ERR_OR_NULL(vlan->accel_priv)) {
630 vlan->accel_priv = NULL;
649 macvlan_hash_add(vlan);
656 if (vlan->accel_priv) {
658 vlan->accel_priv);
659 vlan->accel_priv = NULL;
669 struct macvlan_dev *vlan = netdev_priv(dev);
670 struct net_device *lowerdev = vlan->lowerdev;
672 if (vlan->accel_priv) {
674 vlan->accel_priv);
675 vlan->accel_priv = NULL;
681 if (macvlan_passthru(vlan->port)) {
682 if (!(vlan->flags & MACVLAN_FLAG_NOPROMISC))
696 macvlan_hash_del(vlan, !dev->dismantle);
702 struct macvlan_dev *vlan = netdev_priv(dev);
703 struct net_device *lowerdev = vlan->lowerdev;
704 struct macvlan_port *port = vlan->port;
712 if (macvlan_addr_busy(vlan->port, addr))
723 macvlan_hash_change_addr(vlan, addr);
730 ether_addr_copy(vlan->port->perm_addr,
739 struct macvlan_dev *vlan = netdev_priv(dev);
749 if (vlan->mode == MACVLAN_MODE_PASSTHRU) {
750 macvlan_set_addr_change(vlan->port);
751 return dev_set_mac_address(vlan->lowerdev, addr, NULL);
754 if (macvlan_addr_busy(vlan->port, addr->sa_data))
762 struct macvlan_dev *vlan = netdev_priv(dev);
763 struct net_device *lowerdev = vlan->lowerdev;
768 if (!macvlan_passthru(vlan->port) && change & IFF_PROMISC)
777 struct macvlan_dev *vlan)
787 __set_bit(mc_hash(vlan, ha->addr), filter);
790 __set_bit(mc_hash(vlan, dev->broadcast), filter);
798 struct macvlan_dev *vlan = netdev_priv(dev);
800 macvlan_compute_filter(vlan->mc_filter, dev, vlan);
802 dev_uc_sync(vlan->lowerdev, dev);
803 dev_mc_sync(vlan->lowerdev, dev);
806 * list of vlan->lowerdev too.
818 macvlan_compute_filter(vlan->port->mc_filter, vlan->lowerdev, NULL);
823 struct macvlan_dev *vlan = netdev_priv(dev);
825 if (vlan->lowerdev->mtu < new_mtu)
889 struct macvlan_dev *vlan = netdev_priv(dev);
890 const struct net_device *lowerdev = vlan->lowerdev;
891 struct macvlan_port *port = vlan->port;
906 vlan->pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats);
907 if (!vlan->pcpu_stats)
917 struct macvlan_dev *vlan = netdev_priv(dev);
918 struct macvlan_port *port = vlan->port;
920 free_percpu(vlan->pcpu_stats);
922 macvlan_flush_sources(port, vlan);
931 struct macvlan_dev *vlan = netdev_priv(dev);
933 if (vlan->pcpu_stats) {
941 p = per_cpu_ptr(vlan->pcpu_stats, i);
971 struct macvlan_dev *vlan = netdev_priv(dev);
972 struct net_device *lowerdev = vlan->lowerdev;
980 struct macvlan_dev *vlan = netdev_priv(dev);
981 struct net_device *lowerdev = vlan->lowerdev;
993 struct macvlan_dev *vlan = netdev_priv(dev);
999 if (!macvlan_passthru(vlan->port) && is_unicast_ether_addr(addr))
1017 struct macvlan_dev *vlan = netdev_priv(dev);
1023 if (!macvlan_passthru(vlan->port) && is_unicast_ether_addr(addr))
1044 const struct macvlan_dev *vlan = netdev_priv(dev);
1046 return __ethtool_get_link_ksettings(vlan->lowerdev, cmd);
1072 struct macvlan_dev *vlan = netdev_priv(dev);
1073 netdev_features_t lowerdev_features = vlan->lowerdev->features;
1077 features &= (vlan->set_features | ~MACVLAN_FEATURES);
1096 struct macvlan_dev *vlan = netdev_priv(dev);
1097 struct net_device *real_dev = vlan->lowerdev;
1112 vlan->netpoll = netpoll;
1120 struct macvlan_dev *vlan = netdev_priv(dev);
1121 struct netpoll *netpoll = vlan->netpoll;
1126 vlan->netpoll = NULL;
1134 struct macvlan_dev *vlan = netdev_priv(dev);
1136 return vlan->lowerdev->ifindex;
1348 static int macvlan_changelink_sources(struct macvlan_dev *vlan, u32 mode,
1363 return macvlan_hash_add_source(vlan, addr);
1369 entry = macvlan_hash_lookup_source(vlan, addr);
1372 vlan->macaddr_count--;
1375 macvlan_flush_sources(vlan->port, vlan);
1377 macvlan_flush_sources(vlan->port, vlan);
1380 ret = macvlan_hash_add_source(vlan, addr);
1393 ret = macvlan_hash_add_source(vlan, addr);
1408 struct macvlan_dev *vlan = netdev_priv(dev);
1457 vlan->lowerdev = lowerdev;
1458 vlan->dev = dev;
1459 vlan->port = port;
1460 vlan->set_features = MACVLAN_FEATURES;
1462 vlan->mode = MACVLAN_MODE_VEPA;
1464 vlan->mode = nla_get_u32(data[IFLA_MACVLAN_MODE]);
1467 vlan->flags = nla_get_u16(data[IFLA_MACVLAN_FLAGS]);
1469 if (vlan->mode == MACVLAN_MODE_PASSTHRU) {
1479 if (vlan->mode != MACVLAN_MODE_SOURCE) {
1484 err = macvlan_changelink_sources(vlan, macmode, data);
1498 list_add_tail_rcu(&vlan->list, &port->vlans);
1513 macvlan_flush_sources(port, vlan);
1529 struct macvlan_dev *vlan = netdev_priv(dev);
1531 if (vlan->mode == MACVLAN_MODE_SOURCE)
1532 macvlan_flush_sources(vlan->port, vlan);
1533 list_del_rcu(&vlan->list);
1535 netdev_upper_dev_unlink(vlan->lowerdev, dev);
1543 struct macvlan_dev *vlan = netdev_priv(dev);
1555 (vlan->mode == MACVLAN_MODE_PASSTHRU))
1557 if (vlan->mode == MACVLAN_MODE_SOURCE &&
1558 vlan->mode != mode)
1559 macvlan_flush_sources(vlan->port, vlan);
1564 bool promisc = (flags ^ vlan->flags) & MACVLAN_FLAG_NOPROMISC;
1565 if (macvlan_passthru(vlan->port) && promisc) {
1569 err = dev_set_promiscuity(vlan->lowerdev, -1);
1571 err = dev_set_promiscuity(vlan->lowerdev, 1);
1575 vlan->flags = flags;
1578 vlan->mode = mode;
1580 if (vlan->mode != MACVLAN_MODE_SOURCE)
1583 ret = macvlan_changelink_sources(vlan, macmode, data);
1590 static size_t macvlan_get_size_mac(const struct macvlan_dev *vlan)
1592 if (vlan->macaddr_count == 0)
1595 + vlan->macaddr_count * nla_total_size(sizeof(u8) * ETH_ALEN);
1600 struct macvlan_dev *vlan = netdev_priv(dev);
1606 + macvlan_get_size_mac(vlan) /* IFLA_MACVLAN_MACADDR */
1611 const struct macvlan_dev *vlan,
1614 struct hlist_head *h = &vlan->port->vlan_source_hash[i];
1618 if (entry->vlan != vlan)
1629 struct macvlan_dev *vlan = netdev_priv(dev);
1633 if (nla_put_u32(skb, IFLA_MACVLAN_MODE, vlan->mode))
1635 if (nla_put_u16(skb, IFLA_MACVLAN_FLAGS, vlan->flags))
1637 if (nla_put_u32(skb, IFLA_MACVLAN_MACADDR_COUNT, vlan->macaddr_count))
1639 if (vlan->macaddr_count > 0) {
1645 if (macvlan_fill_info_macaddr(skb, vlan, i))
1697 struct macvlan_dev *vlan, *next;
1710 list_for_each_entry(vlan, &port->vlans, list)
1711 netif_stacked_transfer_operstate(vlan->lowerdev,
1712 vlan->dev);
1715 list_for_each_entry(vlan, &port->vlans, list) {
1716 vlan->dev->gso_max_size = dev->gso_max_size;
1717 vlan->dev->gso_max_segs = dev->gso_max_segs;
1718 netdev_update_features(vlan->dev);
1722 list_for_each_entry(vlan, &port->vlans, list) {
1723 if (vlan->dev->mtu <= dev->mtu)
1725 dev_set_mtu(vlan->dev, dev->mtu);
1732 vlan = list_first_entry_or_null(&port->vlans,
1736 if (vlan && macvlan_sync_address(vlan->dev, dev->dev_addr))
1745 list_for_each_entry_safe(vlan, next, &port->vlans, list)
1746 vlan->dev->rtnl_link_ops->dellink(vlan->dev, &list_kill);
1757 list_for_each_entry(vlan, &port->vlans, list)
1758 call_netdevice_notifiers(event, vlan->dev);