aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThibaut VARÈNE <hacks@slashdirt.org>2020-05-08 13:39:10 +0200
committerKoen Vandeputte <koen.vandeputte@ncentric.com>2020-05-12 12:43:38 +0200
commit3fecb06fb1b0005a52dc10dba7f5ff8b8abc578b (patch)
treec1f67e083037c589ac44dc0db09135771d068c1f
parentb36aa168d8906e24cfde18b5cc05de06f43df56f (diff)
downloadupstream-3fecb06fb1b0005a52dc10dba7f5ff8b8abc578b.tar.gz
upstream-3fecb06fb1b0005a52dc10dba7f5ff8b8abc578b.tar.bz2
upstream-3fecb06fb1b0005a52dc10dba7f5ff8b8abc578b.zip
ar71xx: mikrotik: bypass id check in __rb_get_wlan_data()
The id parameter in __rb_get_wlan_data() was incorrectly used on the assumption that id "0" would always be tied to ath9k with RLE encoding and positive id (in fact, only id "1" was valid) would always be tied to ("external") ath10k with LZO encoding. Newer hardware revisions of supported devices prove this assumption to be invalid, with ath9k caldata being now wrapped in MAGIC_ERD and LZO compressed, so disable this check to allow newer hardware to correctly decode caldata for ath9k. Since ath10k caldata is no longer pulled from this implementation, this commit also disables the publication in sysfs to avoid wasting memory. Note: this patch assumes that ath9k caldata is never stored with the new "LZOR" encoding scheme found on some ath10k devices. Signed-off-by: Thibaut VARÈNE <hacks@slashdirt.org>
-rw-r--r--target/linux/ar71xx/files/arch/mips/ath79/routerboot.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c b/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c
index 76776e1d84..4c0cd1314a 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/routerboot.c
@@ -206,10 +206,7 @@ __rb_get_wlan_data(u16 id)
u8 *erd_data;
u16 erd_len;
- if (id == 0)
- goto err_free;
-
- err = routerboot_find_tag(tag, tag_len, id,
+ err = routerboot_find_tag(tag, tag_len, 0x1,
&erd_data, &erd_len);
if (err) {
pr_err("no ERD data found for id %u\n", id);
@@ -224,9 +221,6 @@ __rb_get_wlan_data(u16 id)
goto err_free;
}
} else {
- if (id != 0)
- goto err_free;
-
err = rle_decode((char *) tag, tag_len, buf, RB_ART_SIZE,
&src_done, &dst_done);
if (err) {
@@ -300,6 +294,7 @@ rb_init_info(void *data, unsigned int size)
return &rb_info;
}
+#if 0
static char *rb_ext_wlan_data;
static ssize_t
@@ -356,3 +351,4 @@ err_free_wlan_data:
}
late_initcall(rb_sysfs_init);
+#endif