[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <339031f6-e732-43b4-9e83-0e2098df65ef@moroto.mountain>
Date: Tue, 18 Jun 2024 16:42:51 +0300
From: Dan Carpenter <dan.carpenter@...aro.org>
To: Lukasz Majewski <lukma@...x.de>
Cc: Vladimir Oltean <olteanv@...il.com>, Jakub Kicinski <kuba@...nel.org>,
netdev@...r.kernel.org, Paolo Abeni <pabeni@...hat.com>,
Eric Dumazet <edumazet@...gle.com>,
"David S. Miller" <davem@...emloft.net>,
Oleksij Rempel <o.rempel@...gutronix.de>, Tristram.Ha@...rochip.com,
Sebastian Andrzej Siewior <bigeasy@...utronix.de>,
Simon Horman <horms@...nel.org>,
"Ricardo B. Marliere" <ricardo@...liere.net>,
Casper Andersson <casper.casan@...il.com>,
linux-kernel@...r.kernel.org,
Woojung Huh <woojung.huh@...rochip.com>,
UNGLinuxDriver@...rochip.com, Andrew Lunn <andrew@...n.ch>
Subject: Re: [PATCH v1 net-next] net: dsa: Allow only up to two HSR HW
offloaded ports for KSZ9477
On Tue, Jun 18, 2024 at 03:04:33PM +0200, Lukasz Majewski wrote:
> The KSZ9477 allows HSR in-HW offloading for any of two selected ports.
> This patch adds check if one tries to use more than two ports with
> HSR offloading enabled.
>
> Signed-off-by: Lukasz Majewski <lukma@...x.de>
Is this a bug fix? What is the impact for the user? Fixes tag? Add
this information to the commit message when you resend.
> ---
> drivers/net/dsa/microchip/ksz_common.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
> index 2818e24e2a51..0d68f0a5bf19 100644
> --- a/drivers/net/dsa/microchip/ksz_common.c
> +++ b/drivers/net/dsa/microchip/ksz_common.c
> @@ -3913,6 +3913,9 @@ static int ksz_hsr_join(struct dsa_switch *ds, int port, struct net_device *hsr,
> if (ret)
> return ret;
>
> + if (dev->chip_id == KSZ9477_CHIP_ID && hweight8(dev->hsr_ports) > 1)
> + return -EOPNOTSUPP;
Put this condition before the ksz_switch_macaddr_get(). Otherwise we'd
need to do a ksz_switch_macaddr_put().
If dev->chip_id != KSZ9477_CHIP_ID then we would have already returned.
Really, that should be the first check in this function. The
hsr_get_version() should be moved to right before we use the version.
(But that's a separate issue, not related to this patch so ignore it).
So do something like this but write a better error message.
regards,
dan carpenter
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c
index 2818e24e2a51..181e81af3a78 100644
--- a/drivers/net/dsa/microchip/ksz_common.c
+++ b/drivers/net/dsa/microchip/ksz_common.c
@@ -3906,6 +3906,11 @@ static int ksz_hsr_join(struct dsa_switch *ds, int port, struct net_device *hsr,
return -EOPNOTSUPP;
}
+ if (hweight8(dev->hsr_ports) > 1) {
+ NL_SET_ERR_MSG_MOD(extack, "Cannot offload more than two ports (in use=0x%x)", dev->hsr_ports);
+ return -EOPNOTSUPP;
+ }
+
/* Self MAC address filtering, to avoid frames traversing
* the HSR ring more than once.
*/
Powered by blists - more mailing lists