#include <linux/netdevice.h>
#include <linux/skbuff.h>
#include <linux/etherdevice.h>
#include <linux/rtnetlink.h>
#include <linux/pkt_sched.h>
#include "hsr_device.h"
#include "hsr_slave.h"
#include "hsr_framereg.h"
#include "hsr_main.h"
#include "hsr_forward.h"
static bool is_admin_up(struct net_device *dev)
{ … }
static bool is_slave_up(struct net_device *dev)
{ … }
static void hsr_set_operstate(struct hsr_port *master, bool has_carrier)
{ … }
static bool hsr_check_carrier(struct hsr_port *master)
{ … }
static void hsr_check_announce(struct net_device *hsr_dev)
{ … }
void hsr_check_carrier_and_operstate(struct hsr_priv *hsr)
{ … }
int hsr_get_max_mtu(struct hsr_priv *hsr)
{ … }
static int hsr_dev_change_mtu(struct net_device *dev, int new_mtu)
{ … }
static int hsr_dev_open(struct net_device *dev)
{ … }
static int hsr_dev_close(struct net_device *dev)
{ … }
static netdev_features_t hsr_features_recompute(struct hsr_priv *hsr,
netdev_features_t features)
{ … }
static netdev_features_t hsr_fix_features(struct net_device *dev,
netdev_features_t features)
{ … }
static netdev_tx_t hsr_dev_xmit(struct sk_buff *skb, struct net_device *dev)
{ … }
static const struct header_ops hsr_header_ops = …;
static struct sk_buff *hsr_init_skb(struct hsr_port *master)
{ … }
static void send_hsr_supervision_frame(struct hsr_port *port,
unsigned long *interval,
const unsigned char *addr)
{ … }
static void send_prp_supervision_frame(struct hsr_port *master,
unsigned long *interval,
const unsigned char *addr)
{ … }
static void hsr_announce(struct timer_list *t)
{ … }
static void hsr_proxy_announce(struct timer_list *t)
{ … }
void hsr_del_ports(struct hsr_priv *hsr)
{ … }
static void hsr_set_rx_mode(struct net_device *dev)
{ … }
static void hsr_change_rx_flags(struct net_device *dev, int change)
{ … }
static const struct net_device_ops hsr_device_ops = …;
static const struct device_type hsr_type = …;
static struct hsr_proto_ops hsr_ops = …;
static struct hsr_proto_ops prp_ops = …;
void hsr_dev_setup(struct net_device *dev)
{ … }
bool is_hsr_master(struct net_device *dev)
{ … }
EXPORT_SYMBOL(…);
static const unsigned char def_multicast_addr[ETH_ALEN] __aligned(2) = …;
int hsr_dev_finalize(struct net_device *hsr_dev, struct net_device *slave[2],
struct net_device *interlink, unsigned char multicast_spec,
u8 protocol_version, struct netlink_ext_ack *extack)
{ … }