#include <linux/netdevice.h>
#include <linux/ptp_classify.h>
#include <linux/skbuff.h>
#include <net/dsa.h>
#include <net/dst_metadata.h>
#include "tag.h"
#include "user.h"
static LIST_HEAD(dsa_tag_drivers_list);
static DEFINE_MUTEX(dsa_tag_drivers_lock);
static bool dsa_skb_defer_rx_timestamp(struct dsa_user_priv *p,
struct sk_buff *skb)
{ … }
static int dsa_switch_rcv(struct sk_buff *skb, struct net_device *dev,
struct packet_type *pt, struct net_device *unused)
{ … }
struct packet_type dsa_pack_type __read_mostly = …;
static void dsa_tag_driver_register(struct dsa_tag_driver *dsa_tag_driver,
struct module *owner)
{ … }
void dsa_tag_drivers_register(struct dsa_tag_driver *dsa_tag_driver_array[],
unsigned int count, struct module *owner)
{ … }
static void dsa_tag_driver_unregister(struct dsa_tag_driver *dsa_tag_driver)
{ … }
EXPORT_SYMBOL_GPL(…);
void dsa_tag_drivers_unregister(struct dsa_tag_driver *dsa_tag_driver_array[],
unsigned int count)
{ … }
EXPORT_SYMBOL_GPL(…);
const char *dsa_tag_protocol_to_str(const struct dsa_device_ops *ops)
{
return ops->name;
};
const struct dsa_device_ops *dsa_tag_driver_get_by_name(const char *name)
{ … }
const struct dsa_device_ops *dsa_tag_driver_get_by_id(int tag_protocol)
{ … }
void dsa_tag_driver_put(const struct dsa_device_ops *ops)
{ … }