Hello, On Wednesday, February 20, 2019 7:26:55 PM CET Adrian Schmutzler wrote: > just saw the commit “ipq40xx: speed up ath10k-caldata extraction”: > > https://github.com/openwrt/openwrt/commit/a69e101ed1169f562fc030a783cd997d3f066b16 > > Is this specific to ipq40xx for some reason not obvious to me or can other > targets like ath79/ar71xx be “enhanced” similarly: > > https://github.com/openwrt/openwrt/blob/master/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata#L45 > > https://github.com/openwrt/openwrt/blob/master/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata#L33 > > (at least two affected lines in each file) > > […] > > dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count > 2>/dev/null || \ > > […] > > changed to > > […] > > dd if=$mtd of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 > iflag=skip_bytes 2>/dev/null || \ > > […] >
No this isn't specific to the ipq40xx. In fact as you said on a the ath79 device it can make a bigger difference. For example on my ath79 WD MyNet Range Extender (AR9344-like, s25fl064k) it goes from: strace -c dd if=/dev/mtd6 of=/lib/firmware/test-slow bs=1 count=4096 skip=4096 4096+0 records in 4096+0 records out % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 99.37 15.695454 3831 4096 write 0.63 0.098808 24 4097 read 0.00 0.000050 50 1 writev 0.00 0.000044 8 5 close 0.00 0.000000 0 4 1 open 0.00 0.000000 0 1 execve 0.00 0.000000 0 1 getuid 0.00 0.000000 0 2 dup2 0.00 0.000000 0 2 mprotect 0.00 0.000000 0 1 _llseek 0.00 0.000000 0 1 prctl 0.00 0.000000 0 1 rt_sigaction 0.00 0.000000 0 1 rt_sigprocmask 0.00 0.000000 0 2 mmap2 0.00 0.000000 0 1 fstat64 0.00 0.000000 0 1 fcntl64 0.00 0.000000 0 1 set_tid_address 0.00 0.000000 0 1 set_thread_area ------ ----------- ----------- --------- --------- ---------------- 100.00 15.794356 8219 1 total compared to: strace -c dd if=/dev/mtd6 of=/lib/firmware/test-fast bs=4096 count=1 skip=4096 iflag=skip_bytes 1+0 records in 1+0 records out % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 87.12 0.014953 14953 1 write 5.29 0.000908 454 2 read 3.02 0.000518 129 4 1 open 1.42 0.000244 122 2 mprotect 1.32 0.000226 113 2 mmap2 0.42 0.000072 14 5 close 0.31 0.000053 53 1 writev 0.22 0.000037 18 2 brk 0.15 0.000025 25 1 set_thread_area 0.13 0.000022 11 2 dup2 0.10 0.000017 17 1 execve 0.09 0.000016 16 1 fstat64 0.09 0.000015 15 1 prctl 0.07 0.000012 12 1 _llseek 0.06 0.000011 11 1 rt_sigprocmask 0.06 0.000010 10 1 fcntl64 0.05 0.000009 9 1 rt_sigaction 0.05 0.000008 8 1 set_tid_address 0.04 0.000007 7 1 getuid ------ ----------- ----------- --------- --------- ---------------- 100.00 0.017163 31 1 total So, this should help to speed up the initial installation tremendously. Especially if the overlay the device uses jffs2 it seems. If you want to provide patches, please do so (and please add some performance numbers too). Cheers, Christian _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel