diff options
Diffstat (limited to 'include/net/dsa.h')
| -rw-r--r-- | include/net/dsa.h | 18 | 
1 files changed, 16 insertions, 2 deletions
diff --git a/include/net/dsa.h b/include/net/dsa.h index ab0f0a5b0860..d309ee7ed04b 100644 --- a/include/net/dsa.h +++ b/include/net/dsa.h @@ -314,9 +314,17 @@ struct dsa_port {  	struct list_head	fdbs;  	struct list_head	mdbs; -	/* List of VLANs that CPU and DSA ports are members of. */  	struct mutex		vlans_lock; -	struct list_head	vlans; +	union { +		/* List of VLANs that CPU and DSA ports are members of. +		 * Access to this is serialized by the sleepable @vlans_lock. +		 */ +		struct list_head	vlans; +		/* List of VLANs that user ports are members of. +		 * Access to this is serialized by netif_addr_lock_bh(). +		 */ +		struct list_head	user_vlans; +	};  };  /* TODO: ideally DSA ports would have a single dp->link_dp member, @@ -867,9 +875,15 @@ struct dsa_switch_ops {  						      phy_interface_t iface);  	int	(*phylink_mac_link_state)(struct dsa_switch *ds, int port,  					  struct phylink_link_state *state); +	int	(*phylink_mac_prepare)(struct dsa_switch *ds, int port, +				       unsigned int mode, +				       phy_interface_t interface);  	void	(*phylink_mac_config)(struct dsa_switch *ds, int port,  				      unsigned int mode,  				      const struct phylink_link_state *state); +	int	(*phylink_mac_finish)(struct dsa_switch *ds, int port, +				      unsigned int mode, +				      phy_interface_t interface);  	void	(*phylink_mac_an_restart)(struct dsa_switch *ds, int port);  	void	(*phylink_mac_link_down)(struct dsa_switch *ds, int port,  					 unsigned int mode,  |