[PATCH 2/2] ath79: mikrotik: Change the moment of routerboot partition parser init

Robert Marko robimarko at gmail.com
Tue Nov 9 09:06:18 PST 2021


On Tue, 9 Nov 2021 at 15:47, Denis Kalashnikov <denis281089 at gmail.com> wrote:
>
> If kernel invokes routerboot partion parser module
> (drivers/platform/mikrotik/routerboot.c) init function too early, when SPI flash
> hasn't been found yet, its rb_hardconfig_init() failed with -ENODEV (since no
> mtd device with name "hard_config" was found). In this case when kernel calls
> ath9k probe function, it tries a sysfs fallback for loading calibration data,
> but hotplug script fails to load it, since "/sys/firmware/mikrotik/hard_config"
> is missing (whole "/sys/firmware/mikrotik" dir is empty, since
> rb_hardconfig_init() has failed). As a result we see no phy0 and no wlan0, and
> in logs we found:
>
> root at OpenWrt:/dev# logread | grep ath9k
> kern.warn kernel: [   13.818737] ath9k 18100000.wmac: Direct firmware load
>   for ath9k-eeprom-ahb-18100000.wmac.bin failed with error -2
> kern.warn kernel: [   13.829463] ath9k 18100000.wmac: Falling back to sysfs
>   fallback for: ath9k-eeprom-ahb-18100000.wmac.bin
> kern.err kernel: [   14.838766] ath: phy0: Unable to load EEPROM file
>   ath9k-eeprom-ahb-18100000.wmac.bin
> kern.err kernel: [   14.846909] ath9k 18100000.wmac: failed to initialize device
> kern.warn kernel: [   14.852870] ath9k: probe of 18100000.wmac failed with error -22
>
> We managed to fix this by changing module_init() to late_initcall()
> in routerboot module:

Hi, wouldn't it be better for the rb_hardconfig_init to return
-EPROBE_DEFER so the
the core can try probing later?

Regards,
Robert
>
> root at OpenWrt:~# logread | grep ath
> kern.warn kernel: [   13.661861] ath9k 18100000.wmac: Direct firmware load for
>   ath9k-eeprom-ahb-18100000.wmac.bin failed with error -2
> kern.warn kernel: [   13.672583] ath9k 18100000.wmac: Falling back to sysfs for:
>   ath9k-eeprom-ahb-18100000.wmac.bin
> kern.debug kernel: [   14.569014] ath: EEPROM regdomain sanitized
> kern.debug kernel: [   14.569038] ath: EEPROM regdomain: 0x64
> kern.debug kernel: [   14.569044] ath: EEPROM indicates we should expect a
>   direct regpair map
> kern.debug kernel: [   14.569073] ath: Country alpha2 being used: 00
> kern.debug kernel: [   14.569079] ath: Regpair used: 0x64
>
> root at OpenWrt:~# iw dev
> phy#0
>         Interface wlan0
>                 ifindex 3
>                 wdev 0x1
>                 addr xx:xx:xx:xx:xx:xx
>                 type managed
>                 txpower 20.00 dBm
>
> Signed-off-by: Denis Kalashnikov <denis281089 at gmail.com>
> ---
>  .../linux/generic/files/drivers/platform/mikrotik/routerboot.c  | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c
> index 4c8c0bfac5..e5745c88a9 100644
> --- a/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c
> +++ b/target/linux/generic/files/drivers/platform/mikrotik/routerboot.c
> @@ -210,7 +210,7 @@ ssize_t routerboot_tag_show_u32s(const u8 *pld, u16 pld_len, char *buf)
>         return out - buf;
>  }
>
> -module_init(routerboot_init);
> +late_initcall(routerboot_init);
>  module_exit(routerboot_exit);
>
>  MODULE_LICENSE("GPL v2");
> --
> 2.31.1
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel



More information about the openwrt-devel mailing list