#include <linux/if_bridge.h>
#include <net/switchdev.h>
#include "lan966x_main.h"
static struct notifier_block lan966x_netdevice_nb __read_mostly;
static void lan966x_port_set_mcast_ip_flood(struct lan966x_port *port,
u32 pgid_ip)
{ … }
static void lan966x_port_set_mcast_flood(struct lan966x_port *port,
bool enabled)
{ … }
static void lan966x_port_set_ucast_flood(struct lan966x_port *port,
bool enabled)
{ … }
static void lan966x_port_set_bcast_flood(struct lan966x_port *port,
bool enabled)
{ … }
static void lan966x_port_set_learning(struct lan966x_port *port, bool enabled)
{ … }
static void lan966x_port_bridge_flags(struct lan966x_port *port,
struct switchdev_brport_flags flags)
{ … }
static int lan966x_port_pre_bridge_flags(struct lan966x_port *port,
struct switchdev_brport_flags flags)
{ … }
void lan966x_update_fwd_mask(struct lan966x *lan966x)
{ … }
void lan966x_port_stp_state_set(struct lan966x_port *port, u8 state)
{ … }
void lan966x_port_ageing_set(struct lan966x_port *port,
unsigned long ageing_clock_t)
{ … }
static void lan966x_port_mc_set(struct lan966x_port *port, bool mcast_ena)
{ … }
static int lan966x_port_attr_set(struct net_device *dev, const void *ctx,
const struct switchdev_attr *attr,
struct netlink_ext_ack *extack)
{ … }
static int lan966x_port_bridge_join(struct lan966x_port *port,
struct net_device *brport_dev,
struct net_device *bridge,
struct netlink_ext_ack *extack)
{ … }
static void lan966x_port_bridge_leave(struct lan966x_port *port,
struct net_device *bridge)
{ … }
int lan966x_port_changeupper(struct net_device *dev,
struct net_device *brport_dev,
struct netdev_notifier_changeupper_info *info)
{ … }
int lan966x_port_prechangeupper(struct net_device *dev,
struct net_device *brport_dev,
struct netdev_notifier_changeupper_info *info)
{ … }
static int lan966x_foreign_bridging_check(struct net_device *upper,
bool *has_foreign,
bool *seen_lan966x,
struct netlink_ext_ack *extack)
{ … }
static int lan966x_bridge_check(struct net_device *dev,
struct netdev_notifier_changeupper_info *info)
{ … }
static int lan966x_netdevice_port_event(struct net_device *dev,
struct notifier_block *nb,
unsigned long event, void *ptr)
{ … }
static int lan966x_netdevice_event(struct notifier_block *nb,
unsigned long event, void *ptr)
{ … }
static bool lan966x_foreign_dev_check(const struct net_device *dev,
const struct net_device *foreign_dev)
{ … }
static int lan966x_switchdev_event(struct notifier_block *nb,
unsigned long event, void *ptr)
{ … }
static int lan966x_handle_port_vlan_add(struct lan966x_port *port,
const struct switchdev_obj *obj)
{ … }
static int lan966x_handle_port_obj_add(struct net_device *dev, const void *ctx,
const struct switchdev_obj *obj,
struct netlink_ext_ack *extack)
{ … }
static int lan966x_handle_port_vlan_del(struct lan966x_port *port,
const struct switchdev_obj *obj)
{ … }
static int lan966x_handle_port_obj_del(struct net_device *dev, const void *ctx,
const struct switchdev_obj *obj)
{ … }
static int lan966x_switchdev_blocking_event(struct notifier_block *nb,
unsigned long event,
void *ptr)
{ … }
static struct notifier_block lan966x_netdevice_nb __read_mostly = …;
struct notifier_block lan966x_switchdev_nb __read_mostly = …;
struct notifier_block lan966x_switchdev_blocking_nb __read_mostly = …;
void lan966x_register_notifier_blocks(void)
{ … }
void lan966x_unregister_notifier_blocks(void)
{ … }