netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Frieder Schrempf <frieder@fris.de>
To: Andrew Lunn <andrew@lunn.ch>
Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>,
	linux-kernel@vger.kernel.org, Lukasz Majewski <lukma@denx.de>,
	Paolo Abeni <pabeni@redhat.com>,
	UNGLinuxDriver@microchip.com, Vladimir Oltean <olteanv@gmail.com>,
	Woojung Huh <woojung.huh@microchip.com>,
	Frieder Schrempf <frieder.schrempf@kontron.de>,
	Florian Fainelli <florian.fainelli@broadcom.com>,
	Jesse Van Gavere <jesseevg@gmail.com>,
	Oleksij Rempel <o.rempel@pengutronix.de>,
	Pieter Van Trappen <pieter.van.trappen@cern.ch>,
	"Russell King (Oracle)" <rmk+kernel@armlinux.org.uk>,
	Simon Horman <horms@kernel.org>,
	Tristram Ha <tristram.ha@microchip.com>,
	Vadim Fedorenko <vadim.fedorenko@linux.dev>
Subject: Re: [RFC PATCH] net: dsa: microchip: Prevent overriding of HSR port forwarding
Date: Fri, 15 Aug 2025 20:30:13 +0200	[thread overview]
Message-ID: <27ccf5c4-db66-491c-aa7c-29b83ebfca3a@fris.de> (raw)
In-Reply-To: <d7b430cf-7b28-49af-91f9-6b0da0f81c6a@lunn.ch>

Am 15.08.25 um 00:59 schrieb Andrew Lunn:
> On Wed, Aug 13, 2025 at 05:26:12PM +0200, Frieder Schrempf wrote:
>> From: Frieder Schrempf <frieder.schrempf@kontron.de>
>>
>> The KSZ9477 supports NETIF_F_HW_HSR_FWD to forward packets between
>> HSR ports. This is set up when creating the HSR interface via
>> ksz9477_hsr_join() and ksz9477_cfg_port_member().
>>
>> At the same time ksz_update_port_member() is called on every
>> state change of a port and reconfiguring the forwarding to the
>> default state which means packets get only forwarded to the CPU
>> port.
>>
>> If the ports are brought up before setting up the HSR interface
>> and then the port state is not changed afterwards, everything works
>> as intended:
>>
>>    ip link set lan1 up
>>    ip link set lan2 up
>>    ip link add name hsr type hsr slave1 lan1 slave2 lan2 supervision 45 version 1
>>    ip addr add dev hsr 10.0.0.10/24
>>    ip link set hsr up
>>
>> If the port state is changed after creating the HSR interface, this results
>> in a non-working HSR setup:
>>
>>    ip link add name hsr type hsr slave1 lan1 slave2 lan2 supervision 45 version 1
>>    ip addr add dev hsr 10.0.0.10/24
>>    ip link set lan1 up
>>    ip link set lan2 up
>>    ip link set hsr up
> 
> So, restating what i said in a different thread, what happens if only
> software was used? No hardware offload.

Sorry, I don't understand what you are aiming at.

Yes, this issue is related to hardware offloading. As far as I know 
there is no option (for the user) to force HSR into SW-only mode. The 
KSZ9477 driver uses hardware offloading up to the capabilities of the HW 
by default.

Yes, if I disable the offloading by modifying the driver code as already 
described in the other thread, the issue can be fixed at the cost of 
loosing the HW acceleration. In this case the driver consistently 
configures the HSR ports to forward any packets to the CPU which then 
forwards them as needed.

With the driver code as-is, there are two conflicting values used for 
the register that configures the forwarding. One is set during the HSR 
setup and makes sure that HSR ports forward packets among each other 
(and not only to the CPU), the other is set while changing the link 
state of the HSR ports and causes the forwarding to only happen between 
each port and the CPU, therefore effectively disabling the HW offloading 
while the driver still assumes it is enabled.

This is obviously a problem that should be fixed in the driver as 
changing the link state of the ports *after* setup of the HSR is a 
completely valid operation that shouldn't break things like it currently 
does.

  reply	other threads:[~2025-08-15 18:30 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-13 15:26 [RFC PATCH] net: dsa: microchip: Prevent overriding of HSR port forwarding Frieder Schrempf
2025-08-13 15:45 ` Łukasz Majewski
2025-08-13 15:57   ` Frieder Schrempf
2025-08-14  7:23     ` Łukasz Majewski
2025-08-14 22:59 ` Andrew Lunn
2025-08-15 18:30   ` Frieder Schrempf [this message]
2025-08-16  0:53     ` Tristram.Ha
2025-08-18 11:00       ` Frieder Schrempf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=27ccf5c4-db66-491c-aa7c-29b83ebfca3a@fris.de \
    --to=frieder@fris.de \
    --cc=UNGLinuxDriver@microchip.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=florian.fainelli@broadcom.com \
    --cc=frieder.schrempf@kontron.de \
    --cc=horms@kernel.org \
    --cc=jesseevg@gmail.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lukma@denx.de \
    --cc=netdev@vger.kernel.org \
    --cc=o.rempel@pengutronix.de \
    --cc=olteanv@gmail.com \
    --cc=pabeni@redhat.com \
    --cc=pieter.van.trappen@cern.ch \
    --cc=rmk+kernel@armlinux.org.uk \
    --cc=tristram.ha@microchip.com \
    --cc=vadim.fedorenko@linux.dev \
    --cc=woojung.huh@microchip.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).