vlan_dev.c (0898782247ae533d1f4e47a06bc5d4870931b284) | vlan_dev.c (ab92d68fc22f9afab480153bd82a20f6e2533769) |
---|---|
1// SPDX-License-Identifier: GPL-2.0-or-later 2/* -*- linux-c -*- 3 * INET 802.1Q VLAN 4 * Ethernet-type device handling. 5 * 6 * Authors: Ben Greear <greearb@candelatech.com> 7 * Please send support related email to: netdev@vger.kernel.org 8 * VLAN Home Page: http://www.candelatech.com/~greear/vlan.html --- 475 unchanged lines hidden (view full) --- 484} 485 486static void vlan_dev_set_rx_mode(struct net_device *vlan_dev) 487{ 488 dev_mc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev); 489 dev_uc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev); 490} 491 | 1// SPDX-License-Identifier: GPL-2.0-or-later 2/* -*- linux-c -*- 3 * INET 802.1Q VLAN 4 * Ethernet-type device handling. 5 * 6 * Authors: Ben Greear <greearb@candelatech.com> 7 * Please send support related email to: netdev@vger.kernel.org 8 * VLAN Home Page: http://www.candelatech.com/~greear/vlan.html --- 475 unchanged lines hidden (view full) --- 484} 485 486static void vlan_dev_set_rx_mode(struct net_device *vlan_dev) 487{ 488 dev_mc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev); 489 dev_uc_sync(vlan_dev_priv(vlan_dev)->real_dev, vlan_dev); 490} 491 |
492/* 493 * vlan network devices have devices nesting below it, and are a special 494 * "super class" of normal network devices; split their locks off into a 495 * separate class since they always nest. 496 */ 497static struct lock_class_key vlan_netdev_xmit_lock_key; 498static struct lock_class_key vlan_netdev_addr_lock_key; 499 500static void vlan_dev_set_lockdep_one(struct net_device *dev, 501 struct netdev_queue *txq, 502 void *_subclass) 503{ 504 lockdep_set_class_and_subclass(&txq->_xmit_lock, 505 &vlan_netdev_xmit_lock_key, 506 *(int *)_subclass); 507} 508 509static void vlan_dev_set_lockdep_class(struct net_device *dev, int subclass) 510{ 511 lockdep_set_class_and_subclass(&dev->addr_list_lock, 512 &vlan_netdev_addr_lock_key, 513 subclass); 514 netdev_for_each_tx_queue(dev, vlan_dev_set_lockdep_one, &subclass); 515} 516 | |
517static int vlan_dev_get_lock_subclass(struct net_device *dev) 518{ 519 return vlan_dev_priv(dev)->nest_level; 520} 521 522static const struct header_ops vlan_header_ops = { 523 .create = vlan_dev_hard_header, 524 .parse = eth_header_parse, --- 79 unchanged lines hidden (view full) --- 604 dev->header_ops = &vlan_header_ops; 605 dev->hard_header_len = real_dev->hard_header_len + VLAN_HLEN; 606 } 607 608 dev->netdev_ops = &vlan_netdev_ops; 609 610 SET_NETDEV_DEVTYPE(dev, &vlan_type); 611 | 492static int vlan_dev_get_lock_subclass(struct net_device *dev) 493{ 494 return vlan_dev_priv(dev)->nest_level; 495} 496 497static const struct header_ops vlan_header_ops = { 498 .create = vlan_dev_hard_header, 499 .parse = eth_header_parse, --- 79 unchanged lines hidden (view full) --- 579 dev->header_ops = &vlan_header_ops; 580 dev->hard_header_len = real_dev->hard_header_len + VLAN_HLEN; 581 } 582 583 dev->netdev_ops = &vlan_netdev_ops; 584 585 SET_NETDEV_DEVTYPE(dev, &vlan_type); 586 |
612 vlan_dev_set_lockdep_class(dev, vlan_dev_get_lock_subclass(dev)); 613 | |
614 vlan->vlan_pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats); 615 if (!vlan->vlan_pcpu_stats) 616 return -ENOMEM; 617 618 return 0; 619} 620 621static void vlan_dev_uninit(struct net_device *dev) --- 224 unchanged lines hidden --- | 587 vlan->vlan_pcpu_stats = netdev_alloc_pcpu_stats(struct vlan_pcpu_stats); 588 if (!vlan->vlan_pcpu_stats) 589 return -ENOMEM; 590 591 return 0; 592} 593 594static void vlan_dev_uninit(struct net_device *dev) --- 224 unchanged lines hidden --- |