[OpenWrt-Devel] speed up ath10k-caldata extraction for non-ipq40xx

Christian Lamparter chunkeey at gmail.com
Fri Feb 22 05:08:51 EST 2019


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 at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


More information about the openwrt-devel mailing list