linux/drivers/net/dsa/dsa_loop.c

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Distributed Switch Architecture loopback driver
 *
 * Copyright (C) 2016, Florian Fainelli <[email protected]>
 */

#include <linux/platform_device.h>
#include <linux/netdevice.h>
#include <linux/phy.h>
#include <linux/phy_fixed.h>
#include <linux/export.h>
#include <linux/ethtool.h>
#include <linux/workqueue.h>
#include <linux/module.h>
#include <linux/if_bridge.h>
#include <linux/dsa/loop.h>
#include <net/dsa.h>

#include "dsa_loop.h"

static struct dsa_loop_mib_entry dsa_loop_mibs[] =;

static struct phy_device *phydevs[PHY_MAX_ADDR];

enum dsa_loop_devlink_resource_id {};

static u64 dsa_loop_devlink_vtu_get(void *priv)
{}

static int dsa_loop_setup_devlink_resources(struct dsa_switch *ds)
{}

static enum dsa_tag_protocol dsa_loop_get_protocol(struct dsa_switch *ds,
						   int port,
						   enum dsa_tag_protocol mp)
{}

static int dsa_loop_setup(struct dsa_switch *ds)
{}

static void dsa_loop_teardown(struct dsa_switch *ds)
{}

static int dsa_loop_get_sset_count(struct dsa_switch *ds, int port, int sset)
{}

static void dsa_loop_get_strings(struct dsa_switch *ds, int port,
				 u32 stringset, uint8_t *data)
{}

static void dsa_loop_get_ethtool_stats(struct dsa_switch *ds, int port,
				       uint64_t *data)
{}

static int dsa_loop_phy_read(struct dsa_switch *ds, int port, int regnum)
{}

static int dsa_loop_phy_write(struct dsa_switch *ds, int port,
			      int regnum, u16 value)
{}

static int dsa_loop_port_bridge_join(struct dsa_switch *ds, int port,
				     struct dsa_bridge bridge,
				     bool *tx_fwd_offload,
				     struct netlink_ext_ack *extack)
{}

static void dsa_loop_port_bridge_leave(struct dsa_switch *ds, int port,
				       struct dsa_bridge bridge)
{}

static void dsa_loop_port_stp_state_set(struct dsa_switch *ds, int port,
					u8 state)
{}

static int dsa_loop_port_vlan_filtering(struct dsa_switch *ds, int port,
					bool vlan_filtering,
					struct netlink_ext_ack *extack)
{}

static int dsa_loop_port_vlan_add(struct dsa_switch *ds, int port,
				  const struct switchdev_obj_port_vlan *vlan,
				  struct netlink_ext_ack *extack)
{}

static int dsa_loop_port_vlan_del(struct dsa_switch *ds, int port,
				  const struct switchdev_obj_port_vlan *vlan)
{}

static int dsa_loop_port_change_mtu(struct dsa_switch *ds, int port,
				    int new_mtu)
{}

static int dsa_loop_port_max_mtu(struct dsa_switch *ds, int port)
{}

static void dsa_loop_phylink_get_caps(struct dsa_switch *dsa, int port,
				      struct phylink_config *config)
{}

static const struct dsa_switch_ops dsa_loop_driver =;

static int dsa_loop_drv_probe(struct mdio_device *mdiodev)
{}

static void dsa_loop_drv_remove(struct mdio_device *mdiodev)
{}

static void dsa_loop_drv_shutdown(struct mdio_device *mdiodev)
{}

static struct mdio_driver dsa_loop_drv =;

#define NUM_FIXED_PHYS

static void dsa_loop_phydevs_unregister(void)
{}

static int __init dsa_loop_init(void)
{}
module_init();

static void __exit dsa_loop_exit(void)
{}
module_exit(dsa_loop_exit);

MODULE_SOFTDEP();
MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_DESCRIPTION();