Lines Matching +full:default +full:- +full:tap
1 // SPDX-License-Identifier: GPL-2.0-only
35 struct net_device *dev = to_net_dev(d->parent); in ipvtap_net_namespace()
48 struct tap_dev tap; member
51 static void ipvtap_count_tx_dropped(struct tap_dev *tap) in ipvtap_count_tx_dropped() argument
53 struct ipvtap_dev *vlantap = container_of(tap, struct ipvtap_dev, tap); in ipvtap_count_tx_dropped()
54 struct ipvl_dev *vlan = &vlantap->vlan; in ipvtap_count_tx_dropped()
56 this_cpu_inc(vlan->pcpu_stats->tx_drps); in ipvtap_count_tx_dropped()
59 static void ipvtap_count_rx_dropped(struct tap_dev *tap) in ipvtap_count_rx_dropped() argument
61 struct ipvtap_dev *vlantap = container_of(tap, struct ipvtap_dev, tap); in ipvtap_count_rx_dropped()
62 struct ipvl_dev *vlan = &vlantap->vlan; in ipvtap_count_rx_dropped()
67 static void ipvtap_update_features(struct tap_dev *tap, in ipvtap_update_features() argument
70 struct ipvtap_dev *vlantap = container_of(tap, struct ipvtap_dev, tap); in ipvtap_update_features()
71 struct ipvl_dev *vlan = &vlantap->vlan; in ipvtap_update_features()
73 vlan->sfeatures = features; in ipvtap_update_features()
74 netdev_update_features(vlan->dev); in ipvtap_update_features()
84 INIT_LIST_HEAD(&vlantap->tap.queue_list); in ipvtap_newlink()
86 /* Since macvlan supports all offloads by default, make in ipvtap_newlink()
87 * tap support all offloads also. in ipvtap_newlink()
89 vlantap->tap.tap_features = TUN_OFFLOADS; in ipvtap_newlink()
90 vlantap->tap.count_tx_dropped = ipvtap_count_tx_dropped; in ipvtap_newlink()
91 vlantap->tap.update_features = ipvtap_update_features; in ipvtap_newlink()
92 vlantap->tap.count_rx_dropped = ipvtap_count_rx_dropped; in ipvtap_newlink()
94 err = netdev_rx_handler_register(dev, tap_handle_frame, &vlantap->tap); in ipvtap_newlink()
107 vlantap->tap.dev = vlantap->vlan.dev; in ipvtap_newlink()
118 tap_del_queues(&vlan->tap); in ipvtap_dellink()
125 dev->tx_queue_len = TUN_READQ_SIZE; in ipvtap_setup()
126 dev->priv_flags &= ~IFF_NO_QUEUE; in ipvtap_setup()
147 if (dev->rtnl_link_ops != &ipvtap_link_ops) in ipvtap_device_event()
150 snprintf(tap_name, IFNAMSIZ, "tap%d", dev->ifindex); in ipvtap_device_event()
159 err = tap_get_minor(ipvtap_major, &vlantap->tap); in ipvtap_device_event()
163 devt = MKDEV(MAJOR(ipvtap_major), vlantap->tap.minor); in ipvtap_device_event()
164 classdev = device_create(&ipvtap_class, &dev->dev, devt, in ipvtap_device_event()
167 tap_free_minor(ipvtap_major, &vlantap->tap); in ipvtap_device_event()
170 err = sysfs_create_link(&dev->dev.kobj, &classdev->kobj, in ipvtap_device_event()
176 /* vlan->minor == 0 if NETDEV_REGISTER above failed */ in ipvtap_device_event()
177 if (vlantap->tap.minor == 0) in ipvtap_device_event()
179 sysfs_remove_link(&dev->dev.kobj, tap_name); in ipvtap_device_event()
180 devt = MKDEV(MAJOR(ipvtap_major), vlantap->tap.minor); in ipvtap_device_event()
182 tap_free_minor(ipvtap_major, &vlantap->tap); in ipvtap_device_event()
185 if (tap_queue_resize(&vlantap->tap)) in ipvtap_device_event()