Message ID | 20210419154659.44096-3-ilya.lipnitskiy@gmail.com |
---|---|
State | New |
Headers | show |
Series | net: ethernet: mediatek: support custom GMAC label | expand |
On Mon, Apr 19, 2021 at 08:46:59AM -0700, Ilya Lipnitskiy wrote: > The MAC device name can now be set within DTS file instead of always > being "ethX". This is helpful for DSA to clearly label the DSA master > device and distinguish it from DSA slave ports. > > For example, some devices, such as the Ubiquiti EdgeRouter X, may have > ports labeled ethX. Labeling the master GMAC with a different prefix > than DSA ports helps with clarity. > > Suggested-by: René van Dorst <opensource@vdorst.com> > Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> Reviewed-by: Andrew Lunn <andrew@lunn.ch> Andrew
On Tue, Apr 20, 2021 at 12:51 PM Rob Herring <robh@kernel.org> wrote: > > On Mon, Apr 19, 2021 at 08:46:59AM -0700, Ilya Lipnitskiy wrote: > > The MAC device name can now be set within DTS file instead of always > > being "ethX". This is helpful for DSA to clearly label the DSA master > > device and distinguish it from DSA slave ports. > > > > For example, some devices, such as the Ubiquiti EdgeRouter X, may have > > ports labeled ethX. Labeling the master GMAC with a different prefix > > than DSA ports helps with clarity. > > > > Suggested-by: René van Dorst <opensource@vdorst.com> > > Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> > > --- > > drivers/net/ethernet/mediatek/mtk_eth_soc.c | 6 ++++-- > > 1 file changed, 4 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c > > index 6b00c12c6c43..df3cda63a8c5 100644 > > --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c > > +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c > > @@ -2845,6 +2845,7 @@ static const struct net_device_ops mtk_netdev_ops = { > > > > static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) > > { > > + const char *label = of_get_property(np, "label", NULL); > > const __be32 *_id = of_get_property(np, "reg", NULL); > > phy_interface_t phy_mode; > > struct phylink *phylink; > > @@ -2867,9 +2868,10 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) > > return -EINVAL; > > } > > > > - eth->netdev[id] = alloc_etherdev(sizeof(*mac)); > > + eth->netdev[id] = alloc_netdev(sizeof(*mac), label ? label : "eth%d", > > + NET_NAME_UNKNOWN, ether_setup); > > 'label' is generally supposed to correspond to the sticker for the > device connector for a human to id. I can't really tell if that's the > case here. I don't see how 'gmacX' vs. 'ethX' maps to DSA master vs. > slave. The ports on devices such as Ubiquiti ER-X are named eth0 through eth4, all of them DSA slaves. The gmac (DSA master) is hard-coded to eth0 without this change. > > I don't think this should be handled within a specific driver either. If > we're going to have a way to name things, then fix it in > alloc_etherdev(). > > It can also be argued that device naming for userspace is a userspace > (udev) problem. Yeah, that is a valid argument. We can drop this changeset if the agreement is that it doesn't belong in the specific driver or the kernel-space at all. Some discussion (and device picture) here if you are interested: https://github.com/openwrt/openwrt/pull/3971 Ilya
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 6b00c12c6c43..df3cda63a8c5 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -2845,6 +2845,7 @@ static const struct net_device_ops mtk_netdev_ops = { static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) { + const char *label = of_get_property(np, "label", NULL); const __be32 *_id = of_get_property(np, "reg", NULL); phy_interface_t phy_mode; struct phylink *phylink; @@ -2867,9 +2868,10 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) return -EINVAL; } - eth->netdev[id] = alloc_etherdev(sizeof(*mac)); + eth->netdev[id] = alloc_netdev(sizeof(*mac), label ? label : "eth%d", + NET_NAME_UNKNOWN, ether_setup); if (!eth->netdev[id]) { - dev_err(eth->dev, "alloc_etherdev failed\n"); + dev_err(eth->dev, "alloc_netdev failed\n"); return -ENOMEM; } mac = netdev_priv(eth->netdev[id]);
The MAC device name can now be set within DTS file instead of always being "ethX". This is helpful for DSA to clearly label the DSA master device and distinguish it from DSA slave ports. For example, some devices, such as the Ubiquiti EdgeRouter X, may have ports labeled ethX. Labeling the master GMAC with a different prefix than DSA ports helps with clarity. Suggested-by: René van Dorst <opensource@vdorst.com> Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com> --- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)