Since the MAC lookup started returning -EPROBE_DEFER, a probe that
defers while its nvmem provider (e.g. a mac-base cell in the CFE
partition) isn't ready yet leaves the power domain devices attached
by genpd_dev_pm_attach_by_id() behind. The next probe then fails to
re-create them:
sysfs: cannot create duplicate filename '/devices/genpd:0:1000d800.ethernet'
bcm6368-enetsw 1000d800.ethernet: error getting pm 0
bcm6368-enetsw 1000d800.ethernet: probe with driver bcm6368-enetsw failed with error -22
leaving the board without ethernet and the DSA switch deferred forever.
Look up the MAC first, before anything that isn't device-managed has
been set up, so a deferred probe can simply be retried.
Seen on a BCM6328 (BeWAN A2100N) with kernel 6.18.
Fixes: ed545519ee ("bmips: enet: handle EPROBE_DEFER for the MAC address")
Signed-off-by: Max Plekh <mplekh@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/25454
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Build/cfe-jffs2 is the only mkfs.jffs2 call in the tree that passes
neither --squash-uids nor --squash-perms. The recipe creates the marker
files with touch and cp, so the JFFS2 inodes carry the uid, the gid and
the umask of the build machine. The published images hold uid and gid
1000.
mkfs.jffs2 already takes the timestamp from SOURCE_DATE_EPOCH, so the
owner and the mode are the remaining inputs from the environment.
Pass both options, as mvebu and ath79 already do.
Signed-off-by: John Crispin <john@phrozen.org>
Describe the Ralink EEPROM as a cell of the cal_data partition and point
the card at it, so the board no longer needs ralink,mtd-eeprom.
Commit 72f43ac220 ("bmips: huawei-hg556a-c: use nvmem for wifi
eeprom") tried this before and was reverted in b270580dea because the
card came up without calibration data. That attempt named the cell
"calibration", while rt2800_read_eeprom_nvmem() looks up "eeprom", so
the driver never found it and the byte order it blamed was not involved:
both paths copy the same 512 bytes from the same offset.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Both bmips ethernet drivers call of_get_mac_address() and throw the
return value away. They then decide from the contents of an
uninitialised stack buffer whether a MAC address was found, and fall
back to eth_hw_addr_random() when it does not look valid. An
-EPROBE_DEFER is therefore turned into a random MAC address instead of
into a retry.
This did not matter while fixed-layout NVMEM cells were parsed
synchronously by the NVMEM core. Linux 6.12.104 picks up 751cc1534316
("nvmem: layouts: Add fixed-layout driver"), which drops the
"fixed-layout" entry from of_nvmem_layout_skip_table and turns it into
an ordinary NVMEM layout bus driver: nvmem_register() now only creates
the layout device and sets nvmem->layout, and the cells show up later,
when fixed_layout_probe() runs. Until then
nvmem_layout_module_get_optional() sees no bound driver and
of_nvmem_cell_get() returns -EPROBE_DEFER.
That window is hit on every boot rather than occasionally, because it
is link order and not a race. nvmem_init() is a subsys_initcall, but
the layout driver is a device_initcall and drivers/Makefile places
nvmem/ after both mtd/ and net/. The flash therefore registers its
NVMEM device first, the ethernet driver probes next and defers, and
only afterwards does the fixed-layout driver bind and add the cells.
28 bmips boards take their MAC address from a "fixed-layout" node and
bmips has no base-files fallback, so all of them would come up with a
random MAC address that changes on every boot. Propagate -EPROBE_DEFER
so that the probe is retried once the cell exists, the same way this
was already fixed for lantiq in 50e7e5c80d ("lantiq: xrx200: handle
EPROBE_DEFER for MAC address").
Fixes: 91a52f22a1 ("treewide: backport support for nvmem on non platform devices")
Fixes: 1c552eb44d ("bmips: add basic BCM6358 ethernet support")
Assisted-by: Claude:claude-opus-5
Link: https://github.com/openwrt/openwrt/pull/24808
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
It's used in probe to be a generic way to iterate over the children.
Confusingly, device_for_each_child_node_scoped internally calls the
available loop despite not mentioning it.
Avoid pointless variables.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/24120
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
This reverts commit 72f43ac220.
The NVMEM codepath does not perform automatic byte conversion. It can be
fixed but the upstream version is quite different from the local
mac80211 patch. Revert until mac80211 gets updated and the whole mess
can get squared away.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22091
Signed-off-by: Robert Marko <robimarko@gmail.com>
Replace pending patches which are already integrated in upstream Linux
with their upstream versions.
These patches were exported with:
git format-patch -1 -k
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
On the smartrg sr505n the bootloader only sets registers to enable the
PHYs if it's interrupted. When Linux boots this results in a -EINVAL
error when trying to read from the EPHYs and the GPHY doesn't work.
This patch disables low power mode in the GPHY/EPHYs and properly resets
the EPHYs.
Signed-off-by: Kyle Hendry <kylehendrydev@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17648
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
These patches fix the remaining issues with BCM5325 switches and allow
dropping the default VLAN on Huawei HG556a.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
These patches have been accepted for linux v6.18.
e57723fe536f net: dsa: b53: properly bound ARL searches for < 4 ARL bin chips
674b34c4c770 net: dsa: b53: fix ageing time for BCM53101
89eb9a62aed7 net: dsa: b53: fix reserved register access in b53_fdb_dump()
61730ac10ba9 net: dsa: b53: mmap: Implement bcm63268 gphy power control
7f95f04fe190 net: dsa: b53: mmap: Add gphy port to phy info for bcm63268
5ac00023852d net: dsa: b53: mmap: Implement bcm63xx ephy power control
e8e13073dff7 net: dsa: b53: mmap: Add register layout for bcm6368
c251304ab021 net: dsa: b53: mmap: Add register layout for bcm6318
aed2aaa3c963 net: dsa: b53: mmap: Add syscon reference and register layout for bcm63268
fcf02a462fab net: dsa: b53: Define chip IDs for more bcm63xx SoCs
be7a79145d85 net: dsa: b53: Add phy_enable(), phy_disable() methods
762e7e174da9 net: dsa: tag_brcm: do not mark link local traffic as offloaded
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
- Add the missing ranges property for PCIe bridge node.
- Correct the PCIe device node name.
This patch fix the following dtc warning:
../dts/bcm6328-dlink-dsl-2750b-b1.dts:203.9-220.4: Warning (pci_bridge): /ubus/pcie@10e40000/pcie@0: missing ranges for PCI bridge (or not a bridge)
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18242
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Backport accepted BCM5325 patches from net-next.
These patches will be merged in the v6.17 kernel window.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Specifications:
- SoC: Broadcom BCM6358 dual 300MHz MIPS
- Flash: 16MB NOR
- RAM: 64MB DDR
- Ethernet: 4x 100M
- Wifi: Broadcom BCM4318
- 2x USB 2.0 port
- 2x Button
- 9x LED
- RJ11 2x FXS VoIP (unsupported)
- RJ11 xDSL (unsupported)
Install instructions:
- Assign static IP 192.168.1.100 to PC.
- Unplug the power source.
- Press the RESTART button at the router, don't release it yet!
- Plug the power source and wait at least 15 seconds.
- Release the RESTART button.
- Browse to http://192.168.1.1 with your PC.
- Upload the openwrt-bmips-bcm6358-huawei_hg553-squashfs-cfe.bin file.
- Wait some minutes until the firmware upgrade completes.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Specifications:
- SoC: Broadcom BCM6358 dual 300MHz MIPS
- Flash: 16MB NOR Macronix MX29GL128EHT2I-90G
- RAM: 64MB DDR
- Ethernet: 4x 100M
- Wifi: Ralink RT3062F
- 3x USB 2.0 port
- 4x Button
- 13x LED
- RJ11 2x FXS VoIP (unsupported)
- RJ11 xDSL (unsupported)
Install instructions:
- Assign static IP 192.168.1.100 to PC.
- Unplug the power source.
- Press the RESTART button at the router, don't release it yet!
- Plug the power source and wait at least 15 seconds.
- Release the RESTART button.
- Browse to http://192.168.1.1 with your PC.
- Upload the openwrt-bmips-bcm6358-huawei_hg556a-c-squashfs-cfe.bin file.
- Wait some minutes until the firmware upgrade completes.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Specifications:
- SoC: Broadcom BCM6358 dual 300MHz MIPS
- Flash: 16MB NOR Spansion S29GL128P10
- RAM: 64MB DDR
- Ethernet: 4x 100M
- Wifi: Atheros AR9223
- 3x USB 2.0 port
- 4x Button
- 13x LED
- RJ11 2x FXS VoIP (unsupported)
- RJ11 xDSL (unsupported)
Install instructions:
- Assign static IP 192.168.1.100 to PC.
- Unplug the power source.
- Press the RESTART button at the router, don't release it yet!
- Plug the power source and wait at least 15 seconds.
- Release the RESTART button.
- Browse to http://192.168.1.1 with your PC.
- Upload the openwrt-bmips-bcm6358-huawei_hg556a-a-squashfs-cfe.bin file.
- Wait some minutes until the firmware upgrade completes.
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
Commit Fixes: 15430a1348 ("bmips: use wan ports as standalone ports")
removed bridge devices and therefore switch.1 no longer exists, so let's
use br-lan instead.
Fixes: 15430a1348 ("bmips: use wan ports as standalone ports")
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
With the recent fixes backported to 6.12, b53 ports should now fully
work as standalone ports outside of a switch.
So move them out of the switch and use them as standalone ports, which
makes configuring easier as VLANs don't need to be defined and reserved
anymore to use the wan port.
Tested on DGND3700v1.
While most devices do not define a wan port, I dropped the
ucidef_set_bridge_device() from all devices for consistency.
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
The external switch of the Huawei HG556a is a BCM5325E connected by MDIO.
All the DSA brcm legacy FCS tag and b53 patches have been submitted upstream
and will be backported when accepted.
There are still some sporadic FDB errors, but at least the switch is working
and stable on my device:
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to add 72:31:59:xx:xx:xx vid 1 to fdb: -28
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to add 5c:4c:a9:xx:xx:xx vid 0 to fdb: -28
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to add 5c:4c:a9:xx:xx:xx vid 1 to fdb: -28
bcm53xx fffe4800.ethernet-mii:1e: port 0 failed to delete 72:31:59:xx:xx:xx vid 1 from fdb: -2
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>