vlan_dev.c (bd072111e7319d90a7b8127f91c2806b9a6f279e) | vlan_dev.c (b85daa5324a3c9e560a4351c17d18f49c647eb5c) |
---|---|
1/* -*- linux-c -*- 2 * INET 802.1Q VLAN 3 * Ethernet-type device handling. 4 * 5 * Authors: Ben Greear <greearb@candelatech.com> 6 * Please send support related email to: netdev@vger.kernel.org 7 * VLAN Home Page: http://www.candelatech.com/~greear/vlan.html 8 * --- 547 unchanged lines hidden (view full) --- 556 int err = 0; 557 558 if (netif_device_present(real_dev) && ops->ndo_neigh_setup) 559 err = ops->ndo_neigh_setup(real_dev, pa); 560 561 return err; 562} 563 | 1/* -*- linux-c -*- 2 * INET 802.1Q VLAN 3 * Ethernet-type device handling. 4 * 5 * Authors: Ben Greear <greearb@candelatech.com> 6 * Please send support related email to: netdev@vger.kernel.org 7 * VLAN Home Page: http://www.candelatech.com/~greear/vlan.html 8 * --- 547 unchanged lines hidden (view full) --- 556 int err = 0; 557 558 if (netif_device_present(real_dev) && ops->ndo_neigh_setup) 559 err = ops->ndo_neigh_setup(real_dev, pa); 560 561 return err; 562} 563 |
564#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) 565static int vlan_dev_fcoe_ddp_setup(struct net_device *dev, u16 xid, 566 struct scatterlist *sgl, unsigned int sgc) 567{ 568 struct net_device *real_dev = vlan_dev_info(dev)->real_dev; 569 const struct net_device_ops *ops = real_dev->netdev_ops; 570 int rc = 0; 571 572 if (ops->ndo_fcoe_ddp_setup) 573 rc = ops->ndo_fcoe_ddp_setup(real_dev, xid, sgl, sgc); 574 575 return rc; 576} 577 578static int vlan_dev_fcoe_ddp_done(struct net_device *dev, u16 xid) 579{ 580 struct net_device *real_dev = vlan_dev_info(dev)->real_dev; 581 const struct net_device_ops *ops = real_dev->netdev_ops; 582 int len = 0; 583 584 if (ops->ndo_fcoe_ddp_done) 585 len = ops->ndo_fcoe_ddp_done(real_dev, xid); 586 587 return len; 588} 589#endif 590 |
|
564static void vlan_dev_change_rx_flags(struct net_device *dev, int change) 565{ 566 struct net_device *real_dev = vlan_dev_info(dev)->real_dev; 567 568 if (change & IFF_ALLMULTI) 569 dev_set_allmulti(real_dev, dev->flags & IFF_ALLMULTI ? 1 : -1); 570 if (change & IFF_PROMISC) 571 dev_set_promiscuity(real_dev, dev->flags & IFF_PROMISC ? 1 : -1); --- 58 unchanged lines hidden (view full) --- 630 /* ipv6 shared card related stuff */ 631 dev->dev_id = real_dev->dev_id; 632 633 if (is_zero_ether_addr(dev->dev_addr)) 634 memcpy(dev->dev_addr, real_dev->dev_addr, dev->addr_len); 635 if (is_zero_ether_addr(dev->broadcast)) 636 memcpy(dev->broadcast, real_dev->broadcast, dev->addr_len); 637 | 591static void vlan_dev_change_rx_flags(struct net_device *dev, int change) 592{ 593 struct net_device *real_dev = vlan_dev_info(dev)->real_dev; 594 595 if (change & IFF_ALLMULTI) 596 dev_set_allmulti(real_dev, dev->flags & IFF_ALLMULTI ? 1 : -1); 597 if (change & IFF_PROMISC) 598 dev_set_promiscuity(real_dev, dev->flags & IFF_PROMISC ? 1 : -1); --- 58 unchanged lines hidden (view full) --- 657 /* ipv6 shared card related stuff */ 658 dev->dev_id = real_dev->dev_id; 659 660 if (is_zero_ether_addr(dev->dev_addr)) 661 memcpy(dev->dev_addr, real_dev->dev_addr, dev->addr_len); 662 if (is_zero_ether_addr(dev->broadcast)) 663 memcpy(dev->broadcast, real_dev->broadcast, dev->addr_len); 664 |
665#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) 666 dev->fcoe_ddp_xid = real_dev->fcoe_ddp_xid; 667#endif 668 |
|
638 if (real_dev->features & NETIF_F_HW_VLAN_TX) { 639 dev->header_ops = real_dev->header_ops; 640 dev->hard_header_len = real_dev->hard_header_len; 641 dev->netdev_ops = &vlan_netdev_accel_ops; 642 } else { 643 dev->header_ops = &vlan_header_ops; 644 dev->hard_header_len = real_dev->hard_header_len + VLAN_HLEN; 645 dev->netdev_ops = &vlan_netdev_ops; --- 64 unchanged lines hidden (view full) --- 710 .ndo_start_xmit = vlan_dev_hard_start_xmit, 711 .ndo_validate_addr = eth_validate_addr, 712 .ndo_set_mac_address = vlan_dev_set_mac_address, 713 .ndo_set_rx_mode = vlan_dev_set_rx_mode, 714 .ndo_set_multicast_list = vlan_dev_set_rx_mode, 715 .ndo_change_rx_flags = vlan_dev_change_rx_flags, 716 .ndo_do_ioctl = vlan_dev_ioctl, 717 .ndo_neigh_setup = vlan_dev_neigh_setup, | 669 if (real_dev->features & NETIF_F_HW_VLAN_TX) { 670 dev->header_ops = real_dev->header_ops; 671 dev->hard_header_len = real_dev->hard_header_len; 672 dev->netdev_ops = &vlan_netdev_accel_ops; 673 } else { 674 dev->header_ops = &vlan_header_ops; 675 dev->hard_header_len = real_dev->hard_header_len + VLAN_HLEN; 676 dev->netdev_ops = &vlan_netdev_ops; --- 64 unchanged lines hidden (view full) --- 741 .ndo_start_xmit = vlan_dev_hard_start_xmit, 742 .ndo_validate_addr = eth_validate_addr, 743 .ndo_set_mac_address = vlan_dev_set_mac_address, 744 .ndo_set_rx_mode = vlan_dev_set_rx_mode, 745 .ndo_set_multicast_list = vlan_dev_set_rx_mode, 746 .ndo_change_rx_flags = vlan_dev_change_rx_flags, 747 .ndo_do_ioctl = vlan_dev_ioctl, 748 .ndo_neigh_setup = vlan_dev_neigh_setup, |
749#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) 750 .ndo_fcoe_ddp_setup = vlan_dev_fcoe_ddp_setup, 751 .ndo_fcoe_ddp_done = vlan_dev_fcoe_ddp_done, 752#endif |
|
718}; 719 720static const struct net_device_ops vlan_netdev_accel_ops = { 721 .ndo_change_mtu = vlan_dev_change_mtu, 722 .ndo_init = vlan_dev_init, 723 .ndo_uninit = vlan_dev_uninit, 724 .ndo_open = vlan_dev_open, 725 .ndo_stop = vlan_dev_stop, 726 .ndo_start_xmit = vlan_dev_hwaccel_hard_start_xmit, 727 .ndo_validate_addr = eth_validate_addr, 728 .ndo_set_mac_address = vlan_dev_set_mac_address, 729 .ndo_set_rx_mode = vlan_dev_set_rx_mode, 730 .ndo_set_multicast_list = vlan_dev_set_rx_mode, 731 .ndo_change_rx_flags = vlan_dev_change_rx_flags, 732 .ndo_do_ioctl = vlan_dev_ioctl, 733 .ndo_neigh_setup = vlan_dev_neigh_setup, | 753}; 754 755static const struct net_device_ops vlan_netdev_accel_ops = { 756 .ndo_change_mtu = vlan_dev_change_mtu, 757 .ndo_init = vlan_dev_init, 758 .ndo_uninit = vlan_dev_uninit, 759 .ndo_open = vlan_dev_open, 760 .ndo_stop = vlan_dev_stop, 761 .ndo_start_xmit = vlan_dev_hwaccel_hard_start_xmit, 762 .ndo_validate_addr = eth_validate_addr, 763 .ndo_set_mac_address = vlan_dev_set_mac_address, 764 .ndo_set_rx_mode = vlan_dev_set_rx_mode, 765 .ndo_set_multicast_list = vlan_dev_set_rx_mode, 766 .ndo_change_rx_flags = vlan_dev_change_rx_flags, 767 .ndo_do_ioctl = vlan_dev_ioctl, 768 .ndo_neigh_setup = vlan_dev_neigh_setup, |
769#if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) 770 .ndo_fcoe_ddp_setup = vlan_dev_fcoe_ddp_setup, 771 .ndo_fcoe_ddp_done = vlan_dev_fcoe_ddp_done, 772#endif |
|
734}; 735 736void vlan_setup(struct net_device *dev) 737{ 738 ether_setup(dev); 739 740 dev->priv_flags |= IFF_802_1Q_VLAN; 741 dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; 742 dev->tx_queue_len = 0; 743 744 dev->netdev_ops = &vlan_netdev_ops; 745 dev->destructor = free_netdev; 746 dev->ethtool_ops = &vlan_ethtool_ops; 747 748 memset(dev->broadcast, 0, ETH_ALEN); 749} | 773}; 774 775void vlan_setup(struct net_device *dev) 776{ 777 ether_setup(dev); 778 779 dev->priv_flags |= IFF_802_1Q_VLAN; 780 dev->priv_flags &= ~IFF_XMIT_DST_RELEASE; 781 dev->tx_queue_len = 0; 782 783 dev->netdev_ops = &vlan_netdev_ops; 784 dev->destructor = free_netdev; 785 dev->ethtool_ops = &vlan_ethtool_ops; 786 787 memset(dev->broadcast, 0, ETH_ALEN); 788} |