2021-04-19 04:04:59

by Ilya Lipnitskiy

[permalink] [raw]
Subject: [PATCH net-next 0/2] net: ethernet: mediatek: support custom GMAC label

Add support for specifying GMAC label via DTS. Useful when it is desired
to use a master DSA interface name that is different from the "eth%d"
pattern.

Ilya Lipnitskiy (2):
dt-bindings: net: mediatek: add optional GMAC labels
net: ethernet: mediatek: support custom GMAC label

Documentation/devicetree/bindings/net/mediatek-net.txt | 6 ++++++
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++++
2 files changed, 10 insertions(+)

--
2.31.1


2021-04-19 04:05:01

by Ilya Lipnitskiy

[permalink] [raw]
Subject: [PATCH net-next 1/2] dt-bindings: net: mediatek: add optional GMAC labels

Document the mediatek ethernet driver change that adds support for
custom labels and provide an example.

Signed-off-by: Ilya Lipnitskiy <[email protected]>
---
Documentation/devicetree/bindings/net/mediatek-net.txt | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/Documentation/devicetree/bindings/net/mediatek-net.txt b/Documentation/devicetree/bindings/net/mediatek-net.txt
index 72d03e07cf7c..500bf9351010 100644
--- a/Documentation/devicetree/bindings/net/mediatek-net.txt
+++ b/Documentation/devicetree/bindings/net/mediatek-net.txt
@@ -51,6 +51,10 @@ Required properties:
is equal to 0 and the MAC uses fixed-link to connect
with internal switch such as MT7530.

+Optional properties:
+- label: overrides the default netdevice name. Useful when a custom name for the
+ DSA master interface is desired.
+
Example:

eth: ethernet@1b100000 {
@@ -74,12 +78,14 @@ eth: ethernet@1b100000 {

gmac1: mac@0 {
compatible = "mediatek,eth-mac";
+ label = "gmac1";
reg = <0>;
phy-handle = <&phy0>;
};

gmac2: mac@1 {
compatible = "mediatek,eth-mac";
+ label = "gmac2";
reg = <1>;
phy-handle = <&phy1>;
};
--
2.31.1

2021-04-19 04:05:13

by Ilya Lipnitskiy

[permalink] [raw]
Subject: [PATCH net-next 2/2] net: ethernet: mediatek: support custom GMAC label

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 <[email protected]>
Signed-off-by: Ilya Lipnitskiy <[email protected]>
---
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 6b00c12c6c43..4c0ce4fb7735 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;
@@ -2940,6 +2941,9 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
else
eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;

+ if (label)
+ strscpy(eth->netdev[id]->name, label, IFNAMSIZ);
+
return 0;

free_netdev:
--
2.31.1

2021-04-19 13:56:32

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH net-next 2/2] net: ethernet: mediatek: support custom GMAC label

On Sun, Apr 18, 2021 at 09:03:52PM -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 <[email protected]>
> Signed-off-by: Ilya Lipnitskiy <[email protected]>
> ---
> drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> index 6b00c12c6c43..4c0ce4fb7735 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;
> @@ -2940,6 +2941,9 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
> else
> eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;
>
> + if (label)
> + strscpy(eth->netdev[id]->name, label, IFNAMSIZ);

It is better to use alloc_netdev_mqs() so you get validation the name
is unique.

Andrew

2021-04-19 16:10:27

by Ilya Lipnitskiy

[permalink] [raw]
Subject: Re: [PATCH net-next 2/2] net: ethernet: mediatek: support custom GMAC label

On Mon, Apr 19, 2021 at 5:15 AM Andrew Lunn <[email protected]> wrote:
>
> On Sun, Apr 18, 2021 at 09:03:52PM -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 <[email protected]>
> > Signed-off-by: Ilya Lipnitskiy <[email protected]>
> > ---
> > drivers/net/ethernet/mediatek/mtk_eth_soc.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> > index 6b00c12c6c43..4c0ce4fb7735 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;
> > @@ -2940,6 +2941,9 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
> > else
> > eth->netdev[id]->max_mtu = MTK_MAX_RX_LENGTH_2K - MTK_RX_ETH_HLEN;
> >
> > + if (label)
> > + strscpy(eth->netdev[id]->name, label, IFNAMSIZ);
>
> It is better to use alloc_netdev_mqs() so you get validation the name
> is unique.
It doesn't look like the name validation happens until the netdev is
registered, and it does not get registered at alloc, right?

I do agree that it's better to use the correct name in the first place
instead of renaming, regardless, so using alloc_netdev_mqs() seems
like a better solution - I'll make the change.

Ilya