ipq40xx: speed up ath10k-caldata extraction
authorChristian Lamparter <chunkeey@gmail.com>
Thu, 14 Feb 2019 18:06:47 +0000 (19:06 +0100)
committerChristian Lamparter <chunkeey@gmail.com>
Wed, 20 Feb 2019 17:51:19 +0000 (18:51 +0100)
Reading and writing to and from flash storage is slow and currently,
the ath10kcal_extract() scripts are even more at an disadvantage
because they use a block size of 1 to be able skip.

This patch reworks the extraction scripts to be much faster and
efficient by reading and writing the calibration data in possibly
one big block.

before: (Tested on a RT-AC58U, which has SPI-NAND).

 # time dd if=/dev/ubi0_1 of=/lib/firmware/... bs=1 skip=4096 count=12064
12064+0 records in
12064+0 records out
real    0m 0.28s
user    0m 0.02s
sys     0m 0.24s

after:

 # time dd if=/dev/ubi0_1 of=/lib/firmware/... bs=12064 skip=4096 count=1 iflag=skip_bytes
1+0 records in
1+0 records out
real    0m 0.01s
user    0m 0.00s
sys     0m 0.00s

Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata

index 59a809e792a7496255ac4ab88751907a2d8904ae..21d9063fd4609f51a1b982189c9308a6c243e5ff 100644 (file)
@@ -31,7 +31,7 @@ ath10kcal_extract() {
        [ -n "$mtd" ] || \
                ath10kcal_die "no mtd device found for partition $part"
 
-       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+       dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
                ath10kcal_die "failed to extract calibration data from $mtd"
 }
 
@@ -49,7 +49,7 @@ ath10kcal_ubi_extract() {
        [ -n "$ubi" ] || \
                ath10kcal_die "no UBI volume found for $part"
 
-       dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+       dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
                ath10kcal_die "failed to extract from $ubi"
 }