Ticket #10441: ndo_vlan_rx_register.patch

File ndo_vlan_rx_register.patch, 1.8 KB (added by arokh <trondah@…>, 4 years ago)
  • include/linux/netdevice.h

    a b  
    768768 *      3. Update dev->stats asynchronously and atomically, and define 
    769769 *         neither operation. 
    770770 * 
     771 * void (*ndo_vlan_rx_register)(struct net_device *dev, struct vlan_group *grp); 
     772 *      If device support VLAN receive acceleration 
     773 *      (ie. dev->features & NETIF_F_HW_VLAN_RX), then this function is called 
     774 *      when vlan groups for the device changes.  Note: grp is NULL 
     775 *      if no vlan's groups are being used. 
     776 * 
    771777 * void (*ndo_vlan_rx_add_vid)(struct net_device *dev, unsigned short vid); 
    772778 *      If device support VLAN filtering (dev->features & NETIF_F_HW_VLAN_FILTER) 
    773779 *      this function is called when a VLAN id is registered. 
     
    886892                                                     struct rtnl_link_stats64 *storage); 
    887893        struct net_device_stats* (*ndo_get_stats)(struct net_device *dev); 
    888894 
     895        void                    (*ndo_vlan_rx_register)(struct net_device *dev, 
     896                                                        struct vlan_group *grp); 
    889897        void                    (*ndo_vlan_rx_add_vid)(struct net_device *dev, 
    890898                                                       unsigned short vid); 
    891899        void                    (*ndo_vlan_rx_kill_vid)(struct net_device *dev, 
  • net/8021q/vlan.c

    a b  
    134134                vlan_gvrp_uninit_applicant(real_dev); 
    135135 
    136136                rcu_assign_pointer(real_dev->vlgrp, NULL); 
     137                if (ops->ndo_vlan_rx_register) 
     138                        ops->ndo_vlan_rx_register(real_dev, NULL); 
    137139 
    138140                /* Free the group, after all cpu's are done. */ 
    139141                call_rcu(&grp->rcu, vlan_rcu_free); 
     
    205207        grp->nr_vlans++; 
    206208 
    207209        if (ngrp) { 
     210                if (ops->ndo_vlan_rx_register && (real_dev->features & NETIF_F_HW_VLAN_RX)) 
     211                        ops->ndo_vlan_rx_register(real_dev, ngrp); 
    208212                rcu_assign_pointer(real_dev->vlgrp, ngrp); 
    209213        } 
    210214        if (real_dev->features & NETIF_F_HW_VLAN_FILTER)