diff options
Diffstat (limited to 'include/net/dsa.h')
| -rw-r--r-- | include/net/dsa.h | 72 | 
1 files changed, 10 insertions, 62 deletions
diff --git a/include/net/dsa.h b/include/net/dsa.h index b3eefe8e18fd..ae480bba11f5 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -21,6 +21,7 @@  #include <linux/ethtool.h>  #include <linux/net_tstamp.h>  #include <linux/phy.h> +#include <linux/platform_data/dsa.h>  #include <net/devlink.h>  #include <net/switchdev.h> @@ -37,6 +38,7 @@ enum dsa_tag_protocol {  	DSA_TAG_PROTO_EDSA,  	DSA_TAG_PROTO_GSWIP,  	DSA_TAG_PROTO_KSZ9477, +	DSA_TAG_PROTO_KSZ9893,  	DSA_TAG_PROTO_LAN9303,  	DSA_TAG_PROTO_MTK,  	DSA_TAG_PROTO_QCA, @@ -44,66 +46,6 @@ enum dsa_tag_protocol {  	DSA_TAG_LAST,		/* MUST BE LAST */  }; -#define DSA_MAX_SWITCHES	4 -#define DSA_MAX_PORTS		12 - -#define DSA_RTABLE_NONE		-1 - -struct dsa_chip_data { -	/* -	 * How to access the switch configuration registers. -	 */ -	struct device	*host_dev; -	int		sw_addr; - -	/* -	 * Reference to network devices -	 */ -	struct device	*netdev[DSA_MAX_PORTS]; - -	/* set to size of eeprom if supported by the switch */ -	int		eeprom_len; - -	/* Device tree node pointer for this specific switch chip -	 * used during switch setup in case additional properties -	 * and resources needs to be used -	 */ -	struct device_node *of_node; - -	/* -	 * The names of the switch's ports.  Use "cpu" to -	 * designate the switch port that the cpu is connected to, -	 * "dsa" to indicate that this port is a DSA link to -	 * another switch, NULL to indicate the port is unused, -	 * or any other string to indicate this is a physical port. -	 */ -	char		*port_names[DSA_MAX_PORTS]; -	struct device_node *port_dn[DSA_MAX_PORTS]; - -	/* -	 * An array of which element [a] indicates which port on this -	 * switch should be used to send packets to that are destined -	 * for switch a. Can be NULL if there is only one switch chip. -	 */ -	s8		rtable[DSA_MAX_SWITCHES]; -}; - -struct dsa_platform_data { -	/* -	 * Reference to a Linux network interface that connects -	 * to the root switch chip of the tree. -	 */ -	struct device	*netdev; -	struct net_device *of_netdev; - -	/* -	 * Info structs describing each of the switch chips -	 * connected via this network interface. -	 */ -	int		nr_chips; -	struct dsa_chip_data	*chip; -}; -  struct packet_type;  struct dsa_switch; @@ -208,6 +150,11 @@ struct dsa_port {  	 * Original copy of the master netdev ethtool_ops  	 */  	const struct ethtool_ops *orig_ethtool_ops; + +	/* +	 * Original copy of the master netdev net_device_ops +	 */ +	const struct net_device_ops *orig_ndo_ops;  };  struct dsa_switch { @@ -418,8 +365,7 @@ struct dsa_switch_ops {  	 */  	int	(*port_enable)(struct dsa_switch *ds, int port,  			       struct phy_device *phy); -	void	(*port_disable)(struct dsa_switch *ds, int port, -				struct phy_device *phy); +	void	(*port_disable)(struct dsa_switch *ds, int port);  	/*  	 * Port's MAC EEE settings @@ -454,6 +400,8 @@ struct dsa_switch_ops {  	void	(*port_stp_state_set)(struct dsa_switch *ds, int port,  				      u8 state);  	void	(*port_fast_age)(struct dsa_switch *ds, int port); +	int	(*port_egress_floods)(struct dsa_switch *ds, int port, +				      bool unicast, bool multicast);  	/*  	 * VLAN support  |