Message ID | 20210329153016.1940552-1-fido_max@inbox.ru (mailing list archive) |
---|---|
State | Accepted |
Commit | fb6ec87f7229b92baa81b35cbc76f2626d5bfadb |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [1/1] net: dsa: Fix type was not set for devlink port | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Guessed tree name to be net-next |
netdev/subject_prefix | warning | Target tree name not specified in the subject |
netdev/cc_maintainers | success | CCed 7 of 7 maintainers |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 15 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
On Mon, Mar 29, 2021 at 06:30:16PM +0300, Maxim Kochetkov wrote: > If PHY is not available on DSA port (described at devicetree but absent or > failed to detect) then kernel prints warning after 3700 secs: > > [ 3707.948771] ------------[ cut here ]------------ > [ 3707.948784] Type was not set for devlink port. > [ 3707.948894] WARNING: CPU: 1 PID: 17 at net/core/devlink.c:8097 0xc083f9d8 > > We should unregister the devlink port as a user port and > re-register it as an unused port before executing "continue" in case of > dsa_port_setup error. > > Fixes: 86f8b1c01a0a ("net: dsa: Do not make user port errors fatal") > Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru> > --- Reviewed-by: Vladimir Oltean <olteanv@gmail.com>
On Mon, Mar 29, 2021 at 06:30:16PM +0300, Maxim Kochetkov wrote: > If PHY is not available on DSA port (described at devicetree but absent or > failed to detect) then kernel prints warning after 3700 secs: > > [ 3707.948771] ------------[ cut here ]------------ > [ 3707.948784] Type was not set for devlink port. > [ 3707.948894] WARNING: CPU: 1 PID: 17 at net/core/devlink.c:8097 0xc083f9d8 > > We should unregister the devlink port as a user port and > re-register it as an unused port before executing "continue" in case of > dsa_port_setup error. > > Fixes: 86f8b1c01a0a ("net: dsa: Do not make user port errors fatal") This commit says: Prior to 1d27732f411d ("net: dsa: setup and teardown ports"), we would not treat failures to set-up an user port as fatal, but after this commit we would, which is a regression for some systems where interfaces may be declared in the Device Tree, but the underlying hardware may not be present (pluggable daughter cards for instance). Florian Are these daughter cards hot pluggable? So we expect them to appear and the port is then usable? Or is a reboot required? Andrew
On 3/29/21 9:50 AM, Andrew Lunn wrote: > On Mon, Mar 29, 2021 at 06:30:16PM +0300, Maxim Kochetkov wrote: >> If PHY is not available on DSA port (described at devicetree but absent or >> failed to detect) then kernel prints warning after 3700 secs: >> >> [ 3707.948771] ------------[ cut here ]------------ >> [ 3707.948784] Type was not set for devlink port. >> [ 3707.948894] WARNING: CPU: 1 PID: 17 at net/core/devlink.c:8097 0xc083f9d8 >> >> We should unregister the devlink port as a user port and >> re-register it as an unused port before executing "continue" in case of >> dsa_port_setup error. >> >> Fixes: 86f8b1c01a0a ("net: dsa: Do not make user port errors fatal") > > This commit says: > > Prior to 1d27732f411d ("net: dsa: setup and teardown ports"), we would > not treat failures to set-up an user port as fatal, but after this > commit we would, which is a regression for some systems where interfaces > may be declared in the Device Tree, but the underlying hardware may not > be present (pluggable daughter cards for instance). > > Florian > > Are these daughter cards hot pluggable? So we expect them to appear > and the port is then usable? Or is a reboot required? The systems need to be powered off cards replaced and then powered back on so no true hot-pluggable scheme but cold-pluggable definitively.
Hello: This patch was applied to netdev/net.git (refs/heads/master): On Mon, 29 Mar 2021 18:30:16 +0300 you wrote: > If PHY is not available on DSA port (described at devicetree but absent or > failed to detect) then kernel prints warning after 3700 secs: > > [ 3707.948771] ------------[ cut here ]------------ > [ 3707.948784] Type was not set for devlink port. > [ 3707.948894] WARNING: CPU: 1 PID: 17 at net/core/devlink.c:8097 0xc083f9d8 > > [...] Here is the summary with links: - [1/1] net: dsa: Fix type was not set for devlink port https://git.kernel.org/netdev/net/c/fb6ec87f7229 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index d142eb2b288b..3c3e56a1f34d 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -795,8 +795,14 @@ static int dsa_tree_setup_switches(struct dsa_switch_tree *dst) list_for_each_entry(dp, &dst->ports, list) { err = dsa_port_setup(dp); - if (err) + if (err) { + dsa_port_devlink_teardown(dp); + dp->type = DSA_PORT_TYPE_UNUSED; + err = dsa_port_devlink_setup(dp); + if (err) + goto teardown; continue; + } } return 0;
If PHY is not available on DSA port (described at devicetree but absent or failed to detect) then kernel prints warning after 3700 secs: [ 3707.948771] ------------[ cut here ]------------ [ 3707.948784] Type was not set for devlink port. [ 3707.948894] WARNING: CPU: 1 PID: 17 at net/core/devlink.c:8097 0xc083f9d8 We should unregister the devlink port as a user port and re-register it as an unused port before executing "continue" in case of dsa_port_setup error. Fixes: 86f8b1c01a0a ("net: dsa: Do not make user port errors fatal") Signed-off-by: Maxim Kochetkov <fido_max@inbox.ru> --- net/dsa/dsa2.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-)