#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/if_vlan.h>
#include <linux/netpoll.h>
#include <linux/export.h>
#include <net/gro.h>
#include "vlan.h"
bool vlan_do_receive(struct sk_buff **skbp)
{ … }
struct net_device *__vlan_find_dev_deep_rcu(struct net_device *dev,
__be16 vlan_proto, u16 vlan_id)
{ … }
EXPORT_SYMBOL(…);
struct net_device *vlan_dev_real_dev(const struct net_device *dev)
{ … }
EXPORT_SYMBOL(…);
u16 vlan_dev_vlan_id(const struct net_device *dev)
{ … }
EXPORT_SYMBOL(…);
__be16 vlan_dev_vlan_proto(const struct net_device *dev)
{ … }
EXPORT_SYMBOL(…);
static void vlan_group_free(struct vlan_group *grp)
{ … }
static void vlan_info_free(struct vlan_info *vlan_info)
{ … }
static void vlan_info_rcu_free(struct rcu_head *rcu)
{ … }
static struct vlan_info *vlan_info_alloc(struct net_device *dev)
{ … }
struct vlan_vid_info { … };
static bool vlan_hw_filter_capable(const struct net_device *dev, __be16 proto)
{ … }
static struct vlan_vid_info *vlan_vid_info_get(struct vlan_info *vlan_info,
__be16 proto, u16 vid)
{ … }
static struct vlan_vid_info *vlan_vid_info_alloc(__be16 proto, u16 vid)
{ … }
static int vlan_add_rx_filter_info(struct net_device *dev, __be16 proto, u16 vid)
{ … }
static int vlan_kill_rx_filter_info(struct net_device *dev, __be16 proto, u16 vid)
{ … }
int vlan_for_each(struct net_device *dev,
int (*action)(struct net_device *dev, int vid, void *arg),
void *arg)
{ … }
EXPORT_SYMBOL(…);
int vlan_filter_push_vids(struct vlan_info *vlan_info, __be16 proto)
{ … }
EXPORT_SYMBOL(…);
void vlan_filter_drop_vids(struct vlan_info *vlan_info, __be16 proto)
{ … }
EXPORT_SYMBOL(…);
static int __vlan_vid_add(struct vlan_info *vlan_info, __be16 proto, u16 vid,
struct vlan_vid_info **pvid_info)
{ … }
int vlan_vid_add(struct net_device *dev, __be16 proto, u16 vid)
{ … }
EXPORT_SYMBOL(…);
static void __vlan_vid_del(struct vlan_info *vlan_info,
struct vlan_vid_info *vid_info)
{ … }
void vlan_vid_del(struct net_device *dev, __be16 proto, u16 vid)
{ … }
EXPORT_SYMBOL(…);
int vlan_vids_add_by_dev(struct net_device *dev,
const struct net_device *by_dev)
{ … }
EXPORT_SYMBOL(…);
void vlan_vids_del_by_dev(struct net_device *dev,
const struct net_device *by_dev)
{ … }
EXPORT_SYMBOL(…);
bool vlan_uses_dev(const struct net_device *dev)
{ … }
EXPORT_SYMBOL(…);
static struct sk_buff *vlan_gro_receive(struct list_head *head,
struct sk_buff *skb)
{ … }
static int vlan_gro_complete(struct sk_buff *skb, int nhoff)
{ … }
static struct packet_offload vlan_packet_offloads[] __read_mostly = …;
static int __init vlan_offload_init(void)
{ … }
fs_initcall(vlan_offload_init);