Fabian Bläse
774eeade04
Device support is based on the patch set linked in the OpenWrt Wiki. [1][2] The aux-loader blob is not included, as it is only required for initial installation. Two additional kernel patches for mvpp2 are added to allow receive hashing to work properly in the DSA setup of the device. [1] https://openwrt.org/toh/mikrotik/rb5009ug_s_in#installation [2] https://paste.myconan.net/482114 Signed-off-by: Fabian Bläse <fabian@blaese.de>
54 lines
2.0 KiB
Diff
54 lines
2.0 KiB
Diff
From ab8d25d5ac1b307dacdc3e5e44e23248f4b9a018 Mon Sep 17 00:00:00 2001
|
|
From: Serhii Serhieiev <adron@mstnt.com>
|
|
Date: Wed, 9 Feb 2022 09:07:57 +0200
|
|
Subject: [PATCH 01/18] generic: fix mikrotik/rb_softconfig work(crc mismatch)
|
|
with 64K block size
|
|
|
|
Signed-off-by: Serhii Serhieiev <adron@mstnt.com>
|
|
---
|
|
.../files/drivers/platform/mikrotik/rb_softconfig.c | 7 ++++---
|
|
1 file changed, 4 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c b/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
|
|
index 5acff6aa91..2332089a46 100644
|
|
--- a/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
|
|
+++ b/target/linux/generic/files/drivers/platform/mikrotik/rb_softconfig.c
|
|
@@ -58,6 +58,7 @@
|
|
|
|
#define RB_SOFTCONFIG_VER "0.05"
|
|
#define RB_SC_PR_PFX "[rb_softconfig] "
|
|
+#define SOFT_CONF_FIXED_SIZE 0x1000
|
|
|
|
#define RB_SC_HAS_WRITE_SUPPORT true
|
|
#define RB_SC_WMODE S_IWUSR
|
|
@@ -636,7 +637,7 @@ static ssize_t sc_commit_store(struct kobject *kobj, struct kobj_attribute *attr
|
|
|
|
write_lock(&sc_bufrwl);
|
|
if (!flush) // reread
|
|
- ret = mtd_read(mtd, 0, mtd->size, &bytes_rw, sc_buf);
|
|
+ ret = mtd_read(mtd, 0, sc_buflen, &bytes_rw, sc_buf);
|
|
else { // crc32 + commit
|
|
/*
|
|
* CRC32 is computed on the entire buffer, excluding the CRC
|
|
@@ -658,7 +659,7 @@ static ssize_t sc_commit_store(struct kobject *kobj, struct kobj_attribute *attr
|
|
ei.len = mtd->size;
|
|
ret = mtd_erase(mtd, &ei);
|
|
if (!ret)
|
|
- ret = mtd_write(mtd, 0, mtd->size, &bytes_rw, sc_buf);
|
|
+ ret = mtd_write(mtd, 0, sc_buflen, &bytes_rw, sc_buf);
|
|
|
|
/*
|
|
* Handling mtd_write() failure here is a tricky situation. The
|
|
@@ -708,7 +709,7 @@ int rb_softconfig_init(struct kobject *rb_kobj, struct mtd_info *mtd)
|
|
if (ret)
|
|
return -ENODEV;
|
|
|
|
- sc_buflen = mtd->size;
|
|
+ sc_buflen = mtd->size > SOFT_CONF_FIXED_SIZE ? SOFT_CONF_FIXED_SIZE : mtd->size;
|
|
sc_buf = kmalloc(sc_buflen, GFP_KERNEL);
|
|
if (!sc_buf) {
|
|
__put_mtd_device(mtd);
|
|
--
|
|
2.42.1
|
|
|