mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	dsa: set ->iflink on slave interfaces to the ifindex of the parent
..so that we can parse the DSA topology from 'ip link' output: 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 4: lan1@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue 5: lan2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue 6: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue 7: lan4@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue Signed-off-by: Lennert Buytenhek <buytenh@marvell.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
		
							parent
							
								
									aec464bbee
								
							
						
					
					
						commit
						c084080151
					
				
					 1 changed files with 13 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -48,6 +48,16 @@ void dsa_slave_mii_bus_init(struct dsa_switch *ds)
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
/* slave device handling ****************************************************/
 | 
			
		||||
static int dsa_slave_init(struct net_device *dev)
 | 
			
		||||
{
 | 
			
		||||
	struct dsa_slave_priv *p = netdev_priv(dev);
 | 
			
		||||
	struct net_device *master = p->parent->master_netdev;
 | 
			
		||||
 | 
			
		||||
	dev->iflink = master->ifindex;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int dsa_slave_open(struct net_device *dev)
 | 
			
		||||
{
 | 
			
		||||
	struct dsa_slave_priv *p = netdev_priv(dev);
 | 
			
		||||
| 
						 | 
				
			
			@ -288,6 +298,7 @@ static const struct ethtool_ops dsa_slave_ethtool_ops = {
 | 
			
		|||
 | 
			
		||||
#ifdef CONFIG_NET_DSA_TAG_DSA
 | 
			
		||||
static const struct net_device_ops dsa_netdev_ops = {
 | 
			
		||||
	.ndo_init		= dsa_slave_init,
 | 
			
		||||
	.ndo_open	 	= dsa_slave_open,
 | 
			
		||||
	.ndo_stop		= dsa_slave_close,
 | 
			
		||||
	.ndo_start_xmit		= dsa_xmit,
 | 
			
		||||
| 
						 | 
				
			
			@ -300,6 +311,7 @@ static const struct net_device_ops dsa_netdev_ops = {
 | 
			
		|||
#endif
 | 
			
		||||
#ifdef CONFIG_NET_DSA_TAG_EDSA
 | 
			
		||||
static const struct net_device_ops edsa_netdev_ops = {
 | 
			
		||||
	.ndo_init		= dsa_slave_init,
 | 
			
		||||
	.ndo_open	 	= dsa_slave_open,
 | 
			
		||||
	.ndo_stop		= dsa_slave_close,
 | 
			
		||||
	.ndo_start_xmit		= edsa_xmit,
 | 
			
		||||
| 
						 | 
				
			
			@ -312,6 +324,7 @@ static const struct net_device_ops edsa_netdev_ops = {
 | 
			
		|||
#endif
 | 
			
		||||
#ifdef CONFIG_NET_DSA_TAG_TRAILER
 | 
			
		||||
static const struct net_device_ops trailer_netdev_ops = {
 | 
			
		||||
	.ndo_init		= dsa_slave_init,
 | 
			
		||||
	.ndo_open	 	= dsa_slave_open,
 | 
			
		||||
	.ndo_stop		= dsa_slave_close,
 | 
			
		||||
	.ndo_start_xmit		= trailer_xmit,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue