Commit c0840801 authored by Lennert Buytenhek's avatar Lennert Buytenhek Committed by David S. Miller

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: default avatarLennert Buytenhek <buytenh@marvell.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aec464bb
...@@ -48,6 +48,16 @@ void dsa_slave_mii_bus_init(struct dsa_switch *ds) ...@@ -48,6 +48,16 @@ void dsa_slave_mii_bus_init(struct dsa_switch *ds)
/* slave device handling ****************************************************/ /* 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) static int dsa_slave_open(struct net_device *dev)
{ {
struct dsa_slave_priv *p = netdev_priv(dev); struct dsa_slave_priv *p = netdev_priv(dev);
...@@ -288,6 +298,7 @@ static const struct ethtool_ops dsa_slave_ethtool_ops = { ...@@ -288,6 +298,7 @@ static const struct ethtool_ops dsa_slave_ethtool_ops = {
#ifdef CONFIG_NET_DSA_TAG_DSA #ifdef CONFIG_NET_DSA_TAG_DSA
static const struct net_device_ops dsa_netdev_ops = { static const struct net_device_ops dsa_netdev_ops = {
.ndo_init = dsa_slave_init,
.ndo_open = dsa_slave_open, .ndo_open = dsa_slave_open,
.ndo_stop = dsa_slave_close, .ndo_stop = dsa_slave_close,
.ndo_start_xmit = dsa_xmit, .ndo_start_xmit = dsa_xmit,
...@@ -300,6 +311,7 @@ static const struct net_device_ops dsa_netdev_ops = { ...@@ -300,6 +311,7 @@ static const struct net_device_ops dsa_netdev_ops = {
#endif #endif
#ifdef CONFIG_NET_DSA_TAG_EDSA #ifdef CONFIG_NET_DSA_TAG_EDSA
static const struct net_device_ops edsa_netdev_ops = { static const struct net_device_ops edsa_netdev_ops = {
.ndo_init = dsa_slave_init,
.ndo_open = dsa_slave_open, .ndo_open = dsa_slave_open,
.ndo_stop = dsa_slave_close, .ndo_stop = dsa_slave_close,
.ndo_start_xmit = edsa_xmit, .ndo_start_xmit = edsa_xmit,
...@@ -312,6 +324,7 @@ static const struct net_device_ops edsa_netdev_ops = { ...@@ -312,6 +324,7 @@ static const struct net_device_ops edsa_netdev_ops = {
#endif #endif
#ifdef CONFIG_NET_DSA_TAG_TRAILER #ifdef CONFIG_NET_DSA_TAG_TRAILER
static const struct net_device_ops trailer_netdev_ops = { static const struct net_device_ops trailer_netdev_ops = {
.ndo_init = dsa_slave_init,
.ndo_open = dsa_slave_open, .ndo_open = dsa_slave_open,
.ndo_stop = dsa_slave_close, .ndo_stop = dsa_slave_close,
.ndo_start_xmit = trailer_xmit, .ndo_start_xmit = trailer_xmit,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment