From rosenp at gmail.com  Fri Feb  1 00:34:10 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Thu, 31 Jan 2019 21:34:10 -0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC1 SPI frequency to
 50MHz
Message-ID: <20190201053410.2298-1-rosenp@gmail.com>

The specific flash chip used (W25Q256FVEM) accepts 50MHz for read requests
and higher for others.

Based on upstream commit: 97738374a310b9116f9c33832737e517226d3722

time dd if=/dev/mtdblock3 of=/dev/null bs=64k from

42.96s to 17.26.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 target/linux/ramips/dts/GB-PC1.dts | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ramips/dts/GB-PC1.dts b/target/linux/ramips/dts/GB-PC1.dts
index 40f81762b1..029b02a97b 100644
--- a/target/linux/ramips/dts/GB-PC1.dts
+++ b/target/linux/ramips/dts/GB-PC1.dts
@@ -71,7 +71,7 @@
 	m25p80 at 0 {
 		compatible = "jedec,spi-nor";
 		reg = <0>;
-		spi-max-frequency = <10000000>;
+		spi-max-frequency = <50000000>;
 
 		partitions {
 			compatible = "fixed-partitions";
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Fri Feb  1 02:36:13 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Thu, 31 Jan 2019 23:36:13 -0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC2 SPI speed to 50MHz
Message-ID: <20190201073613.14656-1-rosenp@gmail.com>

The flash chip on the board (Spansion S25FL256SAIF00) is rated to support
at least 50MHz according to the datasheet.


From hauke at hauke-m.de  Fri Feb  1 04:51:46 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Fri, 1 Feb 2019 10:51:46 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <466090c6-4b42-d0f8-ce71-5ba6a1c1476d@kresin.me>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
 <466090c6-4b42-d0f8-ce71-5ba6a1c1476d@kresin.me>
Message-ID: <b54f4672-ebba-2033-c640-2b484626890e@hauke-m.de>

On 1/31/19 9:30 PM, Mathias Kresin wrote:
> 30/01/2019 11:38, Petr Cvek:
>> Hello,
>>
>> I discovered the lantiq xrx200 lacks support for interrupts on secondary
>> VPE, and I've managed to add this functionality to the kernel, the
>> second icu controller lives on base address 0x1f880300 and works in the
>> same way as first. Tested with 4.14.93 kernel, untested patches in the
>> attachment or on openwrt forum:
>>
>> https://forum.openwrt.org/t/xrx200-irq-balancing-between-vpes/29732/11
>>
>> My second submission is a backported xrx200 ethernet driver from vanilla
>> kernel v5 patched with switch and phy functions. Using kernel napi
>> polling seems to highly increase the throughput of the network.
>>
>> Trying to initially increase the throughput of the network I've found
>> there is an inefficiently setting of DMA burst size. My patch sets this
>> value to a higher value.
>>
>> These two patches were tested with 4.14.93 kernel too, there is forum
>> thread:
>>
>> https://forum.openwrt.org/t/how-can-we-make-the-lantiq-xrx200-devices-faster/9724/30
>>
>>
>> RFC for any parallel development info (next version of ethernet driver
>> will be based on vanilla kernel version?), ideas, testing ...
>>
>> best regards,
>> Petr Cvek
> 
> Hey Petr,
> 
> first of all, the patches don't apply as they are:
> 
> is: ./a/arch/mips/lantiq/irq.c
> expected: a/arch/mips/lantiq/irq.c
> 
> For an official submission, a commit message is a must have. But even
> for testing it would be nice to have a commit message explaining what a
> patch is proposed to do. Otherwise it is kind of hard to provide any
> comments.
> 
> Furthermore, it would be very helpful if the source of the changes is
> mentioned. At least parts of the code seem to be from intel/lantiq UGW 7.x.
> 
> The backport of the vanilla eth driver breaks Ethernet completely on my
> board. I dropped it during my testing.
> 
> Since we're all busy, providing some numbers about the seen improvement
> would might raise more interest. Ideally, you provide the numbers per
> patch, to see if a specific patch really changes something.
> 
> I gave the patches a quick try in conjunction with the irqbalance
> package (to not move driver irqs from one core/vpe to another by hand).
> I saw an improvement in throughput on my BT HomeHub 5a while doing iperf
> from 5Ghz wireless to a lan client.
> 
> The bandwidth was UP: 195 Mbits/s, DOWN: 137 Mbit/s with the patches
> applied, while it was UP: 152 Mbit/s, DOWN: 95,5 MBit/s without. It's
> more than the all time max of 180MBit, I measured a long time ago in a
> test setup I can't remember.
> 
> But I only consider wireless benchmarks in a shielded/isolated
> environment as reliable anyway. It's good to know, but benchmarking the
> ethernet (nat/routing) should be more reliable. As we speak of
> benchmarking the ethernet, it would be interesting to see if enabling
> flow offloading improves the situation even further.
> 
> Of course, the 5GHz wireless bandwidth is still less than the 385
> Mbits/s I benchmarked with the BT firmware in the tests setup I can't
> remember. Nevertheless, it's promising.
> 
> Mathias

Hi Petr,

I am also interested in benchmarks with only one of the patches to know
which patch gives us which improvement. The IRQ controller patch needs
some improvements to get into mainline Linux kernel and I would look
into it if it creates some improvement.
Are the IRQs on the 2. VPE used automatically or do you use it with irq
balanced?
Could you please provide the output of "cat /proc/interrupts"

I used vanilla upstream kernel without the OpenWrt patches and only got
about 60MBit/s NAT performance, but I think about 300MBit/s software
forwarding performance. We should probably make use for scattered DMA in
the driver too. I plan to use this new driver + a DSA switch driver in
OpenWrt, but we still need a good configuration migration script.

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From petrcvekcz at gmail.com  Fri Feb  1 06:36:20 2019
From: petrcvekcz at gmail.com (Petr Cvek)
Date: Fri, 1 Feb 2019 12:36:20 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <b54f4672-ebba-2033-c640-2b484626890e@hauke-m.de>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
 <466090c6-4b42-d0f8-ce71-5ba6a1c1476d@kresin.me>
 <b54f4672-ebba-2033-c640-2b484626890e@hauke-m.de>
Message-ID: <de8f9a7b-7ddf-29bd-2289-f6e492e6838d@gmail.com>

Dne 01. 02. 19 v 10:51 Hauke Mehrtens napsal(a):> On 1/31/19 9:30 PM,
Mathias Kresin wrote:
>> 30/01/2019 11:38, Petr Cvek:
>>>

Hi,

thank you both for the answer and sorry for "./" in the patches I
usually do only git patching :-D. The patches are really RFC only. For
example I would like to know if a separate node is the best way for SMP
irq controller (ICU). The second set of the registers could be just
appended at the end of icu0 registers.

Origin of patches: well I was able to find second ICU just by dumping
iomem space and looking for patterns (which is enough to make a clean
implementation), but I was lazy to write it (again, done it once for
some FPGA) myself so I've copied part of the code from this repo:

https://github.com/paldier/K3C-merlin/blob/master/release/src-lantiq/linux/linux-3.10.104/arch/mips/lantiq/irq.c

The probable address of second ICU was confirmed by grepping the GPL
source codes from my modem's vendor (tplink td-W9980)

https://static.tp-link.com/resources/gpl/GPL_TD-W9980.tar.gz

The burst flag is basically the same value as in "etop" code path. The
warning about 8 word burst size is again from tplink source blob (btw I
think the DMA_2W_BURST flag in 4.14.9x is actually 4 word burst, but I
didn't confirmed it yet).

> I am also interested in benchmarks with only one of the patches to know
> which patch gives us which improvement. The IRQ controller patch needs
> some improvements to get into mainline Linux kernel and I would look
> into it if it creates some improvement.

Thats gonna be a bit of a problem. My TD-W9980 has sadly a wave300 5G
wifi driver, so I cannot test on it as it is broken and crashing the
system (I've managed only make a few scans). For 2.4G wifi, I have only
150Mbps usb dongles, which are slow even without local interferences. My
VDSL has only 22:2 which is OK even with vendor's firmware.

My only option for a benchmarking is the ethernet which is (with the
vanilla openwrt driver) extremely slow. My backport increased the TX
speed of the modem from about 4.5 MiByte/s to about 7.5 MiByte/s (TCP
netcat pipe, ACKs on RX FIFO). Gonna try iperf tomorrow. The driver
works even with NFS rootfs over it. Sometimes a kernel warning about
timeout is printed, but the system works afterwards and this is only a
RFC stage. Probably some spinlock is missing or irq gets acked at the
wrong place. It _will_ be fixed.

What is interesting is my observation of long frames (4000-6000) which
are sometimes coming from lantiq (observed in wireshark). My server is
sending only classic ~1500 frames and I know the lantiq driver is
limited to them too (+ tested in ip link set eth0 mtu 3000 -> error).

> Are the IRQs on the 2. VPE used automatically or do you use it with irq
> balanced?
> Could you please provide the output of "cat /proc/interrupts"
> 
The interupts are used automatically, but the distribution is quite
random. I don't have irqbalance package compiled.

# cat /proc/interrupts
           CPU0       CPU1
  7:      31309      31096      MIPS   7  timer
  8:        586        607      MIPS   0  IPI call
  9:       5991      10371      MIPS   1  IPI resched
 22:      14762          1       icu  22  spi_rx
 23:       2496          1       icu  23  spi_tx
 24:          0          0       icu  24  spi_err
 62:          0          0       icu  62  1e101000.usb, dwc2_hsotg:usb1
 63:          0        192       icu  63  mei_cpe
 72:      11133          0       icu  72  vrx200_rx
 73:          0      13833       icu  73  vrx200_tx
 91:          0         81       icu  91  1e106000.usb, dwc2_hsotg:usb2
112:        745          0       icu 112  asc_tx
113:          0        222       icu 113  asc_rx
114:          0          0       icu 114  asc_err
126:          0          0       icu 126  gptu
127:          0          0       icu 127  gptu
128:          0          0       icu 128  gptu
129:          0          0       icu 129  gptu
130:          0          0       icu 130  gptu
131:          0          0       icu 131  gptu
161:          0          0       icu 161  ifx_pcie_rc0
ERR:          1

(using napi polling decreases interrupt generation, so 11133 and 13833
values are not real number of packets transmitted, the vanilla driver
has more then twice as much as backported driver)

The affinity can be set in /proc/irq/$NUM, this can be used for testing
the improvements cause by patch (the burst width can be written on the
fly too).

> We should probably make use for scattered DMA in
> the driver too. 

I would like to try, but I don't have any vrx200 SoC TRM datasheets and
even with different kernel versions (from vendors) the picture is not
complete.

Petr

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at aparcar.org  Fri Feb  1 07:03:42 2019
From: mail at aparcar.org (Paul Spooren)
Date: Fri, 1 Feb 2019 13:03:42 +0100
Subject: [OpenWrt-Devel] ar71xx: OM2P ImageBuilder no firmware when BIN_DIR
 used
Message-ID: <09b67707-2eb3-d851-fa2c-b55aa11a91fa@aparcar.org>

Hi all,

thanks to this[0] bug report I found that the ar71xx/generic
ImageBuilder doesn't create any firmware images for profile OM2P when
used with BIN_DIR.

My first guess is that it's somewhat related to a hard coded destination
which doesn't handle BIN_DIR. At the very end of an "successful" build log:

> if [ -e "/home/aparcar/worker/imagebuilder/openwrt/18.06.2/ar71xx/generic/bin/targets/ar71xx/generic/openwrt-18.06.2-c9d037b0992cca4-ar71xx-generic-om2p-squashfs-factory.bin" ]; then cp "/home/aparcar/worker/imagebuilder/openwrt/18.06.2/ar71xx/generic/bin/targets/ar71xx/generic/openwrt-18.06.2-c9d037b0992cca4-ar71xx-generic-om2p-squashfs-factory.bin" "/home/aparcar/worker/imagebuilder/openwrt/18.06.2/ar71xx/generic/bin/targets/ar71xx/generic/openwrt-18.06.2-c9d037b0992cca4-ar71xx-generic-om2p-squashfs-sysupgrade.bin"; fi

Running the following commands

$ make image PROFILE="OM2P"
$ ls
openwrt-18.06.2-ar71xx-generic-device-om2p.manifest          openwrt-18.06.2-ar71xx-generic-vmlinux.bin
openwrt-18.06.2-ar71xx-generic-om2p-squashfs-factory.bin     openwrt-18.06.2-ar71xx-generic-vmlinux.elf
openwrt-18.06.2-ar71xx-generic-om2p-squashfs-sysupgrade.bin  openwrt-18.06.2-ar71xx-generic-vmlinux.lzma
openwrt-18.06.2-ar71xx-generic-root.squashfs                 openwrt-18.06.2-ar71xx-generic-vmlinux-lzma.elf
openwrt-18.06.2-ar71xx-generic-uImage-lzma.bin               sha256sums

$ make image PROFILE="OM2P" BIN_DIR="/tmp/test/"
$ ls /tmp/test/
openwrt-18.06.2-ar71xx-generic-device-om2p.manifest  openwrt-18.06.2-ar71xx-generic-vmlinux.elf
openwrt-18.06.2-ar71xx-generic-root.squashfs         openwrt-18.06.2-ar71xx-generic-vmlinux.lzma
openwrt-18.06.2-ar71xx-generic-uImage-lzma.bin       openwrt-18.06.2-ar71xx-generic-vmlinux-lzma.elf
openwrt-18.06.2-ar71xx-generic-vmlinux.bin           sha256sums

Hopefully someone could fix this!

Best regards,
Paul

[0]: https://github.com/libremesh/chef/issues/79


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From f4bug at amsat.org  Fri Feb  1 08:53:37 2019
From: f4bug at amsat.org (=?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?=)
Date: Fri, 1 Feb 2019 14:53:37 +0100
Subject: [OpenWrt-Devel] [PATCH 1/2] ath79: fix qca955x pcie0 memory size
In-Reply-To: <20190129041253.18725-2-spiccinini@altermundi.net>
References: <20190129041253.18725-1-spiccinini@altermundi.net>
 <20190129041253.18725-2-spiccinini@altermundi.net>
Message-ID: <4103df78-00ee-9881-6479-211a74f64330@amsat.org>

Hi Santiago,

On 1/29/19 5:12 AM, Santiago Piccinini wrote:
> Datasheet states that both PCI ranges are of 0x2000000 size:
> 0x1000_0000-0x11FF_FFF and 0x1200_0000-0x13FF_0000.
> 
> Signed-off-by: Santiago Piccinini <spiccinini at altermundi.net>

Each PCIe root complex region is 32MB wide indeed.

> ---
>  target/linux/ath79/dts/qca9557.dtsi | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/linux/ath79/dts/qca9557.dtsi b/target/linux/ath79/dts/qca9557.dtsi
> index bfc2545b27..541aa6916e 100644
> --- a/target/linux/ath79/dts/qca9557.dtsi
> +++ b/target/linux/ath79/dts/qca9557.dtsi
> @@ -186,7 +186,7 @@
>				reg = <0x180c0000 0x1000>, /* CRP */
>  				      <0x180f0000 0x100>,  /* CTRL */
>  				      <0x14000000 0x1000>; /* CFG */
>  				reg-names = "crp_base", "ctrl_base", "cfg_base";
> -				ranges = <0x2000000 0 0x10000000 0x10000000 0 0x04000000	/* pci memory */
> +				ranges = <0x2000000 0 0x10000000 0x10000000 0 0x02000000	/* pci memory */

"Map 32-bit non-prefetchable (0x02000000) region of 32MB (0 0x04000000)
from PCI 0x10000000 (0 0x10000000) at 0x10000000 (0x10000000) into cpu
space".
OK, your change is correct, thus:
Reviewed-by: Philippe Mathieu-Daud? <f4bug at amsat.org>

>  					  0x1000000 0 0x00000000 0x0000000 0 0x000001>;		/* io space */

Now that you pointed this line, I am not sure it is correct...
It maps I/O (0x01000000) region of 1B (0 0x000001) from PCI 0x00000000
(0 0x00000000) at 0x0000000 (0x0000000) into cpu space.
But the DDR is already mapped at 0x0000000 in cpu address space...
Am I missing something?
I'm cc'ing Johann who initially wrote that.

Regards,

Phil.

>  				interrupt-parent = <&intc2>;
>  				interrupts = <1>;
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From f4bug at amsat.org  Fri Feb  1 09:00:57 2019
From: f4bug at amsat.org (=?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?=)
Date: Fri, 1 Feb 2019 15:00:57 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] ath79: fix qca955x dual pci
 resource allocation
In-Reply-To: <20190129041253.18725-3-spiccinini@altermundi.net>
References: <20190129041253.18725-1-spiccinini@altermundi.net>
 <20190129041253.18725-3-spiccinini@altermundi.net>
Message-ID: <6d67370d-10d9-540c-f959-5a75cb31e8f8@amsat.org>

On 1/29/19 5:12 AM, Santiago Piccinini wrote:
> Tested with a dual pci QCA9558 board (LibreRouter v1) in three
> configurations: enabling pcie0 only, pcie1 only and both enabled.
> 
> Signed-off-by: Santiago Piccinini <spiccinini at altermundi.net>
> ---
>  target/linux/ath79/dts/qca9557.dtsi | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/linux/ath79/dts/qca9557.dtsi b/target/linux/ath79/dts/qca9557.dtsi
> index 541aa6916e..77e5a316dd 100644
> --- a/target/linux/ath79/dts/qca9557.dtsi
> +++ b/target/linux/ath79/dts/qca9557.dtsi
> @@ -209,7 +209,7 @@
>  				      <0x16000000 0x1000>; /* CFG */
>  				reg-names = "crp_base", "ctrl_base", "cfg_base";
>  				ranges = <0x2000000 0 0x12000000 0x12000000 0 0x02000000	/* pci memory */
> -					  0x1000000 0 0x00000000 0x0000000 0 0x000001>;		/* io space */
> +					  0x1000000 0 0x00000000 0x0000001 0 0x000001>;		/* io space */

This host range is indeed already registered for pcie0.
However I wonder if registering this I/O range make sense at all.
(Also, see my question on patch 1/2 of this series remapping this into
the DDR addr space).

>  				interrupt-parent = <&intc3>;
>  				interrupts = <0>;
>  
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From gch981213 at gmail.com  Fri Feb  1 10:01:46 2019
From: gch981213 at gmail.com (Chuanhong Guo)
Date: Fri, 1 Feb 2019 23:01:46 +0800
Subject: [OpenWrt-Devel] [PATCH 1/2] ath79: fix qca955x pcie0 memory size
In-Reply-To: <4103df78-00ee-9881-6479-211a74f64330@amsat.org>
References: <20190129041253.18725-1-spiccinini@altermundi.net>
 <20190129041253.18725-2-spiccinini@altermundi.net>
 <4103df78-00ee-9881-6479-211a74f64330@amsat.org>
Message-ID: <CAJsYDVK0mkL6TZbWv=d1sPQz5pjEksaVChq7u6tsPB4HhcXtHQ@mail.gmail.com>

Hi!

On Fri, Feb 1, 2019 at 9:53 PM Philippe Mathieu-Daud? <f4bug at amsat.org> wrote:
> [...]
> Now that you pointed this line, I am not sure it is correct...
> It maps I/O (0x01000000) region of 1B (0 0x000001) from PCI 0x00000000
> (0 0x00000000) at 0x0000000 (0x0000000) into cpu space.
> But the DDR is already mapped at 0x0000000 in cpu address space...
> Am I missing something?
The atheros PCIE controller doesn't have an IO space at all. (at least
the documentation doesn't mention it.)
I'm not sure if it's possible to write a PCIE driver without IO space.
I guess the existing code just uses 1 byte of system memory as a
placeholder.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From jo at mein.io  Fri Feb  1 10:31:24 2019
From: jo at mein.io (Jo-Philipp Wich)
Date: Fri, 1 Feb 2019 16:31:24 +0100
Subject: [OpenWrt-Devel]  OpenWrt 18.06.2 service release
Message-ID: <ccab04c3-3ac3-9cdd-2ee4-7090608ffe9f@wwsnet.net>

The OpenWrt Community is proud to announce the second service release of
the stable OpenWrt 18.06 series.

OpenWrt 18.06.2 incorporates a fair number of bug fixes in the network
userland and the build system, as well as updates to the kernel and base
packages.

---

Some selected highlights of the service release are:

  * Linux kernel updated to versions 4.9.152/4.14.95
    (from 4.9.120/4.14.63 in v18.06.1)
  * Security fixes for the Linux kernel, GNU patch, Glibc, BZip2, Grub,
    OpenSSL and MbedTLS
  * Build system bug fixes
  * IPv6 and network service fixes

For a detailed list of changes since 18.06.1 refer to
https://openwrt.org/releases/18.06/changelog-18.06.2

---

For latest information about the 18.06 series, refer to the wiki at:
https://openwrt.org/releases/18.06/

To download the v18.06.2 images, navigate to:
https://downloads.openwrt.org/releases/18.06.2/

Have fun!

The OpenWrt Community

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190201/e2cc7b41/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From f4bug at amsat.org  Fri Feb  1 11:32:14 2019
From: f4bug at amsat.org (=?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?=)
Date: Fri, 1 Feb 2019 17:32:14 +0100
Subject: [OpenWrt-Devel] [PATCH 1/2] ath79: fix qca955x pcie0 memory size
In-Reply-To: <CAJsYDVK0mkL6TZbWv=d1sPQz5pjEksaVChq7u6tsPB4HhcXtHQ@mail.gmail.com>
References: <20190129041253.18725-1-spiccinini@altermundi.net>
 <20190129041253.18725-2-spiccinini@altermundi.net>
 <4103df78-00ee-9881-6479-211a74f64330@amsat.org>
 <CAJsYDVK0mkL6TZbWv=d1sPQz5pjEksaVChq7u6tsPB4HhcXtHQ@mail.gmail.com>
Message-ID: <331bde28-30df-906a-622f-d4d9b1e4a511@amsat.org>

On 2/1/19 4:01 PM, Chuanhong Guo wrote:
> Hi!
> 
> On Fri, Feb 1, 2019 at 9:53 PM Philippe Mathieu-Daud? <f4bug at amsat.org> wrote:
>> [...]
>> Now that you pointed this line, I am not sure it is correct...
>> It maps I/O (0x01000000) region of 1B (0 0x000001) from PCI 0x00000000
>> (0 0x00000000) at 0x0000000 (0x0000000) into cpu space.
>> But the DDR is already mapped at 0x0000000 in cpu address space...
>> Am I missing something?
> The atheros PCIE controller doesn't have an IO space at all. (at least
> the documentation doesn't mention it.)
> I'm not sure if it's possible to write a PCIE driver without IO space.

Yes we can.

> I guess the existing code just uses 1 byte of system memory as a
> placeholder.

OK, so we can clearly get ride of that space then :)

Cc'ing John who introduced the QCA in 53c474abbd.

SAn: Can you test this snippet on your board and resend a patch?

-- >8 --
--- a/target/linux/ath79/dts/qca9557.dtsi
+++ b/target/linux/ath79/dts/qca9557.dtsi
@@ -187,6 +187,5 @@
                                      <0x14000000 0x1000>; /* CFG */
                                reg-names = "crp_base", "ctrl_base",
"cfg_base";
-                               ranges = <0x2000000 0 0x10000000
0x10000000 0 0x04000000        /* pci memory */
-                                         0x1000000 0 0x00000000
0x0000000 0 0x000001>;         /* io space */
+                               ranges = <0x02000000 0 0x10000000
0x10000000 0 0x02000000>;
                                interrupt-parent = <&intc2>;
                                interrupts = <1>;
@@ -209,6 +208,5 @@
                                      <0x16000000 0x1000>; /* CFG */
                                reg-names = "crp_base", "ctrl_base",
"cfg_base";
-                               ranges = <0x2000000 0 0x12000000
0x12000000 0 0x02000000        /* pci memory */
-                                         0x1000000 0 0x00000000
0x0000000 0 0x000001>;         /* io space */
+                               ranges = <0x02000000 0 0x12000000
0x12000000 0 0x02000000>;
                                interrupt-parent = <&intc3>;
                                interrupts = <0>;

---

Regards,

Phil.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Fri Feb  1 14:33:46 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Fri, 1 Feb 2019 11:33:46 -0800
Subject: [OpenWrt-Devel] ath79: ar71xx: Upgrade: tl-wr842n-v1 has Wrong
 BOARDNAME in ar71xx Builds
Message-ID: <2647c5b7-70e2-f236-ecbc-8f06df5959bd@wagsky.com>

As reported in 
https://forum.openwrt.org/t/ath79-image-builder-problem-for-wr842n-v1/30197/4?u=jeff

the board configuration for the ar71xx tl-wr842n-v1 improperly sets 
BOARDNAME to TL-MR3420
(confirmed on master and on openwrt-18.06)

As a result, users upgrading that device to ath79 will not have a 
seamless experience, requiring manual intervention.

I'm hesitant to suggest that the TL-MR3420 be added to SUPPORTED_DEVICES 
for tl-wr842n-v2 under ath79, as I believe the MR3420 is a 4/32 device 
and the WR842N v1 is a 8/32 device. Some <strike>idiot</strike> 
uninformed user might suggest that TL-MR3420 users try to flash the 8 MB 
image.

Jeff


target/linux/ar71xx/image/generic-tp-link.mk:

define Device/tl-wr842n-v1
 ? $(Device/tplink-8m)
 ? DEVICE_TITLE := TP-LINK TL-WR842N/ND v1
 ? DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
 ? BOARDNAME := TL-MR3420
 ? DEVICE_PROFILE := TLWR842
 ? TPLINK_HWID := 0x08420001
endef
TARGET_DEVICES += tl-wr842n-v1



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at david-bauer.net  Fri Feb  1 14:48:41 2019
From: mail at david-bauer.net (David Bauer)
Date: Fri,  1 Feb 2019 20:48:41 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: add support for Xiaomi Mi Router 4Q
Message-ID: <20190201194841.7992-1-mail@david-bauer.net>

Hardware
--------
CPU:   Qualcomm Atheros QCA9561
RAM:   64M DDR2
FLASH: 16M SPI-NOR
ETH:   1x WAN - 2x LAN
WiFi:  QCA9561 3T3R
BTN:   1x Reset - 1x WPS
LED:   1x Blue - 1x Red - 1x Yellow
UART:  TX - GND - RX - VCC (From ethernet port)
       115200n8 - 3.3V

Installation
------------
1. Connect to the device via UART.

2. Interrupt the U-Boot on power-on by pressing enter when prompted.

3. Connect you computer to one of the routers LAN ports.
   Assign yourself the IP 192.168.31.10/24.
   Copy the OpenWRT initramfs image to a tftp server root directory.
   Rename the image to 'x4q.bin'.

4. Load the initramfs image to the router by executing following command
   in U-Boot. The image will boot afterwards.

   > tftpboot 0x81000000 x4q.bin; bootm

5. SCP the sysupgrade-image into '/tmp'.
   Remember to assign yourself an IP in 192.168.1.0/24 for this step!

6. Install OpenWRT permanently by executing

   > sysupgrade -n /tmp/<OpenWRT-sysupgrade-image>

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 .../ath79/base-files/etc/board.d/02_network   |   5 +
 .../ath79/dts/qca9561_xiaomi_mi-router-4q.dts | 153 ++++++++++++++++++
 target/linux/ath79/image/generic.mk           |   7 +
 3 files changed, 165 insertions(+)
 create mode 100644 target/linux/ath79/dts/qca9561_xiaomi_mi-router-4q.dts

diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network
index 6f3ef614db..08f69e5a48 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -215,6 +215,11 @@ ath79_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0 at eth0" "2:lan" "3:wan"
 		;;
+	xiaomi,mi-router-4q)
+		ucidef_set_interface_wan "eth0"
+		ucidef_add_switch "switch0" \
+			"0 at eth1" "3:lan:1" "4:lan:2"
+		;;
 	*)
 		ucidef_set_interfaces_lan_wan "eth0" "eth1"
 		;;
diff --git a/target/linux/ath79/dts/qca9561_xiaomi_mi-router-4q.dts b/target/linux/ath79/dts/qca9561_xiaomi_mi-router-4q.dts
new file mode 100644
index 0000000000..8b8818c82f
--- /dev/null
+++ b/target/linux/ath79/dts/qca9561_xiaomi_mi-router-4q.dts
@@ -0,0 +1,153 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "qca956x.dtsi"
+
+/ {
+	compatible = "xiaomi,mi-router-4q", "qca,qca9560";
+	model = "Xiaomi Mi Router 4Q";
+
+	aliases {
+		led-boot = &led_yellow;
+		led-failsafe = &led_red;
+		led-running = &led_blue;
+		led-upgrade = &led_red;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	keys {
+		compatible = "gpio-keys-polled";
+		poll-interval = <100>;
+
+		reset {
+			label = "Reset button";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 21 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "WPS/MI button";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio 19 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led_red: led_red {
+			label = "mi-router-4q:red:led";
+			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+		};
+
+		led_yellow: led_yellow {
+			label = "mi-router-4q:yellow:led";
+			gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
+		};
+
+		led_blue: led_blue {
+			label = "mi-router-4q:blue:led";
+			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&uart {
+	status = "okay";
+};
+
+&gpio {
+	status = "okay";
+};
+
+&spi {
+	status = "okay";
+	num-cs = <1>;
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "u-boot";
+				reg = <0x000000 0x30000>;
+				read-only;
+			};
+
+			partition at 30000 {
+				label = "nvram";
+				reg = <0x030000 0x10000>;
+				read-only;
+			};
+
+			partition at 40000 {
+				label = "boarddata";
+				reg = <0x40000 0x10000>;
+				read-only;
+			};
+
+			partition at 50000 {
+				label = "crash";
+				reg = <0x50000 0x10000>;
+				read-only;
+			};
+
+			art: partition at 60000 {
+				label = "art";
+				reg = <0x60000 0x10000>;
+				read-only;
+			};
+
+			partition at 70000 {
+				label = "cfg_bak";
+				reg = <0x70000 0x20000>;
+				read-only;
+			};
+
+			partition at 90000 {
+				label = "overlay";
+				reg = <0x90000 0x170000>;
+				read-only;
+			};
+
+			partition at 200000 {
+				compatible = "denx,uimage";
+				label = "firmware";
+				reg = <0x200000 0xe00000>;
+			};
+		};
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	phy-handle = <&swphy4>;
+	mtd-mac-address = <&art 0x0>;
+};
+
+&eth1 {
+	status = "okay";
+
+	mtd-mac-address = <&art 0x6>;
+};
+
+&wmac {
+	status = "okay";
+
+	mtd-cal-data = <&art 0x1000>;
+	mtd-mac-address = <&art 0x0>;
+	mtd-mac-address-increment = <1>;
+};
diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 9d0412fe97..94dfe3d4d7 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -528,3 +528,10 @@ define Device/winchannel_wb2000
   DEVICE_PACKAGES := kmod-i2c-core kmod-i2c-gpio kmod-rtc-ds1307 kmod-usb2 kmod-usb-ledtrig-usbport
 endef
 TARGET_DEVICES += winchannel_wb2000
+
+define Device/xiaomi_mi-router-4q
+  ATH_SOC := qca9561
+  DEVICE_TITLE := Xiaomi Mi Router 4Q
+  IMAGE_SIZE := 14336k
+endef
+TARGET_DEVICES += xiaomi_mi-router-4q
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From f4bug at amsat.org  Fri Feb  1 15:37:34 2019
From: f4bug at amsat.org (=?UTF-8?Q?Philippe_Mathieu-Daud=c3=a9?=)
Date: Fri, 1 Feb 2019 21:37:34 +0100
Subject: [OpenWrt-Devel] [PATCH 1/2] ath79: fix qca955x pcie0 memory size
In-Reply-To: <331bde28-30df-906a-622f-d4d9b1e4a511@amsat.org>
References: <20190129041253.18725-1-spiccinini@altermundi.net>
 <20190129041253.18725-2-spiccinini@altermundi.net>
 <4103df78-00ee-9881-6479-211a74f64330@amsat.org>
 <CAJsYDVK0mkL6TZbWv=d1sPQz5pjEksaVChq7u6tsPB4HhcXtHQ@mail.gmail.com>
 <331bde28-30df-906a-622f-d4d9b1e4a511@amsat.org>
Message-ID: <a63275c8-4469-774a-c0ae-262ba7e810ab@amsat.org>

On 2/1/19 5:32 PM, Philippe Mathieu-Daud? wrote:
> On 2/1/19 4:01 PM, Chuanhong Guo wrote:
>> Hi!
>>
>> On Fri, Feb 1, 2019 at 9:53 PM Philippe Mathieu-Daud? <f4bug at amsat.org> wrote:
>>> [...]
>>> Now that you pointed this line, I am not sure it is correct...
>>> It maps I/O (0x01000000) region of 1B (0 0x000001) from PCI 0x00000000
>>> (0 0x00000000) at 0x0000000 (0x0000000) into cpu space.
>>> But the DDR is already mapped at 0x0000000 in cpu address space...
>>> Am I missing something?
>> The atheros PCIE controller doesn't have an IO space at all. (at least
>> the documentation doesn't mention it.)
>> I'm not sure if it's possible to write a PCIE driver without IO space.
> 
> Yes we can.

I checked with someone from upstream Linux PCI before going with that
statement; however Santiago told me via side chat this tree is based on
a 4.14 kernel, where ath79 uses the pci-legacy driver.

The legacy mips driver (and the sh4) fails if no IO space is provided.
I see in the tree the similar pattern used by other boards ath79 based,
so this is effectively a kludge for the legacy PCI driver.

Since this is about a downstream distribution, I'd go with a patch to
fix pci-legacy.c rather than mapping in DDR.
If someone disagree, then I'd rather map those phantom IO spaces out of
the DDR space.

>> I guess the existing code just uses 1 byte of system memory as a
>> placeholder.
> 
> OK, so we can clearly get ride of that space then :)
> 
> Cc'ing John who introduced the QCA in 53c474abbd.
> 
> SAn: Can you test this snippet on your board and resend a patch?
> 
> -- >8 --
> --- a/target/linux/ath79/dts/qca9557.dtsi
> +++ b/target/linux/ath79/dts/qca9557.dtsi
> @@ -187,6 +187,5 @@
>                                       <0x14000000 0x1000>; /* CFG */
>                                 reg-names = "crp_base", "ctrl_base",
> "cfg_base";
> -                               ranges = <0x2000000 0 0x10000000
> 0x10000000 0 0x04000000        /* pci memory */
> -                                         0x1000000 0 0x00000000
> 0x0000000 0 0x000001>;         /* io space */
> +                               ranges = <0x02000000 0 0x10000000
> 0x10000000 0 0x02000000>;
>                                 interrupt-parent = <&intc2>;
>                                 interrupts = <1>;
> @@ -209,6 +208,5 @@
>                                       <0x16000000 0x1000>; /* CFG */
>                                 reg-names = "crp_base", "ctrl_base",
> "cfg_base";
> -                               ranges = <0x2000000 0 0x12000000
> 0x12000000 0 0x02000000        /* pci memory */
> -                                         0x1000000 0 0x00000000
> 0x0000000 0 0x000001>;         /* io space */
> +                               ranges = <0x02000000 0 0x12000000
> 0x12000000 0 0x02000000>;
>                                 interrupt-parent = <&intc3>;
>                                 interrupts = <0>;
> 
> ---
> 
> Regards,
> 
> Phil.
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at david-bauer.net  Fri Feb  1 18:34:43 2019
From: mail at david-bauer.net (David Bauer)
Date: Sat,  2 Feb 2019 00:34:43 +0100
Subject: [OpenWrt-Devel] [PATCH v2] ramips: various Netgear R6120 fixes
Message-ID: <20190201233443.4300-1-mail@david-bauer.net>

The R6120 has no 5GHz WLAN LED, the assigned GPIO in fact controls
the WAN LED.

Renames the LED accordingly in the device-tree.
Removes the 5GHz WLAN LED trigger.
Adds the correct WAN port LED trigger.

----

Currently, the MAC address for the Netgear R6120 is read from the NVRAM
partition. The offset for the MAC address however is not consistent
across devices or firmware versions.

Switch to using the factory partition like all other Netgear devices do.

----

The LAN ports of the R6120 are labled in reverse on the casing.

Adjust LuCI switchport numbering accordingly.

----

The WiFi eeprom offsets for the R6120 are currently wrong (5GHz offset
is bigger than the partition itself).

Fixes poor performance on 2.4 and 5 GHz.

Signed-off-by: David Bauer <mail at david-bauer.net>
---
v2:
 - Squash commits into one
 - Fix incorrect WiFi eeprom offsets

 .../ramips/base-files/etc/board.d/01_leds     |  2 +-
 .../ramips/base-files/etc/board.d/02_network  |  5 ++++-
 target/linux/ramips/dts/R6120.dts             | 20 +++++++++----------
 3 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/target/linux/ramips/base-files/etc/board.d/01_leds b/target/linux/ramips/base-files/etc/board.d/01_leds
index e36f125126..056443c49d 100755
--- a/target/linux/ramips/base-files/etc/board.d/01_leds
+++ b/target/linux/ramips/base-files/etc/board.d/01_leds
@@ -248,8 +248,8 @@ mzk-ex750np)
 	;;
 netgear,r6120)
 	ucidef_set_led_switch "lan" "lan" "$boardname:green:lan" "switch0" "0x0f"
+	ucidef_set_led_switch "wan" "wan" "$boardname:green:wan" "switch0" "0x10"
 	ucidef_set_led_wlan "wlan2g" "WiFi 2.4GHz" "$boardname:green:wlan2g" "phy0tpt"
-	ucidef_set_led_wlan "wlan5g" "WiFi 5GHz" "$boardname:green:wlan5g" "phy1tpt"
 	;;
 oy-0001)
 	set_wifi_led "$boardname:green:wifi"
diff --git a/target/linux/ramips/base-files/etc/board.d/02_network b/target/linux/ramips/base-files/etc/board.d/02_network
index 74938121a8..7496926c37 100755
--- a/target/linux/ramips/base-files/etc/board.d/02_network
+++ b/target/linux/ramips/base-files/etc/board.d/02_network
@@ -107,7 +107,6 @@ ramips_setup_interfaces()
 	mtc,wr1201|\
 	mzk-750dhp|\
 	mzk-w300nh2|\
-	netgear,r6120|\
 	nixcore-x1-8M|\
 	nixcore-x1-16M|\
 	oy-0001|\
@@ -336,6 +335,10 @@ ramips_setup_interfaces()
 			"0:lan" "1:lan" "2:lan" "3:lan" "6t at eth0"
 		ucidef_set_interface_wan "usb0"
 		;;
+	netgear,r6120)
+		ucidef_add_switch "switch0" \
+			"0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "4:wan" "6 at eth0"
+		;;
 	hc5761)
 		ucidef_add_switch "switch0" \
 			"1:lan" "4:lan" "0:wan" "6 at eth0"
diff --git a/target/linux/ramips/dts/R6120.dts b/target/linux/ramips/dts/R6120.dts
index 375e400299..d37dde2145 100644
--- a/target/linux/ramips/dts/R6120.dts
+++ b/target/linux/ramips/dts/R6120.dts
@@ -55,13 +55,13 @@
 			gpios = <&gpio1 9 GPIO_ACTIVE_LOW>;
 		};
 
-		wlan5 {
-			label = "r6120:green:wlan5g";
+		wan {
+			label = "r6120:green:wan";
 			gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
 		};
 
-		wlan5_orange {
-			label = "r6120:orange:wlan5g";
+		wan_orange {
+			label = "r6120:orange:wan";
 			gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
 		};
 	};
@@ -103,7 +103,7 @@
 				read-only;
 			};
 
-			nvram: partition at 60000 {
+			partition at 60000 {
 				label = "nvram";
 				reg = <0x60000 0x30000>;
 				read-only;
@@ -126,12 +126,12 @@
 
 &wmac {
 	status = "okay";
-	mtd-mac-address = <&nvram 0x100b0>;
-	mediatek,mtd-eeprom = <&factory 0x20000>;
+	mtd-mac-address = <&factory 0x4>;
+	mediatek,mtd-eeprom = <&factory 0x0>;
 };
 
 &ethernet {
-	mtd-mac-address = <&nvram 0x100b0>;
+	mtd-mac-address = <&factory 0x4>;
 };
 
 &pcie {
@@ -141,9 +141,9 @@
 &pcie0 {
 	wifi at 0,0 {
 		reg = <0x0000 0 0 0 0>;
-		mediatek,mtd-eeprom = <&factory 0x28000>;
+		mediatek,mtd-eeprom = <&factory 0x8000>;
 		ieee80211-freq-limit = <5000000 6000000>;
-		mtd-mac-address = <&nvram 0x100b0>;
+		mtd-mac-address = <&factory 0x4>;
 		mtd-mac-address-increment = <(2)>;
 	};
 };
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mhei at heimpold.de  Sat Feb  2 04:09:40 2019
From: mhei at heimpold.de (Michael Heimpold)
Date: Sat, 02 Feb 2019 10:09:40 +0100
Subject: [OpenWrt-Devel] [PATCH] usbgadget: Add new package
In-Reply-To: <1548772235-6139-1-git-send-email-ynezz@true.cz>
References: <1548772235-6139-1-git-send-email-ynezz@true.cz>
Message-ID: <1889362.jnGHAdHgZx@kerker>

Hi Petr,

Am Dienstag, 29. Januar 2019, 15:30:35 CET schrieb Petr ?tetiar:
> This package allows easier configuration of USB gadgets via standard UCI
> interface. So far only CDC/ACM has been implemented and tested.
> 

thanks for working on this. A few idea inside...

> Signed-off-by: Petr ?tetiar <ynezz at true.cz>
> ---
>  package/utils/usbgadget/Makefile               | 33 ++++++++++
>  package/utils/usbgadget/files/usbgadget.config | 21 ++++++
>  package/utils/usbgadget/files/usbgadget.init   | 90
> ++++++++++++++++++++++++++ 3 files changed, 144 insertions(+)
>  create mode 100644 package/utils/usbgadget/Makefile
>  create mode 100644 package/utils/usbgadget/files/usbgadget.config
>  create mode 100644 package/utils/usbgadget/files/usbgadget.init
> 
> diff --git a/package/utils/usbgadget/Makefile
> b/package/utils/usbgadget/Makefile new file mode 100644
> index 0000000..e45bfe4
> --- /dev/null
> +++ b/package/utils/usbgadget/Makefile
> @@ -0,0 +1,33 @@
> +include $(TOPDIR)/rules.mk
> +
> +PKG_NAME:=usbgadget
> +PKG_RELEASE:=1
> +
> +include $(INCLUDE_DIR)/package.mk
> +
> +define Package/usbgadget
> +  SECTION:=utils
> +  CATEGORY:=Utilities
> +  TITLE:=Utility for USB gadgets configuration
> +endef
> +
> +define Package/usbgadget/conffiles
> +/etc/config/usbgadget
> +endef
> +
> +define Package/usbgadget/description
> + This package contains a small script which could be used for
> + configuration of USB gadgets over configfs kernel interface.
> +endef
> +
> +define Build/Compile
> +endef
> +
> +define Package/usbgadget/install
> +	$(INSTALL_DIR) $(1)/etc/init.d
> +	$(INSTALL_DIR) $(1)/etc/config
> +	$(INSTALL_BIN) ./files/usbgadget.init $(1)/etc/init.d/usbgadget
> +	$(INSTALL_DATA) ./files/usbgadget.config $(1)/etc/config/usbgadget
> +endef
> +
> +$(eval $(call BuildPackage,usbgadget))
> diff --git a/package/utils/usbgadget/files/usbgadget.config
> b/package/utils/usbgadget/files/usbgadget.config new file mode 100644
> index 0000000..65f6b5c
> --- /dev/null
> +++ b/package/utils/usbgadget/files/usbgadget.config
> @@ -0,0 +1,21 @@
> +config gadget
> +	option type 'acm'
> +	option name 'gadget-acm'
> +	option manufacturer 'OpenWrt'
> +	option product 'OpenWrt USB CDC/ACM'
I think we could use defaults from /etc/device_info file in case
manufacturer and product are not set in config. This allow overriding the 
values by user and have sane defaults.

> +	option serial_number '007'

Here too, I think we should provide a hook in the script to obtain a serial
e.g. from U-Boot environment by default, or from a OTP register or so, but
allow overriding it by user.

> +	option usb_vid '0xbeef'
> +	option usb_pid '0x1234'
I would use Linux' Foundation defaults so that drivers on the USB host side
can match (in case the functions classes are not used, I admit that I'm not
really sure about this because I tested only Linux USB host systems so far.)

> +	option udc_dev 'ci_hdrc.0'
> +	option disabled 1
> +
> +config gadget
> +	option type 'acm+rndis'
> +	option name 'gadget-acm-rndis'
> +	option manufacturer 'OpenWrt'
> +	option product 'OpenWrt USB CDC/ACM+RNDIS'
> +	option serial_number '009'
> +	option usb_vid '0xbeef'
> +	option usb_pid '0x9abc'
> +	option udc_dev 'ci_hdrc.0'
> +	option disabled 1

I would prefer to have "config gadget <a-gadget-name>" to configure one
(multi-function) gadget and then have individual "config function <...>" 
section to configure one function for a referenced gadget.
I think the functions are orthogonal and thus "acm+rndis" looks like 
wrong approach for me.
I know this will make the init script much more complicated.

Regards, Michael


> diff --git a/package/utils/usbgadget/files/usbgadget.init
> b/package/utils/usbgadget/files/usbgadget.init new file mode 100644
> index 0000000..b49b6f3
> --- /dev/null
> +++ b/package/utils/usbgadget/files/usbgadget.init
> @@ -0,0 +1,90 @@
> +#!/bin/sh /etc/rc.common
> +
> +START=97
> +
> +load_gadget() {
> +	local name
> +	local type
> +	local manufacturer
> +	local product
> +	local serial_number
> +	local usb_vid
> +	local usb_pid
> +	local udc_dev
> +	local disabled
> +
> +	config_get disabled $1 disabled
> +	[ "$disabled" = "1" ] && return
> +
> +	config_get usb_vid $1 usb_vid
> +	config_get usb_pid $1 usb_pid
> +	config_get udc_dev $1 udc_dev
> +	[ -z "$usb_vid" -o -z "$usb_pid" -o -z "$udc_dev" ] && return
> +
> +	config_get type $1 type "acm"
> +	config_get name $1 name "${usb_vid}-acm"
> +	config_get manufacturer $1 manufacturer "OpenWrt"
> +	config_get product $1 product "OpenWrt USB ${type}"
> +	config_get serial_number $1 serial_number "1922"
> +
> +	local path="/sys/kernel/config/usb_gadget/$name"
> +	mkdir -p "$path"
> +	echo "$usb_vid" > "$path/idVendor"
> +	echo "$usb_pid" > "$path/idProduct"
> +
> +	local strings="$path/strings/0x409"
> +	mkdir -p "$strings"
> +	echo "$product" > "$strings/product"
> +	echo "$manufacturer" > "$strings/manufacturer"
> +	echo "$serial_number" > "$strings/serialnumber"
> +
> +	mkdir -p "$path/configs/$name.1"
> +
> +	case "$type" in
> +	"acm")
> +		mkdir -p "$path/functions/acm.0"
> +		ln -sf "$path/functions/acm.0" "$path/configs/$name.1"
> +		;;
> +	"acm+rndis")
> +		mkdir -p "$path/functions/acm.0"
> +		mkdir -p "$path/functions/rndis.0"
> +		ln -sf "$path/functions/acm.0" "$path/configs/$name.1"
> +		ln -sf "$path/functions/rndis.0" "$path/configs/$name.1"
> +		;;
> +	esac
> +
> +	echo "$udc_dev" > "$path/UDC"
> +}
> +
> +unload_gadget() {
> +	local name
> +	local usb_vid
> +	local udc_dev
> +	local disabled
> +
> +	config_get disabled $1 disabled
> +	[ "$disabled" = "1" ] && return
> +
> +	config_get usb_vid $1 usb_vid
> +	config_get udc_dev $1 udc_dev
> +	[ -z "$usb_vid" -o -z "$udc_dev" ] && return
> +
> +	config_get name $1 name "${usb_vid}-acm"
> +	[ -d "/sys/kernel/config/usb_gadget/$name" ] || return
> +	echo '' > "/sys/kernel/config/usb_gadget/$name/UDC" > /dev/null
> +}
> +
> +stop() {
> +	[ -e /sys/kernel/config/usb_gadget ] || exit 0
> +	config_load usbgadget
> +	config_foreach unload_gadget gadget
> +}
> +
> +start() {
> +	grep -q configfs /proc/modules || exit 0
> +	grep -q configfs /proc/mounts || mount -t configfs none /sys/kernel/config
> +	[ -e /sys/kernel/config/usb_gadget ] || exit 0
> +
> +	config_load usbgadget
> +	config_foreach load_gadget gadget
> +}





_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From petrcvekcz at gmail.com  Sat Feb  2 05:28:49 2019
From: petrcvekcz at gmail.com (Petr Cvek)
Date: Sat, 2 Feb 2019 11:28:49 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <18907931549035116@myt6-7734411c649e.qloud-c.yandex.net>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
 <466090c6-4b42-d0f8-ce71-5ba6a1c1476d@kresin.me>
 <b54f4672-ebba-2033-c640-2b484626890e@hauke-m.de>
 <de8f9a7b-7ddf-29bd-2289-f6e492e6838d@gmail.com>
 <18907931549035116@myt6-7734411c649e.qloud-c.yandex.net>
Message-ID: <7f38a742-7190-b5c7-2b9c-628a3cc0326b@gmail.com>

Hi Yaroslav,


Dne 01. 02. 19 v 16:31 Yaroslav Petrov napsal(a):
> Hi Petr,
> ?
> I test it on vgv7510kw22 (100Mbit ports):
> ?
> 1. The backport of the vanilla eth driver path doesnt work (interfaces
> are DOWN) -> no Network

As there is phy interface in openwrt version it is possible it is not compatible with your device I think I've had to change the iteration over phy OF nodes to fit these two variants together. Anyway that isn't a critical section, the critical section is xmit, poll and rx parts, which are really ineffective in openwrt version. 

> 2. ICU patch give is quite interesting result: If rx/tx are balanced
> betwin CPUs, I have c.a. 88Mbit/sec (max 65% sirq load) and c.a. 92Mbit
> without balancing (max 50% sirq load):

I have a theory about that I was fiddling with /proc/irq/72/smp_affinity and /proc/irq/73/smp_affinity and it seems there is a correlation with SMP affinity of IRQ and communicating process.

With this test:

host (server, receiving):
	nc -l -p 4321 | pv > /dev/null
lantiq (client, sending):
	cat /dev/zero | nc 10.0.0.1 4321

I can get in pv up to 9.3 MiByte/s when both irqs are on the same VPE. When IRQs are on different VPEs I can get about 8.3 MiByte/s. When I quickly switch both IRQ on the other VPE I get about 7.4 MiByte/s for few seconds until it reaches again 9.3 MiByte/s. That probably scheduler moving netcat process on the same VPE as interrupts are.

So it seems there is some overhead between two VPEs on sending data and receiving TCP handshakes. So the ethernet seems to be more effective to have both IRQ on the same VPE. But other peripherals could use this for the similar speedup. If all ethernet IRQs would be on one VPE and all wifi IRQs (+ wpa_supplicant) on the other, the wpa_supplicant should be faster in a similar fashion as netcat is faster there.

my iperf3 tests (iperf3 -s on lantiq): all 5 patches, vrx200_rx on CPU0, vrx200_tx on CPU1, no irqbalance, TD-W9980B (2x 1G native phy, 2x 1G external phy; lan 20m 5e UTP connected in port "lan 2" - on external phy), rootfs over NFS, no wifi, no DSL, no USB, fixed kernel warnings about full TX fifo in backported ethernet driver

iperf3 -c 10.0.0.80
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   354 MBytes   297 Mbits/sec  456             sender
[  4]   0.00-10.00  sec   353 MBytes   296 Mbits/sec                  receiver

iperf3 -c 10.0.0.80 -R
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   115 MBytes  96.5 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   115 MBytes  96.5 Mbits/sec                  receiver

iperf3 -c 10.0.0.80 -u -b 150M
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  715.205 ms  789/929 (85%)  
[  4] Sent 929 datagrams
... in lantiq console:
[  5]   0.00-10.00  sec  1.09 MBytes   917 Kbits/sec  715.205 ms  789/929 (85%)  receiver

iperf3 -c 10.0.0.80 -u -b 150M -R
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.157 ms  0/22887 (0%)  
[  4] Sent 22887 datagrams
... in lantiq console
[  5]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.000 ms  0/22887 (0%)  sender

iperf3 -c 10.0.0.80 -u -b 1000M
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.01 GBytes   865 Mbits/sec  0.284 ms  131600/132024 (1e+02%)  
[  4] Sent 132024 datagrams
... in lantiq console
[  5]   0.00-10.00  sec  3.31 MBytes  2.78 Mbits/sec  0.284 ms  131600/132024 (1e+02%)  receiver

iperf3 -c 10.0.0.80 -u -b 1000M -R
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   248 MBytes   208 Mbits/sec  0.022 ms  0/31752 (0%)  
[  4] Sent 31752 datagrams
... in lantiq console
[  5]   0.00-10.00  sec   248 MBytes   208 Mbits/sec  0.000 ms  0/31752 (0%)  sender

===========================

BTW before backporting the whole vanilla ethernet driver I've come to some optimizations in openwrt version

static int xrx200_poll_rx(struct napi_struct *napi, int budget)
...
        if (complete || !rx) {
                napi_complete(&ch->napi);
                ltq_dma_enable_irq(&ch->dma);
        }

if changed to:

        if (complete || !rx) {
                if (napi_complete_done(&ch->napi, rx)) {
	                ltq_dma_enable_irq(&ch->dma);
                }
        }

will reduce irq load (irq will generate only after work completion)

Another place at:

static void xrx200_tx_housekeeping(unsigned long ptr)
...
        for (i = 0; i < XRX200_MAX_DEV && ch->devs[i]; i++)
                netif_wake_queue(ch->devs[i]);

any tasklet will try to wake both queues (the second one wasn't even used in my device!). Reducing the driver to only a single TX queue increased the TX bitrate.

(IMO there is a timeout problem with the vanilla driver, where xrx200_start_xmit() can stop the queue if all descriptors are filled, but there is no queue waking up in xrx200_tx_housekeeping().


best regards
Petr

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Sat Feb  2 08:49:11 2019
From: openwrt-devel at lists.openwrt.org (R. Diez via openwrt-devel)
Date: Sat, 02 Feb 2019 13:49:11 +0000
Subject: [OpenWrt-Devel] A second 'make' always rebuilds something
In-Reply-To: <wSxeSSGH2EqCq9T3VEsbUTGsDQ9oBP77RdGGoHdi2303@mailpile>
References: <a016d183-9780-94e1-07a3-e6c10d948ef7@thecshore.com>
 <wSxeSSGH2EqCq9T3VEsbUTGsDQ9oBP77RdGGoHdi2303@mailpile>
Message-ID: <mailman.18926.1549115351.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: "R. Diez" <rdiezmail-openwrt at yahoo.com>
Subject: Re: [OpenWrt-Devel] A second 'make' always rebuilds something
Date: Sat, 2 Feb 2019 14:49:01 +0100
Size: 4751
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190202/0d319935/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at aparcar.org  Sat Feb  2 09:03:40 2019
From: mail at aparcar.org (Paul Spooren)
Date: Sat, 2 Feb 2019 15:03:40 +0100
Subject: [OpenWrt-Devel] mapping metadata supported_devices to profile
Message-ID: <48a33309-4e3e-0849-c5ba-555e04bcff1a@aparcar.org>

Hi,

I couldn't find a mapping between the profiles and the
"supported_devices" in the resulting firmware metadata. With a script I
extracted the metadata and created a mapping, maybe it is useful for
someone.

https://chef.libremesh.org/download/openwrt/18.06.1/mapping.txt

It only contains entries where the profile != supported_device.

Some profiles seem to lack metadata, I added a list as well

https://chef.libremesh.org/download/openwrt/18.06.1/missing.txt

Best
Paul


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From foss at volatilesystems.org  Sat Feb  2 13:08:04 2019
From: foss at volatilesystems.org (Stijn Segers)
Date: Sat, 02 Feb 2019 19:08:04 +0100
Subject: [OpenWrt-Devel] mt76 issues on 18.06 HEAD - was: 18.06.2
 branching/builds
In-Reply-To: <1548888392.7653.0@volatilesystems.org>
References: <99D80534-25F0-4234-B4CA-84CC6C6C650F@volatilesystems.org>
 <2e2aae0e-59c1-d075-0826-0fa73c1bc56f@nbd.name>
 <1548888392.7653.0@volatilesystems.org>
Message-ID: <1549130884.6819.0@volatilesystems.org>



Op woensdag 30 januari 2019 om 23:46 schreef Stijn Segers 
<foss at volatilesystems.org>:
> 
> Op woensdag 30 januari 2019 om 18:17 schreef Felix Fietkau 
> <nbd at nbd.name>:
>> On 2019-01-30 16:58, Stijn Segers wrote:
>>>  Hi Jo, Felix,
>>> 
>>>  Far be it from me to pretend this issue might have a larger impact 
>>> than
>>>  I myself can assess, but Felix has been bumping mt76 on the 18.06
>>>  branch, and those bumps have broken my 18.06.1+ mt7621 wireless [1]
>>>  (and, judging from Flyspray, at least one other person's as well).
>>> 
>>>  I have no idea how many people are running both mt7621 and 18.06 
>>> HEAD
>>>  (like me and the other guy), so this might be an isolated issue, 
>>> but I
>>>  do know wireless craps out on me within a few minutes and the AP 
>>> needs
>>>  to be brought up again; it's not just a matter of worse 
>>> performance but
>>>  outright disconnection.
>>> 
>>>  So I'd like to ask if 18.06.2 could be released with a fix/with 
>>> those
>>>  mt76 rolled back.
>> Hey Stijn,
>> 
>> Thanks for bringing this to my attention again.
>> Could you please test the two attached patches individually with the
>> latest 18.06 branch to see if either of them resolves your issue?
>> 
>> I've been doing a lot of tests lately with both MT7603 and MT7612E on
>> MT7621, and I have been unable to reproduce your issues so far.
>> 
>> Thanks,
>> 
>> - Felix
> 
> Thanks Felix, will give both a shot and report back.
> 
> Jo: I kind of hoped to catch Felix on IRC but that didn't happen, in 
> hindsight I should have pinged you as well about this, but there's 
> probably other bugs pending people would consider showstoppers for a 
> point release... Would probably only have delayed it.
> 
> Vielen Dank!
> 
> Stijn

Hi Felix,

I built 18.06 HEAD with your 2019-01-30 bump, and with the 
mt76-disable-edcca.patch applied. That seemed very stable (up since 
30/01 evening, very high throughput - never seen anything close to 50 
MBps on my 2x2 client before; I barely got close to 25 MBps before). No 
laggy feeling, so didn't check ping. Wireless wasn't used in the 
morning or the day, but I have tried to stress it in the evening 
(31/01) -transferred about 65 GiB of data over the WLAN (scp). No 
hiccups whatsoever.

I then reverted to vanilla 18.06 HEAD 31/01, so none of the patches 
applied, and the connection kept working but page loading in the 
browser e.g. would occasionally be slow (nothing else chewing on my 
network connection). I checked ping, and it was all over the place 
again (from sub-milliseconds to 10 ms, occasionally 100ms to other 
devices on the LAN). I suppose there's no real value in those numbers, 
but it does quantify the feeling of the wireless 'choking' momentarily, 
then picking up again. After like half an hour, wireless would hang on 
my laptop: I was unable to ping anything, web pages stopped loading 
altogether. Same thing on my smartphone. However, when I disabled 
wireless on both clients, then turned it on again, the connection 
started working once more; that didn't happen on the previous mt76 
bumps. There the radio would just seem to die like explained in the bug 
report.

Logread doesn't show much, filtered for my laptop's MAC e.g. (I killed 
the wireless around 22:46):

Thu Jan 31 21:32:53 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f IEEE 802.11: authenticated
Thu Jan 31 21:32:53 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f IEEE 802.11: associated (aid 1)
Thu Jan 31 21:32:53 2019 daemon.notice hostapd: wlan0: AP-STA-CONNECTED 
a4:xx:xx:xx:6e:0f
Thu Jan 31 21:32:53 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f WPA: pairwise key handshake completed (RSN)
Thu Jan 31 21:32:53 2019 daemon.info dnsmasq-dhcp[3793]: 
DHCPREQUEST(br-lan) 10.0.0.5 a4:xx:xx:xx:6e:0f
Thu Jan 31 21:32:53 2019 daemon.info dnsmasq-dhcp[3793]: 
DHCPACK(br-lan) 10.0.0.5 a4:xx:xx:xx:6e:0f icarus
Thu Jan 31 22:36:53 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f IEEE 802.11: authenticated
Thu Jan 31 22:36:54 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f IEEE 802.11: associated (aid 1)
Thu Jan 31 22:36:54 2019 daemon.notice hostapd: wlan0: AP-STA-CONNECTED 
a4:xx:xx:xx:6e:0f
Thu Jan 31 22:36:54 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f WPA: pairwise key handshake completed (RSN)
Thu Jan 31 22:46:58 2019 daemon.notice hostapd: wlan0: 
AP-STA-DISCONNECTED a4:xx:xx:xx:6e:0f
Thu Jan 31 22:47:10 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f IEEE 802.11: authenticated
Thu Jan 31 22:47:10 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f IEEE 802.11: associated (aid 1)
Thu Jan 31 22:47:10 2019 daemon.notice hostapd: wlan0: AP-STA-CONNECTED 
a4:xx:xx:xx:6e:0f
Thu Jan 31 22:47:10 2019 daemon.info hostapd: wlan0: STA 
a4:xx:xx:xx:6e:0f WPA: pairwise key handshake completed (RSN)
Thu Jan 31 22:47:10 2019 daemon.info dnsmasq-dhcp[3793]: 
DHCPREQUEST(br-lan) 10.0.0.5 a4:xx:xx:xx:6e:0f
Thu Jan 31 22:47:10 2019 daemon.info dnsmasq-dhcp[3793]: 
DHCPACK(br-lan) 10.0.0.5 a4:xx:xx:xx:6e:0f icarus

I looked at the unfiltered log, no mt76 related messages whatsoever, 
just dnsmasq, hostapd and odhcpd messages in there.

Since that hang already happened within the hour, I ran a new build 
with the most recent mt76 bump (2019-01-31) together with the 'disable 
edcca' patch. That has been working fine so far (although I'm not 
hitting 50 MBps anymore :-P ). It's been up since Friday afternoon, so 
almost 30 hours now. The radio gets shut down at night, but I've been 
using it for hours and no issues as far as I can tell.

Do you want me to try the second patch, or is this OK?

Thanks!

Stijn

> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From greearb at candelatech.com  Sat Feb  2 22:27:18 2019
From: greearb at candelatech.com (Ben Greear)
Date: Sat, 2 Feb 2019 19:27:18 -0800
Subject: [OpenWrt-Devel] New CT wave-2 firmware available.
Message-ID: <d6c00be1-a984-4dad-5688-bf8d8c46e6e5@candelatech.com>


Here are the sha-sums, the 002 version changes to 003.
If someone could update openwrt to use them I'd appreciate it.  Changelog
is at the bottom.  I am hoping this resolves the crashes related to
rate-ctrl.

9980
6685623e2ee75909f734e45ae9321b9f78b18ed8c585eadef88f951b8aa4b3be  firmware-5-ct-full-community-12.bin-lede.003
ea5ccdc88a1371e958b4b5e7657782b1bcc55ac24e11e6fa36a3fce2746be4d6  firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
/home/greearb/candela_html/downloads
9984
0815fffb4757596a5ee41efb8353fb90667e4c26363fbd62a5ccf269e9a55938  firmware-5-ct-full-community-12.bin-lede.003
425b66e51039f1970802940c864ad3d6b743926e310006f6601acb9689144315  firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
/home/greearb/candela_html/downloads
4019
6e9171d012b50053b04572933b619927070b95fd2d8b9274a3e59a374088a09d  firmware-5-ct-full-community-12.bin-lede.003
b265428fadda7e3ac33ef977ba1a13788914689110275e57bba7796c583f8480  firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
/home/greearb/candela_html/downloads
9888
fba3ce709cd0e17abec260639034bc99b0157f36c044713201cff2e5b408a6e2  firmware-5-ct-full-community-12.bin-lede.003
943c0ec1967a41f16e27fd1dfebefc9196412d48d4deba204b157bd7b9b90512  firmware-5-ct-full-htt-mgt-community-12.bin-lede.003


   *  Jan 2, 2019:  Rebase patches to make 9980 bisectable.

   *  Jan 2, 2019:  Fix scheduling related assert when wal-peer is deleted with pending
      tx buffers (bug 54, and others)

   *  Jan 7, 2019:  Fix specifying retransmits for AMPDU frames.  It was previously ignored
      since it is a 'software' retransmit instead of a hardware retransmit.

   *  Jan 9 2019:  Fix potential way to get zero rates selected (and then assert)

   *  Jan 18 2019:  pfsched has specific work-around to just return if we find invalid flags AND
                    if we are in an out-of-order situation.  Maybe this is last of the pfsched
                    related issues (bug 54 and similar).

   *  Jan 24 2019:  The rcSibUpdate method can be called concurrently with IRQ tx-completion callback,
                    and that could potentially allow the tx-completion callback to see invalid state
                    and assert or otherwise mess up the rate-ctrl logic.  So, disable IRQs in
                    rcSibUpdate to prevent this.  Related to bug 58.

   *  Jan 28 2019:  Ensure that cached config is applied to ratectrl objects when fetched from
                    the cache.  This should fix part of bug 58.

   *  Jan 28 2019:  Ensure that ratectrl objects from cachemgr are always initialized.  This fixes
                    another part of bug 58.

   *  Jan 30 2019:  Better use of temporary rate-ctrl object.  Make sure it is initialized, simplify
                    code path.  This finishes up porting forward similar changes I made for wave-1
                    firmware long ago, and fixes another potential way to hit bug-58 issues.

   *  Jan 30 2019:  Cachemgr did not have a callback for when memory was logically freed.  This means
                    that peers could keep stale references to rate-ctrl objects that were in process
                    of being DMA'd into to load a different peer's rate-ctrl state.  This was causing
                    the bugcheck logic to fail early and often, and I suspect it might be a root cause
                    of bug 58 as well.  The fix is to add a callback and set any 'deleted' memory references
                    to NULL so that we cannot access it accidentally.  Thanks to excellent logs and patience
                    from the bug-58 reporter!


Thanks,
Ben

-- 
Ben Greear <greearb at candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From petrcvekcz at gmail.com  Sun Feb  3 03:44:57 2019
From: petrcvekcz at gmail.com (Petr Cvek)
Date: Sun, 3 Feb 2019 09:44:57 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
Message-ID: <75f8c243-a3df-8825-2eed-e3483edc0afc@gmail.com>

I did an exhaustive ethernet measuring. Parameters: no wifi, no running
dsl connection, 1 cable (in 1G port with external phy), no USB, almost
vanilla openwrt (changes for rootfs on NFS, kernel command line and fix
for uwc2 USB).

run.sh
A script which runs and logs measurements into a file named by its first
parameter (or just the unix epoch time). You need to run "iperf3 -s" on
lantiq manually.

*_a and *_b files
Main iperf3 measurements. It seems the schedulers migrates processes
between VPEs (in every configuration). There are sometimes differences
of ~20Mbit/s. To isolate that one would probably have to compile and use
cgroups.

*_netcat
Running netcat pipe with pipeview in server/client and TCP/UDP mode.
More useful to measure the changes of the process affinity.

vanilla*
Default (slowest) openwrt code.

backported*
Ethernet driver with full napi polling, used from vanilla kernel v5.
Newest patch in the attachment too.

dma_burst*
The change in size of DMA burst, from default to (probably) 4 words.

smp_icu_different_vpes*
ICU with SMP interrupts support. Forcing the IRQ SMP affinity to
different VPE for TX and RX interrupt. Process jumping between VPE
should have the smallest impact here.

smp_icu_same_vpe*
Both TX and RX interrupts are on the same VPE (forced on CPU0). Probably
the biggest impact from process jumping between VPEs (not checked).

everything*
SMP ICU, DMA burst and "backported" ethernet driver together.


Notes:
1) The backported driver seems to not working on some machines (I would
assume everything different from 4x 1G ports). You can still patch the
polling and interrupt routines to match the vanilla kernel. A help why
it doesn't boot would be appreciated (are your machine using multiple
eth%d interfaces, how does dmesg look like, ...).

2) The vanilla openwrt driver declares TX2 interrupt and HW. There is no
traffic on this interrupt (on DMA channel probably too?). Does anybody
have some documentation how this work? Are there more DMA interfaces
from/to which send the data?

3) The second ICU devicetree node doesn't need to be deleted for
uniprocessor ICU usage.


Feel free to make your own tests and sorry for hardcoded IPs :-D

Petr

Dne 30. 01. 19 v 11:38 Petr Cvek napsal(a):
> Hello,
> 
> I discovered the lantiq xrx200 lacks support for interrupts on secondary
> VPE, and I've managed to add this functionality to the kernel, the
> second icu controller lives on base address 0x1f880300 and works in the
> same way as first. Tested with 4.14.93 kernel, untested patches in the
> attachment or on openwrt forum:
> 
> https://forum.openwrt.org/t/xrx200-irq-balancing-between-vpes/29732/11
> 
> My second submission is a backported xrx200 ethernet driver from vanilla
> kernel v5 patched with switch and phy functions. Using kernel napi
> polling seems to highly increase the throughput of the network.
> 
> Trying to initially increase the throughput of the network I've found
> there is an inefficiently setting of DMA burst size. My patch sets this
> value to a higher value.
> 
> These two patches were tested with 4.14.93 kernel too, there is forum
> thread:
> 
> https://forum.openwrt.org/t/how-can-we-make-the-lantiq-xrx200-devices-faster/9724/30
> 
> RFC for any parallel development info (next version of ethernet driver
> will be based on vanilla kernel version?), ideas, testing ...
> 
> best regards,
> Petr Cvek
> 
-------------- next part --------------
+ : ':::::::[' configuration backported ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 58278 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  29.8 MBytes   250 Mbits/sec   63   65.0 KBytes       
[  4]   1.00-2.00   sec  31.3 MBytes   263 Mbits/sec   88    120 KBytes       
[  4]   2.00-3.00   sec  25.0 MBytes   210 Mbits/sec   46   66.5 KBytes       
[  4]   3.00-4.00   sec  31.4 MBytes   264 Mbits/sec   51    115 KBytes       
[  4]   4.00-5.00   sec  32.2 MBytes   270 Mbits/sec   65    120 KBytes       
[  4]   5.00-6.00   sec  31.4 MBytes   264 Mbits/sec  101   84.8 KBytes       
[  4]   6.00-7.00   sec  32.0 MBytes   268 Mbits/sec   73    115 KBytes       
[  4]   7.00-8.00   sec  17.0 MBytes   143 Mbits/sec   45   89.1 KBytes       
[  4]   8.00-9.00   sec  26.3 MBytes   221 Mbits/sec   55   72.1 KBytes       
[  4]   9.00-10.00  sec  30.3 MBytes   254 Mbits/sec   91   99.0 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   287 MBytes   241 Mbits/sec  678             sender
[  4]   0.00-10.00  sec   286 MBytes   240 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 58320 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.9 MBytes  91.2 Mbits/sec                  
[  4]   1.00-2.00   sec  13.9 MBytes   117 Mbits/sec                  
[  4]   2.00-3.00   sec  13.9 MBytes   117 Mbits/sec                  
[  4]   3.00-4.00   sec  13.9 MBytes   116 Mbits/sec                  
[  4]   4.00-5.00   sec  13.9 MBytes   117 Mbits/sec                  
[  4]   5.00-6.00   sec  13.9 MBytes   116 Mbits/sec                  
[  4]   6.00-7.00   sec  13.9 MBytes   116 Mbits/sec                  
[  4]   7.00-8.00   sec  13.9 MBytes   117 Mbits/sec                  
[  4]   8.00-9.00   sec  13.9 MBytes   117 Mbits/sec                  
[  4]   9.00-10.00  sec  13.9 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   136 MBytes   114 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   136 MBytes   114 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 48963 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.5 MBytes   138 Mbits/sec  2109  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   3.00-4.00   sec  17.8 MBytes   150 Mbits/sec  2282  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2293  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   9.00-10.00  sec  17.8 MBytes   150 Mbits/sec  2284  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  6.571 ms  1024/1248 (82%)  
[  4] Sent 1248 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 42721 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  17.9 MBytes   150 Mbits/sec  0.123 ms  0/2288 (0%)  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  0.046 ms  0/2289 (0%)  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  0.046 ms  0/2289 (0%)  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  0.070 ms  0/2288 (0%)  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  0.115 ms  0/2289 (0%)  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  0.124 ms  0/2289 (0%)  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  0.090 ms  0/2289 (0%)  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  0.065 ms  0/2289 (0%)  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  0.049 ms  0/2289 (0%)  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  0.103 ms  0/2288 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.103 ms  0/22887 (0%)  
[  4] Sent 22887 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 35527 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.4 MBytes   498 Mbits/sec  7598  
[  4]   1.00-2.00   sec  58.3 MBytes   489 Mbits/sec  7457  
[  4]   2.00-3.00   sec  59.6 MBytes   500 Mbits/sec  7630  
[  4]   3.00-4.00   sec  60.2 MBytes   505 Mbits/sec  7707  
[  4]   4.00-5.00   sec  56.8 MBytes   476 Mbits/sec  7267  
[  4]   5.00-6.00   sec  58.0 MBytes   487 Mbits/sec  7423  
[  4]   6.00-7.00   sec  61.6 MBytes   517 Mbits/sec  7890  
[  4]   7.00-8.00   sec  59.8 MBytes   502 Mbits/sec  7660  
[  4]   8.00-9.00   sec  57.6 MBytes   483 Mbits/sec  7377  
[  4]   9.00-10.00  sec  62.5 MBytes   524 Mbits/sec  7997  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   594 MBytes   498 Mbits/sec  0.585 ms  64644/64919 (1e+02%)  
[  4] Sent 64919 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 44608 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  21.4 MBytes   180 Mbits/sec  0.115 ms  0/2745 (0%)  
[  4]   1.00-2.00   sec  21.3 MBytes   179 Mbits/sec  0.070 ms  0/2729 (0%)  
[  4]   2.00-3.00   sec  21.4 MBytes   179 Mbits/sec  0.043 ms  0/2735 (0%)  
[  4]   3.00-4.00   sec  21.4 MBytes   179 Mbits/sec  0.066 ms  0/2735 (0%)  
[  4]   4.00-5.00   sec  21.4 MBytes   180 Mbits/sec  0.092 ms  0/2740 (0%)  
[  4]   5.00-6.00   sec  21.4 MBytes   180 Mbits/sec  0.060 ms  0/2742 (0%)  
[  4]   6.00-7.00   sec  21.4 MBytes   179 Mbits/sec  0.046 ms  0/2733 (0%)  
[  4]   7.00-8.00   sec  21.7 MBytes   182 Mbits/sec  0.073 ms  0/2782 (0%)  
[  4]   8.00-9.00   sec  21.7 MBytes   182 Mbits/sec  0.064 ms  0/2782 (0%)  
[  4]   9.00-10.00  sec  21.8 MBytes   183 Mbits/sec  0.103 ms  0/2787 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   215 MBytes   180 Mbits/sec  0.094 ms  0/27512 (0%)  
[  4] Sent 27512 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60591 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  99.3 MBytes   833 Mbits/sec  12708  
[  4]   1.00-2.00   sec   103 MBytes   861 Mbits/sec  13134  
[  4]   2.00-3.00   sec   103 MBytes   865 Mbits/sec  13203  
[  4]   3.00-4.00   sec   103 MBytes   868 Mbits/sec  13243  
[  4]   4.00-5.00   sec   103 MBytes   864 Mbits/sec  13178  
[  4]   5.00-6.00   sec   103 MBytes   863 Mbits/sec  13169  
[  4]   6.00-7.00   sec   102 MBytes   854 Mbits/sec  13034  
[  4]   7.00-8.00   sec  99.3 MBytes   833 Mbits/sec  12707  
[  4]   8.00-9.00   sec   100 MBytes   842 Mbits/sec  12848  
[  4]   9.00-10.00  sec   103 MBytes   862 Mbits/sec  13160  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1019 MBytes   854 Mbits/sec  5.860 ms  66222/66448 (1e+02%)  
[  4] Sent 66448 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 53976 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  20.9 MBytes   176 Mbits/sec  0.033 ms  0/2679 (0%)  
[  4]   1.00-2.00   sec  21.0 MBytes   176 Mbits/sec  0.070 ms  0/2690 (0%)  
[  4]   2.00-3.00   sec  21.4 MBytes   180 Mbits/sec  0.120 ms  0/2744 (0%)  
[  4]   3.00-4.00   sec  21.4 MBytes   180 Mbits/sec  0.060 ms  0/2745 (0%)  
[  4]   4.00-5.00   sec  21.5 MBytes   180 Mbits/sec  0.090 ms  0/2747 (0%)  
[  4]   5.00-6.00   sec  21.4 MBytes   180 Mbits/sec  0.089 ms  0/2743 (0%)  
[  4]   6.00-7.00   sec  21.4 MBytes   180 Mbits/sec  0.087 ms  0/2744 (0%)  
[  4]   7.00-8.00   sec  21.4 MBytes   180 Mbits/sec  0.089 ms  0/2740 (0%)  
[  4]   8.00-9.00   sec  21.4 MBytes   180 Mbits/sec  0.065 ms  0/2742 (0%)  
[  4]   9.00-10.00  sec  21.4 MBytes   180 Mbits/sec  0.077 ms  0/2745 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   213 MBytes   179 Mbits/sec  0.083 ms  0/27321 (0%)  
[  4] Sent 27321 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 58616 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 58618 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 58620 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  19.8 MBytes   166 Mbits/sec  137   22.6 KBytes       
[  6]   0.00-1.00   sec  7.10 MBytes  59.5 Mbits/sec  177   35.4 KBytes       
[  9]   0.00-1.00   sec  7.72 MBytes  64.8 Mbits/sec  117   67.9 KBytes       
[SUM]   0.00-1.00   sec  34.6 MBytes   290 Mbits/sec  431             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  8.26 MBytes  69.3 Mbits/sec  112   21.2 KBytes       
[  6]   1.00-2.00   sec  6.90 MBytes  57.9 Mbits/sec  151   35.4 KBytes       
[  9]   1.00-2.00   sec  17.5 MBytes   146 Mbits/sec   93   17.0 KBytes       
[SUM]   1.00-2.00   sec  32.6 MBytes   274 Mbits/sec  356             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  10.2 MBytes  85.5 Mbits/sec  110   9.90 KBytes       
[  6]   2.00-3.00   sec  9.01 MBytes  75.6 Mbits/sec  139   49.5 KBytes       
[  9]   2.00-3.00   sec  13.3 MBytes   112 Mbits/sec  105   36.8 KBytes       
[SUM]   2.00-3.00   sec  32.5 MBytes   273 Mbits/sec  354             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  10.3 MBytes  86.0 Mbits/sec   87   59.4 KBytes       
[  6]   3.00-4.00   sec  12.4 MBytes   104 Mbits/sec  107   43.8 KBytes       
[  9]   3.00-4.00   sec  9.94 MBytes  83.4 Mbits/sec  130   4.24 KBytes       
[SUM]   3.00-4.00   sec  32.6 MBytes   273 Mbits/sec  324             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  21.8 MBytes   183 Mbits/sec   79   99.0 KBytes       
[  6]   4.00-5.00   sec  6.09 MBytes  51.1 Mbits/sec  171   22.6 KBytes       
[  9]   4.00-5.00   sec  5.90 MBytes  49.5 Mbits/sec  150   21.2 KBytes       
[SUM]   4.00-5.00   sec  33.8 MBytes   284 Mbits/sec  400             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  10.6 MBytes  88.6 Mbits/sec  126   14.1 KBytes       
[  6]   5.00-6.00   sec  9.07 MBytes  76.1 Mbits/sec  117   12.7 KBytes       
[  9]   5.00-6.00   sec  12.2 MBytes   102 Mbits/sec  119   77.8 KBytes       
[SUM]   5.00-6.00   sec  31.8 MBytes   267 Mbits/sec  362             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.02 MBytes  58.9 Mbits/sec  150   32.5 KBytes       
[  6]   6.00-7.00   sec  16.5 MBytes   138 Mbits/sec  123   46.7 KBytes       
[  9]   6.00-7.00   sec  9.76 MBytes  81.9 Mbits/sec  126   31.1 KBytes       
[SUM]   6.00-7.00   sec  33.2 MBytes   279 Mbits/sec  399             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  15.2 MBytes   128 Mbits/sec  112   43.8 KBytes       
[  6]   7.00-8.00   sec  9.07 MBytes  76.1 Mbits/sec  109   15.6 KBytes       
[  9]   7.00-8.00   sec  7.21 MBytes  60.5 Mbits/sec  138   5.66 KBytes       
[SUM]   7.00-8.00   sec  31.5 MBytes   264 Mbits/sec  359             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  11.7 MBytes  98.5 Mbits/sec  141   25.5 KBytes       
[  6]   8.00-9.00   sec  12.9 MBytes   108 Mbits/sec  109   22.6 KBytes       
[  9]   8.00-9.00   sec  7.58 MBytes  63.6 Mbits/sec  105   38.2 KBytes       
[SUM]   8.00-9.00   sec  32.3 MBytes   271 Mbits/sec  355             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  9.51 MBytes  79.8 Mbits/sec  132   22.6 KBytes       
[  6]   9.00-10.00  sec  7.77 MBytes  65.2 Mbits/sec  157   17.0 KBytes       
[  9]   9.00-10.00  sec  14.1 MBytes   118 Mbits/sec   80   72.1 KBytes       
[SUM]   9.00-10.00  sec  31.4 MBytes   263 Mbits/sec  369             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   124 MBytes   104 Mbits/sec  1186             sender
[  4]   0.00-10.00  sec   124 MBytes   104 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  96.8 MBytes  81.2 Mbits/sec  1360             sender
[  6]   0.00-10.00  sec  96.2 MBytes  80.7 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   105 MBytes  88.2 Mbits/sec  1163             sender
[  9]   0.00-10.00  sec   105 MBytes  87.7 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   326 MBytes   274 Mbits/sec  3709             sender
[SUM]   0.00-10.00  sec   324 MBytes   272 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 58660 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 58662 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 58664 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.88 MBytes  32.5 Mbits/sec                  
[  6]   0.00-1.00   sec  3.88 MBytes  32.5 Mbits/sec                  
[  9]   0.00-1.00   sec  2.54 MBytes  21.3 Mbits/sec                  
[SUM]   0.00-1.00   sec  10.3 MBytes  86.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.88 MBytes  32.5 Mbits/sec                  
[  6]   1.00-2.00   sec  3.88 MBytes  32.5 Mbits/sec                  
[  9]   1.00-2.00   sec  3.96 MBytes  33.2 Mbits/sec                  
[SUM]   1.00-2.00   sec  11.7 MBytes  98.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.75 MBytes  39.8 Mbits/sec                  
[  6]   2.00-3.00   sec  4.75 MBytes  39.8 Mbits/sec                  
[  9]   2.00-3.00   sec  4.66 MBytes  39.1 Mbits/sec                  
[SUM]   2.00-3.00   sec  14.2 MBytes   119 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.72 MBytes  39.6 Mbits/sec                  
[  6]   3.00-4.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  9]   3.00-4.00   sec  4.72 MBytes  39.6 Mbits/sec                  
[SUM]   3.00-4.00   sec  14.1 MBytes   118 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.66 MBytes  39.1 Mbits/sec                  
[  6]   4.00-5.00   sec  4.75 MBytes  39.8 Mbits/sec                  
[  9]   4.00-5.00   sec  4.63 MBytes  38.9 Mbits/sec                  
[SUM]   4.00-5.00   sec  14.0 MBytes   118 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.65 MBytes  39.0 Mbits/sec                  
[  6]   5.00-6.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  9]   5.00-6.00   sec  4.74 MBytes  39.8 Mbits/sec                  
[SUM]   5.00-6.00   sec  14.0 MBytes   118 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.73 MBytes  39.6 Mbits/sec                  
[  6]   6.00-7.00   sec  4.65 MBytes  39.0 Mbits/sec                  
[  9]   6.00-7.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[SUM]   6.00-7.00   sec  14.0 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  6]   7.00-8.00   sec  4.72 MBytes  39.6 Mbits/sec                  
[  9]   7.00-8.00   sec  4.65 MBytes  39.0 Mbits/sec                  
[SUM]   7.00-8.00   sec  14.0 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.74 MBytes  39.7 Mbits/sec                  
[  6]   8.00-9.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  9]   8.00-9.00   sec  4.73 MBytes  39.7 Mbits/sec                  
[SUM]   8.00-9.00   sec  14.1 MBytes   118 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  6.26 MBytes  52.5 Mbits/sec                  
[  6]   9.00-10.00  sec  6.67 MBytes  55.9 Mbits/sec                  
[  9]   9.00-10.00  sec  6.28 MBytes  52.7 Mbits/sec                  
[SUM]   9.00-10.00  sec  19.2 MBytes   161 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  47.2 MBytes  39.6 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  47.2 MBytes  39.6 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  47.6 MBytes  39.9 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  47.6 MBytes  39.9 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  45.7 MBytes  38.3 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  45.7 MBytes  38.3 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   140 MBytes   118 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   140 MBytes   118 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 34650 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 33110 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 42782 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  35.9 MBytes   301 Mbits/sec  4600  
[  6]   0.00-1.00   sec  35.9 MBytes   301 Mbits/sec  4600  
[  9]   0.00-1.00   sec  35.9 MBytes   301 Mbits/sec  4600  
[SUM]   0.00-1.00   sec   108 MBytes   904 Mbits/sec  13800  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.3 MBytes   313 Mbits/sec  4770  
[  6]   1.00-2.00   sec  37.3 MBytes   313 Mbits/sec  4770  
[  9]   1.00-2.00   sec  37.3 MBytes   313 Mbits/sec  4770  
[SUM]   1.00-2.00   sec   112 MBytes   938 Mbits/sec  14310  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.3 MBytes   313 Mbits/sec  4769  
[  6]   2.00-3.00   sec  37.3 MBytes   313 Mbits/sec  4769  
[  9]   2.00-3.00   sec  37.3 MBytes   313 Mbits/sec  4769  
[SUM]   2.00-3.00   sec   112 MBytes   938 Mbits/sec  14307  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  36.4 MBytes   306 Mbits/sec  4664  
[  6]   3.00-4.00   sec  36.4 MBytes   306 Mbits/sec  4664  
[  9]   3.00-4.00   sec  36.4 MBytes   306 Mbits/sec  4664  
[SUM]   3.00-4.00   sec   109 MBytes   917 Mbits/sec  13992  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  36.3 MBytes   305 Mbits/sec  4651  
[  6]   4.00-5.00   sec  36.3 MBytes   305 Mbits/sec  4651  
[  9]   4.00-5.00   sec  36.3 MBytes   305 Mbits/sec  4651  
[SUM]   4.00-5.00   sec   109 MBytes   914 Mbits/sec  13953  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  6]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  9]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[SUM]   5.00-6.00   sec   113 MBytes   944 Mbits/sec  14403  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.6 MBytes   315 Mbits/sec  4807  
[  6]   6.00-7.00   sec  37.6 MBytes   315 Mbits/sec  4807  
[  9]   6.00-7.00   sec  37.6 MBytes   315 Mbits/sec  4807  
[SUM]   6.00-7.00   sec   113 MBytes   945 Mbits/sec  14421  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  6]   7.00-8.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  9]   7.00-8.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[SUM]   7.00-8.00   sec   112 MBytes   943 Mbits/sec  14382  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  36.8 MBytes   309 Mbits/sec  4713  
[  6]   8.00-9.00   sec  36.8 MBytes   309 Mbits/sec  4713  
[  9]   8.00-9.00   sec  36.8 MBytes   309 Mbits/sec  4713  
[SUM]   8.00-9.00   sec   110 MBytes   927 Mbits/sec  14139  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.3 MBytes   313 Mbits/sec  4776  
[  6]   9.00-10.00  sec  37.3 MBytes   313 Mbits/sec  4776  
[  9]   9.00-10.00  sec  37.3 MBytes   313 Mbits/sec  4776  
[SUM]   9.00-10.00  sec   112 MBytes   939 Mbits/sec  14328  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   370 MBytes   310 Mbits/sec  6268.805 ms  43911/44027 (1e+02%)  
[  4] Sent 44027 datagrams
[  6]   0.00-10.00  sec   370 MBytes   310 Mbits/sec  10504.518 ms  43905/44013 (1e+02%)  
[  6] Sent 44013 datagrams
[  9]   0.00-10.00  sec   370 MBytes   310 Mbits/sec  29500.167 ms  43888/43980 (1e+02%)  
[  9] Sent 43980 datagrams
[SUM]   0.00-10.00  sec  1.08 GBytes   931 Mbits/sec  15424.497 ms  131704/132020 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 53205 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 43466 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60853 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  7.60 MBytes  63.8 Mbits/sec  0.063 ms  0/973 (0%)  
[  6]   0.00-1.00   sec  7.60 MBytes  63.8 Mbits/sec  0.079 ms  0/973 (0%)  
[  9]   0.00-1.00   sec  7.59 MBytes  63.6 Mbits/sec  0.080 ms  0/971 (0%)  
[SUM]   0.00-1.00   sec  22.8 MBytes   191 Mbits/sec  0.074 ms  0/2917 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.41 MBytes  62.1 Mbits/sec  0.056 ms  0/948 (0%)  
[  6]   1.00-2.00   sec  7.41 MBytes  62.1 Mbits/sec  0.071 ms  0/948 (0%)  
[  9]   1.00-2.00   sec  7.41 MBytes  62.2 Mbits/sec  0.093 ms  0/949 (0%)  
[SUM]   1.00-2.00   sec  22.2 MBytes   186 Mbits/sec  0.074 ms  0/2845 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.33 MBytes  61.5 Mbits/sec  0.038 ms  0/938 (0%)  
[  6]   2.00-3.00   sec  7.33 MBytes  61.5 Mbits/sec  0.063 ms  0/938 (0%)  
[  9]   2.00-3.00   sec  7.33 MBytes  61.5 Mbits/sec  0.104 ms  0/938 (0%)  
[SUM]   2.00-3.00   sec  22.0 MBytes   184 Mbits/sec  0.069 ms  0/2814 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  7.46 MBytes  62.6 Mbits/sec  0.070 ms  0/955 (0%)  
[  6]   3.00-4.00   sec  7.46 MBytes  62.6 Mbits/sec  0.063 ms  0/955 (0%)  
[  9]   3.00-4.00   sec  7.45 MBytes  62.5 Mbits/sec  0.102 ms  0/954 (0%)  
[SUM]   3.00-4.00   sec  22.4 MBytes   188 Mbits/sec  0.078 ms  0/2864 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  7.45 MBytes  62.5 Mbits/sec  0.070 ms  0/953 (0%)  
[  6]   4.00-5.00   sec  7.45 MBytes  62.5 Mbits/sec  0.083 ms  0/953 (0%)  
[  9]   4.00-5.00   sec  7.45 MBytes  62.5 Mbits/sec  0.129 ms  0/954 (0%)  
[SUM]   4.00-5.00   sec  22.3 MBytes   187 Mbits/sec  0.094 ms  0/2860 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  7.48 MBytes  62.8 Mbits/sec  0.030 ms  0/958 (0%)  
[  6]   5.00-6.00   sec  7.48 MBytes  62.8 Mbits/sec  0.062 ms  0/958 (0%)  
[  9]   5.00-6.00   sec  7.48 MBytes  62.7 Mbits/sec  0.112 ms  0/957 (0%)  
[SUM]   5.00-6.00   sec  22.4 MBytes   188 Mbits/sec  0.068 ms  0/2873 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.54 MBytes  63.2 Mbits/sec  0.033 ms  0/965 (0%)  
[  6]   6.00-7.00   sec  7.54 MBytes  63.2 Mbits/sec  0.086 ms  0/965 (0%)  
[  9]   6.00-7.00   sec  7.55 MBytes  63.3 Mbits/sec  0.130 ms  0/966 (0%)  
[SUM]   6.00-7.00   sec  22.6 MBytes   190 Mbits/sec  0.083 ms  0/2896 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  7.64 MBytes  64.1 Mbits/sec  0.043 ms  0/978 (0%)  
[  6]   7.00-8.00   sec  7.64 MBytes  64.1 Mbits/sec  0.112 ms  0/978 (0%)  
[  9]   7.00-8.00   sec  7.63 MBytes  64.0 Mbits/sec  0.082 ms  0/977 (0%)  
[SUM]   7.00-8.00   sec  22.9 MBytes   192 Mbits/sec  0.079 ms  0/2933 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  7.53 MBytes  63.2 Mbits/sec  0.054 ms  0/964 (0%)  
[  6]   8.00-9.00   sec  7.53 MBytes  63.2 Mbits/sec  0.075 ms  0/964 (0%)  
[  9]   8.00-9.00   sec  7.54 MBytes  63.2 Mbits/sec  0.116 ms  0/965 (0%)  
[SUM]   8.00-9.00   sec  22.6 MBytes   190 Mbits/sec  0.081 ms  0/2893 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  7.43 MBytes  62.3 Mbits/sec  0.058 ms  0/951 (0%)  
[  6]   9.00-10.00  sec  7.43 MBytes  62.3 Mbits/sec  0.043 ms  0/951 (0%)  
[  9]   9.00-10.00  sec  7.43 MBytes  62.3 Mbits/sec  0.074 ms  0/951 (0%)  
[SUM]   9.00-10.00  sec  22.3 MBytes   187 Mbits/sec  0.058 ms  0/2853 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  74.9 MBytes  62.8 Mbits/sec  0.056 ms  0/9584 (0%)  
[  4] Sent 9584 datagrams
[  6]   0.00-10.00  sec  74.9 MBytes  62.8 Mbits/sec  0.052 ms  0/9584 (0%)  
[  6] Sent 9584 datagrams
[  9]   0.00-10.00  sec  74.9 MBytes  62.8 Mbits/sec  0.073 ms  0/9583 (0%)  
[  9] Sent 9583 datagrams
[SUM]   0.00-10.00  sec   225 MBytes   188 Mbits/sec  0.061 ms  0/28751 (0%)  

iperf Done.
-------------- next part --------------
+ : ':::::::[' configuration backported ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60042 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  30.1 MBytes   252 Mbits/sec   64    122 KBytes       
[  4]   1.00-2.00   sec  32.1 MBytes   269 Mbits/sec  101    100 KBytes       
[  4]   2.00-3.00   sec  32.3 MBytes   271 Mbits/sec  102   89.1 KBytes       
[  4]   3.00-4.00   sec  32.2 MBytes   270 Mbits/sec   68    113 KBytes       
[  4]   4.00-5.00   sec  32.1 MBytes   270 Mbits/sec   95   73.5 KBytes       
[  4]   5.00-6.00   sec  32.1 MBytes   269 Mbits/sec   42    116 KBytes       
[  4]   6.00-7.00   sec  31.8 MBytes   266 Mbits/sec   74   99.0 KBytes       
[  4]   7.00-8.00   sec  31.9 MBytes   268 Mbits/sec   67    132 KBytes       
[  4]   8.00-9.00   sec  31.3 MBytes   262 Mbits/sec   87   82.0 KBytes       
[  4]   9.00-10.00  sec  31.4 MBytes   264 Mbits/sec   78    126 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   317 MBytes   266 Mbits/sec  778             sender
[  4]   0.00-10.00  sec   316 MBytes   265 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60046 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  11.7 MBytes  98.0 Mbits/sec                  
[  4]   1.00-2.00   sec  13.9 MBytes   117 Mbits/sec                  
[  4]   2.00-3.00   sec  13.7 MBytes   115 Mbits/sec                  
[  4]   3.00-4.00   sec  14.0 MBytes   117 Mbits/sec                  
[  4]   4.00-5.00   sec  13.9 MBytes   117 Mbits/sec                  
[  4]   5.00-6.00   sec  14.0 MBytes   117 Mbits/sec                  
[  4]   6.00-7.00   sec  13.9 MBytes   116 Mbits/sec                  
[  4]   7.00-8.00   sec  13.9 MBytes   116 Mbits/sec                  
[  4]   8.00-9.00   sec  13.9 MBytes   116 Mbits/sec                  
[  4]   9.00-10.00  sec  14.0 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   138 MBytes   116 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   138 MBytes   116 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 38500 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   137 Mbits/sec  2096  
[  4]   1.00-2.00   sec  18.0 MBytes   151 Mbits/sec  2304  
[  4]   2.00-3.00   sec  17.8 MBytes   149 Mbits/sec  2278  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2295  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2294  
[  4]   6.00-7.00   sec  18.0 MBytes   151 Mbits/sec  2304  
[  4]   7.00-8.00   sec  17.7 MBytes   148 Mbits/sec  2260  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2294  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2293  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  64.491 ms  852/1039 (82%)  
[  4] Sent 1039 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 39969 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  17.9 MBytes   150 Mbits/sec  0.064 ms  0/2287 (0%)  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  0.038 ms  0/2289 (0%)  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  0.064 ms  0/2289 (0%)  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  0.065 ms  0/2289 (0%)  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  0.043 ms  0/2288 (0%)  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  0.039 ms  0/2289 (0%)  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  0.034 ms  0/2289 (0%)  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  0.057 ms  0/2289 (0%)  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  0.132 ms  0/2289 (0%)  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  0.148 ms  0/2289 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.141 ms  0/22888 (0%)  
[  4] Sent 22888 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 38768 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  56.0 MBytes   470 Mbits/sec  7174  
[  4]   1.00-2.00   sec  58.3 MBytes   489 Mbits/sec  7458  
[  4]   2.00-3.00   sec  59.8 MBytes   501 Mbits/sec  7649  
[  4]   3.00-4.00   sec  59.2 MBytes   497 Mbits/sec  7578  
[  4]   4.00-5.00   sec  59.0 MBytes   495 Mbits/sec  7554  
[  4]   5.00-6.00   sec  64.2 MBytes   539 Mbits/sec  8218  
[  4]   6.00-7.00   sec  60.5 MBytes   507 Mbits/sec  7740  
[  4]   7.00-8.00   sec  57.6 MBytes   483 Mbits/sec  7375  
[  4]   8.00-9.00   sec  60.6 MBytes   508 Mbits/sec  7755  
[  4]   9.00-10.00  sec  55.5 MBytes   466 Mbits/sec  7110  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   591 MBytes   496 Mbits/sec  0.504 ms  64740/65050 (1e+02%)  
[  4] Sent 65050 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 44942 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  21.7 MBytes   182 Mbits/sec  0.093 ms  0/2775 (0%)  
[  4]   1.00-2.00   sec  21.6 MBytes   181 Mbits/sec  0.082 ms  0/2764 (0%)  
[  4]   2.00-3.00   sec  21.5 MBytes   181 Mbits/sec  0.084 ms  0/2758 (0%)  
[  4]   3.00-4.00   sec  21.6 MBytes   181 Mbits/sec  0.066 ms  0/2768 (0%)  
[  4]   4.00-5.00   sec  21.6 MBytes   181 Mbits/sec  0.066 ms  0/2769 (0%)  
[  4]   5.00-6.00   sec  21.6 MBytes   181 Mbits/sec  0.077 ms  0/2767 (0%)  
[  4]   6.00-7.00   sec  21.6 MBytes   181 Mbits/sec  0.059 ms  0/2767 (0%)  
[  4]   7.00-8.00   sec  21.6 MBytes   181 Mbits/sec  0.053 ms  0/2765 (0%)  
[  4]   8.00-9.00   sec  21.6 MBytes   181 Mbits/sec  0.112 ms  0/2760 (0%)  
[  4]   9.00-10.00  sec  21.6 MBytes   182 Mbits/sec  0.086 ms  0/2771 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   216 MBytes   181 Mbits/sec  0.081 ms  0/27665 (0%)  
[  4] Sent 27665 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 49947 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   102 MBytes   855 Mbits/sec  13052  
[  4]   1.00-2.00   sec   103 MBytes   863 Mbits/sec  13176  
[  4]   2.00-3.00   sec   103 MBytes   863 Mbits/sec  13170  
[  4]   3.00-4.00   sec   103 MBytes   862 Mbits/sec  13157  
[  4]   4.00-5.00   sec   103 MBytes   862 Mbits/sec  13150  
[  4]   5.00-6.00   sec   103 MBytes   861 Mbits/sec  13137  
[  4]   6.00-7.00   sec   103 MBytes   863 Mbits/sec  13172  
[  4]   7.00-8.00   sec   103 MBytes   864 Mbits/sec  13178  
[  4]   8.00-9.00   sec   103 MBytes   862 Mbits/sec  13157  
[  4]   9.00-10.00  sec   103 MBytes   862 Mbits/sec  13155  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.00 GBytes   862 Mbits/sec  0.366 ms  131125/131479 (1e+02%)  
[  4] Sent 131479 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 53316 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  21.7 MBytes   182 Mbits/sec  0.141 ms  0/2773 (0%)  
[  4]   1.00-2.00   sec  21.3 MBytes   179 Mbits/sec  0.088 ms  0/2730 (0%)  
[  4]   2.00-3.00   sec  21.3 MBytes   179 Mbits/sec  0.049 ms  0/2727 (0%)  
[  4]   3.00-4.00   sec  21.4 MBytes   179 Mbits/sec  0.074 ms  0/2738 (0%)  
[  4]   4.00-5.00   sec  21.4 MBytes   180 Mbits/sec  0.099 ms  0/2741 (0%)  
[  4]   5.00-6.00   sec  21.4 MBytes   180 Mbits/sec  0.074 ms  0/2743 (0%)  
[  4]   6.00-7.00   sec  21.4 MBytes   180 Mbits/sec  0.067 ms  0/2741 (0%)  
[  4]   7.00-8.00   sec  21.4 MBytes   179 Mbits/sec  0.076 ms  0/2738 (0%)  
[  4]   8.00-9.00   sec  21.4 MBytes   180 Mbits/sec  0.085 ms  0/2739 (0%)  
[  4]   9.00-10.00  sec  21.4 MBytes   180 Mbits/sec  0.058 ms  0/2742 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   214 MBytes   180 Mbits/sec  0.060 ms  0/27413 (0%)  
[  4] Sent 27413 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60090 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60092 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60094 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  10.4 MBytes  87.4 Mbits/sec  115   35.4 KBytes       
[  6]   0.00-1.00   sec  13.3 MBytes   112 Mbits/sec   85   63.6 KBytes       
[  9]   0.00-1.00   sec  9.56 MBytes  80.1 Mbits/sec  108   5.66 KBytes       
[SUM]   0.00-1.00   sec  33.3 MBytes   279 Mbits/sec  308             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  8.70 MBytes  73.0 Mbits/sec  128   46.7 KBytes       
[  6]   1.00-2.00   sec  12.6 MBytes   105 Mbits/sec  109    102 KBytes       
[  9]   1.00-2.00   sec  12.1 MBytes   101 Mbits/sec   73   11.3 KBytes       
[SUM]   1.00-2.00   sec  33.3 MBytes   279 Mbits/sec  310             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  9.01 MBytes  75.6 Mbits/sec  168   58.0 KBytes       
[  6]   2.00-3.00   sec  16.0 MBytes   134 Mbits/sec  149   25.5 KBytes       
[  9]   2.00-3.00   sec  7.52 MBytes  63.1 Mbits/sec  108   17.0 KBytes       
[SUM]   2.00-3.00   sec  32.6 MBytes   273 Mbits/sec  425             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  11.6 MBytes  96.9 Mbits/sec  120   39.6 KBytes       
[  6]   3.00-4.00   sec  9.26 MBytes  77.7 Mbits/sec  132   24.0 KBytes       
[  9]   3.00-4.00   sec  12.3 MBytes   103 Mbits/sec  153   17.0 KBytes       
[SUM]   3.00-4.00   sec  33.1 MBytes   278 Mbits/sec  405             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  9.32 MBytes  78.2 Mbits/sec  165   15.6 KBytes       
[  6]   4.00-5.00   sec  9.01 MBytes  75.6 Mbits/sec  142   7.07 KBytes       
[  9]   4.00-5.00   sec  13.3 MBytes   112 Mbits/sec   76   65.0 KBytes       
[SUM]   4.00-5.00   sec  31.6 MBytes   265 Mbits/sec  383             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  10.1 MBytes  84.4 Mbits/sec  123   45.2 KBytes       
[  6]   5.00-6.00   sec  9.57 MBytes  80.3 Mbits/sec  126   11.3 KBytes       
[  9]   5.00-6.00   sec  12.4 MBytes   104 Mbits/sec  108   19.8 KBytes       
[SUM]   5.00-6.00   sec  32.0 MBytes   268 Mbits/sec  357             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  10.4 MBytes  87.0 Mbits/sec  146   24.0 KBytes       
[  6]   6.00-7.00   sec  7.33 MBytes  61.5 Mbits/sec  119   45.2 KBytes       
[  9]   6.00-7.00   sec  14.2 MBytes   119 Mbits/sec   92   50.9 KBytes       
[SUM]   6.00-7.00   sec  31.9 MBytes   268 Mbits/sec  357             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  9.38 MBytes  78.8 Mbits/sec  128   21.2 KBytes       
[  6]   7.00-8.00   sec  10.5 MBytes  88.2 Mbits/sec  112   7.07 KBytes       
[  9]   7.00-8.00   sec  11.5 MBytes  96.5 Mbits/sec  103   56.6 KBytes       
[SUM]   7.00-8.00   sec  31.4 MBytes   263 Mbits/sec  343             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  9.13 MBytes  76.6 Mbits/sec  132   25.5 KBytes       
[  6]   8.00-9.00   sec  9.51 MBytes  79.8 Mbits/sec  108   45.2 KBytes       
[  9]   8.00-9.00   sec  13.0 MBytes   109 Mbits/sec   93   66.5 KBytes       
[SUM]   8.00-9.00   sec  31.6 MBytes   265 Mbits/sec  333             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  15.3 MBytes   129 Mbits/sec   94   19.8 KBytes       
[  6]   9.00-10.00  sec  10.4 MBytes  87.0 Mbits/sec  135   77.8 KBytes       
[  9]   9.00-10.00  sec  7.33 MBytes  61.5 Mbits/sec  156   9.90 KBytes       
[SUM]   9.00-10.00  sec  33.1 MBytes   277 Mbits/sec  385             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   103 MBytes  86.7 Mbits/sec  1319             sender
[  4]   0.00-10.00  sec   103 MBytes  86.1 Mbits/sec                  receiver
[  6]   0.00-10.00  sec   107 MBytes  90.1 Mbits/sec  1217             sender
[  6]   0.00-10.00  sec   107 MBytes  89.6 Mbits/sec                  receiver
[  9]   0.00-10.00  sec   113 MBytes  94.9 Mbits/sec  1070             sender
[  9]   0.00-10.00  sec   113 MBytes  94.4 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   324 MBytes   272 Mbits/sec  3606             sender
[SUM]   0.00-10.00  sec   322 MBytes   270 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60114 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60116 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60118 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  5.07 MBytes  42.5 Mbits/sec                  
[  6]   0.00-1.00   sec  4.90 MBytes  41.1 Mbits/sec                  
[  9]   0.00-1.00   sec  3.74 MBytes  31.4 Mbits/sec                  
[SUM]   0.00-1.00   sec  13.7 MBytes   115 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  6]   1.00-2.00   sec  4.69 MBytes  39.4 Mbits/sec                  
[  9]   1.00-2.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[SUM]   1.00-2.00   sec  13.9 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  6]   2.00-3.00   sec  4.67 MBytes  39.2 Mbits/sec                  
[  9]   2.00-3.00   sec  4.63 MBytes  38.8 Mbits/sec                  
[SUM]   2.00-3.00   sec  13.9 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.64 MBytes  38.9 Mbits/sec                  
[  6]   3.00-4.00   sec  4.67 MBytes  39.2 Mbits/sec                  
[  9]   3.00-4.00   sec  4.79 MBytes  40.2 Mbits/sec                  
[SUM]   3.00-4.00   sec  14.1 MBytes   118 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.72 MBytes  39.6 Mbits/sec                  
[  6]   4.00-5.00   sec  4.63 MBytes  38.9 Mbits/sec                  
[  9]   4.00-5.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[SUM]   4.00-5.00   sec  14.0 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  6]   5.00-6.00   sec  4.74 MBytes  39.8 Mbits/sec                  
[  9]   5.00-6.00   sec  4.63 MBytes  38.9 Mbits/sec                  
[SUM]   5.00-6.00   sec  14.0 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.63 MBytes  38.9 Mbits/sec                  
[  6]   6.00-7.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  9]   6.00-7.00   sec  4.74 MBytes  39.8 Mbits/sec                  
[SUM]   6.00-7.00   sec  14.0 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  4.63 MBytes  38.9 Mbits/sec                  
[  6]   7.00-8.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  9]   7.00-8.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[SUM]   7.00-8.00   sec  13.9 MBytes   116 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.67 MBytes  39.2 Mbits/sec                  
[  6]   8.00-9.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[  9]   8.00-9.00   sec  4.62 MBytes  38.8 Mbits/sec                  
[SUM]   8.00-9.00   sec  13.9 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  4.03 MBytes  33.8 Mbits/sec                  
[  6]   9.00-10.00  sec  4.00 MBytes  33.5 Mbits/sec                  
[  9]   9.00-10.00  sec  4.00 MBytes  33.5 Mbits/sec                  
[SUM]   9.00-10.00  sec  12.0 MBytes   101 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  46.7 MBytes  39.2 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  46.7 MBytes  39.2 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  46.7 MBytes  39.1 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  46.7 MBytes  39.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  45.5 MBytes  38.2 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  45.5 MBytes  38.2 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   139 MBytes   116 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   139 MBytes   116 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 34530 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 48193 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 34271 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  37.1 MBytes   312 Mbits/sec  4754  
[  6]   0.00-1.00   sec  37.1 MBytes   312 Mbits/sec  4754  
[  9]   0.00-1.00   sec  37.1 MBytes   312 Mbits/sec  4754  
[SUM]   0.00-1.00   sec   111 MBytes   935 Mbits/sec  14262  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.4 MBytes   314 Mbits/sec  4789  
[  6]   1.00-2.00   sec  37.4 MBytes   314 Mbits/sec  4789  
[  9]   1.00-2.00   sec  37.4 MBytes   314 Mbits/sec  4789  
[SUM]   1.00-2.00   sec   112 MBytes   942 Mbits/sec  14367  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[  6]   2.00-3.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[  9]   2.00-3.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[SUM]   2.00-3.00   sec   112 MBytes   940 Mbits/sec  14349  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  37.3 MBytes   313 Mbits/sec  4777  
[  6]   3.00-4.00   sec  37.3 MBytes   313 Mbits/sec  4777  
[  9]   3.00-4.00   sec  37.3 MBytes   313 Mbits/sec  4777  
[SUM]   3.00-4.00   sec   112 MBytes   939 Mbits/sec  14331  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.2 MBytes   312 Mbits/sec  4768  
[  6]   4.00-5.00   sec  37.2 MBytes   312 Mbits/sec  4768  
[  9]   4.00-5.00   sec  37.2 MBytes   312 Mbits/sec  4768  
[SUM]   4.00-5.00   sec   112 MBytes   937 Mbits/sec  14304  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.3 MBytes   313 Mbits/sec  4774  
[  6]   5.00-6.00   sec  37.3 MBytes   313 Mbits/sec  4774  
[  9]   5.00-6.00   sec  37.3 MBytes   313 Mbits/sec  4774  
[SUM]   5.00-6.00   sec   112 MBytes   939 Mbits/sec  14322  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.3 MBytes   313 Mbits/sec  4774  
[  6]   6.00-7.00   sec  37.3 MBytes   313 Mbits/sec  4774  
[  9]   6.00-7.00   sec  37.3 MBytes   313 Mbits/sec  4774  
[SUM]   6.00-7.00   sec   112 MBytes   939 Mbits/sec  14322  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.3 MBytes   313 Mbits/sec  4776  
[  6]   7.00-8.00   sec  37.3 MBytes   313 Mbits/sec  4776  
[  9]   7.00-8.00   sec  37.3 MBytes   313 Mbits/sec  4776  
[SUM]   7.00-8.00   sec   112 MBytes   939 Mbits/sec  14328  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.2 MBytes   312 Mbits/sec  4762  
[  6]   8.00-9.00   sec  37.2 MBytes   312 Mbits/sec  4762  
[  9]   8.00-9.00   sec  37.2 MBytes   312 Mbits/sec  4762  
[SUM]   8.00-9.00   sec   112 MBytes   936 Mbits/sec  14286  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.3 MBytes   313 Mbits/sec  4769  
[  6]   9.00-10.00  sec  37.3 MBytes   313 Mbits/sec  4769  
[  9]   9.00-10.00  sec  37.3 MBytes   313 Mbits/sec  4769  
[SUM]   9.00-10.00  sec   112 MBytes   938 Mbits/sec  14307  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  20028.983 ms  43944/44042 (1e+02%)  
[  4] Sent 44042 datagrams
[  6]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  11952.071 ms  43933/44039 (1e+02%)  
[  6] Sent 44039 datagrams
[  9]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  9232.969 ms  43931/44041 (1e+02%)  
[  9] Sent 44041 datagrams
[SUM]   0.00-10.00  sec  1.09 GBytes   938 Mbits/sec  13738.008 ms  131808/132122 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 44496 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 54951 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 58397 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  7.46 MBytes  62.5 Mbits/sec  0.046 ms  0/955 (0%)  
[  6]   0.00-1.00   sec  7.46 MBytes  62.5 Mbits/sec  0.100 ms  0/955 (0%)  
[  9]   0.00-1.00   sec  7.46 MBytes  62.5 Mbits/sec  0.178 ms  0/955 (0%)  
[SUM]   0.00-1.00   sec  22.4 MBytes   188 Mbits/sec  0.108 ms  0/2865 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.47 MBytes  62.7 Mbits/sec  0.048 ms  0/956 (0%)  
[  6]   1.00-2.00   sec  7.47 MBytes  62.7 Mbits/sec  0.106 ms  0/956 (0%)  
[  9]   1.00-2.00   sec  7.46 MBytes  62.7 Mbits/sec  0.108 ms  0/955 (0%)  
[SUM]   1.00-2.00   sec  22.4 MBytes   188 Mbits/sec  0.088 ms  0/2867 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.48 MBytes  62.8 Mbits/sec  0.051 ms  0/958 (0%)  
[  6]   2.00-3.00   sec  7.48 MBytes  62.7 Mbits/sec  0.100 ms  0/957 (0%)  
[  9]   2.00-3.00   sec  7.48 MBytes  62.8 Mbits/sec  0.082 ms  0/958 (0%)  
[SUM]   2.00-3.00   sec  22.4 MBytes   188 Mbits/sec  0.078 ms  0/2873 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  7.48 MBytes  62.8 Mbits/sec  0.048 ms  0/958 (0%)  
[  6]   3.00-4.00   sec  7.49 MBytes  62.8 Mbits/sec  0.073 ms  0/959 (0%)  
[  9]   3.00-4.00   sec  7.48 MBytes  62.8 Mbits/sec  0.109 ms  0/958 (0%)  
[SUM]   3.00-4.00   sec  22.5 MBytes   188 Mbits/sec  0.077 ms  0/2875 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  7.55 MBytes  63.3 Mbits/sec  0.061 ms  0/966 (0%)  
[  6]   4.00-5.00   sec  7.55 MBytes  63.3 Mbits/sec  0.054 ms  0/966 (0%)  
[  9]   4.00-5.00   sec  7.55 MBytes  63.4 Mbits/sec  0.108 ms  0/967 (0%)  
[SUM]   4.00-5.00   sec  22.6 MBytes   190 Mbits/sec  0.074 ms  0/2899 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  7.57 MBytes  63.5 Mbits/sec  0.078 ms  0/969 (0%)  
[  6]   5.00-6.00   sec  7.57 MBytes  63.5 Mbits/sec  0.127 ms  0/969 (0%)  
[  9]   5.00-6.00   sec  7.56 MBytes  63.4 Mbits/sec  0.094 ms  0/968 (0%)  
[SUM]   5.00-6.00   sec  22.7 MBytes   190 Mbits/sec  0.100 ms  0/2906 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.59 MBytes  63.6 Mbits/sec  0.053 ms  0/971 (0%)  
[  6]   6.00-7.00   sec  7.59 MBytes  63.6 Mbits/sec  0.053 ms  0/971 (0%)  
[  9]   6.00-7.00   sec  7.59 MBytes  63.6 Mbits/sec  0.102 ms  0/971 (0%)  
[SUM]   6.00-7.00   sec  22.8 MBytes   191 Mbits/sec  0.069 ms  0/2913 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  7.61 MBytes  63.8 Mbits/sec  0.123 ms  0/974 (0%)  
[  6]   7.00-8.00   sec  7.61 MBytes  63.8 Mbits/sec  0.147 ms  0/974 (0%)  
[  9]   7.00-8.00   sec  7.62 MBytes  63.8 Mbits/sec  0.121 ms  0/975 (0%)  
[SUM]   7.00-8.00   sec  22.8 MBytes   191 Mbits/sec  0.130 ms  0/2923 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  7.48 MBytes  62.9 Mbits/sec  0.023 ms  0/958 (0%)  
[  6]   8.00-9.00   sec  7.48 MBytes  62.9 Mbits/sec  0.061 ms  0/958 (0%)  
[  9]   8.00-9.00   sec  7.48 MBytes  62.8 Mbits/sec  0.073 ms  0/957 (0%)  
[SUM]   8.00-9.00   sec  22.4 MBytes   189 Mbits/sec  0.052 ms  0/2873 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  7.52 MBytes  63.0 Mbits/sec  0.028 ms  0/962 (0%)  
[  6]   9.00-10.00  sec  7.52 MBytes  63.0 Mbits/sec  0.106 ms  0/962 (0%)  
[  9]   9.00-10.00  sec  7.52 MBytes  63.1 Mbits/sec  0.085 ms  0/963 (0%)  
[SUM]   9.00-10.00  sec  22.6 MBytes   189 Mbits/sec  0.073 ms  0/2887 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  75.2 MBytes  63.1 Mbits/sec  0.044 ms  0/9628 (0%)  
[  4] Sent 9628 datagrams
[  6]   0.00-10.00  sec  75.2 MBytes  63.1 Mbits/sec  0.120 ms  0/9628 (0%)  
[  6] Sent 9628 datagrams
[  9]   0.00-10.00  sec  75.2 MBytes  63.1 Mbits/sec  0.089 ms  0/9628 (0%)  
[  9] Sent 9628 datagrams
[SUM]   0.00-10.00  sec   226 MBytes   189 Mbits/sec  0.085 ms  0/28884 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: backported_netcat.log
Type: text/x-log
Size: 625 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment.bin>
-------------- next part --------------
+ : ':::::::[' configuration dma_burst ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51328 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  26.8 MBytes   225 Mbits/sec   53   46.7 KBytes       
[  4]   1.00-2.00   sec  29.2 MBytes   245 Mbits/sec   64   55.1 KBytes       
[  4]   2.00-3.00   sec  29.3 MBytes   246 Mbits/sec   56   73.5 KBytes       
[  4]   3.00-4.00   sec  29.3 MBytes   246 Mbits/sec   59   80.6 KBytes       
[  4]   4.00-5.00   sec  29.1 MBytes   245 Mbits/sec   38   79.2 KBytes       
[  4]   5.00-6.00   sec  29.2 MBytes   245 Mbits/sec   40   49.5 KBytes       
[  4]   6.00-7.00   sec  29.4 MBytes   247 Mbits/sec   45   56.6 KBytes       
[  4]   7.00-8.00   sec  29.5 MBytes   247 Mbits/sec   34   69.3 KBytes       
[  4]   8.00-9.00   sec  29.3 MBytes   246 Mbits/sec   39   72.1 KBytes       
[  4]   9.00-10.00  sec  29.1 MBytes   244 Mbits/sec   46   56.6 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   290 MBytes   243 Mbits/sec  474             sender
[  4]   0.00-10.00  sec   290 MBytes   243 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51336 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.33 MBytes  78.3 Mbits/sec                  
[  4]   1.00-2.00   sec  9.44 MBytes  79.2 Mbits/sec                  
[  4]   2.00-3.00   sec  9.46 MBytes  79.3 Mbits/sec                  
[  4]   3.00-4.00   sec  9.35 MBytes  78.5 Mbits/sec                  
[  4]   4.00-5.00   sec  9.74 MBytes  81.7 Mbits/sec                  
[  4]   5.00-6.00   sec  9.65 MBytes  81.0 Mbits/sec                  
[  4]   6.00-7.00   sec  9.65 MBytes  80.9 Mbits/sec                  
[  4]   7.00-8.00   sec  9.61 MBytes  80.6 Mbits/sec                  
[  4]   8.00-9.00   sec  9.62 MBytes  80.7 Mbits/sec                  
[  4]   9.00-10.00  sec  9.75 MBytes  81.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  96.3 MBytes  80.8 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  96.3 MBytes  80.8 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 37966 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2101  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2293  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2286  
[  4]   8.00-9.00   sec  17.9 MBytes   151 Mbits/sec  2297  
[  4]   9.00-10.00  sec  17.8 MBytes   149 Mbits/sec  2280  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  14022.161 ms  874/977 (89%)  
[  4] Sent 977 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 36365 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  17.9 MBytes   150 Mbits/sec  0.114 ms  0/2287 (0%)  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  0.105 ms  0/2289 (0%)  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  0.109 ms  0/2289 (0%)  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  0.127 ms  0/2289 (0%)  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  0.102 ms  0/2289 (0%)  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  0.106 ms  0/2287 (0%)  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  0.097 ms  0/2289 (0%)  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  0.093 ms  0/2290 (0%)  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  0.108 ms  0/2289 (0%)  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  0.084 ms  0/2289 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.084 ms  0/22887 (0%)  
[  4] Sent 22887 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60036 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.4 MBytes   498 Mbits/sec  7604  
[  4]   1.00-2.00   sec  58.5 MBytes   491 Mbits/sec  7494  
[  4]   2.00-3.00   sec  60.3 MBytes   505 Mbits/sec  7713  
[  4]   3.00-4.00   sec  59.7 MBytes   501 Mbits/sec  7641  
[  4]   4.00-5.00   sec  59.5 MBytes   499 Mbits/sec  7614  
[  4]   5.00-6.00   sec  60.2 MBytes   505 Mbits/sec  7708  
[  4]   6.00-7.00   sec  58.9 MBytes   494 Mbits/sec  7541  
[  4]   7.00-8.00   sec  59.0 MBytes   495 Mbits/sec  7554  
[  4]   8.00-9.00   sec  56.8 MBytes   477 Mbits/sec  7275  
[  4]   9.00-10.00  sec  58.7 MBytes   492 Mbits/sec  7510  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   591 MBytes   496 Mbits/sec  14957.240 ms  64540/64642 (1e+02%)  
[  4] Sent 64642 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 45064 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  21.4 MBytes   179 Mbits/sec  0.118 ms  0/2738 (0%)  
[  4]   1.00-2.00   sec  21.3 MBytes   179 Mbits/sec  0.126 ms  0/2732 (0%)  
[  4]   2.00-3.00   sec  21.5 MBytes   180 Mbits/sec  0.141 ms  0/2752 (0%)  
[  4]   3.00-4.00   sec  21.6 MBytes   181 Mbits/sec  0.149 ms  0/2760 (0%)  
[  4]   4.00-5.00   sec  21.6 MBytes   181 Mbits/sec  0.130 ms  0/2763 (0%)  
[  4]   5.00-6.00   sec  21.5 MBytes   180 Mbits/sec  0.132 ms  0/2751 (0%)  
[  4]   6.00-7.00   sec  21.5 MBytes   181 Mbits/sec  0.106 ms  0/2758 (0%)  
[  4]   7.00-8.00   sec  21.5 MBytes   181 Mbits/sec  0.117 ms  0/2757 (0%)  
[  4]   8.00-9.00   sec  21.5 MBytes   180 Mbits/sec  0.137 ms  0/2754 (0%)  
[  4]   9.00-10.00  sec  21.4 MBytes   180 Mbits/sec  0.128 ms  0/2745 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   215 MBytes   180 Mbits/sec  0.130 ms  0/27512 (0%)  
[  4] Sent 27512 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 40069 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  94.9 MBytes   796 Mbits/sec  12149  
[  4]   1.00-2.00   sec   104 MBytes   876 Mbits/sec  13361  
[  4]   2.00-3.00   sec   104 MBytes   876 Mbits/sec  13371  
[  4]   3.00-4.00   sec   104 MBytes   876 Mbits/sec  13360  
[  4]   4.00-5.00   sec   104 MBytes   875 Mbits/sec  13352  
[  4]   5.00-6.00   sec   104 MBytes   876 Mbits/sec  13363  
[  4]   6.00-7.00   sec   105 MBytes   877 Mbits/sec  13382  
[  4]   7.00-8.00   sec   104 MBytes   875 Mbits/sec  13346  
[  4]   8.00-9.00   sec   104 MBytes   876 Mbits/sec  13369  
[  4]   9.00-10.00  sec   104 MBytes   875 Mbits/sec  13346  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.01 GBytes   868 Mbits/sec  428870.708 ms  131807/131857 (1e+02%)  
[  4] Sent 131857 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 58654 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  21.6 MBytes   181 Mbits/sec  0.142 ms  0/2763 (0%)  
[  4]   1.00-2.00   sec  21.4 MBytes   179 Mbits/sec  0.326 ms  0/2738 (0%)  
[  4]   2.00-3.00   sec  21.3 MBytes   179 Mbits/sec  0.139 ms  0/2731 (0%)  
[  4]   3.00-4.00   sec  21.5 MBytes   180 Mbits/sec  0.118 ms  0/2753 (0%)  
[  4]   4.00-5.00   sec  21.6 MBytes   181 Mbits/sec  0.162 ms  0/2759 (0%)  
[  4]   5.00-6.00   sec  21.4 MBytes   180 Mbits/sec  0.121 ms  0/2741 (0%)  
[  4]   6.00-7.00   sec  21.2 MBytes   178 Mbits/sec  0.131 ms  0/2717 (0%)  
[  4]   7.00-8.00   sec  21.3 MBytes   179 Mbits/sec  0.141 ms  0/2725 (0%)  
[  4]   8.00-9.00   sec  20.7 MBytes   174 Mbits/sec  0.121 ms  0/2651 (0%)  
[  4]   9.00-10.00  sec  20.7 MBytes   174 Mbits/sec  0.136 ms  0/2653 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   213 MBytes   178 Mbits/sec  0.143 ms  0/27233 (0%)  
[  4] Sent 27233 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51468 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51470 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 51472 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  10.4 MBytes  87.6 Mbits/sec  102   28.3 KBytes       
[  6]   0.00-1.00   sec  10.4 MBytes  87.1 Mbits/sec   81   55.1 KBytes       
[  9]   0.00-1.00   sec  9.20 MBytes  77.2 Mbits/sec   99   19.8 KBytes       
[SUM]   0.00-1.00   sec  30.0 MBytes   252 Mbits/sec  282             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.52 MBytes  63.1 Mbits/sec  144   49.5 KBytes       
[  6]   1.00-2.00   sec  13.3 MBytes   112 Mbits/sec  102   38.2 KBytes       
[  9]   1.00-2.00   sec  9.13 MBytes  76.6 Mbits/sec   88   14.1 KBytes       
[SUM]   1.00-2.00   sec  30.0 MBytes   251 Mbits/sec  334             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  11.0 MBytes  92.3 Mbits/sec   95   21.2 KBytes       
[  6]   2.00-3.00   sec  11.9 MBytes  99.6 Mbits/sec   80   35.4 KBytes       
[  9]   2.00-3.00   sec  7.21 MBytes  60.5 Mbits/sec  100   28.3 KBytes       
[SUM]   2.00-3.00   sec  30.1 MBytes   252 Mbits/sec  275             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  10.1 MBytes  84.5 Mbits/sec  120   73.5 KBytes       
[  6]   3.00-4.00   sec  12.3 MBytes   103 Mbits/sec   74   80.6 KBytes       
[  9]   3.00-4.00   sec  5.72 MBytes  48.0 Mbits/sec  100   46.7 KBytes       
[SUM]   3.00-4.00   sec  28.1 MBytes   236 Mbits/sec  294             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  9.01 MBytes  75.6 Mbits/sec  130   48.1 KBytes       
[  6]   4.00-5.00   sec  8.33 MBytes  69.9 Mbits/sec   89   41.0 KBytes       
[  9]   4.00-5.00   sec  11.3 MBytes  94.9 Mbits/sec  101   55.1 KBytes       
[SUM]   4.00-5.00   sec  28.6 MBytes   240 Mbits/sec  320             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  11.6 MBytes  97.0 Mbits/sec  105   22.6 KBytes       
[  6]   5.00-6.00   sec  10.3 MBytes  86.5 Mbits/sec   88   39.6 KBytes       
[  9]   5.00-6.00   sec  7.21 MBytes  60.5 Mbits/sec   94   42.4 KBytes       
[SUM]   5.00-6.00   sec  29.1 MBytes   244 Mbits/sec  287             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  9.32 MBytes  78.2 Mbits/sec  122   32.5 KBytes       
[  6]   6.00-7.00   sec  8.76 MBytes  73.5 Mbits/sec  119   29.7 KBytes       
[  9]   6.00-7.00   sec  10.3 MBytes  86.0 Mbits/sec   89   45.2 KBytes       
[SUM]   6.00-7.00   sec  28.3 MBytes   238 Mbits/sec  330             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  10.1 MBytes  84.5 Mbits/sec  110   39.6 KBytes       
[  6]   7.00-8.00   sec  8.45 MBytes  70.9 Mbits/sec  121   26.9 KBytes       
[  9]   7.00-8.00   sec  10.0 MBytes  83.9 Mbits/sec   86   52.3 KBytes       
[SUM]   7.00-8.00   sec  28.5 MBytes   239 Mbits/sec  317             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  11.8 MBytes  99.0 Mbits/sec   82   56.6 KBytes       
[  6]   8.00-9.00   sec  8.76 MBytes  73.5 Mbits/sec  120   15.6 KBytes       
[  9]   8.00-9.00   sec  9.01 MBytes  75.6 Mbits/sec  132   41.0 KBytes       
[SUM]   8.00-9.00   sec  29.6 MBytes   248 Mbits/sec  334             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  11.7 MBytes  98.5 Mbits/sec   93   15.6 KBytes       
[  6]   9.00-10.00  sec  10.9 MBytes  91.7 Mbits/sec   89   33.9 KBytes       
[  9]   9.00-10.00  sec  6.15 MBytes  51.6 Mbits/sec   90   43.8 KBytes       
[SUM]   9.00-10.00  sec  28.8 MBytes   242 Mbits/sec  272             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   103 MBytes  86.0 Mbits/sec  1103             sender
[  4]   0.00-10.00  sec   102 MBytes  85.5 Mbits/sec                  receiver
[  6]   0.00-10.00  sec   103 MBytes  86.7 Mbits/sec  963             sender
[  6]   0.00-10.00  sec   103 MBytes  86.2 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  85.2 MBytes  71.5 Mbits/sec  979             sender
[  9]   0.00-10.00  sec  84.6 MBytes  71.0 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   291 MBytes   244 Mbits/sec  3045             sender
[SUM]   0.00-10.00  sec   289 MBytes   243 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51476 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51478 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 51480 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.52 MBytes  29.5 Mbits/sec                  
[  6]   0.00-1.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   0.00-1.00   sec  2.25 MBytes  18.9 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.27 MBytes  77.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.10 MBytes  34.4 Mbits/sec                  
[  6]   1.00-2.00   sec  4.10 MBytes  34.4 Mbits/sec                  
[  9]   1.00-2.00   sec  3.90 MBytes  32.7 Mbits/sec                  
[SUM]   1.00-2.00   sec  12.1 MBytes   102 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.69 MBytes  39.3 Mbits/sec                  
[  6]   2.00-3.00   sec  4.52 MBytes  37.9 Mbits/sec                  
[  9]   2.00-3.00   sec  4.76 MBytes  39.9 Mbits/sec                  
[SUM]   2.00-3.00   sec  14.0 MBytes   117 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  5.45 MBytes  45.7 Mbits/sec                  
[  6]   3.00-4.00   sec  3.90 MBytes  32.7 Mbits/sec                  
[  9]   3.00-4.00   sec  5.79 MBytes  48.6 Mbits/sec                  
[SUM]   3.00-4.00   sec  15.1 MBytes   127 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  2.65 MBytes  22.2 Mbits/sec                  
[  6]   4.00-5.00   sec  2.75 MBytes  23.1 Mbits/sec                  
[  9]   4.00-5.00   sec  2.67 MBytes  22.4 Mbits/sec                  
[SUM]   4.00-5.00   sec  8.07 MBytes  67.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  2.88 MBytes  24.1 Mbits/sec                  
[  6]   5.00-6.00   sec  2.77 MBytes  23.2 Mbits/sec                  
[  9]   5.00-6.00   sec  2.81 MBytes  23.6 Mbits/sec                  
[SUM]   5.00-6.00   sec  8.46 MBytes  70.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[  6]   6.00-7.00   sec  3.11 MBytes  26.1 Mbits/sec                  
[  9]   6.00-7.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[SUM]   6.00-7.00   sec  9.24 MBytes  77.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   7.00-8.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   7.00-8.00   sec  3.02 MBytes  25.3 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.26 MBytes  77.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   8.00-9.00   sec  3.08 MBytes  25.8 Mbits/sec                  
[  9]   8.00-9.00   sec  3.11 MBytes  26.1 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.31 MBytes  78.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   9.00-10.00  sec  3.08 MBytes  25.9 Mbits/sec                  
[  9]   9.00-10.00  sec  3.12 MBytes  26.2 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.33 MBytes  78.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  36.1 MBytes  30.3 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  36.1 MBytes  30.3 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  34.4 MBytes  28.8 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  34.4 MBytes  28.8 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  35.0 MBytes  29.4 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  35.0 MBytes  29.4 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   106 MBytes  88.5 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   106 MBytes  88.5 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 42354 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 55345 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 55865 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  38.0 MBytes   318 Mbits/sec  4860  
[  6]   0.00-1.00   sec  38.0 MBytes   318 Mbits/sec  4860  
[  9]   0.00-1.00   sec  38.0 MBytes   318 Mbits/sec  4860  
[SUM]   0.00-1.00   sec   114 MBytes   955 Mbits/sec  14580  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.8 MBytes   317 Mbits/sec  4843  
[  6]   1.00-2.00   sec  37.8 MBytes   317 Mbits/sec  4843  
[  9]   1.00-2.00   sec  37.8 MBytes   317 Mbits/sec  4843  
[SUM]   1.00-2.00   sec   114 MBytes   952 Mbits/sec  14529  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.9 MBytes   318 Mbits/sec  4848  
[  6]   2.00-3.00   sec  37.9 MBytes   318 Mbits/sec  4848  
[  9]   2.00-3.00   sec  37.9 MBytes   318 Mbits/sec  4848  
[SUM]   2.00-3.00   sec   114 MBytes   953 Mbits/sec  14544  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  37.9 MBytes   318 Mbits/sec  4857  
[  6]   3.00-4.00   sec  37.9 MBytes   318 Mbits/sec  4857  
[  9]   3.00-4.00   sec  37.9 MBytes   318 Mbits/sec  4857  
[SUM]   3.00-4.00   sec   114 MBytes   955 Mbits/sec  14571  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.9 MBytes   318 Mbits/sec  4855  
[  6]   4.00-5.00   sec  37.9 MBytes   318 Mbits/sec  4855  
[  9]   4.00-5.00   sec  37.9 MBytes   318 Mbits/sec  4855  
[SUM]   4.00-5.00   sec   114 MBytes   955 Mbits/sec  14565  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.9 MBytes   318 Mbits/sec  4852  
[  6]   5.00-6.00   sec  37.9 MBytes   318 Mbits/sec  4852  
[  9]   5.00-6.00   sec  37.9 MBytes   318 Mbits/sec  4852  
[SUM]   5.00-6.00   sec   114 MBytes   954 Mbits/sec  14556  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.5 MBytes   314 Mbits/sec  4797  
[  6]   6.00-7.00   sec  37.5 MBytes   314 Mbits/sec  4797  
[  9]   6.00-7.00   sec  37.5 MBytes   314 Mbits/sec  4797  
[SUM]   6.00-7.00   sec   112 MBytes   943 Mbits/sec  14391  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.7 MBytes   317 Mbits/sec  4831  
[  6]   7.00-8.00   sec  37.7 MBytes   317 Mbits/sec  4831  
[  9]   7.00-8.00   sec  37.7 MBytes   317 Mbits/sec  4831  
[SUM]   7.00-8.00   sec   113 MBytes   950 Mbits/sec  14493  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.9 MBytes   318 Mbits/sec  4852  
[  6]   8.00-9.00   sec  37.9 MBytes   318 Mbits/sec  4852  
[  9]   8.00-9.00   sec  37.9 MBytes   318 Mbits/sec  4852  
[SUM]   8.00-9.00   sec   114 MBytes   954 Mbits/sec  14556  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.7 MBytes   316 Mbits/sec  4820  
[  6]   9.00-10.00  sec  37.7 MBytes   316 Mbits/sec  4820  
[  9]   9.00-10.00  sec  37.7 MBytes   316 Mbits/sec  4820  
[SUM]   9.00-10.00  sec   113 MBytes   948 Mbits/sec  14460  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   378 MBytes   317 Mbits/sec  7338208.376 ms  21969/21975 (1e+02%)  
[  4] Sent 21975 datagrams
[  6]   0.00-10.00  sec   378 MBytes   317 Mbits/sec  7338208.412 ms  43791/43797 (1e+02%)  
[  6] Sent 43797 datagrams
[  9]   0.00-10.00  sec   378 MBytes   317 Mbits/sec  7827422.262 ms  43757/43762 (1e+02%)  
[  9] Sent 43762 datagrams
[SUM]   0.00-10.00  sec  1.11 GBytes   952 Mbits/sec  7501279.683 ms  109517/109534 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 53764 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 46397 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 35402 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  7.23 MBytes  60.7 Mbits/sec  0.114 ms  0/926 (0%)  
[  6]   0.00-1.00   sec  7.23 MBytes  60.7 Mbits/sec  0.074 ms  0/926 (0%)  
[  9]   0.00-1.00   sec  7.23 MBytes  60.6 Mbits/sec  0.084 ms  0/925 (0%)  
[SUM]   0.00-1.00   sec  21.7 MBytes   182 Mbits/sec  0.090 ms  0/2777 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.24 MBytes  60.8 Mbits/sec  0.092 ms  0/927 (0%)  
[  6]   1.00-2.00   sec  7.24 MBytes  60.8 Mbits/sec  0.047 ms  0/927 (0%)  
[  9]   1.00-2.00   sec  7.23 MBytes  60.7 Mbits/sec  0.079 ms  0/926 (0%)  
[SUM]   1.00-2.00   sec  21.7 MBytes   182 Mbits/sec  0.073 ms  0/2780 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.20 MBytes  60.4 Mbits/sec  0.081 ms  0/922 (0%)  
[  6]   2.00-3.00   sec  7.20 MBytes  60.4 Mbits/sec  0.071 ms  0/922 (0%)  
[  9]   2.00-3.00   sec  7.20 MBytes  60.4 Mbits/sec  0.102 ms  0/922 (0%)  
[SUM]   2.00-3.00   sec  21.6 MBytes   181 Mbits/sec  0.085 ms  0/2766 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  7.22 MBytes  60.6 Mbits/sec  0.106 ms  0/924 (0%)  
[  6]   3.00-4.00   sec  7.21 MBytes  60.5 Mbits/sec  0.077 ms  0/923 (0%)  
[  9]   3.00-4.00   sec  7.22 MBytes  60.6 Mbits/sec  0.088 ms  0/924 (0%)  
[SUM]   3.00-4.00   sec  21.6 MBytes   182 Mbits/sec  0.090 ms  0/2771 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  7.21 MBytes  60.5 Mbits/sec  0.074 ms  0/923 (0%)  
[  6]   4.00-5.00   sec  7.22 MBytes  60.6 Mbits/sec  0.051 ms  0/924 (0%)  
[  9]   4.00-5.00   sec  7.22 MBytes  60.6 Mbits/sec  0.110 ms  0/924 (0%)  
[SUM]   4.00-5.00   sec  21.6 MBytes   182 Mbits/sec  0.078 ms  0/2771 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  7.18 MBytes  60.2 Mbits/sec  0.064 ms  0/919 (0%)  
[  6]   5.00-6.00   sec  7.18 MBytes  60.2 Mbits/sec  0.080 ms  0/919 (0%)  
[  9]   5.00-6.00   sec  7.17 MBytes  60.2 Mbits/sec  0.105 ms  0/918 (0%)  
[SUM]   5.00-6.00   sec  21.5 MBytes   181 Mbits/sec  0.083 ms  0/2756 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.26 MBytes  60.9 Mbits/sec  0.112 ms  0/929 (0%)  
[  6]   6.00-7.00   sec  7.26 MBytes  60.9 Mbits/sec  0.096 ms  0/929 (0%)  
[  9]   6.00-7.00   sec  7.26 MBytes  60.9 Mbits/sec  0.142 ms  0/929 (0%)  
[SUM]   6.00-7.00   sec  21.8 MBytes   183 Mbits/sec  0.116 ms  0/2787 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  7.40 MBytes  62.1 Mbits/sec  0.134 ms  0/947 (0%)  
[  6]   7.00-8.00   sec  7.39 MBytes  62.0 Mbits/sec  0.104 ms  0/946 (0%)  
[  9]   7.00-8.00   sec  7.40 MBytes  62.1 Mbits/sec  0.119 ms  0/947 (0%)  
[SUM]   7.00-8.00   sec  22.2 MBytes   186 Mbits/sec  0.119 ms  0/2840 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  7.49 MBytes  62.8 Mbits/sec  0.090 ms  0/959 (0%)  
[  6]   8.00-9.00   sec  7.49 MBytes  62.8 Mbits/sec  0.067 ms  0/959 (0%)  
[  9]   8.00-9.00   sec  7.49 MBytes  62.8 Mbits/sec  0.087 ms  0/959 (0%)  
[SUM]   8.00-9.00   sec  22.5 MBytes   189 Mbits/sec  0.082 ms  0/2877 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  7.48 MBytes  62.8 Mbits/sec  0.115 ms  0/958 (0%)  
[  6]   9.00-10.00  sec  7.49 MBytes  62.8 Mbits/sec  0.072 ms  0/959 (0%)  
[  9]   9.00-10.00  sec  7.48 MBytes  62.8 Mbits/sec  0.085 ms  0/958 (0%)  
[SUM]   9.00-10.00  sec  22.5 MBytes   188 Mbits/sec  0.091 ms  0/2875 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  72.9 MBytes  61.2 Mbits/sec  0.115 ms  0/9335 (0%)  
[  4] Sent 9335 datagrams
[  6]   0.00-10.00  sec  72.9 MBytes  61.2 Mbits/sec  0.068 ms  0/9335 (0%)  
[  6] Sent 9335 datagrams
[  9]   0.00-10.00  sec  72.9 MBytes  61.2 Mbits/sec  0.077 ms  0/9334 (0%)  
[  9] Sent 9334 datagrams
[SUM]   0.00-10.00  sec   219 MBytes   184 Mbits/sec  0.087 ms  0/28004 (0%)  

iperf Done.
-------------- next part --------------
+ : ':::::::[' configuration dma_burst ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51286 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  29.4 MBytes   247 Mbits/sec   44   50.9 KBytes       
[  4]   1.00-2.00   sec  24.4 MBytes   204 Mbits/sec   21   66.5 KBytes       
[  4]   2.00-3.00   sec  22.0 MBytes   185 Mbits/sec   12   74.9 KBytes       
[  4]   3.00-4.00   sec  22.4 MBytes   188 Mbits/sec   19   84.8 KBytes       
[  4]   4.00-5.00   sec  29.1 MBytes   244 Mbits/sec   51   76.4 KBytes       
[  4]   5.00-6.00   sec  29.3 MBytes   246 Mbits/sec   69   66.5 KBytes       
[  4]   6.00-7.00   sec  29.5 MBytes   248 Mbits/sec   62   67.9 KBytes       
[  4]   7.00-8.00   sec  29.4 MBytes   247 Mbits/sec   44   43.8 KBytes       
[  4]   8.00-9.00   sec  25.0 MBytes   210 Mbits/sec   29   91.9 KBytes       
[  4]   9.00-10.00  sec  22.3 MBytes   187 Mbits/sec   35   73.5 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   263 MBytes   220 Mbits/sec  386             sender
[  4]   0.00-10.00  sec   262 MBytes   220 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51290 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.1 MBytes  85.1 Mbits/sec                  
[  4]   1.00-2.00   sec  12.5 MBytes   104 Mbits/sec                  
[  4]   2.00-3.00   sec  12.3 MBytes   103 Mbits/sec                  
[  4]   3.00-4.00   sec  12.3 MBytes   104 Mbits/sec                  
[  4]   4.00-5.00   sec  11.8 MBytes  99.1 Mbits/sec                  
[  4]   5.00-6.00   sec  9.43 MBytes  79.1 Mbits/sec                  
[  4]   6.00-7.00   sec  9.77 MBytes  81.9 Mbits/sec                  
[  4]   7.00-8.00   sec  12.2 MBytes   102 Mbits/sec                  
[  4]   8.00-9.00   sec  12.3 MBytes   103 Mbits/sec                  
[  4]   9.00-10.00  sec  12.3 MBytes   103 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   115 MBytes  96.9 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   115 MBytes  96.9 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 59591 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2102  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2290  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2290  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2285  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  239921.081 ms  783/842 (93%)  
[  4] Sent 842 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 54088 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  17.9 MBytes   150 Mbits/sec  0.120 ms  0/2287 (0%)  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  0.124 ms  0/2290 (0%)  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  0.104 ms  0/2288 (0%)  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  0.129 ms  0/2289 (0%)  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  0.105 ms  0/2289 (0%)  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  0.127 ms  0/2288 (0%)  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  0.112 ms  0/2289 (0%)  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  0.112 ms  0/2289 (0%)  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  0.103 ms  0/2289 (0%)  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  0.116 ms  0/2289 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.126 ms  0/22888 (0%)  
[  4] Sent 22888 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 56755 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  58.9 MBytes   494 Mbits/sec  7545  
[  4]   1.00-2.00   sec  59.9 MBytes   503 Mbits/sec  7668  
[  4]   2.00-3.00   sec  58.7 MBytes   493 Mbits/sec  7518  
[  4]   3.00-4.00   sec  60.5 MBytes   508 Mbits/sec  7749  
[  4]   4.00-5.00   sec  59.0 MBytes   495 Mbits/sec  7547  
[  4]   5.00-6.00   sec  60.4 MBytes   506 Mbits/sec  7725  
[  4]   6.00-7.00   sec  58.5 MBytes   490 Mbits/sec  7483  
[  4]   7.00-8.00   sec  60.6 MBytes   508 Mbits/sec  7757  
[  4]   8.00-9.00   sec  58.5 MBytes   491 Mbits/sec  7492  
[  4]   9.00-10.00  sec  60.7 MBytes   509 Mbits/sec  7773  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  39379.596 ms  64391/64478 (1e+02%)  
[  4] Sent 64478 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 50608 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  21.7 MBytes   182 Mbits/sec  0.117 ms  0/2778 (0%)  
[  4]   1.00-2.00   sec  21.8 MBytes   183 Mbits/sec  0.123 ms  0/2788 (0%)  
[  4]   2.00-3.00   sec  21.8 MBytes   183 Mbits/sec  0.143 ms  0/2786 (0%)  
[  4]   3.00-4.00   sec  21.6 MBytes   182 Mbits/sec  0.137 ms  0/2771 (0%)  
[  4]   4.00-5.00   sec  21.7 MBytes   182 Mbits/sec  0.124 ms  0/2775 (0%)  
[  4]   5.00-6.00   sec  21.8 MBytes   183 Mbits/sec  0.122 ms  0/2788 (0%)  
[  4]   6.00-7.00   sec  21.6 MBytes   181 Mbits/sec  0.119 ms  0/2762 (0%)  
[  4]   7.00-8.00   sec  21.0 MBytes   176 Mbits/sec  0.104 ms  0/2693 (0%)  
[  4]   8.00-9.00   sec  21.0 MBytes   176 Mbits/sec  0.133 ms  0/2685 (0%)  
[  4]   9.00-10.00  sec  20.9 MBytes   175 Mbits/sec  0.105 ms  0/2674 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   215 MBytes   180 Mbits/sec  0.101 ms  0/27502 (0%)  
[  4] Sent 27502 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 36118 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   103 MBytes   865 Mbits/sec  13203  
[  4]   1.00-2.00   sec   103 MBytes   866 Mbits/sec  13221  
[  4]   2.00-3.00   sec   103 MBytes   864 Mbits/sec  13190  
[  4]   3.00-4.00   sec   103 MBytes   865 Mbits/sec  13198  
[  4]   4.00-5.00   sec   103 MBytes   866 Mbits/sec  13218  
[  4]   5.00-6.00   sec   103 MBytes   865 Mbits/sec  13205  
[  4]   6.00-7.00   sec   103 MBytes   866 Mbits/sec  13207  
[  4]   7.00-8.00   sec   103 MBytes   865 Mbits/sec  13195  
[  4]   8.00-9.00   sec   103 MBytes   866 Mbits/sec  13207  
[  4]   9.00-10.00  sec   103 MBytes   867 Mbits/sec  13228  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.01 GBytes   866 Mbits/sec  0.747 ms  131275/131557 (1e+02%)  
[  4] Sent 131557 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 56991 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  24.4 MBytes   205 Mbits/sec  0.124 ms  0/3128 (0%)  
[  4]   1.00-2.00   sec  24.4 MBytes   204 Mbits/sec  0.129 ms  0/3118 (0%)  
[  4]   2.00-3.00   sec  24.3 MBytes   204 Mbits/sec  0.140 ms  0/3112 (0%)  
[  4]   3.00-4.00   sec  24.2 MBytes   203 Mbits/sec  0.139 ms  0/3103 (0%)  
[  4]   4.00-5.00   sec  24.3 MBytes   203 Mbits/sec  0.109 ms  0/3105 (0%)  
[  4]   5.00-6.00   sec  24.4 MBytes   204 Mbits/sec  0.142 ms  0/3117 (0%)  
[  4]   6.00-7.00   sec  24.3 MBytes   204 Mbits/sec  0.136 ms  0/3113 (0%)  
[  4]   7.00-8.00   sec  24.4 MBytes   205 Mbits/sec  0.113 ms  0/3125 (0%)  
[  4]   8.00-9.00   sec  24.3 MBytes   204 Mbits/sec  0.117 ms  0/3108 (0%)  
[  4]   9.00-10.00  sec  24.2 MBytes   203 Mbits/sec  0.130 ms  0/3101 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   243 MBytes   204 Mbits/sec  0.129 ms  0/31132 (0%)  
[  4] Sent 31132 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51306 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51308 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 51310 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  11.9 MBytes  99.6 Mbits/sec   80   25.5 KBytes       
[  6]   0.00-1.00   sec  10.2 MBytes  85.4 Mbits/sec   67   46.7 KBytes       
[  9]   0.00-1.00   sec  7.27 MBytes  60.9 Mbits/sec   99   15.6 KBytes       
[SUM]   0.00-1.00   sec  29.3 MBytes   246 Mbits/sec  246             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  12.1 MBytes   101 Mbits/sec   76   60.8 KBytes       
[  6]   1.00-2.00   sec  8.33 MBytes  69.8 Mbits/sec   94   17.0 KBytes       
[  9]   1.00-2.00   sec  8.58 MBytes  71.9 Mbits/sec  103   17.0 KBytes       
[SUM]   1.00-2.00   sec  29.0 MBytes   243 Mbits/sec  273             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  15.8 MBytes   133 Mbits/sec   80   43.8 KBytes       
[  6]   2.00-3.00   sec  6.52 MBytes  54.8 Mbits/sec   95   28.3 KBytes       
[  9]   2.00-3.00   sec  7.21 MBytes  60.5 Mbits/sec  114   46.7 KBytes       
[SUM]   2.00-3.00   sec  29.6 MBytes   248 Mbits/sec  289             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  11.4 MBytes  95.9 Mbits/sec   71   35.4 KBytes       
[  6]   3.00-4.00   sec  9.20 MBytes  77.2 Mbits/sec   96   24.0 KBytes       
[  9]   3.00-4.00   sec  8.95 MBytes  75.1 Mbits/sec  130   12.7 KBytes       
[SUM]   3.00-4.00   sec  29.6 MBytes   248 Mbits/sec  297             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  17.0 MBytes   143 Mbits/sec   76   9.90 KBytes       
[  6]   4.00-5.00   sec  7.95 MBytes  66.7 Mbits/sec  109   29.7 KBytes       
[  9]   4.00-5.00   sec  4.72 MBytes  39.6 Mbits/sec   82   32.5 KBytes       
[SUM]   4.00-5.00   sec  29.7 MBytes   249 Mbits/sec  267             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  10.6 MBytes  89.1 Mbits/sec  133   36.8 KBytes       
[  6]   5.00-6.00   sec  8.20 MBytes  68.8 Mbits/sec  105   62.2 KBytes       
[  9]   5.00-6.00   sec  9.32 MBytes  78.2 Mbits/sec  100   41.0 KBytes       
[SUM]   5.00-6.00   sec  28.2 MBytes   236 Mbits/sec  338             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  10.1 MBytes  84.4 Mbits/sec  105   49.5 KBytes       
[  6]   6.00-7.00   sec  9.88 MBytes  82.9 Mbits/sec  101   19.8 KBytes       
[  9]   6.00-7.00   sec  9.94 MBytes  83.4 Mbits/sec   93   41.0 KBytes       
[SUM]   6.00-7.00   sec  29.9 MBytes   251 Mbits/sec  299             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  11.1 MBytes  93.3 Mbits/sec   93   39.6 KBytes       
[  6]   7.00-8.00   sec  9.45 MBytes  79.3 Mbits/sec  127   7.07 KBytes       
[  9]   7.00-8.00   sec  9.26 MBytes  77.7 Mbits/sec   88   59.4 KBytes       
[SUM]   7.00-8.00   sec  29.8 MBytes   250 Mbits/sec  308             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  13.7 MBytes   115 Mbits/sec   93   8.48 KBytes       
[  6]   8.00-9.00   sec  6.46 MBytes  54.2 Mbits/sec  116   17.0 KBytes       
[  9]   8.00-9.00   sec  9.69 MBytes  81.3 Mbits/sec  104   72.1 KBytes       
[SUM]   8.00-9.00   sec  29.8 MBytes   250 Mbits/sec  313             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  10.9 MBytes  91.8 Mbits/sec   70   46.7 KBytes       
[  6]   9.00-10.00  sec  7.95 MBytes  66.7 Mbits/sec   98   41.0 KBytes       
[  9]   9.00-10.00  sec  10.4 MBytes  87.6 Mbits/sec   91   32.5 KBytes       
[SUM]   9.00-10.00  sec  29.3 MBytes   246 Mbits/sec  259             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   125 MBytes   105 Mbits/sec  877             sender
[  4]   0.00-10.00  sec   124 MBytes   104 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  84.1 MBytes  70.6 Mbits/sec  1008             sender
[  6]   0.00-10.00  sec  83.5 MBytes  70.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  85.4 MBytes  71.6 Mbits/sec  1004             sender
[  9]   0.00-10.00  sec  84.8 MBytes  71.2 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   294 MBytes   247 Mbits/sec  2889             sender
[SUM]   0.00-10.00  sec   292 MBytes   245 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51314 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51316 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 51318 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.53 MBytes  29.6 Mbits/sec                  
[  6]   0.00-1.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   0.00-1.00   sec  2.25 MBytes  18.9 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.28 MBytes  77.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.11 MBytes  26.1 Mbits/sec                  
[  6]   1.00-2.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   1.00-2.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.36 MBytes  78.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.11 MBytes  26.1 Mbits/sec                  
[  6]   2.00-3.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   2.00-3.00   sec  3.09 MBytes  25.9 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.33 MBytes  78.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   3.00-4.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   3.00-4.00   sec  3.05 MBytes  25.6 Mbits/sec                  
[SUM]   3.00-4.00   sec  9.30 MBytes  78.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  3.13 MBytes  26.3 Mbits/sec                  
[  6]   4.00-5.00   sec  3.03 MBytes  25.4 Mbits/sec                  
[  9]   4.00-5.00   sec  3.21 MBytes  26.9 Mbits/sec                  
[SUM]   4.00-5.00   sec  9.37 MBytes  78.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   5.00-6.00   sec  3.09 MBytes  25.9 Mbits/sec                  
[  9]   5.00-6.00   sec  3.11 MBytes  26.1 Mbits/sec                  
[SUM]   5.00-6.00   sec  9.33 MBytes  78.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.05 MBytes  25.6 Mbits/sec                  
[  6]   6.00-7.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   6.00-7.00   sec  3.15 MBytes  26.4 Mbits/sec                  
[SUM]   6.00-7.00   sec  9.32 MBytes  78.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.38 MBytes  28.4 Mbits/sec                  
[  6]   7.00-8.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   7.00-8.00   sec  3.41 MBytes  28.6 Mbits/sec                  
[SUM]   7.00-8.00   sec  10.2 MBytes  85.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.12 MBytes  34.5 Mbits/sec                  
[  6]   8.00-9.00   sec  4.12 MBytes  34.6 Mbits/sec                  
[  9]   8.00-9.00   sec  4.02 MBytes  33.7 Mbits/sec                  
[SUM]   8.00-9.00   sec  12.3 MBytes   103 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  4.12 MBytes  34.6 Mbits/sec                  
[  6]   9.00-10.00  sec  4.05 MBytes  34.0 Mbits/sec                  
[  9]   9.00-10.00  sec  4.11 MBytes  34.4 Mbits/sec                  
[SUM]   9.00-10.00  sec  12.3 MBytes   103 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  34.7 MBytes  29.1 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  34.7 MBytes  29.1 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  34.6 MBytes  29.0 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  34.6 MBytes  29.0 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  33.5 MBytes  28.1 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  33.5 MBytes  28.1 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   103 MBytes  86.2 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   103 MBytes  86.2 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 40993 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 36104 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60932 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  37.9 MBytes   317 Mbits/sec  4845  
[  6]   0.00-1.00   sec  37.9 MBytes   317 Mbits/sec  4845  
[  9]   0.00-1.00   sec  37.9 MBytes   317 Mbits/sec  4845  
[SUM]   0.00-1.00   sec   114 MBytes   952 Mbits/sec  14535  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.8 MBytes   317 Mbits/sec  4841  
[  6]   1.00-2.00   sec  37.8 MBytes   317 Mbits/sec  4841  
[  9]   1.00-2.00   sec  37.8 MBytes   317 Mbits/sec  4841  
[SUM]   1.00-2.00   sec   113 MBytes   952 Mbits/sec  14523  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.9 MBytes   318 Mbits/sec  4854  
[  6]   2.00-3.00   sec  37.9 MBytes   318 Mbits/sec  4854  
[  9]   2.00-3.00   sec  37.9 MBytes   318 Mbits/sec  4854  
[SUM]   2.00-3.00   sec   114 MBytes   954 Mbits/sec  14562  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  37.9 MBytes   318 Mbits/sec  4851  
[  6]   3.00-4.00   sec  37.9 MBytes   318 Mbits/sec  4851  
[  9]   3.00-4.00   sec  37.9 MBytes   318 Mbits/sec  4851  
[SUM]   3.00-4.00   sec   114 MBytes   954 Mbits/sec  14553  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.9 MBytes   318 Mbits/sec  4847  
[  6]   4.00-5.00   sec  37.9 MBytes   318 Mbits/sec  4847  
[  9]   4.00-5.00   sec  37.9 MBytes   318 Mbits/sec  4847  
[SUM]   4.00-5.00   sec   114 MBytes   953 Mbits/sec  14541  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.7 MBytes   316 Mbits/sec  4821  
[  6]   5.00-6.00   sec  37.7 MBytes   316 Mbits/sec  4821  
[  9]   5.00-6.00   sec  37.7 MBytes   316 Mbits/sec  4821  
[SUM]   5.00-6.00   sec   113 MBytes   948 Mbits/sec  14463  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.8 MBytes   317 Mbits/sec  4844  
[  6]   6.00-7.00   sec  37.8 MBytes   317 Mbits/sec  4844  
[  9]   6.00-7.00   sec  37.8 MBytes   317 Mbits/sec  4844  
[SUM]   6.00-7.00   sec   114 MBytes   952 Mbits/sec  14532  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.8 MBytes   317 Mbits/sec  4839  
[  6]   7.00-8.00   sec  37.8 MBytes   317 Mbits/sec  4839  
[  9]   7.00-8.00   sec  37.8 MBytes   317 Mbits/sec  4839  
[SUM]   7.00-8.00   sec   113 MBytes   951 Mbits/sec  14517  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.8 MBytes   317 Mbits/sec  4840  
[  6]   8.00-9.00   sec  37.8 MBytes   317 Mbits/sec  4840  
[  9]   8.00-9.00   sec  37.8 MBytes   317 Mbits/sec  4840  
[SUM]   8.00-9.00   sec   113 MBytes   952 Mbits/sec  14520  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4848  
[  6]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4848  
[  9]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4848  
[SUM]   9.00-10.00  sec   114 MBytes   953 Mbits/sec  14544  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   378 MBytes   317 Mbits/sec  7827421.765 ms  99/104 (95%)  
[  4] Sent 104 datagrams
[  6]   0.00-10.00  sec   378 MBytes   317 Mbits/sec  7338208.061 ms  43808/43814 (1e+02%)  
[  6] Sent 43814 datagrams
[  9]   0.00-10.00  sec   378 MBytes   317 Mbits/sec  8905866.429 ms  0/3 (0%)  
[  9] Sent 3 datagrams
[SUM]   0.00-10.00  sec  1.11 GBytes   952 Mbits/sec  8023832.085 ms  43907/43921 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 38683 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51240 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 35532 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  7.34 MBytes  61.6 Mbits/sec  0.080 ms  0/940 (0%)  
[  6]   0.00-1.00   sec  7.34 MBytes  61.6 Mbits/sec  0.073 ms  0/940 (0%)  
[  9]   0.00-1.00   sec  7.34 MBytes  61.5 Mbits/sec  0.125 ms  0/939 (0%)  
[SUM]   0.00-1.00   sec  22.0 MBytes   185 Mbits/sec  0.093 ms  0/2819 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.30 MBytes  61.3 Mbits/sec  0.092 ms  0/935 (0%)  
[  6]   1.00-2.00   sec  7.30 MBytes  61.3 Mbits/sec  0.078 ms  0/935 (0%)  
[  9]   1.00-2.00   sec  7.30 MBytes  61.3 Mbits/sec  0.093 ms  0/935 (0%)  
[SUM]   1.00-2.00   sec  21.9 MBytes   184 Mbits/sec  0.088 ms  0/2805 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.17 MBytes  60.2 Mbits/sec  0.104 ms  0/918 (0%)  
[  6]   2.00-3.00   sec  7.16 MBytes  60.1 Mbits/sec  0.080 ms  0/917 (0%)  
[  9]   2.00-3.00   sec  7.17 MBytes  60.2 Mbits/sec  0.091 ms  0/918 (0%)  
[SUM]   2.00-3.00   sec  21.5 MBytes   180 Mbits/sec  0.092 ms  0/2753 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  7.22 MBytes  60.6 Mbits/sec  0.097 ms  0/924 (0%)  
[  6]   3.00-4.00   sec  7.23 MBytes  60.6 Mbits/sec  0.048 ms  0/925 (0%)  
[  9]   3.00-4.00   sec  7.22 MBytes  60.6 Mbits/sec  0.070 ms  0/924 (0%)  
[SUM]   3.00-4.00   sec  21.7 MBytes   182 Mbits/sec  0.072 ms  0/2773 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  7.20 MBytes  60.4 Mbits/sec  0.114 ms  0/921 (0%)  
[  6]   4.00-5.00   sec  7.20 MBytes  60.4 Mbits/sec  0.086 ms  0/921 (0%)  
[  9]   4.00-5.00   sec  7.20 MBytes  60.4 Mbits/sec  0.107 ms  0/921 (0%)  
[SUM]   4.00-5.00   sec  21.6 MBytes   181 Mbits/sec  0.102 ms  0/2763 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  7.14 MBytes  59.9 Mbits/sec  0.102 ms  0/914 (0%)  
[  6]   5.00-6.00   sec  7.14 MBytes  59.9 Mbits/sec  0.079 ms  0/914 (0%)  
[  9]   5.00-6.00   sec  7.14 MBytes  59.9 Mbits/sec  0.095 ms  0/914 (0%)  
[SUM]   5.00-6.00   sec  21.4 MBytes   180 Mbits/sec  0.092 ms  0/2742 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.19 MBytes  60.3 Mbits/sec  0.156 ms  0/920 (0%)  
[  6]   6.00-7.00   sec  7.19 MBytes  60.3 Mbits/sec  0.079 ms  0/920 (0%)  
[  9]   6.00-7.00   sec  7.20 MBytes  60.4 Mbits/sec  0.151 ms  0/921 (0%)  
[SUM]   6.00-7.00   sec  21.6 MBytes   181 Mbits/sec  0.129 ms  0/2761 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  7.16 MBytes  60.1 Mbits/sec  0.107 ms  0/917 (0%)  
[  6]   7.00-8.00   sec  7.16 MBytes  60.1 Mbits/sec  0.045 ms  0/917 (0%)  
[  9]   7.00-8.00   sec  7.16 MBytes  60.1 Mbits/sec  0.096 ms  0/917 (0%)  
[SUM]   7.00-8.00   sec  21.5 MBytes   180 Mbits/sec  0.083 ms  0/2751 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  7.23 MBytes  60.7 Mbits/sec  0.123 ms  0/926 (0%)  
[  6]   8.00-9.00   sec  7.23 MBytes  60.7 Mbits/sec  0.083 ms  0/926 (0%)  
[  9]   8.00-9.00   sec  7.23 MBytes  60.6 Mbits/sec  0.127 ms  0/925 (0%)  
[SUM]   8.00-9.00   sec  21.7 MBytes   182 Mbits/sec  0.111 ms  0/2777 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  7.37 MBytes  61.8 Mbits/sec  0.094 ms  0/943 (0%)  
[  6]   9.00-10.00  sec  7.36 MBytes  61.7 Mbits/sec  0.084 ms  0/942 (0%)  
[  9]   9.00-10.00  sec  7.37 MBytes  61.8 Mbits/sec  0.119 ms  0/943 (0%)  
[SUM]   9.00-10.00  sec  22.1 MBytes   185 Mbits/sec  0.099 ms  0/2828 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  72.3 MBytes  60.7 Mbits/sec  0.094 ms  0/9258 (0%)  
[  4] Sent 9258 datagrams
[  6]   0.00-10.00  sec  72.3 MBytes  60.7 Mbits/sec  0.088 ms  0/9258 (0%)  
[  6] Sent 9258 datagrams
[  9]   0.00-10.00  sec  72.3 MBytes  60.7 Mbits/sec  0.119 ms  0/9258 (0%)  
[  9] Sent 9258 datagrams
[SUM]   0.00-10.00  sec   217 MBytes   182 Mbits/sec  0.100 ms  0/27774 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dma_burst_netcat.log
Type: text/x-log
Size: 594 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment-0001.bin>
-------------- next part --------------
+ : ':::::::[' configuration everything ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60838 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  34.1 MBytes   286 Mbits/sec   35   55.1 KBytes       
[  4]   1.00-2.00   sec  26.8 MBytes   225 Mbits/sec   75   91.9 KBytes       
[  4]   2.00-3.00   sec  38.3 MBytes   322 Mbits/sec   30   67.9 KBytes       
[  4]   3.00-4.00   sec  27.3 MBytes   229 Mbits/sec   35   96.2 KBytes       
[  4]   4.00-5.00   sec  29.1 MBytes   244 Mbits/sec   51    139 KBytes       
[  4]   5.00-6.00   sec  34.2 MBytes   287 Mbits/sec   19    165 KBytes       
[  4]   6.00-7.00   sec  32.8 MBytes   275 Mbits/sec   48    182 KBytes       
[  4]   7.00-8.00   sec  30.4 MBytes   255 Mbits/sec   12   50.9 KBytes       
[  4]   8.00-9.00   sec  33.0 MBytes   277 Mbits/sec   58    123 KBytes       
[  4]   9.00-10.00  sec  26.8 MBytes   225 Mbits/sec   64    134 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   313 MBytes   262 Mbits/sec  427             sender
[  4]   0.00-10.00  sec   312 MBytes   262 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60852 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.5 MBytes  87.9 Mbits/sec                  
[  4]   1.00-2.00   sec  10.6 MBytes  88.6 Mbits/sec                  
[  4]   2.00-3.00   sec  10.6 MBytes  88.6 Mbits/sec                  
[  4]   3.00-4.00   sec  10.5 MBytes  87.9 Mbits/sec                  
[  4]   4.00-5.00   sec  10.5 MBytes  88.3 Mbits/sec                  
[  4]   5.00-6.00   sec  10.6 MBytes  89.3 Mbits/sec                  
[  4]   6.00-7.00   sec  10.5 MBytes  88.1 Mbits/sec                  
[  4]   7.00-8.00   sec  10.6 MBytes  89.1 Mbits/sec                  
[  4]   8.00-9.00   sec  10.6 MBytes  89.1 Mbits/sec                  
[  4]   9.00-10.00  sec  10.5 MBytes  87.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   107 MBytes  89.5 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   107 MBytes  89.5 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 52597 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   137 Mbits/sec  2096  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2293  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2290  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2287  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  5.154 ms  1056/1284 (82%)  
[  4] Sent 1284 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 37198 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  17.9 MBytes   150 Mbits/sec  0.042 ms  0/2287 (0%)  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  0.045 ms  0/2289 (0%)  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  0.038 ms  0/2290 (0%)  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  0.054 ms  0/2289 (0%)  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  0.027 ms  0/2288 (0%)  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  0.078 ms  0/2289 (0%)  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  0.044 ms  0/2288 (0%)  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  0.023 ms  0/2289 (0%)  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  0.058 ms  0/2289 (0%)  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  0.098 ms  0/2289 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.098 ms  0/22887 (0%)  
[  4] Sent 22887 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 55677 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.1 MBytes   496 Mbits/sec  7565  
[  4]   1.00-2.00   sec  59.1 MBytes   496 Mbits/sec  7567  
[  4]   2.00-3.00   sec  60.4 MBytes   507 Mbits/sec  7737  
[  4]   3.00-4.00   sec  59.2 MBytes   497 Mbits/sec  7580  
[  4]   4.00-5.00   sec  59.5 MBytes   499 Mbits/sec  7612  
[  4]   5.00-6.00   sec  59.0 MBytes   495 Mbits/sec  7547  
[  4]   6.00-7.00   sec  59.4 MBytes   498 Mbits/sec  7605  
[  4]   7.00-8.00   sec  60.4 MBytes   507 Mbits/sec  7737  
[  4]   8.00-9.00   sec  56.3 MBytes   473 Mbits/sec  7212  
[  4]   9.00-10.00  sec  60.0 MBytes   503 Mbits/sec  7678  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   592 MBytes   497 Mbits/sec  0.257 ms  64678/64986 (1e+02%)  
[  4] Sent 64986 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 52012 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  22.6 MBytes   190 Mbits/sec  0.204 ms  0/2895 (0%)  
[  4]   1.00-2.00   sec  22.7 MBytes   191 Mbits/sec  0.101 ms  0/2911 (0%)  
[  4]   2.00-3.00   sec  23.2 MBytes   195 Mbits/sec  0.098 ms  0/2976 (0%)  
[  4]   3.00-4.00   sec  23.2 MBytes   194 Mbits/sec  0.092 ms  0/2964 (0%)  
[  4]   4.00-5.00   sec  24.8 MBytes   208 Mbits/sec  0.084 ms  0/3180 (0%)  
[  4]   5.00-6.00   sec  24.6 MBytes   207 Mbits/sec  0.100 ms  0/3155 (0%)  
[  4]   6.00-7.00   sec  27.8 MBytes   233 Mbits/sec  0.107 ms  0/3560 (0%)  
[  4]   7.00-8.00   sec  27.7 MBytes   232 Mbits/sec  0.040 ms  0/3540 (0%)  
[  4]   8.00-9.00   sec  27.7 MBytes   232 Mbits/sec  0.112 ms  0/3543 (0%)  
[  4]   9.00-10.00  sec  27.7 MBytes   232 Mbits/sec  0.029 ms  0/3544 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   252 MBytes   211 Mbits/sec  0.034 ms  0/32269 (0%)  
[  4] Sent 32269 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 53409 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  92.1 MBytes   772 Mbits/sec  11783  
[  4]   1.00-2.00   sec   101 MBytes   845 Mbits/sec  12898  
[  4]   2.00-3.00   sec   102 MBytes   859 Mbits/sec  13108  
[  4]   3.00-4.00   sec   101 MBytes   847 Mbits/sec  12925  
[  4]   4.00-5.00   sec   102 MBytes   853 Mbits/sec  13011  
[  4]   5.00-6.00   sec   102 MBytes   853 Mbits/sec  13011  
[  4]   6.00-7.00   sec   101 MBytes   846 Mbits/sec  12914  
[  4]   7.00-8.00   sec   103 MBytes   867 Mbits/sec  13232  
[  4]   8.00-9.00   sec   102 MBytes   854 Mbits/sec  13036  
[  4]   9.00-10.00  sec   102 MBytes   853 Mbits/sec  13012  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1007 MBytes   845 Mbits/sec  0.367 ms  66211/66507 (1e+02%)  
[  4] Sent 66507 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 42788 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  22.9 MBytes   192 Mbits/sec  0.144 ms  0/2937 (0%)  
[  4]   1.00-2.00   sec  23.0 MBytes   193 Mbits/sec  0.139 ms  0/2942 (0%)  
[  4]   2.00-3.00   sec  27.8 MBytes   234 Mbits/sec  0.047 ms  0/3563 (0%)  
[  4]   3.00-4.00   sec  27.9 MBytes   234 Mbits/sec  0.144 ms  0/3568 (0%)  
[  4]   4.00-5.00   sec  27.9 MBytes   234 Mbits/sec  0.127 ms  0/3568 (0%)  
[  4]   5.00-6.00   sec  27.8 MBytes   234 Mbits/sec  0.028 ms  0/3563 (0%)  
[  4]   6.00-7.00   sec  27.7 MBytes   233 Mbits/sec  0.062 ms  0/3548 (0%)  
[  4]   7.00-8.00   sec  27.8 MBytes   233 Mbits/sec  0.049 ms  0/3558 (0%)  
[  4]   8.00-9.00   sec  27.8 MBytes   233 Mbits/sec  0.103 ms  0/3553 (0%)  
[  4]   9.00-10.00  sec  27.6 MBytes   232 Mbits/sec  0.144 ms  0/3539 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   268 MBytes   225 Mbits/sec  0.154 ms  0/34341 (0%)  
[  4] Sent 34341 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60930 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60932 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60934 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  8.17 MBytes  68.5 Mbits/sec  132   11.3 KBytes       
[  6]   0.00-1.00   sec  13.8 MBytes   116 Mbits/sec  124   24.0 KBytes       
[  9]   0.00-1.00   sec  10.5 MBytes  88.4 Mbits/sec  108   17.0 KBytes       
[SUM]   0.00-1.00   sec  32.5 MBytes   273 Mbits/sec  364             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  5.84 MBytes  49.0 Mbits/sec  129   21.2 KBytes       
[  6]   1.00-2.00   sec  19.1 MBytes   160 Mbits/sec  103   55.1 KBytes       
[  9]   1.00-2.00   sec  7.95 MBytes  66.7 Mbits/sec   82   24.0 KBytes       
[SUM]   1.00-2.00   sec  32.9 MBytes   276 Mbits/sec  314             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.15 MBytes  60.0 Mbits/sec  121   21.2 KBytes       
[  6]   2.00-3.00   sec  19.8 MBytes   166 Mbits/sec   89   69.3 KBytes       
[  9]   2.00-3.00   sec  5.03 MBytes  42.2 Mbits/sec  151   7.07 KBytes       
[SUM]   2.00-3.00   sec  31.9 MBytes   268 Mbits/sec  361             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  16.1 MBytes   135 Mbits/sec  132   12.7 KBytes       
[  6]   3.00-4.00   sec  6.96 MBytes  58.4 Mbits/sec  121   4.24 KBytes       
[  9]   3.00-4.00   sec  8.33 MBytes  69.8 Mbits/sec   95   43.8 KBytes       
[SUM]   3.00-4.00   sec  31.4 MBytes   263 Mbits/sec  348             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  8.08 MBytes  67.8 Mbits/sec  151   36.8 KBytes       
[  6]   4.00-5.00   sec  15.8 MBytes   133 Mbits/sec   89   70.7 KBytes       
[  9]   4.00-5.00   sec  7.15 MBytes  60.0 Mbits/sec  104   14.1 KBytes       
[SUM]   4.00-5.00   sec  31.1 MBytes   261 Mbits/sec  344             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  12.1 MBytes   102 Mbits/sec  168   18.4 KBytes       
[  6]   5.00-6.00   sec  7.33 MBytes  61.5 Mbits/sec  149   11.3 KBytes       
[  9]   5.00-6.00   sec  11.5 MBytes  96.4 Mbits/sec   83   58.0 KBytes       
[SUM]   5.00-6.00   sec  30.9 MBytes   260 Mbits/sec  400             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  10.9 MBytes  91.2 Mbits/sec  109   35.4 KBytes       
[  6]   6.00-7.00   sec  5.47 MBytes  45.9 Mbits/sec  105   17.0 KBytes       
[  9]   6.00-7.00   sec  14.6 MBytes   122 Mbits/sec  115   32.5 KBytes       
[SUM]   6.00-7.00   sec  30.9 MBytes   260 Mbits/sec  329             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  7.15 MBytes  60.0 Mbits/sec  177   12.7 KBytes       
[  6]   7.00-8.00   sec  4.60 MBytes  38.6 Mbits/sec  138   5.66 KBytes       
[  9]   7.00-8.00   sec  21.1 MBytes   177 Mbits/sec   75   46.7 KBytes       
[SUM]   7.00-8.00   sec  32.8 MBytes   275 Mbits/sec  390             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  20.8 MBytes   174 Mbits/sec   94   22.6 KBytes       
[  6]   8.00-9.00   sec  4.78 MBytes  40.1 Mbits/sec  117   21.2 KBytes       
[  9]   8.00-9.00   sec  6.77 MBytes  56.8 Mbits/sec   92   32.5 KBytes       
[SUM]   8.00-9.00   sec  32.3 MBytes   271 Mbits/sec  303             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  8.33 MBytes  69.9 Mbits/sec  179   2.83 KBytes       
[  6]   9.00-10.00  sec  18.4 MBytes   154 Mbits/sec   97   55.1 KBytes       
[  9]   9.00-10.00  sec  5.28 MBytes  44.3 Mbits/sec  121   5.66 KBytes       
[SUM]   9.00-10.00  sec  32.0 MBytes   268 Mbits/sec  397             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   105 MBytes  87.7 Mbits/sec  1392             sender
[  4]   0.00-10.00  sec   104 MBytes  87.2 Mbits/sec                  receiver
[  6]   0.00-10.00  sec   116 MBytes  97.4 Mbits/sec  1132             sender
[  6]   0.00-10.00  sec   115 MBytes  96.7 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  98.2 MBytes  82.4 Mbits/sec  1026             sender
[  9]   0.00-10.00  sec  97.6 MBytes  81.9 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   319 MBytes   267 Mbits/sec  3550             sender
[SUM]   0.00-10.00  sec   317 MBytes   266 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60946 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60948 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60950 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.26 MBytes  35.8 Mbits/sec                  
[  6]   0.00-1.00   sec  4.27 MBytes  35.8 Mbits/sec                  
[  9]   0.00-1.00   sec  2.93 MBytes  24.6 Mbits/sec                  
[SUM]   0.00-1.00   sec  11.5 MBytes  96.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.72 MBytes  31.2 Mbits/sec                  
[  6]   1.00-2.00   sec  3.84 MBytes  32.2 Mbits/sec                  
[  9]   1.00-2.00   sec  3.83 MBytes  32.1 Mbits/sec                  
[SUM]   1.00-2.00   sec  11.4 MBytes  95.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.73 MBytes  31.3 Mbits/sec                  
[  6]   2.00-3.00   sec  3.60 MBytes  30.2 Mbits/sec                  
[  9]   2.00-3.00   sec  3.62 MBytes  30.4 Mbits/sec                  
[SUM]   2.00-3.00   sec  11.0 MBytes  91.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  6]   3.00-4.00   sec  3.62 MBytes  30.4 Mbits/sec                  
[  9]   3.00-4.00   sec  3.50 MBytes  29.3 Mbits/sec                  
[SUM]   3.00-4.00   sec  10.6 MBytes  89.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  3.52 MBytes  29.5 Mbits/sec                  
[  6]   4.00-5.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   4.00-5.00   sec  3.57 MBytes  30.0 Mbits/sec                  
[SUM]   4.00-5.00   sec  10.6 MBytes  88.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.60 MBytes  30.2 Mbits/sec                  
[  6]   5.00-6.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   5.00-6.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[SUM]   5.00-6.00   sec  10.6 MBytes  88.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.51 MBytes  29.4 Mbits/sec                  
[  6]   6.00-7.00   sec  3.56 MBytes  29.8 Mbits/sec                  
[  9]   6.00-7.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[SUM]   6.00-7.00   sec  10.6 MBytes  88.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  6]   7.00-8.00   sec  3.55 MBytes  29.8 Mbits/sec                  
[  9]   7.00-8.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[SUM]   7.00-8.00   sec  10.5 MBytes  88.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  6]   8.00-9.00   sec  3.49 MBytes  29.3 Mbits/sec                  
[  9]   8.00-9.00   sec  3.62 MBytes  30.3 Mbits/sec                  
[SUM]   8.00-9.00   sec  10.6 MBytes  89.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.53 MBytes  29.6 Mbits/sec                  
[  6]   9.00-10.00  sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   9.00-10.00  sec  3.51 MBytes  29.4 Mbits/sec                  
[SUM]   9.00-10.00  sec  10.5 MBytes  88.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  37.3 MBytes  31.3 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  37.3 MBytes  31.3 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  37.4 MBytes  31.4 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  37.4 MBytes  31.4 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  36.0 MBytes  30.2 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  36.0 MBytes  30.2 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   111 MBytes  92.9 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   111 MBytes  92.9 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 59012 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 48433 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 53544 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  37.2 MBytes   312 Mbits/sec  4757  
[  6]   0.00-1.00   sec  37.2 MBytes   312 Mbits/sec  4757  
[  9]   0.00-1.00   sec  37.2 MBytes   312 Mbits/sec  4757  
[SUM]   0.00-1.00   sec   111 MBytes   935 Mbits/sec  14271  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.2 MBytes   312 Mbits/sec  4760  
[  6]   1.00-2.00   sec  37.2 MBytes   312 Mbits/sec  4760  
[  9]   1.00-2.00   sec  37.2 MBytes   312 Mbits/sec  4760  
[SUM]   1.00-2.00   sec   112 MBytes   936 Mbits/sec  14280  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.2 MBytes   312 Mbits/sec  4767  
[  6]   2.00-3.00   sec  37.2 MBytes   312 Mbits/sec  4767  
[  9]   2.00-3.00   sec  37.2 MBytes   312 Mbits/sec  4767  
[SUM]   2.00-3.00   sec   112 MBytes   937 Mbits/sec  14301  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  36.4 MBytes   305 Mbits/sec  4653  
[  6]   3.00-4.00   sec  36.4 MBytes   305 Mbits/sec  4653  
[  9]   3.00-4.00   sec  36.4 MBytes   305 Mbits/sec  4653  
[SUM]   3.00-4.00   sec   109 MBytes   915 Mbits/sec  13959  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  36.8 MBytes   308 Mbits/sec  4705  
[  6]   4.00-5.00   sec  36.8 MBytes   308 Mbits/sec  4705  
[  9]   4.00-5.00   sec  36.8 MBytes   308 Mbits/sec  4705  
[SUM]   4.00-5.00   sec   110 MBytes   925 Mbits/sec  14115  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[  6]   5.00-6.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[  9]   5.00-6.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[SUM]   5.00-6.00   sec   112 MBytes   940 Mbits/sec  14349  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  36.8 MBytes   308 Mbits/sec  4706  
[  6]   6.00-7.00   sec  36.8 MBytes   308 Mbits/sec  4706  
[  9]   6.00-7.00   sec  36.8 MBytes   308 Mbits/sec  4706  
[SUM]   6.00-7.00   sec   110 MBytes   925 Mbits/sec  14118  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.1 MBytes   311 Mbits/sec  4748  
[  6]   7.00-8.00   sec  37.1 MBytes   311 Mbits/sec  4748  
[  9]   7.00-8.00   sec  37.1 MBytes   311 Mbits/sec  4748  
[SUM]   7.00-8.00   sec   111 MBytes   933 Mbits/sec  14244  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4795  
[  6]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4795  
[  9]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4795  
[SUM]   8.00-9.00   sec   112 MBytes   943 Mbits/sec  14385  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  36.4 MBytes   305 Mbits/sec  4657  
[  6]   9.00-10.00  sec  36.4 MBytes   305 Mbits/sec  4657  
[  9]   9.00-10.00  sec  36.4 MBytes   305 Mbits/sec  4657  
[SUM]   9.00-10.00  sec   109 MBytes   915 Mbits/sec  13971  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   370 MBytes   310 Mbits/sec  11560.586 ms  43885/43992 (1e+02%)  
[  4] Sent 43992 datagrams
[  6]   0.00-10.00  sec   370 MBytes   310 Mbits/sec  61901.202 ms  43881/43962 (1e+02%)  
[  6] Sent 43962 datagrams
[  9]   0.00-10.00  sec   370 MBytes   310 Mbits/sec  20664.430 ms  43892/43990 (1e+02%)  
[  9] Sent 43990 datagrams
[SUM]   0.00-10.00  sec  1.08 GBytes   931 Mbits/sec  31375.406 ms  131658/131944 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 40865 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 54355 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 45385 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  9.77 MBytes  82.0 Mbits/sec  0.086 ms  0/1251 (0%)  
[  6]   0.00-1.00   sec  9.77 MBytes  82.0 Mbits/sec  0.031 ms  0/1251 (0%)  
[  9]   0.00-1.00   sec  9.76 MBytes  81.9 Mbits/sec  0.081 ms  0/1249 (0%)  
[SUM]   0.00-1.00   sec  29.3 MBytes   246 Mbits/sec  0.066 ms  0/3751 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  9.76 MBytes  81.9 Mbits/sec  0.222 ms  0/1249 (0%)  
[  6]   1.00-2.00   sec  9.75 MBytes  81.8 Mbits/sec  0.248 ms  0/1248 (0%)  
[  9]   1.00-2.00   sec  9.76 MBytes  81.9 Mbits/sec  0.237 ms  0/1249 (0%)  
[SUM]   1.00-2.00   sec  29.3 MBytes   245 Mbits/sec  0.236 ms  0/3746 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  9.75 MBytes  81.8 Mbits/sec  0.049 ms  0/1248 (0%)  
[  6]   2.00-3.00   sec  9.76 MBytes  81.9 Mbits/sec  0.067 ms  0/1249 (0%)  
[  9]   2.00-3.00   sec  9.76 MBytes  81.9 Mbits/sec  0.047 ms  0/1249 (0%)  
[SUM]   2.00-3.00   sec  29.3 MBytes   245 Mbits/sec  0.054 ms  0/3746 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  9.77 MBytes  82.0 Mbits/sec  0.029 ms  0/1251 (0%)  
[  6]   3.00-4.00   sec  9.77 MBytes  82.0 Mbits/sec  0.037 ms  0/1251 (0%)  
[  9]   3.00-4.00   sec  9.77 MBytes  81.9 Mbits/sec  0.042 ms  0/1250 (0%)  
[SUM]   3.00-4.00   sec  29.3 MBytes   246 Mbits/sec  0.036 ms  0/3752 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  9.79 MBytes  82.1 Mbits/sec  0.075 ms  0/1253 (0%)  
[  6]   4.00-5.00   sec  9.79 MBytes  82.1 Mbits/sec  0.035 ms  0/1253 (0%)  
[  9]   4.00-5.00   sec  9.80 MBytes  82.2 Mbits/sec  0.051 ms  0/1254 (0%)  
[SUM]   4.00-5.00   sec  29.4 MBytes   246 Mbits/sec  0.054 ms  0/3760 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  9.71 MBytes  81.5 Mbits/sec  0.040 ms  0/1243 (0%)  
[  6]   5.00-6.00   sec  9.70 MBytes  81.4 Mbits/sec  0.052 ms  0/1242 (0%)  
[  9]   5.00-6.00   sec  9.70 MBytes  81.4 Mbits/sec  0.044 ms  0/1242 (0%)  
[SUM]   5.00-6.00   sec  29.1 MBytes   244 Mbits/sec  0.046 ms  0/3727 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  9.76 MBytes  81.9 Mbits/sec  0.081 ms  0/1249 (0%)  
[  6]   6.00-7.00   sec  9.77 MBytes  81.9 Mbits/sec  0.057 ms  0/1250 (0%)  
[  9]   6.00-7.00   sec  9.76 MBytes  81.9 Mbits/sec  0.079 ms  0/1249 (0%)  
[SUM]   6.00-7.00   sec  29.3 MBytes   246 Mbits/sec  0.072 ms  0/3748 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  9.75 MBytes  81.8 Mbits/sec  0.065 ms  0/1248 (0%)  
[  6]   7.00-8.00   sec  9.74 MBytes  81.7 Mbits/sec  0.066 ms  0/1247 (0%)  
[  9]   7.00-8.00   sec  9.75 MBytes  81.8 Mbits/sec  0.037 ms  0/1248 (0%)  
[SUM]   7.00-8.00   sec  29.2 MBytes   245 Mbits/sec  0.056 ms  0/3743 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  9.73 MBytes  81.7 Mbits/sec  0.071 ms  0/1246 (0%)  
[  6]   8.00-9.00   sec  9.74 MBytes  81.7 Mbits/sec  0.057 ms  0/1247 (0%)  
[  9]   8.00-9.00   sec  9.73 MBytes  81.7 Mbits/sec  0.052 ms  0/1246 (0%)  
[SUM]   8.00-9.00   sec  29.2 MBytes   245 Mbits/sec  0.060 ms  0/3739 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  9.75 MBytes  81.8 Mbits/sec  0.056 ms  0/1248 (0%)  
[  6]   9.00-10.00  sec  9.74 MBytes  81.7 Mbits/sec  0.083 ms  0/1247 (0%)  
[  9]   9.00-10.00  sec  9.75 MBytes  81.8 Mbits/sec  0.043 ms  0/1248 (0%)  
[SUM]   9.00-10.00  sec  29.2 MBytes   245 Mbits/sec  0.061 ms  0/3743 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  97.5 MBytes  81.8 Mbits/sec  0.056 ms  0/12486 (0%)  
[  4] Sent 12486 datagrams
[  6]   0.00-10.00  sec  97.5 MBytes  81.8 Mbits/sec  0.086 ms  0/12486 (0%)  
[  6] Sent 12486 datagrams
[  9]   0.00-10.00  sec  97.5 MBytes  81.8 Mbits/sec  0.041 ms  0/12485 (0%)  
[  9] Sent 12485 datagrams
[SUM]   0.00-10.00  sec   293 MBytes   245 Mbits/sec  0.061 ms  0/37457 (0%)  

iperf Done.
-------------- next part --------------
+ : ':::::::[' configuration everything ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60974 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  38.3 MBytes   321 Mbits/sec    4    163 KBytes       
[  4]   1.00-2.00   sec  37.3 MBytes   313 Mbits/sec   44    147 KBytes       
[  4]   2.00-3.00   sec  38.2 MBytes   320 Mbits/sec   45    214 KBytes       
[  4]   3.00-4.00   sec  35.7 MBytes   299 Mbits/sec   43    133 KBytes       
[  4]   4.00-5.00   sec  30.3 MBytes   254 Mbits/sec   96   82.0 KBytes       
[  4]   5.00-6.00   sec  19.6 MBytes   164 Mbits/sec   58    115 KBytes       
[  4]   6.00-7.00   sec  27.8 MBytes   234 Mbits/sec   31    144 KBytes       
[  4]   7.00-8.00   sec  28.8 MBytes   242 Mbits/sec   36   49.5 KBytes       
[  4]   8.00-9.00   sec  25.9 MBytes   217 Mbits/sec   92   93.3 KBytes       
[  4]   9.00-10.00  sec  35.9 MBytes   301 Mbits/sec    4    134 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   318 MBytes   267 Mbits/sec  453             sender
[  4]   0.00-10.00  sec   317 MBytes   266 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60978 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.6 MBytes  89.3 Mbits/sec                  
[  4]   1.00-2.00   sec  10.6 MBytes  88.9 Mbits/sec                  
[  4]   2.00-3.00   sec  10.5 MBytes  88.3 Mbits/sec                  
[  4]   3.00-4.00   sec  10.6 MBytes  89.3 Mbits/sec                  
[  4]   4.00-5.00   sec  10.6 MBytes  89.2 Mbits/sec                  
[  4]   5.00-6.00   sec  10.4 MBytes  87.6 Mbits/sec                  
[  4]   6.00-7.00   sec  10.7 MBytes  90.1 Mbits/sec                  
[  4]   7.00-8.00   sec  10.7 MBytes  89.6 Mbits/sec                  
[  4]   8.00-9.00   sec  10.7 MBytes  90.0 Mbits/sec                  
[  4]   9.00-10.00  sec  10.6 MBytes  89.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   107 MBytes  89.4 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   107 MBytes  89.4 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 59648 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2105  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2290  
[  4]   2.00-3.00   sec  18.0 MBytes   151 Mbits/sec  2308  
[  4]   3.00-4.00   sec  17.7 MBytes   149 Mbits/sec  2267  
[  4]   4.00-5.00   sec  18.0 MBytes   151 Mbits/sec  2301  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2293  
[  4]   7.00-8.00   sec  17.8 MBytes   149 Mbits/sec  2274  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2291  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  0.947 ms  876/1134 (77%)  
[  4] Sent 1134 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 55359 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  17.9 MBytes   150 Mbits/sec  0.172 ms  0/2286 (0%)  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  0.109 ms  0/2290 (0%)  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  0.044 ms  0/2290 (0%)  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  0.044 ms  0/2289 (0%)  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  0.060 ms  0/2288 (0%)  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  0.106 ms  0/2289 (0%)  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  0.058 ms  0/2289 (0%)  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  0.070 ms  0/2288 (0%)  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  0.059 ms  0/2289 (0%)  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  0.093 ms  0/2289 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   179 MBytes   150 Mbits/sec  0.093 ms  0/22887 (0%)  
[  4] Sent 22887 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 32960 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  54.3 MBytes   456 Mbits/sec  6953  
[  4]   1.00-2.00   sec  60.5 MBytes   508 Mbits/sec  7748  
[  4]   2.00-3.00   sec  58.5 MBytes   490 Mbits/sec  7483  
[  4]   3.00-4.00   sec  60.6 MBytes   508 Mbits/sec  7754  
[  4]   4.00-5.00   sec  58.9 MBytes   494 Mbits/sec  7539  
[  4]   5.00-6.00   sec  60.8 MBytes   510 Mbits/sec  7777  
[  4]   6.00-7.00   sec  57.9 MBytes   486 Mbits/sec  7415  
[  4]   7.00-8.00   sec  59.6 MBytes   500 Mbits/sec  7628  
[  4]   8.00-9.00   sec  61.3 MBytes   514 Mbits/sec  7849  
[  4]   9.00-10.00  sec  58.2 MBytes   488 Mbits/sec  7451  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   591 MBytes   495 Mbits/sec  0.307 ms  64569/64890 (1e+02%)  
[  4] Sent 64890 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 36292 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  27.7 MBytes   232 Mbits/sec  0.061 ms  0/3546 (0%)  
[  4]   1.00-2.00   sec  27.9 MBytes   234 Mbits/sec  0.033 ms  0/3570 (0%)  
[  4]   2.00-3.00   sec  27.8 MBytes   233 Mbits/sec  0.052 ms  0/3563 (0%)  
[  4]   3.00-4.00   sec  27.7 MBytes   232 Mbits/sec  0.038 ms  0/3540 (0%)  
[  4]   4.00-5.00   sec  27.9 MBytes   234 Mbits/sec  0.020 ms  0/3567 (0%)  
[  4]   5.00-6.00   sec  27.9 MBytes   234 Mbits/sec  0.024 ms  0/3571 (0%)  
[  4]   6.00-7.00   sec  27.9 MBytes   234 Mbits/sec  0.041 ms  0/3571 (0%)  
[  4]   7.00-8.00   sec  27.8 MBytes   233 Mbits/sec  0.021 ms  0/3562 (0%)  
[  4]   8.00-9.00   sec  27.7 MBytes   233 Mbits/sec  0.019 ms  0/3551 (0%)  
[  4]   9.00-10.00  sec  27.8 MBytes   233 Mbits/sec  0.040 ms  0/3552 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   278 MBytes   233 Mbits/sec  0.041 ms  0/35594 (0%)  
[  4] Sent 35594 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 44464 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   103 MBytes   861 Mbits/sec  13139  
[  4]   1.00-2.00   sec   103 MBytes   864 Mbits/sec  13176  
[  4]   2.00-3.00   sec   103 MBytes   865 Mbits/sec  13204  
[  4]   3.00-4.00   sec   104 MBytes   869 Mbits/sec  13257  
[  4]   4.00-5.00   sec   103 MBytes   866 Mbits/sec  13219  
[  4]   5.00-6.00   sec   103 MBytes   864 Mbits/sec  13184  
[  4]   6.00-7.00   sec   103 MBytes   867 Mbits/sec  13223  
[  4]   7.00-8.00   sec   103 MBytes   861 Mbits/sec  13143  
[  4]   8.00-9.00   sec   103 MBytes   868 Mbits/sec  13237  
[  4]   9.00-10.00  sec   103 MBytes   867 Mbits/sec  13229  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.01 GBytes   865 Mbits/sec  0.356 ms  131640/131963 (1e+02%)  
[  4] Sent 131963 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 53589 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  22.9 MBytes   192 Mbits/sec  0.090 ms  0/2930 (0%)  
[  4]   1.00-2.00   sec  22.8 MBytes   191 Mbits/sec  0.072 ms  0/2912 (0%)  
[  4]   2.00-3.00   sec  23.1 MBytes   194 Mbits/sec  0.127 ms  0/2963 (0%)  
[  4]   3.00-4.00   sec  22.8 MBytes   191 Mbits/sec  0.101 ms  0/2922 (0%)  
[  4]   4.00-5.00   sec  22.9 MBytes   192 Mbits/sec  0.081 ms  0/2927 (0%)  
[  4]   5.00-6.00   sec  22.9 MBytes   192 Mbits/sec  0.132 ms  0/2937 (0%)  
[  4]   6.00-7.00   sec  22.9 MBytes   192 Mbits/sec  0.120 ms  0/2937 (0%)  
[  4]   7.00-8.00   sec  22.9 MBytes   192 Mbits/sec  0.122 ms  0/2927 (0%)  
[  4]   8.00-9.00   sec  22.7 MBytes   191 Mbits/sec  0.083 ms  0/2911 (0%)  
[  4]   9.00-10.00  sec  23.1 MBytes   193 Mbits/sec  0.128 ms  0/2951 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   229 MBytes   192 Mbits/sec  0.121 ms  0/29318 (0%)  
[  4] Sent 29318 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 32886 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 32888 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 32890 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  7.95 MBytes  66.7 Mbits/sec  119   11.3 KBytes       
[  6]   0.00-1.00   sec  14.4 MBytes   121 Mbits/sec   92   22.6 KBytes       
[  9]   0.00-1.00   sec  10.4 MBytes  87.5 Mbits/sec  101   53.7 KBytes       
[SUM]   0.00-1.00   sec  32.8 MBytes   275 Mbits/sec  312             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  5.90 MBytes  49.5 Mbits/sec  109   25.5 KBytes       
[  6]   1.00-2.00   sec  12.6 MBytes   105 Mbits/sec   88   53.7 KBytes       
[  9]   1.00-2.00   sec  13.5 MBytes   114 Mbits/sec  114   17.0 KBytes       
[SUM]   1.00-2.00   sec  32.0 MBytes   268 Mbits/sec  311             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.39 MBytes  62.0 Mbits/sec  109   24.0 KBytes       
[  6]   2.00-3.00   sec  23.2 MBytes   195 Mbits/sec  100   32.5 KBytes       
[  9]   2.00-3.00   sec  3.11 MBytes  26.1 Mbits/sec   84   14.1 KBytes       
[SUM]   2.00-3.00   sec  33.7 MBytes   283 Mbits/sec  293             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  7.71 MBytes  64.6 Mbits/sec  109   56.6 KBytes       
[  6]   3.00-4.00   sec  13.7 MBytes   115 Mbits/sec   76   31.1 KBytes       
[  9]   3.00-4.00   sec  10.4 MBytes  87.1 Mbits/sec  129   35.4 KBytes       
[SUM]   3.00-4.00   sec  31.8 MBytes   267 Mbits/sec  314             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  9.94 MBytes  83.4 Mbits/sec  113   39.6 KBytes       
[  6]   4.00-5.00   sec  6.34 MBytes  53.2 Mbits/sec  143   52.3 KBytes       
[  9]   4.00-5.00   sec  16.1 MBytes   135 Mbits/sec   98   22.6 KBytes       
[SUM]   4.00-5.00   sec  32.4 MBytes   272 Mbits/sec  354             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  6.03 MBytes  50.6 Mbits/sec  158   15.6 KBytes       
[  6]   5.00-6.00   sec  23.9 MBytes   201 Mbits/sec  111   53.7 KBytes       
[  9]   5.00-6.00   sec  3.29 MBytes  27.6 Mbits/sec  118   9.90 KBytes       
[SUM]   5.00-6.00   sec  33.2 MBytes   279 Mbits/sec  387             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  10.8 MBytes  90.2 Mbits/sec  121   32.5 KBytes       
[  6]   6.00-7.00   sec  11.0 MBytes  92.3 Mbits/sec  160   12.7 KBytes       
[  9]   6.00-7.00   sec  10.7 MBytes  89.6 Mbits/sec   79   41.0 KBytes       
[SUM]   6.00-7.00   sec  32.4 MBytes   272 Mbits/sec  360             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  16.7 MBytes   140 Mbits/sec  142   38.2 KBytes       
[  6]   7.00-8.00   sec  5.10 MBytes  42.7 Mbits/sec  114   12.7 KBytes       
[  9]   7.00-8.00   sec  9.63 MBytes  80.8 Mbits/sec   85   18.4 KBytes       
[SUM]   7.00-8.00   sec  31.4 MBytes   263 Mbits/sec  341             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  20.3 MBytes   170 Mbits/sec  127   5.66 KBytes       
[  6]   8.00-9.00   sec  6.52 MBytes  54.7 Mbits/sec  123   39.6 KBytes       
[  9]   8.00-9.00   sec  5.90 MBytes  49.5 Mbits/sec  133   43.8 KBytes       
[SUM]   8.00-9.00   sec  32.7 MBytes   275 Mbits/sec  383             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  6.46 MBytes  54.2 Mbits/sec  116   17.0 KBytes       
[  6]   9.00-10.00  sec  13.5 MBytes   113 Mbits/sec  105   79.2 KBytes       
[  9]   9.00-10.00  sec  12.2 MBytes   103 Mbits/sec   94   11.3 KBytes       
[SUM]   9.00-10.00  sec  32.2 MBytes   270 Mbits/sec  315             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  99.1 MBytes  83.1 Mbits/sec  1223             sender
[  4]   0.00-10.00  sec  98.4 MBytes  82.5 Mbits/sec                  receiver
[  6]   0.00-10.00  sec   130 MBytes   109 Mbits/sec  1112             sender
[  6]   0.00-10.00  sec   130 MBytes   109 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  95.3 MBytes  80.0 Mbits/sec  1035             sender
[  9]   0.00-10.00  sec  94.7 MBytes  79.4 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   325 MBytes   272 Mbits/sec  3370             sender
[SUM]   0.00-10.00  sec   323 MBytes   271 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 32922 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 32924 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 32926 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.00 MBytes  33.6 Mbits/sec                  
[  6]   0.00-1.00   sec  3.94 MBytes  33.1 Mbits/sec                  
[  9]   0.00-1.00   sec  2.62 MBytes  22.0 Mbits/sec                  
[SUM]   0.00-1.00   sec  10.6 MBytes  88.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  6]   1.00-2.00   sec  3.52 MBytes  29.5 Mbits/sec                  
[  9]   1.00-2.00   sec  3.51 MBytes  29.5 Mbits/sec                  
[SUM]   1.00-2.00   sec  10.5 MBytes  88.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  6]   2.00-3.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   2.00-3.00   sec  3.56 MBytes  29.8 Mbits/sec                  
[SUM]   2.00-3.00   sec  10.6 MBytes  88.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.52 MBytes  29.5 Mbits/sec                  
[  6]   3.00-4.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   3.00-4.00   sec  3.55 MBytes  29.8 Mbits/sec                  
[SUM]   3.00-4.00   sec  10.6 MBytes  88.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  3.55 MBytes  29.7 Mbits/sec                  
[  6]   4.00-5.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   4.00-5.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[SUM]   4.00-5.00   sec  10.5 MBytes  88.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.56 MBytes  29.9 Mbits/sec                  
[  6]   5.00-6.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[  9]   5.00-6.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[SUM]   5.00-6.00   sec  10.6 MBytes  88.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.56 MBytes  29.8 Mbits/sec                  
[  6]   6.00-7.00   sec  3.62 MBytes  30.4 Mbits/sec                  
[  9]   6.00-7.00   sec  3.55 MBytes  29.8 Mbits/sec                  
[SUM]   6.00-7.00   sec  10.7 MBytes  90.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.67 MBytes  30.8 Mbits/sec                  
[  6]   7.00-8.00   sec  3.62 MBytes  30.4 Mbits/sec                  
[  9]   7.00-8.00   sec  3.58 MBytes  30.1 Mbits/sec                  
[SUM]   7.00-8.00   sec  10.9 MBytes  91.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.53 MBytes  29.6 Mbits/sec                  
[  6]   8.00-9.00   sec  3.52 MBytes  29.6 Mbits/sec                  
[  9]   8.00-9.00   sec  3.50 MBytes  29.4 Mbits/sec                  
[SUM]   8.00-9.00   sec  10.6 MBytes  88.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.50 MBytes  29.4 Mbits/sec                  
[  6]   9.00-10.00  sec  3.60 MBytes  30.2 Mbits/sec                  
[  9]   9.00-10.00  sec  3.58 MBytes  30.0 Mbits/sec                  
[SUM]   9.00-10.00  sec  10.7 MBytes  89.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  36.2 MBytes  30.4 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  36.2 MBytes  30.4 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  36.2 MBytes  30.4 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  36.2 MBytes  30.4 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  34.8 MBytes  29.2 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  34.8 MBytes  29.2 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   107 MBytes  89.9 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   107 MBytes  89.9 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 33929 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 48224 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 59000 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  37.3 MBytes   313 Mbits/sec  4779  
[  6]   0.00-1.00   sec  37.3 MBytes   313 Mbits/sec  4779  
[  9]   0.00-1.00   sec  37.3 MBytes   313 Mbits/sec  4779  
[SUM]   0.00-1.00   sec   112 MBytes   940 Mbits/sec  14337  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.5 MBytes   314 Mbits/sec  4798  
[  6]   1.00-2.00   sec  37.5 MBytes   314 Mbits/sec  4798  
[  9]   1.00-2.00   sec  37.5 MBytes   314 Mbits/sec  4798  
[SUM]   1.00-2.00   sec   112 MBytes   943 Mbits/sec  14394  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.4 MBytes   314 Mbits/sec  4785  
[  6]   2.00-3.00   sec  37.4 MBytes   314 Mbits/sec  4785  
[  9]   2.00-3.00   sec  37.4 MBytes   314 Mbits/sec  4785  
[SUM]   2.00-3.00   sec   112 MBytes   941 Mbits/sec  14355  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  36.5 MBytes   306 Mbits/sec  4667  
[  6]   3.00-4.00   sec  36.5 MBytes   306 Mbits/sec  4667  
[  9]   3.00-4.00   sec  36.5 MBytes   306 Mbits/sec  4667  
[SUM]   3.00-4.00   sec   109 MBytes   918 Mbits/sec  14001  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4789  
[  6]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4789  
[  9]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4789  
[SUM]   4.00-5.00   sec   112 MBytes   942 Mbits/sec  14367  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4799  
[  6]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4799  
[  9]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4799  
[SUM]   5.00-6.00   sec   112 MBytes   944 Mbits/sec  14397  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec  4805  
[  6]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec  4805  
[  9]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec  4805  
[SUM]   6.00-7.00   sec   113 MBytes   945 Mbits/sec  14415  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.5 MBytes   314 Mbits/sec  4797  
[  6]   7.00-8.00   sec  37.5 MBytes   314 Mbits/sec  4797  
[  9]   7.00-8.00   sec  37.5 MBytes   314 Mbits/sec  4797  
[SUM]   7.00-8.00   sec   112 MBytes   943 Mbits/sec  14391  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.4 MBytes   314 Mbits/sec  4788  
[  6]   8.00-9.00   sec  37.4 MBytes   314 Mbits/sec  4788  
[  9]   8.00-9.00   sec  37.4 MBytes   314 Mbits/sec  4788  
[SUM]   8.00-9.00   sec   112 MBytes   941 Mbits/sec  14364  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.4 MBytes   314 Mbits/sec  4788  
[  6]   9.00-10.00  sec  37.4 MBytes   314 Mbits/sec  4788  
[  9]   9.00-10.00  sec  37.4 MBytes   314 Mbits/sec  4788  
[SUM]   9.00-10.00  sec   112 MBytes   941 Mbits/sec  14364  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  14029.974 ms  43922/44026 (1e+02%)  
[  4] Sent 44026 datagrams
[  6]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  34629.518 ms  43938/44028 (1e+02%)  
[  6] Sent 44028 datagrams
[  9]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  19373.377 ms  43925/44024 (1e+02%)  
[  9] Sent 44024 datagrams
[SUM]   0.00-10.00  sec  1.09 GBytes   940 Mbits/sec  22677.623 ms  131785/132078 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 59494 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 59987 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 37065 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  9.70 MBytes  81.4 Mbits/sec  0.056 ms  0/1242 (0%)  
[  6]   0.00-1.00   sec  9.70 MBytes  81.4 Mbits/sec  0.030 ms  0/1242 (0%)  
[  9]   0.00-1.00   sec  9.69 MBytes  81.3 Mbits/sec  0.028 ms  0/1240 (0%)  
[SUM]   0.00-1.00   sec  29.1 MBytes   244 Mbits/sec  0.038 ms  0/3724 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  9.71 MBytes  81.5 Mbits/sec  0.114 ms  0/1243 (0%)  
[  6]   1.00-2.00   sec  9.71 MBytes  81.5 Mbits/sec  0.046 ms  0/1243 (0%)  
[  9]   1.00-2.00   sec  9.71 MBytes  81.5 Mbits/sec  0.037 ms  0/1243 (0%)  
[SUM]   1.00-2.00   sec  29.1 MBytes   244 Mbits/sec  0.066 ms  0/3729 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  9.70 MBytes  81.4 Mbits/sec  0.054 ms  0/1242 (0%)  
[  6]   2.00-3.00   sec  9.70 MBytes  81.4 Mbits/sec  0.064 ms  0/1242 (0%)  
[  9]   2.00-3.00   sec  9.71 MBytes  81.5 Mbits/sec  0.042 ms  0/1243 (0%)  
[SUM]   2.00-3.00   sec  29.1 MBytes   244 Mbits/sec  0.053 ms  0/3727 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  9.74 MBytes  81.7 Mbits/sec  0.061 ms  0/1247 (0%)  
[  6]   3.00-4.00   sec  9.73 MBytes  81.7 Mbits/sec  0.016 ms  0/1246 (0%)  
[  9]   3.00-4.00   sec  9.73 MBytes  81.7 Mbits/sec  0.070 ms  0/1246 (0%)  
[SUM]   3.00-4.00   sec  29.2 MBytes   245 Mbits/sec  0.049 ms  0/3739 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  9.75 MBytes  81.8 Mbits/sec  0.065 ms  0/1248 (0%)  
[  6]   4.00-5.00   sec  9.76 MBytes  81.9 Mbits/sec  0.018 ms  0/1249 (0%)  
[  9]   4.00-5.00   sec  9.75 MBytes  81.8 Mbits/sec  0.049 ms  0/1248 (0%)  
[SUM]   4.00-5.00   sec  29.3 MBytes   245 Mbits/sec  0.044 ms  0/3745 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  9.73 MBytes  81.7 Mbits/sec  0.062 ms  0/1246 (0%)  
[  6]   5.00-6.00   sec  9.73 MBytes  81.7 Mbits/sec  0.031 ms  0/1246 (0%)  
[  9]   5.00-6.00   sec  9.74 MBytes  81.7 Mbits/sec  0.069 ms  0/1247 (0%)  
[SUM]   5.00-6.00   sec  29.2 MBytes   245 Mbits/sec  0.054 ms  0/3739 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  9.73 MBytes  81.7 Mbits/sec  0.071 ms  0/1246 (0%)  
[  6]   6.00-7.00   sec  9.73 MBytes  81.7 Mbits/sec  0.048 ms  0/1246 (0%)  
[  9]   6.00-7.00   sec  9.73 MBytes  81.6 Mbits/sec  0.051 ms  0/1245 (0%)  
[SUM]   6.00-7.00   sec  29.2 MBytes   245 Mbits/sec  0.057 ms  0/3737 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  9.73 MBytes  81.6 Mbits/sec  0.079 ms  0/1245 (0%)  
[  6]   7.00-8.00   sec  9.73 MBytes  81.6 Mbits/sec  0.091 ms  0/1245 (0%)  
[  9]   7.00-8.00   sec  9.73 MBytes  81.7 Mbits/sec  0.052 ms  0/1246 (0%)  
[SUM]   7.00-8.00   sec  29.2 MBytes   245 Mbits/sec  0.074 ms  0/3736 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  9.73 MBytes  81.6 Mbits/sec  0.038 ms  0/1245 (0%)  
[  6]   8.00-9.00   sec  9.73 MBytes  81.6 Mbits/sec  0.036 ms  0/1245 (0%)  
[  9]   8.00-9.00   sec  9.73 MBytes  81.6 Mbits/sec  0.032 ms  0/1245 (0%)  
[SUM]   8.00-9.00   sec  29.2 MBytes   245 Mbits/sec  0.035 ms  0/3735 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  9.73 MBytes  81.7 Mbits/sec  0.062 ms  0/1246 (0%)  
[  6]   9.00-10.00  sec  9.73 MBytes  81.7 Mbits/sec  0.060 ms  0/1246 (0%)  
[  9]   9.00-10.00  sec  9.73 MBytes  81.6 Mbits/sec  0.061 ms  0/1245 (0%)  
[SUM]   9.00-10.00  sec  29.2 MBytes   245 Mbits/sec  0.061 ms  0/3737 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  97.3 MBytes  81.6 Mbits/sec  0.062 ms  0/12450 (0%)  
[  4] Sent 12450 datagrams
[  6]   0.00-10.00  sec  97.3 MBytes  81.6 Mbits/sec  0.060 ms  0/12450 (0%)  
[  6] Sent 12450 datagrams
[  9]   0.00-10.00  sec  97.3 MBytes  81.6 Mbits/sec  0.058 ms  0/12449 (0%)  
[  9] Sent 12449 datagrams
[SUM]   0.00-10.00  sec   292 MBytes   245 Mbits/sec  0.060 ms  0/37349 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: everything_netcat.log
Type: text/x-log
Size: 655 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run.sh
Type: application/x-shellscript
Size: 643 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment-0003.bin>
-------------- next part --------------
+ : ':::::::[' configuration smp_icu_different_vpes ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60300 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  20.9 MBytes   175 Mbits/sec   28   73.5 KBytes       
[  4]   1.00-2.00   sec  20.1 MBytes   169 Mbits/sec   31   62.2 KBytes       
[  4]   2.00-3.00   sec  20.5 MBytes   172 Mbits/sec   28   50.9 KBytes       
[  4]   3.00-4.00   sec  20.7 MBytes   173 Mbits/sec   31   45.2 KBytes       
[  4]   4.00-5.00   sec  20.6 MBytes   173 Mbits/sec   29   42.4 KBytes       
[  4]   5.00-6.00   sec  20.6 MBytes   173 Mbits/sec   24   70.7 KBytes       
[  4]   6.00-7.00   sec  20.7 MBytes   174 Mbits/sec   27   65.0 KBytes       
[  4]   7.00-8.00   sec  20.7 MBytes   174 Mbits/sec   33   56.6 KBytes       
[  4]   8.00-9.00   sec  20.6 MBytes   173 Mbits/sec   34   41.0 KBytes       
[  4]   9.00-10.00  sec  20.8 MBytes   174 Mbits/sec   29   70.7 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   206 MBytes   173 Mbits/sec  294             sender
[  4]   0.00-10.00  sec   206 MBytes   173 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60318 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.3 MBytes  86.6 Mbits/sec                  
[  4]   1.00-2.00   sec  10.3 MBytes  86.7 Mbits/sec                  
[  4]   2.00-3.00   sec  10.2 MBytes  85.9 Mbits/sec                  
[  4]   3.00-4.00   sec  10.3 MBytes  86.3 Mbits/sec                  
[  4]   4.00-5.00   sec  10.2 MBytes  85.7 Mbits/sec                  
[  4]   5.00-6.00   sec  10.2 MBytes  85.9 Mbits/sec                  
[  4]   6.00-7.00   sec  10.2 MBytes  85.7 Mbits/sec                  
[  4]   7.00-8.00   sec  10.2 MBytes  85.6 Mbits/sec                  
[  4]   8.00-9.00   sec  10.2 MBytes  85.6 Mbits/sec                  
[  4]   9.00-10.00  sec  10.3 MBytes  86.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   103 MBytes  86.3 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   103 MBytes  86.3 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 53228 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.5 MBytes   138 Mbits/sec  2113  
[  4]   1.00-2.00   sec  17.8 MBytes   150 Mbits/sec  2282  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2286  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2294  
[  4]   4.00-5.00   sec  17.8 MBytes   150 Mbits/sec  2283  
[  4]   5.00-6.00   sec  18.0 MBytes   151 Mbits/sec  2302  
[  4]   6.00-7.00   sec  17.8 MBytes   149 Mbits/sec  2276  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2290  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2291  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  31933.098 ms  1335/1426 (94%)  
[  4] Sent 1426 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 48506 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.3 MBytes   128 Mbits/sec  0.134 ms  0/1955 (0%)  
[  4]   1.00-2.00   sec  14.4 MBytes   121 Mbits/sec  0.085 ms  0/1841 (0%)  
[  4]   2.00-3.00   sec  14.4 MBytes   121 Mbits/sec  0.095 ms  0/1843 (0%)  
[  4]   3.00-4.00   sec  14.5 MBytes   122 Mbits/sec  0.073 ms  0/1855 (0%)  
[  4]   4.00-5.00   sec  14.5 MBytes   122 Mbits/sec  0.090 ms  0/1856 (0%)  
[  4]   5.00-6.00   sec  14.5 MBytes   122 Mbits/sec  0.105 ms  0/1854 (0%)  
[  4]   6.00-7.00   sec  14.4 MBytes   121 Mbits/sec  0.088 ms  0/1849 (0%)  
[  4]   7.00-8.00   sec  14.4 MBytes   121 Mbits/sec  0.081 ms  0/1843 (0%)  
[  4]   8.00-9.00   sec  14.4 MBytes   121 Mbits/sec  0.096 ms  0/1847 (0%)  
[  4]   9.00-10.00  sec  14.5 MBytes   122 Mbits/sec  0.071 ms  0/1854 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   145 MBytes   122 Mbits/sec  0.091 ms  0/18605 (0%)  
[  4] Sent 18605 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 43155 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  58.9 MBytes   494 Mbits/sec  7533  
[  4]   1.00-2.00   sec  58.7 MBytes   493 Mbits/sec  7516  
[  4]   2.00-3.00   sec  60.5 MBytes   507 Mbits/sec  7744  
[  4]   3.00-4.00   sec  58.0 MBytes   486 Mbits/sec  7422  
[  4]   4.00-5.00   sec  59.5 MBytes   499 Mbits/sec  7620  
[  4]   5.00-6.00   sec  59.0 MBytes   495 Mbits/sec  7548  
[  4]   6.00-7.00   sec  62.1 MBytes   521 Mbits/sec  7945  
[  4]   7.00-8.00   sec  59.3 MBytes   497 Mbits/sec  7590  
[  4]   8.00-9.00   sec  59.8 MBytes   501 Mbits/sec  7649  
[  4]   9.00-10.00  sec  58.8 MBytes   493 Mbits/sec  7527  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   594 MBytes   499 Mbits/sec  1111211.249 ms  64867/64903 (1e+02%)  
[  4] Sent 64903 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 57156 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.4 MBytes   121 Mbits/sec  0.088 ms  0/1847 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.100 ms  0/1836 (0%)  
[  4]   2.00-3.00   sec  14.3 MBytes   120 Mbits/sec  0.093 ms  0/1834 (0%)  
[  4]   3.00-4.00   sec  14.4 MBytes   121 Mbits/sec  0.105 ms  0/1849 (0%)  
[  4]   4.00-5.00   sec  14.5 MBytes   121 Mbits/sec  0.141 ms  0/1850 (0%)  
[  4]   5.00-6.00   sec  14.5 MBytes   121 Mbits/sec  0.143 ms  0/1850 (0%)  
[  4]   6.00-7.00   sec  14.4 MBytes   121 Mbits/sec  0.148 ms  0/1849 (0%)  
[  4]   7.00-8.00   sec  14.4 MBytes   120 Mbits/sec  0.082 ms  0/1837 (0%)  
[  4]   8.00-9.00   sec  14.4 MBytes   121 Mbits/sec  0.113 ms  0/1840 (0%)  
[  4]   9.00-10.00  sec  14.5 MBytes   121 Mbits/sec  0.115 ms  0/1851 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   144 MBytes   121 Mbits/sec  0.109 ms  0/18449 (0%)  
[  4] Sent 18449 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 32896 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  91.8 MBytes   770 Mbits/sec  11745  
[  4]   1.00-2.00   sec   102 MBytes   856 Mbits/sec  13069  
[  4]   2.00-3.00   sec   103 MBytes   863 Mbits/sec  13176  
[  4]   3.00-4.00   sec   103 MBytes   863 Mbits/sec  13174  
[  4]   4.00-5.00   sec   103 MBytes   864 Mbits/sec  13189  
[  4]   5.00-6.00   sec   103 MBytes   862 Mbits/sec  13155  
[  4]   6.00-7.00   sec   103 MBytes   864 Mbits/sec  13189  
[  4]   7.00-8.00   sec   102 MBytes   855 Mbits/sec  13054  
[  4]   8.00-9.00   sec   103 MBytes   863 Mbits/sec  13162  
[  4]   9.00-10.00  sec   103 MBytes   864 Mbits/sec  13189  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1016 MBytes   853 Mbits/sec  480201.336 ms  66629/66678 (1e+02%)  
[  4] Sent 66678 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 44719 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.4 MBytes   129 Mbits/sec  0.054 ms  0/1969 (0%)  
[  4]   1.00-2.00   sec  15.4 MBytes   129 Mbits/sec  0.116 ms  0/1977 (0%)  
[  4]   2.00-3.00   sec  15.5 MBytes   131 Mbits/sec  0.057 ms  0/1990 (0%)  
[  4]   3.00-4.00   sec  15.6 MBytes   131 Mbits/sec  0.096 ms  0/1992 (0%)  
[  4]   4.00-5.00   sec  15.6 MBytes   131 Mbits/sec  0.090 ms  0/1993 (0%)  
[  4]   5.00-6.00   sec  15.5 MBytes   130 Mbits/sec  0.081 ms  0/1982 (0%)  
[  4]   6.00-7.00   sec  15.4 MBytes   129 Mbits/sec  0.070 ms  0/1969 (0%)  
[  4]   7.00-8.00   sec  15.5 MBytes   130 Mbits/sec  0.080 ms  0/1981 (0%)  
[  4]   8.00-9.00   sec  15.6 MBytes   130 Mbits/sec  0.114 ms  0/1991 (0%)  
[  4]   9.00-10.00  sec  15.5 MBytes   130 Mbits/sec  0.063 ms  0/1989 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   155 MBytes   130 Mbits/sec  0.073 ms  0/19837 (0%)  
[  4] Sent 19837 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60340 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60342 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60344 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  7.16 MBytes  60.0 Mbits/sec   84   22.6 KBytes       
[  6]   0.00-1.00   sec  8.23 MBytes  69.0 Mbits/sec   80   35.4 KBytes       
[  9]   0.00-1.00   sec  5.88 MBytes  49.3 Mbits/sec  105   14.1 KBytes       
[SUM]   0.00-1.00   sec  21.3 MBytes   178 Mbits/sec  269             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.21 MBytes  60.5 Mbits/sec   67   24.0 KBytes       
[  6]   1.00-2.00   sec  6.77 MBytes  56.8 Mbits/sec   73   12.7 KBytes       
[  9]   1.00-2.00   sec  6.59 MBytes  55.2 Mbits/sec   68   36.8 KBytes       
[SUM]   1.00-2.00   sec  20.6 MBytes   173 Mbits/sec  208             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.27 MBytes  61.0 Mbits/sec   63   21.2 KBytes       
[  6]   2.00-3.00   sec  6.52 MBytes  54.7 Mbits/sec   73   19.8 KBytes       
[  9]   2.00-3.00   sec  6.71 MBytes  56.3 Mbits/sec   72   35.4 KBytes       
[SUM]   2.00-3.00   sec  20.5 MBytes   172 Mbits/sec  208             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  7.15 MBytes  59.9 Mbits/sec   91   25.5 KBytes       
[  6]   3.00-4.00   sec  7.46 MBytes  62.6 Mbits/sec   50   29.7 KBytes       
[  9]   3.00-4.00   sec  5.78 MBytes  48.5 Mbits/sec   73   14.1 KBytes       
[SUM]   3.00-4.00   sec  20.4 MBytes   171 Mbits/sec  214             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  6.96 MBytes  58.4 Mbits/sec   69   17.0 KBytes       
[  6]   4.00-5.00   sec  7.46 MBytes  62.6 Mbits/sec   61   12.7 KBytes       
[  9]   4.00-5.00   sec  5.90 MBytes  49.5 Mbits/sec   64   18.4 KBytes       
[SUM]   4.00-5.00   sec  20.3 MBytes   170 Mbits/sec  194             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  5.97 MBytes  50.0 Mbits/sec   83   11.3 KBytes       
[  6]   5.00-6.00   sec  8.02 MBytes  67.2 Mbits/sec   70   11.3 KBytes       
[  9]   5.00-6.00   sec  6.46 MBytes  54.2 Mbits/sec   92   25.5 KBytes       
[SUM]   5.00-6.00   sec  20.4 MBytes   171 Mbits/sec  245             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  6.34 MBytes  53.2 Mbits/sec   80   19.8 KBytes       
[  6]   6.00-7.00   sec  7.46 MBytes  62.5 Mbits/sec   67   33.9 KBytes       
[  9]   6.00-7.00   sec  6.77 MBytes  56.8 Mbits/sec   65   22.6 KBytes       
[SUM]   6.00-7.00   sec  20.6 MBytes   173 Mbits/sec  212             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  9.26 MBytes  77.7 Mbits/sec   66   41.0 KBytes       
[  6]   7.00-8.00   sec  5.34 MBytes  44.8 Mbits/sec   76   22.6 KBytes       
[  9]   7.00-8.00   sec  5.84 MBytes  49.0 Mbits/sec   75   7.07 KBytes       
[SUM]   7.00-8.00   sec  20.4 MBytes   172 Mbits/sec  217             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  6.65 MBytes  55.8 Mbits/sec   77   21.2 KBytes       
[  6]   8.00-9.00   sec  6.52 MBytes  54.7 Mbits/sec   65   22.6 KBytes       
[  9]   8.00-9.00   sec  7.39 MBytes  62.0 Mbits/sec   64   22.6 KBytes       
[SUM]   8.00-9.00   sec  20.6 MBytes   173 Mbits/sec  206             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  6.84 MBytes  57.4 Mbits/sec   67   19.8 KBytes       
[  6]   9.00-10.00  sec  7.02 MBytes  58.9 Mbits/sec   74   21.2 KBytes       
[  9]   9.00-10.00  sec  6.40 MBytes  53.7 Mbits/sec   99   9.90 KBytes       
[SUM]   9.00-10.00  sec  20.3 MBytes   170 Mbits/sec  240             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  70.8 MBytes  59.4 Mbits/sec  747             sender
[  4]   0.00-10.00  sec  70.4 MBytes  59.1 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  70.8 MBytes  59.4 Mbits/sec  689             sender
[  6]   0.00-10.00  sec  70.5 MBytes  59.2 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  63.7 MBytes  53.5 Mbits/sec  777             sender
[  9]   0.00-10.00  sec  63.4 MBytes  53.2 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   205 MBytes   172 Mbits/sec  2213             sender
[SUM]   0.00-10.00  sec   204 MBytes   171 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60352 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60354 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60356 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.88 MBytes  32.5 Mbits/sec                  
[  6]   0.00-1.00   sec  3.88 MBytes  32.5 Mbits/sec                  
[  9]   0.00-1.00   sec  2.56 MBytes  21.5 Mbits/sec                  
[SUM]   0.00-1.00   sec  10.3 MBytes  86.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   1.00-2.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   1.00-2.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   1.00-2.00   sec  10.1 MBytes  85.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.44 MBytes  28.9 Mbits/sec                  
[  6]   2.00-3.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   2.00-3.00   sec  3.44 MBytes  28.8 Mbits/sec                  
[SUM]   2.00-3.00   sec  10.3 MBytes  86.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.38 MBytes  28.4 Mbits/sec                  
[  6]   3.00-4.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   3.00-4.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   3.00-4.00   sec  10.1 MBytes  85.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  3.36 MBytes  28.2 Mbits/sec                  
[  6]   4.00-5.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   4.00-5.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   4.00-5.00   sec  10.1 MBytes  84.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   5.00-6.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   5.00-6.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   5.00-6.00   sec  10.1 MBytes  85.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.36 MBytes  28.2 Mbits/sec                  
[  6]   6.00-7.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   6.00-7.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   6.00-7.00   sec  10.1 MBytes  84.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.40 MBytes  28.6 Mbits/sec                  
[  6]   7.00-8.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   7.00-8.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   7.00-8.00   sec  10.2 MBytes  85.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.43 MBytes  28.8 Mbits/sec                  
[  6]   8.00-9.00   sec  3.39 MBytes  28.5 Mbits/sec                  
[  9]   8.00-9.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   8.00-9.00   sec  10.2 MBytes  85.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   9.00-10.00  sec  3.48 MBytes  29.2 Mbits/sec                  
[  9]   9.00-10.00  sec  3.40 MBytes  28.6 Mbits/sec                  
[SUM]   9.00-10.00  sec  10.3 MBytes  86.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  33.7 MBytes  28.3 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  33.7 MBytes  28.3 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   104 MBytes  86.9 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   104 MBytes  86.9 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 34818 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 37432 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 50445 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  36.7 MBytes   308 Mbits/sec  4696  
[  6]   0.00-1.00   sec  36.7 MBytes   308 Mbits/sec  4696  
[  9]   0.00-1.00   sec  36.7 MBytes   308 Mbits/sec  4696  
[SUM]   0.00-1.00   sec   110 MBytes   923 Mbits/sec  14088  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.5 MBytes   314 Mbits/sec  4796  
[  6]   1.00-2.00   sec  37.5 MBytes   314 Mbits/sec  4796  
[  9]   1.00-2.00   sec  37.5 MBytes   314 Mbits/sec  4796  
[SUM]   1.00-2.00   sec   112 MBytes   943 Mbits/sec  14388  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.5 MBytes   314 Mbits/sec  4795  
[  6]   2.00-3.00   sec  37.5 MBytes   314 Mbits/sec  4795  
[  9]   2.00-3.00   sec  37.5 MBytes   314 Mbits/sec  4795  
[SUM]   2.00-3.00   sec   112 MBytes   943 Mbits/sec  14385  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  37.2 MBytes   312 Mbits/sec  4760  
[  6]   3.00-4.00   sec  37.2 MBytes   312 Mbits/sec  4760  
[  9]   3.00-4.00   sec  37.2 MBytes   312 Mbits/sec  4760  
[SUM]   3.00-4.00   sec   112 MBytes   936 Mbits/sec  14280  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4786  
[  6]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4786  
[  9]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4786  
[SUM]   4.00-5.00   sec   112 MBytes   941 Mbits/sec  14358  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[  6]   5.00-6.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[  9]   5.00-6.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[SUM]   5.00-6.00   sec   112 MBytes   941 Mbits/sec  14361  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.4 MBytes   314 Mbits/sec  4790  
[  6]   6.00-7.00   sec  37.4 MBytes   314 Mbits/sec  4790  
[  9]   6.00-7.00   sec  37.4 MBytes   314 Mbits/sec  4790  
[SUM]   6.00-7.00   sec   112 MBytes   942 Mbits/sec  14370  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.4 MBytes   314 Mbits/sec  4790  
[  6]   7.00-8.00   sec  37.4 MBytes   314 Mbits/sec  4790  
[  9]   7.00-8.00   sec  37.4 MBytes   314 Mbits/sec  4790  
[SUM]   7.00-8.00   sec   112 MBytes   942 Mbits/sec  14370  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[  6]   8.00-9.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[  9]   8.00-9.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[SUM]   8.00-9.00   sec   112 MBytes   942 Mbits/sec  14376  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.5 MBytes   314 Mbits/sec  4799  
[  6]   9.00-10.00  sec  37.5 MBytes   314 Mbits/sec  4799  
[  9]   9.00-10.00  sec  37.5 MBytes   314 Mbits/sec  4799  
[SUM]   9.00-10.00  sec   112 MBytes   943 Mbits/sec  14397  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  5950363.786 ms  437/447 (98%)  
[  4] Sent 447 datagrams
[  6]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  6770190.714 ms  22130/22138 (1e+02%)  
[  6] Sent 22138 datagrams
[  9]   0.00-10.00  sec   373 MBytes   313 Mbits/sec  7221536.190 ms  439/446 (98%)  
[  9] Sent 446 datagrams
[SUM]   0.00-10.00  sec  1.09 GBytes   940 Mbits/sec  6647363.564 ms  23006/23031 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 52018 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51266 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 34793 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.55 MBytes  38.1 Mbits/sec  0.124 ms  0/582 (0%)  
[  6]   0.00-1.00   sec  4.54 MBytes  38.1 Mbits/sec  0.104 ms  0/581 (0%)  
[  9]   0.00-1.00   sec  4.53 MBytes  38.0 Mbits/sec  0.140 ms  0/580 (0%)  
[SUM]   0.00-1.00   sec  13.6 MBytes   114 Mbits/sec  0.123 ms  0/1743 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.56 MBytes  38.3 Mbits/sec  0.116 ms  0/584 (0%)  
[  6]   1.00-2.00   sec  4.57 MBytes  38.3 Mbits/sec  0.107 ms  0/585 (0%)  
[  9]   1.00-2.00   sec  4.56 MBytes  38.3 Mbits/sec  0.153 ms  0/584 (0%)  
[SUM]   1.00-2.00   sec  13.7 MBytes   115 Mbits/sec  0.125 ms  0/1753 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.85 MBytes  40.7 Mbits/sec  0.156 ms  0/621 (0%)  
[  6]   2.00-3.00   sec  4.84 MBytes  40.6 Mbits/sec  0.147 ms  0/620 (0%)  
[  9]   2.00-3.00   sec  4.85 MBytes  40.7 Mbits/sec  0.206 ms  0/621 (0%)  
[SUM]   2.00-3.00   sec  14.5 MBytes   122 Mbits/sec  0.169 ms  0/1862 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.98 MBytes  41.8 Mbits/sec  0.272 ms  0/638 (0%)  
[  6]   3.00-4.00   sec  4.99 MBytes  41.9 Mbits/sec  0.155 ms  0/639 (0%)  
[  9]   3.00-4.00   sec  4.99 MBytes  41.9 Mbits/sec  0.198 ms  0/639 (0%)  
[SUM]   3.00-4.00   sec  15.0 MBytes   126 Mbits/sec  0.208 ms  0/1916 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  5.01 MBytes  42.0 Mbits/sec  0.292 ms  0/641 (0%)  
[  6]   4.00-5.00   sec  5.00 MBytes  41.9 Mbits/sec  0.152 ms  0/640 (0%)  
[  9]   4.00-5.00   sec  4.99 MBytes  41.9 Mbits/sec  0.225 ms  0/639 (0%)  
[SUM]   4.00-5.00   sec  15.0 MBytes   126 Mbits/sec  0.223 ms  0/1920 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.99 MBytes  41.9 Mbits/sec  0.178 ms  0/639 (0%)  
[  6]   5.00-6.00   sec  4.99 MBytes  41.9 Mbits/sec  0.128 ms  0/639 (0%)  
[  9]   5.00-6.00   sec  4.99 MBytes  41.9 Mbits/sec  0.119 ms  0/639 (0%)  
[SUM]   5.00-6.00   sec  15.0 MBytes   126 Mbits/sec  0.141 ms  0/1917 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  5.01 MBytes  42.0 Mbits/sec  0.279 ms  0/641 (0%)  
[  6]   6.00-7.00   sec  5.01 MBytes  42.0 Mbits/sec  0.143 ms  0/641 (0%)  
[  9]   6.00-7.00   sec  5.01 MBytes  42.0 Mbits/sec  0.278 ms  0/641 (0%)  
[SUM]   6.00-7.00   sec  15.0 MBytes   126 Mbits/sec  0.233 ms  0/1923 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  5.05 MBytes  42.3 Mbits/sec  0.188 ms  0/646 (0%)  
[  6]   7.00-8.00   sec  5.05 MBytes  42.3 Mbits/sec  0.181 ms  0/646 (0%)  
[  9]   7.00-8.00   sec  5.04 MBytes  42.3 Mbits/sec  0.304 ms  0/645 (0%)  
[SUM]   7.00-8.00   sec  15.1 MBytes   127 Mbits/sec  0.224 ms  0/1937 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  5.05 MBytes  42.3 Mbits/sec  0.240 ms  0/646 (0%)  
[  6]   8.00-9.00   sec  5.05 MBytes  42.3 Mbits/sec  0.137 ms  0/646 (0%)  
[  9]   8.00-9.00   sec  5.05 MBytes  42.3 Mbits/sec  0.291 ms  0/646 (0%)  
[SUM]   8.00-9.00   sec  15.1 MBytes   127 Mbits/sec  0.223 ms  0/1938 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  5.05 MBytes  42.3 Mbits/sec  0.140 ms  0/646 (0%)  
[  6]   9.00-10.00  sec  5.04 MBytes  42.3 Mbits/sec  0.206 ms  0/645 (0%)  
[  9]   9.00-10.00  sec  5.04 MBytes  42.3 Mbits/sec  0.125 ms  0/645 (0%)  
[SUM]   9.00-10.00  sec  15.1 MBytes   127 Mbits/sec  0.157 ms  0/1936 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.1 MBytes  41.2 Mbits/sec  0.141 ms  0/6291 (0%)  
[  4] Sent 6291 datagrams
[  6]   0.00-10.00  sec  49.1 MBytes  41.2 Mbits/sec  0.325 ms  0/6289 (0%)  
[  6] Sent 6289 datagrams
[  9]   0.00-10.00  sec  49.1 MBytes  41.2 Mbits/sec  0.132 ms  0/6286 (0%)  
[  9] Sent 6286 datagrams
[SUM]   0.00-10.00  sec   147 MBytes   124 Mbits/sec  0.200 ms  0/18866 (0%)  

iperf Done.
-------------- next part --------------
+ : ':::::::[' configuration smp_icu_different_vpes ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60368 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.3 MBytes   179 Mbits/sec   27   65.0 KBytes       
[  4]   1.00-2.00   sec  20.9 MBytes   175 Mbits/sec   37   56.6 KBytes       
[  4]   2.00-3.00   sec  20.6 MBytes   173 Mbits/sec   41   39.6 KBytes       
[  4]   3.00-4.00   sec  20.9 MBytes   175 Mbits/sec   36   76.4 KBytes       
[  4]   4.00-5.00   sec  20.8 MBytes   175 Mbits/sec   41   73.5 KBytes       
[  4]   5.00-6.00   sec  20.8 MBytes   174 Mbits/sec   29   38.2 KBytes       
[  4]   6.00-7.00   sec  21.1 MBytes   177 Mbits/sec   34   72.1 KBytes       
[  4]   7.00-8.00   sec  20.8 MBytes   174 Mbits/sec   34   49.5 KBytes       
[  4]   8.00-9.00   sec  20.8 MBytes   175 Mbits/sec   44   69.3 KBytes       
[  4]   9.00-10.00  sec  20.8 MBytes   175 Mbits/sec   32   65.0 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   209 MBytes   175 Mbits/sec  355             sender
[  4]   0.00-10.00  sec   208 MBytes   175 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60374 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.1 MBytes  84.9 Mbits/sec                  
[  4]   1.00-2.00   sec  10.1 MBytes  85.1 Mbits/sec                  
[  4]   2.00-3.00   sec  10.2 MBytes  85.8 Mbits/sec                  
[  4]   3.00-4.00   sec  10.2 MBytes  85.4 Mbits/sec                  
[  4]   4.00-5.00   sec  10.2 MBytes  85.4 Mbits/sec                  
[  4]   5.00-6.00   sec  10.1 MBytes  84.8 Mbits/sec                  
[  4]   6.00-7.00   sec  10.1 MBytes  84.4 Mbits/sec                  
[  4]   7.00-8.00   sec  10.1 MBytes  84.5 Mbits/sec                  
[  4]   8.00-9.00   sec  10.2 MBytes  85.4 Mbits/sec                  
[  4]   9.00-10.00  sec  10.2 MBytes  85.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   102 MBytes  85.2 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   102 MBytes  85.2 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 35693 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.5 MBytes   138 Mbits/sec  2106  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2290  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2286  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   7.00-8.00   sec  17.9 MBytes   151 Mbits/sec  2297  
[  4]   8.00-9.00   sec  17.8 MBytes   150 Mbits/sec  2283  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2293  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  102034.422 ms  1280/1353 (95%)  
[  4] Sent 1353 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 41789 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.174 ms  0/1829 (0%)  
[  4]   1.00-2.00   sec  15.3 MBytes   128 Mbits/sec  0.065 ms  0/1956 (0%)  
[  4]   2.00-3.00   sec  15.4 MBytes   129 Mbits/sec  0.151 ms  0/1973 (0%)  
[  4]   3.00-4.00   sec  15.4 MBytes   129 Mbits/sec  0.063 ms  0/1974 (0%)  
[  4]   4.00-5.00   sec  15.4 MBytes   129 Mbits/sec  0.129 ms  0/1967 (0%)  
[  4]   5.00-6.00   sec  15.3 MBytes   128 Mbits/sec  0.101 ms  0/1956 (0%)  
[  4]   6.00-7.00   sec  15.2 MBytes   128 Mbits/sec  0.137 ms  0/1951 (0%)  
[  4]   7.00-8.00   sec  15.4 MBytes   129 Mbits/sec  0.116 ms  0/1968 (0%)  
[  4]   8.00-9.00   sec  15.4 MBytes   129 Mbits/sec  0.077 ms  0/1974 (0%)  
[  4]   9.00-10.00  sec  15.4 MBytes   129 Mbits/sec  0.160 ms  0/1974 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   153 MBytes   128 Mbits/sec  0.163 ms  0/19529 (0%)  
[  4] Sent 19529 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 52938 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  53.7 MBytes   450 Mbits/sec  6870  
[  4]   1.00-2.00   sec  60.1 MBytes   504 Mbits/sec  7694  
[  4]   2.00-3.00   sec  63.4 MBytes   532 Mbits/sec  8115  
[  4]   3.00-4.00   sec  58.9 MBytes   494 Mbits/sec  7535  
[  4]   4.00-5.00   sec  60.9 MBytes   511 Mbits/sec  7795  
[  4]   5.00-6.00   sec  59.5 MBytes   499 Mbits/sec  7618  
[  4]   6.00-7.00   sec  59.5 MBytes   499 Mbits/sec  7612  
[  4]   7.00-8.00   sec  60.2 MBytes   505 Mbits/sec  7710  
[  4]   8.00-9.00   sec  55.2 MBytes   463 Mbits/sec  7067  
[  4]   9.00-10.00  sec  59.0 MBytes   495 Mbits/sec  7556  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   590 MBytes   495 Mbits/sec  14.770 ms  64911/65123 (1e+02%)  
[  4] Sent 65123 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 42470 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.4 MBytes   121 Mbits/sec  0.144 ms  0/1843 (0%)  
[  4]   1.00-2.00   sec  14.4 MBytes   121 Mbits/sec  0.147 ms  0/1848 (0%)  
[  4]   2.00-3.00   sec  15.1 MBytes   127 Mbits/sec  0.087 ms  0/1932 (0%)  
[  4]   3.00-4.00   sec  15.5 MBytes   130 Mbits/sec  0.155 ms  0/1981 (0%)  
[  4]   4.00-5.00   sec  14.8 MBytes   124 Mbits/sec  0.064 ms  0/1889 (0%)  
[  4]   5.00-6.00   sec  15.3 MBytes   129 Mbits/sec  0.146 ms  0/1962 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   128 Mbits/sec  0.083 ms  0/1955 (0%)  
[  4]   7.00-8.00   sec  15.4 MBytes   129 Mbits/sec  0.116 ms  0/1968 (0%)  
[  4]   8.00-9.00   sec  15.5 MBytes   130 Mbits/sec  0.066 ms  0/1978 (0%)  
[  4]   9.00-10.00  sec  15.5 MBytes   130 Mbits/sec  0.105 ms  0/1978 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   151 MBytes   127 Mbits/sec  0.109 ms  0/19342 (0%)  
[  4] Sent 19342 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 47293 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  91.2 MBytes   765 Mbits/sec  11673  
[  4]   1.00-2.00   sec   102 MBytes   859 Mbits/sec  13114  
[  4]   2.00-3.00   sec   102 MBytes   858 Mbits/sec  13084  
[  4]   3.00-4.00   sec   102 MBytes   858 Mbits/sec  13093  
[  4]   4.00-5.00   sec   103 MBytes   860 Mbits/sec  13125  
[  4]   5.00-6.00   sec   102 MBytes   858 Mbits/sec  13086  
[  4]   6.00-7.00   sec   102 MBytes   856 Mbits/sec  13062  
[  4]   7.00-8.00   sec   102 MBytes   857 Mbits/sec  13082  
[  4]   8.00-9.00   sec   102 MBytes   859 Mbits/sec  13107  
[  4]   9.00-10.00  sec   102 MBytes   859 Mbits/sec  13109  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1012 MBytes   849 Mbits/sec  858384.293 ms  66827/66867 (1e+02%)  
[  4] Sent 66867 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 42589 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.2 MBytes   128 Mbits/sec  0.083 ms  0/1948 (0%)  
[  4]   1.00-2.00   sec  15.4 MBytes   129 Mbits/sec  0.101 ms  0/1973 (0%)  
[  4]   2.00-3.00   sec  15.5 MBytes   130 Mbits/sec  0.057 ms  0/1986 (0%)  
[  4]   3.00-4.00   sec  15.5 MBytes   130 Mbits/sec  0.100 ms  0/1980 (0%)  
[  4]   4.00-5.00   sec  15.2 MBytes   128 Mbits/sec  0.065 ms  0/1948 (0%)  
[  4]   5.00-6.00   sec  15.4 MBytes   129 Mbits/sec  0.061 ms  0/1971 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   129 Mbits/sec  0.068 ms  0/1962 (0%)  
[  4]   7.00-8.00   sec  15.5 MBytes   130 Mbits/sec  0.091 ms  0/1981 (0%)  
[  4]   8.00-9.00   sec  15.5 MBytes   130 Mbits/sec  0.051 ms  0/1983 (0%)  
[  4]   9.00-10.00  sec  15.5 MBytes   130 Mbits/sec  0.065 ms  0/1985 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   154 MBytes   129 Mbits/sec  0.084 ms  0/19724 (0%)  
[  4] Sent 19724 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60418 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60420 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60422 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  8.70 MBytes  72.9 Mbits/sec   66   18.4 KBytes       
[  6]   0.00-1.00   sec  7.89 MBytes  66.2 Mbits/sec   51   19.8 KBytes       
[  9]   0.00-1.00   sec  4.35 MBytes  36.5 Mbits/sec   82   9.90 KBytes       
[SUM]   0.00-1.00   sec  20.9 MBytes   176 Mbits/sec  199             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.83 MBytes  65.7 Mbits/sec   83   8.48 KBytes       
[  6]   1.00-2.00   sec  5.65 MBytes  47.4 Mbits/sec   72   18.4 KBytes       
[  9]   1.00-2.00   sec  6.77 MBytes  56.8 Mbits/sec   76   19.8 KBytes       
[SUM]   1.00-2.00   sec  20.3 MBytes   170 Mbits/sec  231             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  6.71 MBytes  56.3 Mbits/sec   83   39.6 KBytes       
[  6]   2.00-3.00   sec  6.34 MBytes  53.2 Mbits/sec   71   18.4 KBytes       
[  9]   2.00-3.00   sec  7.46 MBytes  62.6 Mbits/sec   56   21.2 KBytes       
[SUM]   2.00-3.00   sec  20.5 MBytes   172 Mbits/sec  210             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  8.26 MBytes  69.3 Mbits/sec   54   35.4 KBytes       
[  6]   3.00-4.00   sec  6.65 MBytes  55.8 Mbits/sec   81   31.1 KBytes       
[  9]   3.00-4.00   sec  5.53 MBytes  46.4 Mbits/sec   77   17.0 KBytes       
[SUM]   3.00-4.00   sec  20.4 MBytes   171 Mbits/sec  212             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  7.71 MBytes  64.6 Mbits/sec   64   25.5 KBytes       
[  6]   4.00-5.00   sec  6.65 MBytes  55.8 Mbits/sec   65   28.3 KBytes       
[  9]   4.00-5.00   sec  5.97 MBytes  50.1 Mbits/sec   68   15.6 KBytes       
[SUM]   4.00-5.00   sec  20.3 MBytes   170 Mbits/sec  197             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  7.27 MBytes  61.0 Mbits/sec   66   18.4 KBytes       
[  6]   5.00-6.00   sec  6.34 MBytes  53.2 Mbits/sec   84   22.6 KBytes       
[  9]   5.00-6.00   sec  6.71 MBytes  56.3 Mbits/sec   67   11.3 KBytes       
[SUM]   5.00-6.00   sec  20.3 MBytes   170 Mbits/sec  217             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  8.08 MBytes  67.8 Mbits/sec   75   24.0 KBytes       
[  6]   6.00-7.00   sec  5.47 MBytes  45.9 Mbits/sec   82   29.7 KBytes       
[  9]   6.00-7.00   sec  7.08 MBytes  59.4 Mbits/sec   63   24.0 KBytes       
[SUM]   6.00-7.00   sec  20.6 MBytes   173 Mbits/sec  220             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  7.21 MBytes  60.4 Mbits/sec   87   9.90 KBytes       
[  6]   7.00-8.00   sec  7.15 MBytes  59.9 Mbits/sec   57   21.2 KBytes       
[  9]   7.00-8.00   sec  6.15 MBytes  51.6 Mbits/sec   94   22.6 KBytes       
[SUM]   7.00-8.00   sec  20.5 MBytes   172 Mbits/sec  238             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  5.72 MBytes  48.0 Mbits/sec   80   31.1 KBytes       
[  6]   8.00-9.00   sec  7.95 MBytes  66.8 Mbits/sec   78   17.0 KBytes       
[  9]   8.00-9.00   sec  6.65 MBytes  55.8 Mbits/sec   58   22.6 KBytes       
[SUM]   8.00-9.00   sec  20.3 MBytes   171 Mbits/sec  216             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  8.08 MBytes  67.8 Mbits/sec   66   17.0 KBytes       
[  6]   9.00-10.00  sec  5.72 MBytes  48.0 Mbits/sec   91   21.2 KBytes       
[  9]   9.00-10.00  sec  6.77 MBytes  56.8 Mbits/sec   62   15.6 KBytes       
[SUM]   9.00-10.00  sec  20.6 MBytes   173 Mbits/sec  219             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  75.6 MBytes  63.4 Mbits/sec  724             sender
[  4]   0.00-10.00  sec  75.2 MBytes  63.1 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  65.8 MBytes  55.2 Mbits/sec  732             sender
[  6]   0.00-10.00  sec  65.4 MBytes  54.9 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  63.5 MBytes  53.2 Mbits/sec  703             sender
[  9]   0.00-10.00  sec  63.1 MBytes  52.9 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   205 MBytes   172 Mbits/sec  2159             sender
[SUM]   0.00-10.00  sec   204 MBytes   171 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60428 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60430 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60432 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.88 MBytes  32.5 Mbits/sec                  
[  6]   0.00-1.00   sec  3.79 MBytes  31.8 Mbits/sec                  
[  9]   0.00-1.00   sec  2.50 MBytes  21.0 Mbits/sec                  
[SUM]   0.00-1.00   sec  10.2 MBytes  85.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   1.00-2.00   sec  3.40 MBytes  28.5 Mbits/sec                  
[  9]   1.00-2.00   sec  3.46 MBytes  29.1 Mbits/sec                  
[SUM]   1.00-2.00   sec  10.2 MBytes  85.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.41 MBytes  28.6 Mbits/sec                  
[  6]   2.00-3.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   2.00-3.00   sec  3.41 MBytes  28.6 Mbits/sec                  
[SUM]   2.00-3.00   sec  10.2 MBytes  85.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.46 MBytes  29.1 Mbits/sec                  
[  6]   3.00-4.00   sec  3.38 MBytes  28.4 Mbits/sec                  
[  9]   3.00-4.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   3.00-4.00   sec  10.2 MBytes  85.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   4.00-5.00   sec  3.40 MBytes  28.5 Mbits/sec                  
[  9]   4.00-5.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   4.00-5.00   sec  10.2 MBytes  85.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   5.00-6.00   sec  3.36 MBytes  28.2 Mbits/sec                  
[  9]   5.00-6.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   5.00-6.00   sec  10.1 MBytes  84.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   6.00-7.00   sec  3.39 MBytes  28.5 Mbits/sec                  
[  9]   6.00-7.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   6.00-7.00   sec  10.1 MBytes  85.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  6]   7.00-8.00   sec  3.46 MBytes  29.0 Mbits/sec                  
[  9]   7.00-8.00   sec  3.39 MBytes  28.4 Mbits/sec                  
[SUM]   7.00-8.00   sec  10.2 MBytes  85.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.45 MBytes  28.9 Mbits/sec                  
[  6]   8.00-9.00   sec  3.38 MBytes  28.3 Mbits/sec                  
[  9]   8.00-9.00   sec  3.48 MBytes  29.2 Mbits/sec                  
[SUM]   8.00-9.00   sec  10.3 MBytes  86.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.42 MBytes  28.7 Mbits/sec                  
[  6]   9.00-10.00  sec  3.40 MBytes  28.5 Mbits/sec                  
[  9]   9.00-10.00  sec  3.38 MBytes  28.3 Mbits/sec                  
[SUM]   9.00-10.00  sec  10.2 MBytes  85.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  34.9 MBytes  29.3 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  33.5 MBytes  28.1 Mbits/sec    2             sender
[  9]   0.00-10.00  sec  33.5 MBytes  28.1 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   103 MBytes  86.7 Mbits/sec    2             sender
[SUM]   0.00-10.00  sec   103 MBytes  86.7 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 36678 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 54699 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 37104 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  33.4 MBytes   280 Mbits/sec  4271  
[  6]   0.00-1.00   sec  33.4 MBytes   280 Mbits/sec  4271  
[  9]   0.00-1.00   sec  33.4 MBytes   280 Mbits/sec  4271  
[SUM]   0.00-1.00   sec   100 MBytes   840 Mbits/sec  12813  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[  6]   1.00-2.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[  9]   1.00-2.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[SUM]   1.00-2.00   sec   112 MBytes   942 Mbits/sec  14376  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[  6]   2.00-3.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[  9]   2.00-3.00   sec  37.4 MBytes   313 Mbits/sec  4783  
[SUM]   2.00-3.00   sec   112 MBytes   940 Mbits/sec  14349  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[  6]   3.00-4.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[  9]   3.00-4.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[SUM]   3.00-4.00   sec   112 MBytes   941 Mbits/sec  14361  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[  6]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[  9]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4787  
[SUM]   4.00-5.00   sec   112 MBytes   941 Mbits/sec  14361  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  36.0 MBytes   302 Mbits/sec  4613  
[  6]   5.00-6.00   sec  36.0 MBytes   302 Mbits/sec  4613  
[  9]   5.00-6.00   sec  36.0 MBytes   302 Mbits/sec  4613  
[SUM]   5.00-6.00   sec   108 MBytes   907 Mbits/sec  13839  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.4 MBytes   314 Mbits/sec  4784  
[  6]   6.00-7.00   sec  37.4 MBytes   314 Mbits/sec  4784  
[  9]   6.00-7.00   sec  37.4 MBytes   314 Mbits/sec  4784  
[SUM]   6.00-7.00   sec   112 MBytes   941 Mbits/sec  14352  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.4 MBytes   313 Mbits/sec  4784  
[  6]   7.00-8.00   sec  37.4 MBytes   313 Mbits/sec  4784  
[  9]   7.00-8.00   sec  37.4 MBytes   313 Mbits/sec  4784  
[SUM]   7.00-8.00   sec   112 MBytes   940 Mbits/sec  14352  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.0 MBytes   310 Mbits/sec  4734  
[  6]   8.00-9.00   sec  37.0 MBytes   310 Mbits/sec  4734  
[  9]   8.00-9.00   sec  37.0 MBytes   310 Mbits/sec  4734  
[SUM]   8.00-9.00   sec   111 MBytes   931 Mbits/sec  14202  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.0 MBytes   311 Mbits/sec  4740  
[  6]   9.00-10.00  sec  37.0 MBytes   311 Mbits/sec  4740  
[  9]   9.00-10.00  sec  37.0 MBytes   311 Mbits/sec  4740  
[SUM]   9.00-10.00  sec   111 MBytes   932 Mbits/sec  14220  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   368 MBytes   309 Mbits/sec  5578465.308 ms  43859/43870 (1e+02%)  
[  4] Sent 43870 datagrams
[  6]   0.00-10.00  sec   368 MBytes   309 Mbits/sec  5950363.027 ms  22076/22086 (1e+02%)  
[  6] Sent 22086 datagrams
[  9]   0.00-10.00  sec   368 MBytes   309 Mbits/sec  6770190.468 ms  43995/44003 (1e+02%)  
[  9] Sent 44003 datagrams
[SUM]   0.00-10.00  sec  1.08 GBytes   926 Mbits/sec  6099672.934 ms  109930/109959 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 49258 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 44006 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 38319 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.54 MBytes  38.1 Mbits/sec  0.108 ms  0/581 (0%)  
[  6]   0.00-1.00   sec  4.54 MBytes  38.1 Mbits/sec  0.165 ms  0/581 (0%)  
[  9]   0.00-1.00   sec  4.53 MBytes  38.0 Mbits/sec  0.069 ms  0/580 (0%)  
[SUM]   0.00-1.00   sec  13.6 MBytes   114 Mbits/sec  0.114 ms  0/1742 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.98 MBytes  41.8 Mbits/sec  0.160 ms  0/638 (0%)  
[  6]   1.00-2.00   sec  4.98 MBytes  41.8 Mbits/sec  0.135 ms  0/638 (0%)  
[  9]   1.00-2.00   sec  4.98 MBytes  41.8 Mbits/sec  0.176 ms  0/638 (0%)  
[SUM]   1.00-2.00   sec  15.0 MBytes   125 Mbits/sec  0.157 ms  0/1914 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  5.07 MBytes  42.5 Mbits/sec  0.292 ms  0/649 (0%)  
[  6]   2.00-3.00   sec  5.06 MBytes  42.5 Mbits/sec  0.281 ms  0/648 (0%)  
[  9]   2.00-3.00   sec  5.06 MBytes  42.5 Mbits/sec  0.426 ms  0/648 (0%)  
[SUM]   2.00-3.00   sec  15.2 MBytes   127 Mbits/sec  0.333 ms  0/1945 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  5.06 MBytes  42.5 Mbits/sec  0.298 ms  0/648 (0%)  
[  6]   3.00-4.00   sec  5.07 MBytes  42.5 Mbits/sec  0.188 ms  0/649 (0%)  
[  9]   3.00-4.00   sec  5.06 MBytes  42.5 Mbits/sec  0.329 ms  0/648 (0%)  
[SUM]   3.00-4.00   sec  15.2 MBytes   127 Mbits/sec  0.272 ms  0/1945 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  5.05 MBytes  42.3 Mbits/sec  0.171 ms  0/646 (0%)  
[  6]   4.00-5.00   sec  5.04 MBytes  42.3 Mbits/sec  0.215 ms  0/645 (0%)  
[  9]   4.00-5.00   sec  5.04 MBytes  42.3 Mbits/sec  0.175 ms  0/645 (0%)  
[SUM]   4.00-5.00   sec  15.1 MBytes   127 Mbits/sec  0.187 ms  0/1936 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  5.02 MBytes  42.1 Mbits/sec  0.224 ms  0/642 (0%)  
[  6]   5.00-6.00   sec  5.02 MBytes  42.1 Mbits/sec  0.173 ms  0/642 (0%)  
[  9]   5.00-6.00   sec  5.01 MBytes  42.0 Mbits/sec  0.264 ms  0/641 (0%)  
[SUM]   5.00-6.00   sec  15.0 MBytes   126 Mbits/sec  0.220 ms  0/1925 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  5.03 MBytes  42.2 Mbits/sec  0.267 ms  0/644 (0%)  
[  6]   6.00-7.00   sec  5.03 MBytes  42.2 Mbits/sec  0.333 ms  0/644 (0%)  
[  9]   6.00-7.00   sec  5.03 MBytes  42.2 Mbits/sec  0.321 ms  0/644 (0%)  
[SUM]   6.00-7.00   sec  15.1 MBytes   127 Mbits/sec  0.307 ms  0/1932 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  5.06 MBytes  42.5 Mbits/sec  0.194 ms  0/648 (0%)  
[  6]   7.00-8.00   sec  5.06 MBytes  42.5 Mbits/sec  0.190 ms  0/648 (0%)  
[  9]   7.00-8.00   sec  5.06 MBytes  42.5 Mbits/sec  0.183 ms  0/648 (0%)  
[SUM]   7.00-8.00   sec  15.2 MBytes   127 Mbits/sec  0.189 ms  0/1944 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  5.06 MBytes  42.5 Mbits/sec  0.217 ms  0/648 (0%)  
[  6]   8.00-9.00   sec  5.06 MBytes  42.5 Mbits/sec  0.222 ms  0/648 (0%)  
[  9]   8.00-9.00   sec  5.06 MBytes  42.5 Mbits/sec  0.240 ms  0/648 (0%)  
[SUM]   8.00-9.00   sec  15.2 MBytes   127 Mbits/sec  0.226 ms  0/1944 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  5.02 MBytes  42.1 Mbits/sec  0.181 ms  0/642 (0%)  
[  6]   9.00-10.00  sec  5.01 MBytes  42.0 Mbits/sec  0.156 ms  0/641 (0%)  
[  9]   9.00-10.00  sec  5.01 MBytes  42.0 Mbits/sec  0.146 ms  0/641 (0%)  
[SUM]   9.00-10.00  sec  15.0 MBytes   126 Mbits/sec  0.161 ms  0/1924 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.9 MBytes  41.9 Mbits/sec  0.177 ms  0/6393 (0%)  
[  4] Sent 6393 datagrams
[  6]   0.00-10.00  sec  49.9 MBytes  41.9 Mbits/sec  0.174 ms  0/6390 (0%)  
[  6] Sent 6390 datagrams
[  9]   0.00-10.00  sec  49.9 MBytes  41.9 Mbits/sec  0.144 ms  0/6387 (0%)  
[  9] Sent 6387 datagrams
[SUM]   0.00-10.00  sec   150 MBytes   126 Mbits/sec  0.165 ms  0/19170 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smp_icu_different_vpes_netcat.log
Type: text/x-log
Size: 566 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment-0004.bin>
-------------- next part --------------
+ : ':::::::[' configuration smp_icu_same_vpe ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60502 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.1 MBytes   177 Mbits/sec   33   72.1 KBytes       
[  4]   1.00-2.00   sec  21.2 MBytes   178 Mbits/sec   42   67.9 KBytes       
[  4]   2.00-3.00   sec  21.1 MBytes   177 Mbits/sec   40   41.0 KBytes       
[  4]   3.00-4.00   sec  21.3 MBytes   178 Mbits/sec   28   58.0 KBytes       
[  4]   4.00-5.00   sec  21.3 MBytes   178 Mbits/sec   34   59.4 KBytes       
[  4]   5.00-6.00   sec  21.2 MBytes   178 Mbits/sec   29   72.1 KBytes       
[  4]   6.00-7.00   sec  21.1 MBytes   177 Mbits/sec   32   74.9 KBytes       
[  4]   7.00-8.00   sec  20.9 MBytes   176 Mbits/sec   33   66.5 KBytes       
[  4]   8.00-9.00   sec  21.3 MBytes   179 Mbits/sec   32   70.7 KBytes       
[  4]   9.00-10.00  sec  21.2 MBytes   178 Mbits/sec   32   38.2 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   212 MBytes   178 Mbits/sec  335             sender
[  4]   0.00-10.00  sec   211 MBytes   177 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60506 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.66 MBytes  81.0 Mbits/sec                  
[  4]   1.00-2.00   sec  9.62 MBytes  80.7 Mbits/sec                  
[  4]   2.00-3.00   sec  9.63 MBytes  80.8 Mbits/sec                  
[  4]   3.00-4.00   sec  9.64 MBytes  80.9 Mbits/sec                  
[  4]   4.00-5.00   sec  9.60 MBytes  80.6 Mbits/sec                  
[  4]   5.00-6.00   sec  9.64 MBytes  80.9 Mbits/sec                  
[  4]   6.00-7.00   sec  9.65 MBytes  81.0 Mbits/sec                  
[  4]   7.00-8.00   sec  9.63 MBytes  80.8 Mbits/sec                  
[  4]   8.00-9.00   sec  9.65 MBytes  80.9 Mbits/sec                  
[  4]   9.00-10.00  sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  97.5 MBytes  81.8 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  97.5 MBytes  81.8 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 55722 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2101  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2290  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2286  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2286  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2286  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  7719.884 ms  1310/1423 (92%)  
[  4] Sent 1423 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 54514 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.5 MBytes   130 Mbits/sec  0.084 ms  0/1980 (0%)  
[  4]   1.00-2.00   sec  15.4 MBytes   129 Mbits/sec  0.069 ms  0/1971 (0%)  
[  4]   2.00-3.00   sec  15.3 MBytes   129 Mbits/sec  0.091 ms  0/1962 (0%)  
[  4]   3.00-4.00   sec  15.4 MBytes   129 Mbits/sec  0.089 ms  0/1975 (0%)  
[  4]   4.00-5.00   sec  15.5 MBytes   130 Mbits/sec  0.117 ms  0/1982 (0%)  
[  4]   5.00-6.00   sec  15.5 MBytes   130 Mbits/sec  0.120 ms  0/1981 (0%)  
[  4]   6.00-7.00   sec  15.5 MBytes   130 Mbits/sec  0.113 ms  0/1982 (0%)  
[  4]   7.00-8.00   sec  14.5 MBytes   121 Mbits/sec  0.136 ms  0/1850 (0%)  
[  4]   8.00-9.00   sec  14.4 MBytes   121 Mbits/sec  0.120 ms  0/1847 (0%)  
[  4]   9.00-10.00  sec  15.1 MBytes   127 Mbits/sec  0.121 ms  0/1933 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   152 MBytes   128 Mbits/sec  0.098 ms  0/19471 (0%)  
[  4] Sent 19471 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 47588 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.1 MBytes   496 Mbits/sec  7568  
[  4]   1.00-2.00   sec  59.2 MBytes   497 Mbits/sec  7578  
[  4]   2.00-3.00   sec  59.8 MBytes   502 Mbits/sec  7655  
[  4]   3.00-4.00   sec  60.1 MBytes   504 Mbits/sec  7696  
[  4]   4.00-5.00   sec  58.9 MBytes   494 Mbits/sec  7533  
[  4]   5.00-6.00   sec  59.2 MBytes   497 Mbits/sec  7584  
[  4]   6.00-7.00   sec  60.1 MBytes   504 Mbits/sec  7696  
[  4]   7.00-8.00   sec  56.2 MBytes   472 Mbits/sec  7199  
[  4]   8.00-9.00   sec  60.1 MBytes   504 Mbits/sec  7691  
[  4]   9.00-10.00  sec  58.9 MBytes   494 Mbits/sec  7541  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   592 MBytes   496 Mbits/sec  57079.643 ms  64890/64972 (1e+02%)  
[  4] Sent 64972 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 36973 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.5 MBytes   130 Mbits/sec  0.078 ms  0/1981 (0%)  
[  4]   1.00-2.00   sec  15.4 MBytes   130 Mbits/sec  0.065 ms  0/1976 (0%)  
[  4]   2.00-3.00   sec  15.3 MBytes   129 Mbits/sec  0.079 ms  0/1964 (0%)  
[  4]   3.00-4.00   sec  15.4 MBytes   129 Mbits/sec  0.071 ms  0/1972 (0%)  
[  4]   4.00-5.00   sec  15.5 MBytes   130 Mbits/sec  0.154 ms  0/1985 (0%)  
[  4]   5.00-6.00   sec  15.5 MBytes   130 Mbits/sec  0.072 ms  0/1986 (0%)  
[  4]   6.00-7.00   sec  15.5 MBytes   130 Mbits/sec  0.153 ms  0/1982 (0%)  
[  4]   7.00-8.00   sec  15.4 MBytes   129 Mbits/sec  0.153 ms  0/1971 (0%)  
[  4]   8.00-9.00   sec  14.8 MBytes   124 Mbits/sec  0.088 ms  0/1897 (0%)  
[  4]   9.00-10.00  sec  15.5 MBytes   130 Mbits/sec  0.092 ms  0/1981 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   154 MBytes   129 Mbits/sec  0.091 ms  0/19702 (0%)  
[  4] Sent 19702 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 50867 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  97.5 MBytes   818 Mbits/sec  12484  
[  4]   1.00-2.00   sec  99.8 MBytes   837 Mbits/sec  12772  
[  4]   2.00-3.00   sec   100 MBytes   843 Mbits/sec  12856  
[  4]   3.00-4.00   sec   102 MBytes   851 Mbits/sec  12992  
[  4]   4.00-5.00   sec   102 MBytes   858 Mbits/sec  13089  
[  4]   5.00-6.00   sec   102 MBytes   852 Mbits/sec  12995  
[  4]   6.00-7.00   sec   102 MBytes   855 Mbits/sec  13044  
[  4]   7.00-8.00   sec   102 MBytes   858 Mbits/sec  13094  
[  4]   8.00-9.00   sec   103 MBytes   862 Mbits/sec  13148  
[  4]   9.00-10.00  sec   103 MBytes   862 Mbits/sec  13147  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1013 MBytes   849 Mbits/sec  89676.801 ms  66863/66938 (1e+02%)  
[  4] Sent 66938 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 42970 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.7 MBytes   131 Mbits/sec  0.103 ms  0/2006 (0%)  
[  4]   1.00-2.00   sec  15.6 MBytes   131 Mbits/sec  0.066 ms  0/1999 (0%)  
[  4]   2.00-3.00   sec  15.5 MBytes   130 Mbits/sec  0.276 ms  0/1982 (0%)  
[  4]   3.00-4.00   sec  15.6 MBytes   131 Mbits/sec  0.073 ms  0/1993 (0%)  
[  4]   4.00-5.00   sec  15.7 MBytes   132 Mbits/sec  0.074 ms  0/2007 (0%)  
[  4]   5.00-6.00   sec  15.7 MBytes   132 Mbits/sec  0.060 ms  0/2007 (0%)  
[  4]   6.00-7.00   sec  15.7 MBytes   132 Mbits/sec  0.079 ms  0/2007 (0%)  
[  4]   7.00-8.00   sec  15.6 MBytes   131 Mbits/sec  0.085 ms  0/1992 (0%)  
[  4]   8.00-9.00   sec  15.5 MBytes   130 Mbits/sec  0.051 ms  0/1985 (0%)  
[  4]   9.00-10.00  sec  15.5 MBytes   130 Mbits/sec  0.279 ms  0/1990 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   156 MBytes   131 Mbits/sec  0.304 ms  0/19978 (0%)  
[  4] Sent 19978 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60532 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60534 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60536 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  7.66 MBytes  64.2 Mbits/sec   80   33.9 KBytes       
[  6]   0.00-1.00   sec  7.40 MBytes  62.1 Mbits/sec   81   17.0 KBytes       
[  9]   0.00-1.00   sec  6.98 MBytes  58.6 Mbits/sec   80   19.8 KBytes       
[SUM]   0.00-1.00   sec  22.0 MBytes   185 Mbits/sec  241             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.71 MBytes  64.6 Mbits/sec   70   21.2 KBytes       
[  6]   1.00-2.00   sec  7.02 MBytes  58.9 Mbits/sec   78   19.8 KBytes       
[  9]   1.00-2.00   sec  6.59 MBytes  55.3 Mbits/sec   69   22.6 KBytes       
[SUM]   1.00-2.00   sec  21.3 MBytes   179 Mbits/sec  217             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  8.08 MBytes  67.8 Mbits/sec   80   19.8 KBytes       
[  6]   2.00-3.00   sec  7.64 MBytes  64.1 Mbits/sec   84   22.6 KBytes       
[  9]   2.00-3.00   sec  4.85 MBytes  40.7 Mbits/sec   94   11.3 KBytes       
[SUM]   2.00-3.00   sec  20.6 MBytes   173 Mbits/sec  258             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  6.28 MBytes  52.6 Mbits/sec   84   28.3 KBytes       
[  6]   3.00-4.00   sec  8.26 MBytes  69.3 Mbits/sec   72   36.8 KBytes       
[  9]   3.00-4.00   sec  6.15 MBytes  51.6 Mbits/sec   99   9.90 KBytes       
[SUM]   3.00-4.00   sec  20.7 MBytes   174 Mbits/sec  255             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  9.57 MBytes  80.3 Mbits/sec   58   32.5 KBytes       
[  6]   4.00-5.00   sec  6.59 MBytes  55.3 Mbits/sec   63   25.5 KBytes       
[  9]   4.00-5.00   sec  4.35 MBytes  36.5 Mbits/sec   91   11.3 KBytes       
[SUM]   4.00-5.00   sec  20.5 MBytes   172 Mbits/sec  212             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  8.89 MBytes  74.5 Mbits/sec  105   32.5 KBytes       
[  6]   5.00-6.00   sec  4.54 MBytes  38.0 Mbits/sec   98   38.2 KBytes       
[  9]   5.00-6.00   sec  5.90 MBytes  49.5 Mbits/sec   93   32.5 KBytes       
[SUM]   5.00-6.00   sec  19.3 MBytes   162 Mbits/sec  296             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  8.33 MBytes  69.9 Mbits/sec   78   32.5 KBytes       
[  6]   6.00-7.00   sec  5.72 MBytes  48.0 Mbits/sec  116   38.2 KBytes       
[  9]   6.00-7.00   sec  5.16 MBytes  43.3 Mbits/sec  132   32.5 KBytes       
[SUM]   6.00-7.00   sec  19.2 MBytes   161 Mbits/sec  326             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  9.20 MBytes  77.1 Mbits/sec   62   38.2 KBytes       
[  6]   7.00-8.00   sec  6.03 MBytes  50.6 Mbits/sec   93   17.0 KBytes       
[  9]   7.00-8.00   sec  5.22 MBytes  43.8 Mbits/sec   88   12.7 KBytes       
[SUM]   7.00-8.00   sec  20.4 MBytes   171 Mbits/sec  243             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  8.14 MBytes  68.3 Mbits/sec   49   35.4 KBytes       
[  6]   8.00-9.00   sec  5.65 MBytes  47.4 Mbits/sec   88   17.0 KBytes       
[  9]   8.00-9.00   sec  7.15 MBytes  60.0 Mbits/sec   96   32.5 KBytes       
[SUM]   8.00-9.00   sec  20.9 MBytes   176 Mbits/sec  233             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  7.52 MBytes  63.1 Mbits/sec   64   17.0 KBytes       
[  6]   9.00-10.00  sec  4.91 MBytes  41.2 Mbits/sec   91   11.3 KBytes       
[  9]   9.00-10.00  sec  7.83 MBytes  65.7 Mbits/sec  113   15.6 KBytes       
[SUM]   9.00-10.00  sec  20.3 MBytes   170 Mbits/sec  268             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  81.4 MBytes  68.2 Mbits/sec  730             sender
[  4]   0.00-10.00  sec  80.9 MBytes  67.9 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  63.8 MBytes  53.5 Mbits/sec  864             sender
[  6]   0.00-10.00  sec  63.4 MBytes  53.2 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  60.2 MBytes  50.5 Mbits/sec  955             sender
[  9]   0.00-10.00  sec  59.8 MBytes  50.2 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   205 MBytes   172 Mbits/sec  2549             sender
[SUM]   0.00-10.00  sec   204 MBytes   171 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60560 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60562 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60564 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.63 MBytes  30.4 Mbits/sec                  
[  6]   0.00-1.00   sec  3.62 MBytes  30.4 Mbits/sec                  
[  9]   0.00-1.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.25 MBytes  27.2 Mbits/sec                  
[  6]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   1.00-2.00   sec  3.10 MBytes  26.0 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.60 MBytes  80.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   2.00-3.00   sec  3.17 MBytes  26.6 Mbits/sec                  
[  9]   2.00-3.00   sec  3.20 MBytes  26.9 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[  6]   3.00-4.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[  9]   3.00-4.00   sec  2.97 MBytes  24.9 Mbits/sec                  
[SUM]   3.00-4.00   sec  8.97 MBytes  75.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  2.81 MBytes  23.6 Mbits/sec                  
[  6]   4.00-5.00   sec  2.67 MBytes  22.4 Mbits/sec                  
[  9]   4.00-5.00   sec  2.80 MBytes  23.5 Mbits/sec                  
[SUM]   4.00-5.00   sec  8.29 MBytes  69.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[  6]   5.00-6.00   sec  2.89 MBytes  24.3 Mbits/sec                  
[  9]   5.00-6.00   sec  2.88 MBytes  24.1 Mbits/sec                  
[SUM]   5.00-6.00   sec  8.77 MBytes  73.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   6.00-7.00   sec  3.23 MBytes  27.1 Mbits/sec                  
[  9]   6.00-7.00   sec  3.17 MBytes  26.6 Mbits/sec                  
[SUM]   6.00-7.00   sec  9.53 MBytes  79.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.21 MBytes  26.9 Mbits/sec                  
[  6]   7.00-8.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   7.00-8.00   sec  3.20 MBytes  26.9 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.54 MBytes  80.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.17 MBytes  26.6 Mbits/sec                  
[  6]   8.00-9.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   8.00-9.00   sec  3.14 MBytes  26.3 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.55 MBytes  80.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.19 MBytes  26.7 Mbits/sec                  
[  6]   9.00-10.00  sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   9.00-10.00  sec  3.24 MBytes  27.2 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.55 MBytes  80.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  32.6 MBytes  27.3 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  32.6 MBytes  27.3 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  32.3 MBytes  27.1 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  32.3 MBytes  27.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  31.0 MBytes  26.0 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  31.0 MBytes  26.0 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  95.9 MBytes  80.4 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  95.9 MBytes  80.4 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51700 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 43404 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 38091 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  36.8 MBytes   309 Mbits/sec  4708  
[  6]   0.00-1.00   sec  36.8 MBytes   309 Mbits/sec  4708  
[  9]   0.00-1.00   sec  36.8 MBytes   309 Mbits/sec  4708  
[SUM]   0.00-1.00   sec   110 MBytes   926 Mbits/sec  14124  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.5 MBytes   315 Mbits/sec  4800  
[  6]   1.00-2.00   sec  37.5 MBytes   315 Mbits/sec  4800  
[  9]   1.00-2.00   sec  37.5 MBytes   315 Mbits/sec  4800  
[SUM]   1.00-2.00   sec   112 MBytes   944 Mbits/sec  14400  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  6]   2.00-3.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  9]   2.00-3.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[SUM]   2.00-3.00   sec   113 MBytes   944 Mbits/sec  14403  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  6]   3.00-4.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  9]   3.00-4.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[SUM]   3.00-4.00   sec   112 MBytes   943 Mbits/sec  14382  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4793  
[  6]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4793  
[  9]   4.00-5.00   sec  37.4 MBytes   314 Mbits/sec  4793  
[SUM]   4.00-5.00   sec   112 MBytes   942 Mbits/sec  14379  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[  6]   5.00-6.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[  9]   5.00-6.00   sec  37.4 MBytes   314 Mbits/sec  4792  
[SUM]   5.00-6.00   sec   112 MBytes   942 Mbits/sec  14376  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  6]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  9]   6.00-7.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[SUM]   6.00-7.00   sec   113 MBytes   944 Mbits/sec  14403  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.5 MBytes   315 Mbits/sec  4802  
[  6]   7.00-8.00   sec  37.5 MBytes   315 Mbits/sec  4802  
[  9]   7.00-8.00   sec  37.5 MBytes   315 Mbits/sec  4802  
[SUM]   7.00-8.00   sec   113 MBytes   944 Mbits/sec  14406  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  6]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  9]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[SUM]   8.00-9.00   sec   112 MBytes   943 Mbits/sec  14382  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.5 MBytes   315 Mbits/sec  4800  
[  6]   9.00-10.00  sec  37.5 MBytes   315 Mbits/sec  4800  
[  9]   9.00-10.00  sec  37.5 MBytes   315 Mbits/sec  4800  
[SUM]   9.00-10.00  sec   112 MBytes   944 Mbits/sec  14400  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   374 MBytes   314 Mbits/sec  6770189.413 ms  44145/44153 (1e+02%)  
[  4] Sent 44153 datagrams
[  6]   0.00-10.00  sec   374 MBytes   314 Mbits/sec  7221535.397 ms  44146/44153 (1e+02%)  
[  6] Sent 44153 datagrams
[  9]   0.00-10.00  sec   374 MBytes   314 Mbits/sec  7702970.989 ms  258/264 (98%)  
[  9] Sent 264 datagrams
[SUM]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec  7231565.266 ms  88549/88570 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 53441 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 46065 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 45591 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.99 MBytes  41.9 Mbits/sec  0.131 ms  0/639 (0%)  
[  6]   0.00-1.00   sec  4.99 MBytes  41.9 Mbits/sec  0.156 ms  0/639 (0%)  
[  9]   0.00-1.00   sec  4.99 MBytes  41.9 Mbits/sec  0.196 ms  0/639 (0%)  
[SUM]   0.00-1.00   sec  15.0 MBytes   126 Mbits/sec  0.161 ms  0/1917 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  5.02 MBytes  42.1 Mbits/sec  0.321 ms  0/642 (0%)  
[  6]   1.00-2.00   sec  5.01 MBytes  42.0 Mbits/sec  0.152 ms  0/641 (0%)  
[  9]   1.00-2.00   sec  5.01 MBytes  42.0 Mbits/sec  0.392 ms  0/641 (0%)  
[SUM]   1.00-2.00   sec  15.0 MBytes   126 Mbits/sec  0.288 ms  0/1924 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.63 MBytes  38.9 Mbits/sec  0.104 ms  0/593 (0%)  
[  6]   2.00-3.00   sec  4.63 MBytes  38.9 Mbits/sec  0.108 ms  0/593 (0%)  
[  9]   2.00-3.00   sec  4.63 MBytes  38.9 Mbits/sec  0.167 ms  0/593 (0%)  
[SUM]   2.00-3.00   sec  13.9 MBytes   117 Mbits/sec  0.126 ms  0/1779 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.91 MBytes  41.2 Mbits/sec  0.165 ms  0/629 (0%)  
[  6]   3.00-4.00   sec  4.91 MBytes  41.2 Mbits/sec  0.139 ms  0/629 (0%)  
[  9]   3.00-4.00   sec  4.91 MBytes  41.2 Mbits/sec  0.223 ms  0/629 (0%)  
[SUM]   3.00-4.00   sec  14.7 MBytes   124 Mbits/sec  0.176 ms  0/1887 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  5.05 MBytes  42.4 Mbits/sec  0.171 ms  0/647 (0%)  
[  6]   4.00-5.00   sec  5.05 MBytes  42.4 Mbits/sec  0.182 ms  0/647 (0%)  
[  9]   4.00-5.00   sec  5.05 MBytes  42.4 Mbits/sec  0.182 ms  0/647 (0%)  
[SUM]   4.00-5.00   sec  15.2 MBytes   127 Mbits/sec  0.178 ms  0/1941 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  5.04 MBytes  42.3 Mbits/sec  0.173 ms  0/645 (0%)  
[  6]   5.00-6.00   sec  5.03 MBytes  42.2 Mbits/sec  0.177 ms  0/644 (0%)  
[  9]   5.00-6.00   sec  5.03 MBytes  42.2 Mbits/sec  0.169 ms  0/644 (0%)  
[SUM]   5.00-6.00   sec  15.1 MBytes   127 Mbits/sec  0.173 ms  0/1933 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  5.01 MBytes  42.0 Mbits/sec  0.194 ms  0/641 (0%)  
[  6]   6.00-7.00   sec  5.00 MBytes  41.9 Mbits/sec  0.192 ms  0/640 (0%)  
[  9]   6.00-7.00   sec  5.00 MBytes  41.9 Mbits/sec  0.194 ms  0/640 (0%)  
[SUM]   6.00-7.00   sec  15.0 MBytes   126 Mbits/sec  0.193 ms  0/1921 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  5.03 MBytes  42.2 Mbits/sec  0.110 ms  0/644 (0%)  
[  6]   7.00-8.00   sec  5.02 MBytes  42.1 Mbits/sec  0.214 ms  0/643 (0%)  
[  9]   7.00-8.00   sec  5.02 MBytes  42.1 Mbits/sec  0.193 ms  0/643 (0%)  
[SUM]   7.00-8.00   sec  15.1 MBytes   126 Mbits/sec  0.172 ms  0/1930 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  5.05 MBytes  42.4 Mbits/sec  0.168 ms  0/647 (0%)  
[  6]   8.00-9.00   sec  5.05 MBytes  42.4 Mbits/sec  0.197 ms  0/647 (0%)  
[  9]   8.00-9.00   sec  5.05 MBytes  42.4 Mbits/sec  0.223 ms  0/647 (0%)  
[SUM]   8.00-9.00   sec  15.2 MBytes   127 Mbits/sec  0.196 ms  0/1941 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  5.07 MBytes  42.5 Mbits/sec  0.153 ms  0/649 (0%)  
[  6]   9.00-10.00  sec  5.06 MBytes  42.5 Mbits/sec  0.236 ms  0/648 (0%)  
[  9]   9.00-10.00  sec  5.05 MBytes  42.4 Mbits/sec  0.260 ms  0/647 (0%)  
[SUM]   9.00-10.00  sec  15.2 MBytes   127 Mbits/sec  0.216 ms  0/1944 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.9 MBytes  41.8 Mbits/sec  0.209 ms  0/6383 (0%)  
[  4] Sent 6383 datagrams
[  6]   0.00-10.00  sec  49.8 MBytes  41.8 Mbits/sec  0.229 ms  0/6378 (0%)  
[  6] Sent 6378 datagrams
[  9]   0.00-10.00  sec  49.8 MBytes  41.8 Mbits/sec  0.301 ms  0/6377 (0%)  
[  9] Sent 6377 datagrams
[SUM]   0.00-10.00  sec   150 MBytes   125 Mbits/sec  0.246 ms  0/19138 (0%)  

iperf Done.
-------------- next part --------------
+ : ':::::::[' configuration smp_icu_same_vpe ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60574 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.0 MBytes   176 Mbits/sec   32   50.9 KBytes       
[  4]   1.00-2.00   sec  21.1 MBytes   177 Mbits/sec   38   74.9 KBytes       
[  4]   2.00-3.00   sec  20.7 MBytes   174 Mbits/sec   40   63.6 KBytes       
[  4]   3.00-4.00   sec  20.6 MBytes   173 Mbits/sec   34   77.8 KBytes       
[  4]   4.00-5.00   sec  20.9 MBytes   176 Mbits/sec   41   69.3 KBytes       
[  4]   5.00-6.00   sec  21.1 MBytes   177 Mbits/sec   36   67.9 KBytes       
[  4]   6.00-7.00   sec  21.1 MBytes   177 Mbits/sec   33   66.5 KBytes       
[  4]   7.00-8.00   sec  20.9 MBytes   175 Mbits/sec   32   60.8 KBytes       
[  4]   8.00-9.00   sec  20.7 MBytes   174 Mbits/sec   43   73.5 KBytes       
[  4]   9.00-10.00  sec  20.5 MBytes   172 Mbits/sec   34   53.7 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   209 MBytes   175 Mbits/sec  363             sender
[  4]   0.00-10.00  sec   208 MBytes   175 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60578 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.58 MBytes  80.4 Mbits/sec                  
[  4]   1.00-2.00   sec  9.58 MBytes  80.4 Mbits/sec                  
[  4]   2.00-3.00   sec  9.62 MBytes  80.7 Mbits/sec                  
[  4]   3.00-4.00   sec  9.58 MBytes  80.3 Mbits/sec                  
[  4]   4.00-5.00   sec  9.61 MBytes  80.6 Mbits/sec                  
[  4]   5.00-6.00   sec  11.2 MBytes  94.1 Mbits/sec                  
[  4]   6.00-7.00   sec  11.3 MBytes  94.6 Mbits/sec                  
[  4]   7.00-8.00   sec  12.4 MBytes   104 Mbits/sec                  
[  4]   8.00-9.00   sec  13.4 MBytes   112 Mbits/sec                  
[  4]   9.00-10.00  sec  13.2 MBytes   111 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   110 MBytes  92.1 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   110 MBytes  92.0 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 57465 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2100  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   2.00-3.00   sec  17.8 MBytes   150 Mbits/sec  2282  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2296  
[  4]   4.00-5.00   sec  17.8 MBytes   150 Mbits/sec  2284  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2293  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2286  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2286  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  36331.186 ms  1332/1421 (94%)  
[  4] Sent 1421 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 54737 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.3 MBytes   129 Mbits/sec  0.221 ms  0/1963 (0%)  
[  4]   1.00-2.00   sec  15.4 MBytes   129 Mbits/sec  0.089 ms  0/1976 (0%)  
[  4]   2.00-3.00   sec  15.5 MBytes   130 Mbits/sec  0.069 ms  0/1986 (0%)  
[  4]   3.00-4.00   sec  15.5 MBytes   130 Mbits/sec  0.084 ms  0/1985 (0%)  
[  4]   4.00-5.00   sec  15.5 MBytes   130 Mbits/sec  0.064 ms  0/1984 (0%)  
[  4]   5.00-6.00   sec  15.4 MBytes   129 Mbits/sec  0.264 ms  0/1969 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   129 Mbits/sec  0.069 ms  0/1963 (0%)  
[  4]   7.00-8.00   sec  15.4 MBytes   129 Mbits/sec  0.073 ms  0/1976 (0%)  
[  4]   8.00-9.00   sec  15.4 MBytes   129 Mbits/sec  0.070 ms  0/1975 (0%)  
[  4]   9.00-10.00  sec  15.4 MBytes   129 Mbits/sec  0.091 ms  0/1973 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   154 MBytes   129 Mbits/sec  0.102 ms  0/19756 (0%)  
[  4] Sent 19756 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 36414 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.5 MBytes   499 Mbits/sec  7621  
[  4]   1.00-2.00   sec  58.8 MBytes   493 Mbits/sec  7527  
[  4]   2.00-3.00   sec  59.7 MBytes   501 Mbits/sec  7642  
[  4]   3.00-4.00   sec  60.0 MBytes   504 Mbits/sec  7685  
[  4]   4.00-5.00   sec  59.7 MBytes   501 Mbits/sec  7639  
[  4]   5.00-6.00   sec  58.5 MBytes   491 Mbits/sec  7484  
[  4]   6.00-7.00   sec  60.2 MBytes   505 Mbits/sec  7710  
[  4]   7.00-8.00   sec  60.3 MBytes   506 Mbits/sec  7718  
[  4]   8.00-9.00   sec  58.5 MBytes   490 Mbits/sec  7484  
[  4]   9.00-10.00  sec  59.5 MBytes   499 Mbits/sec  7610  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   595 MBytes   499 Mbits/sec  1438505.745 ms  64069/64101 (1e+02%)  
[  4] Sent 64101 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 58013 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.2 MBytes   128 Mbits/sec  0.051 ms  0/1952 (0%)  
[  4]   1.00-2.00   sec  15.4 MBytes   129 Mbits/sec  0.074 ms  0/1965 (0%)  
[  4]   2.00-3.00   sec  15.5 MBytes   130 Mbits/sec  0.084 ms  0/1981 (0%)  
[  4]   3.00-4.00   sec  15.5 MBytes   130 Mbits/sec  0.060 ms  0/1979 (0%)  
[  4]   4.00-5.00   sec  15.5 MBytes   130 Mbits/sec  0.095 ms  0/1980 (0%)  
[  4]   5.00-6.00   sec  15.4 MBytes   129 Mbits/sec  0.071 ms  0/1969 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   128 Mbits/sec  0.084 ms  0/1960 (0%)  
[  4]   7.00-8.00   sec  15.4 MBytes   129 Mbits/sec  0.076 ms  0/1969 (0%)  
[  4]   8.00-9.00   sec  15.5 MBytes   130 Mbits/sec  0.071 ms  0/1979 (0%)  
[  4]   9.00-10.00  sec  15.5 MBytes   130 Mbits/sec  0.154 ms  0/1979 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   154 MBytes   129 Mbits/sec  0.131 ms  0/19720 (0%)  
[  4] Sent 19720 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 39332 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   104 MBytes   875 Mbits/sec  13359  
[  4]   1.00-2.00   sec   104 MBytes   874 Mbits/sec  13340  
[  4]   2.00-3.00   sec   105 MBytes   882 Mbits/sec  13461  
[  4]   3.00-4.00   sec   106 MBytes   891 Mbits/sec  13592  
[  4]   4.00-5.00   sec   106 MBytes   886 Mbits/sec  13517  
[  4]   5.00-6.00   sec   107 MBytes   898 Mbits/sec  13697  
[  4]   6.00-7.00   sec   107 MBytes   898 Mbits/sec  13701  
[  4]   7.00-8.00   sec   107 MBytes   899 Mbits/sec  13718  
[  4]   8.00-9.00   sec   107 MBytes   897 Mbits/sec  13685  
[  4]   9.00-10.00  sec   104 MBytes   869 Mbits/sec  13267  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.03 GBytes   887 Mbits/sec  5950362.269 ms  0/10 (0%)  
[  4] Sent 10 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 46998 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.3 MBytes   128 Mbits/sec  0.067 ms  0/1956 (0%)  
[  4]   1.00-2.00   sec  15.3 MBytes   129 Mbits/sec  0.071 ms  0/1964 (0%)  
[  4]   2.00-3.00   sec  15.5 MBytes   130 Mbits/sec  0.084 ms  0/1978 (0%)  
[  4]   3.00-4.00   sec  15.5 MBytes   130 Mbits/sec  0.074 ms  0/1978 (0%)  
[  4]   4.00-5.00   sec  15.5 MBytes   130 Mbits/sec  0.072 ms  0/1978 (0%)  
[  4]   5.00-6.00   sec  15.4 MBytes   129 Mbits/sec  0.088 ms  0/1966 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   128 Mbits/sec  0.088 ms  0/1955 (0%)  
[  4]   7.00-8.00   sec  15.4 MBytes   129 Mbits/sec  0.102 ms  0/1966 (0%)  
[  4]   8.00-9.00   sec  15.5 MBytes   130 Mbits/sec  0.071 ms  0/1978 (0%)  
[  4]   9.00-10.00  sec  15.4 MBytes   130 Mbits/sec  0.078 ms  0/1977 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   154 MBytes   129 Mbits/sec  0.088 ms  0/19703 (0%)  
[  4] Sent 19703 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 60616 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60618 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60620 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  8.14 MBytes  68.2 Mbits/sec   88   55.1 KBytes       
[  6]   0.00-1.00   sec  7.90 MBytes  66.2 Mbits/sec   55   55.1 KBytes       
[  9]   0.00-1.00   sec  5.58 MBytes  46.8 Mbits/sec  104   36.8 KBytes       
[SUM]   0.00-1.00   sec  21.6 MBytes   181 Mbits/sec  247             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  6.84 MBytes  57.4 Mbits/sec   96   14.1 KBytes       
[  6]   1.00-2.00   sec  6.28 MBytes  52.7 Mbits/sec   98   33.9 KBytes       
[  9]   1.00-2.00   sec  6.71 MBytes  56.4 Mbits/sec   85   19.8 KBytes       
[SUM]   1.00-2.00   sec  19.8 MBytes   166 Mbits/sec  279             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  6.34 MBytes  53.2 Mbits/sec   77   18.4 KBytes       
[  6]   2.00-3.00   sec  7.52 MBytes  63.1 Mbits/sec   61   15.6 KBytes       
[  9]   2.00-3.00   sec  7.21 MBytes  60.5 Mbits/sec   61   15.6 KBytes       
[SUM]   2.00-3.00   sec  21.1 MBytes   177 Mbits/sec  199             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  8.70 MBytes  73.0 Mbits/sec   61   17.0 KBytes       
[  6]   3.00-4.00   sec  6.59 MBytes  55.2 Mbits/sec   76   22.6 KBytes       
[  9]   3.00-4.00   sec  5.97 MBytes  50.0 Mbits/sec   72   33.9 KBytes       
[SUM]   3.00-4.00   sec  21.3 MBytes   178 Mbits/sec  209             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  8.26 MBytes  69.3 Mbits/sec   71   26.9 KBytes       
[  6]   4.00-5.00   sec  6.09 MBytes  51.1 Mbits/sec  105   8.48 KBytes       
[  9]   4.00-5.00   sec  5.65 MBytes  47.4 Mbits/sec   94   19.8 KBytes       
[SUM]   4.00-5.00   sec  20.0 MBytes   168 Mbits/sec  270             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  8.26 MBytes  69.3 Mbits/sec   81   46.7 KBytes       
[  6]   5.00-6.00   sec  5.28 MBytes  44.3 Mbits/sec   93   24.0 KBytes       
[  9]   5.00-6.00   sec  6.15 MBytes  51.6 Mbits/sec  107   32.5 KBytes       
[SUM]   5.00-6.00   sec  19.7 MBytes   165 Mbits/sec  281             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  8.82 MBytes  74.0 Mbits/sec   67   36.8 KBytes       
[  6]   6.00-7.00   sec  5.65 MBytes  47.4 Mbits/sec   94   17.0 KBytes       
[  9]   6.00-7.00   sec  6.34 MBytes  53.2 Mbits/sec   87   11.3 KBytes       
[SUM]   6.00-7.00   sec  20.8 MBytes   175 Mbits/sec  248             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  7.58 MBytes  63.6 Mbits/sec   86   42.4 KBytes       
[  6]   7.00-8.00   sec  5.90 MBytes  49.5 Mbits/sec   73   21.2 KBytes       
[  9]   7.00-8.00   sec  7.21 MBytes  60.4 Mbits/sec   76   8.48 KBytes       
[SUM]   7.00-8.00   sec  20.7 MBytes   174 Mbits/sec  235             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  7.95 MBytes  66.7 Mbits/sec   65   18.4 KBytes       
[  6]   8.00-9.00   sec  7.21 MBytes  60.5 Mbits/sec   64   22.6 KBytes       
[  9]   8.00-9.00   sec  5.16 MBytes  43.3 Mbits/sec   86   15.6 KBytes       
[SUM]   8.00-9.00   sec  20.3 MBytes   171 Mbits/sec  215             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  7.15 MBytes  60.0 Mbits/sec   92   50.9 KBytes       
[  6]   9.00-10.00  sec  7.15 MBytes  60.0 Mbits/sec   74   9.90 KBytes       
[  9]   9.00-10.00  sec  6.21 MBytes  52.1 Mbits/sec  103   9.90 KBytes       
[SUM]   9.00-10.00  sec  20.5 MBytes   172 Mbits/sec  269             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  78.1 MBytes  65.5 Mbits/sec  784             sender
[  4]   0.00-10.00  sec  77.7 MBytes  65.1 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  65.6 MBytes  55.0 Mbits/sec  793             sender
[  6]   0.00-10.00  sec  65.2 MBytes  54.7 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  62.2 MBytes  52.2 Mbits/sec  875             sender
[  9]   0.00-10.00  sec  61.8 MBytes  51.8 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   206 MBytes   173 Mbits/sec  2452             sender
[SUM]   0.00-10.00  sec   205 MBytes   172 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 60638 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 60640 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60642 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.58 MBytes  30.0 Mbits/sec                  
[  6]   0.00-1.00   sec  3.62 MBytes  30.4 Mbits/sec                  
[  9]   0.00-1.00   sec  2.31 MBytes  19.3 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.51 MBytes  79.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.23 MBytes  27.1 Mbits/sec                  
[  6]   1.00-2.00   sec  3.20 MBytes  26.9 Mbits/sec                  
[  9]   1.00-2.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.56 MBytes  80.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   2.00-3.00   sec  3.17 MBytes  26.6 Mbits/sec                  
[  9]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.55 MBytes  80.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   3.00-4.00   sec  3.19 MBytes  26.8 Mbits/sec                  
[  9]   3.00-4.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[SUM]   3.00-4.00   sec  9.56 MBytes  80.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  6]   4.00-5.00   sec  3.17 MBytes  26.6 Mbits/sec                  
[  9]   4.00-5.00   sec  3.16 MBytes  26.5 Mbits/sec                  
[SUM]   4.00-5.00   sec  9.46 MBytes  79.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.22 MBytes  27.0 Mbits/sec                  
[  6]   5.00-6.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   5.00-6.00   sec  3.21 MBytes  26.9 Mbits/sec                  
[SUM]   5.00-6.00   sec  9.55 MBytes  80.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.16 MBytes  26.5 Mbits/sec                  
[  6]   6.00-7.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   6.00-7.00   sec  3.15 MBytes  26.4 Mbits/sec                  
[SUM]   6.00-7.00   sec  9.56 MBytes  80.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.18 MBytes  26.7 Mbits/sec                  
[  6]   7.00-8.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   7.00-8.00   sec  3.23 MBytes  27.1 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.53 MBytes  80.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.19 MBytes  26.8 Mbits/sec                  
[  6]   8.00-9.00   sec  3.22 MBytes  27.0 Mbits/sec                  
[  9]   8.00-9.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.54 MBytes  80.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.15 MBytes  26.4 Mbits/sec                  
[  6]   9.00-10.00  sec  3.15 MBytes  26.4 Mbits/sec                  
[  9]   9.00-10.00  sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.55 MBytes  80.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  32.4 MBytes  27.2 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  32.4 MBytes  27.2 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  32.3 MBytes  27.1 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  32.3 MBytes  27.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  31.0 MBytes  26.0 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  31.0 MBytes  26.0 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  95.7 MBytes  80.3 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  95.7 MBytes  80.3 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 56394 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 55930 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 59942 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  37.2 MBytes   312 Mbits/sec  4759  
[  6]   0.00-1.00   sec  37.2 MBytes   312 Mbits/sec  4759  
[  9]   0.00-1.00   sec  37.2 MBytes   312 Mbits/sec  4759  
[SUM]   0.00-1.00   sec   112 MBytes   936 Mbits/sec  14277  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  37.3 MBytes   313 Mbits/sec  4769  
[  6]   1.00-2.00   sec  37.3 MBytes   313 Mbits/sec  4769  
[  9]   1.00-2.00   sec  37.3 MBytes   313 Mbits/sec  4769  
[SUM]   1.00-2.00   sec   112 MBytes   938 Mbits/sec  14307  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  6]   2.00-3.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[  9]   2.00-3.00   sec  37.5 MBytes   314 Mbits/sec  4794  
[SUM]   2.00-3.00   sec   112 MBytes   943 Mbits/sec  14382  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  6]   3.00-4.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[  9]   3.00-4.00   sec  37.5 MBytes   315 Mbits/sec  4801  
[SUM]   3.00-4.00   sec   113 MBytes   944 Mbits/sec  14403  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  37.5 MBytes   315 Mbits/sec  4806  
[  6]   4.00-5.00   sec  37.5 MBytes   315 Mbits/sec  4806  
[  9]   4.00-5.00   sec  37.5 MBytes   315 Mbits/sec  4806  
[SUM]   4.00-5.00   sec   113 MBytes   945 Mbits/sec  14418  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4798  
[  6]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4798  
[  9]   5.00-6.00   sec  37.5 MBytes   315 Mbits/sec  4798  
[SUM]   5.00-6.00   sec   112 MBytes   944 Mbits/sec  14394  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  37.1 MBytes   311 Mbits/sec  4752  
[  6]   6.00-7.00   sec  37.1 MBytes   311 Mbits/sec  4752  
[  9]   6.00-7.00   sec  37.1 MBytes   311 Mbits/sec  4752  
[SUM]   6.00-7.00   sec   111 MBytes   934 Mbits/sec  14256  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  37.4 MBytes   314 Mbits/sec  4785  
[  6]   7.00-8.00   sec  37.4 MBytes   314 Mbits/sec  4785  
[  9]   7.00-8.00   sec  37.4 MBytes   314 Mbits/sec  4785  
[SUM]   7.00-8.00   sec   112 MBytes   941 Mbits/sec  14355  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4799  
[  6]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4799  
[  9]   8.00-9.00   sec  37.5 MBytes   314 Mbits/sec  4799  
[SUM]   8.00-9.00   sec   112 MBytes   943 Mbits/sec  14397  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.5 MBytes   314 Mbits/sec  4796  
[  6]   9.00-10.00  sec  37.5 MBytes   314 Mbits/sec  4796  
[  9]   9.00-10.00  sec  37.5 MBytes   314 Mbits/sec  4796  
[SUM]   9.00-10.00  sec   112 MBytes   943 Mbits/sec  14388  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   374 MBytes   314 Mbits/sec  4902947.942 ms  455/468 (97%)  
[  4] Sent 468 datagrams
[  6]   0.00-10.00  sec   374 MBytes   314 Mbits/sec  5229810.948 ms  416/428 (97%)  
[  6] Sent 428 datagrams
[  9]   0.00-10.00  sec   374 MBytes   314 Mbits/sec  5229810.777 ms  43761/43773 (1e+02%)  
[  9] Sent 43773 datagrams
[SUM]   0.00-10.00  sec  1.10 GBytes   941 Mbits/sec  5120856.555 ms  44632/44669 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 56299 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 38712 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 46097 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  5.05 MBytes  42.3 Mbits/sec  0.256 ms  0/646 (0%)  
[  6]   0.00-1.00   sec  5.04 MBytes  42.3 Mbits/sec  0.134 ms  0/645 (0%)  
[  9]   0.00-1.00   sec  5.04 MBytes  42.3 Mbits/sec  0.317 ms  0/645 (0%)  
[SUM]   0.00-1.00   sec  15.1 MBytes   127 Mbits/sec  0.236 ms  0/1936 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  5.05 MBytes  42.4 Mbits/sec  0.166 ms  0/647 (0%)  
[  6]   1.00-2.00   sec  5.05 MBytes  42.4 Mbits/sec  0.132 ms  0/647 (0%)  
[  9]   1.00-2.00   sec  5.05 MBytes  42.3 Mbits/sec  0.248 ms  0/646 (0%)  
[SUM]   1.00-2.00   sec  15.2 MBytes   127 Mbits/sec  0.182 ms  0/1940 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  5.05 MBytes  42.4 Mbits/sec  0.299 ms  0/647 (0%)  
[  6]   2.00-3.00   sec  5.05 MBytes  42.4 Mbits/sec  0.179 ms  0/647 (0%)  
[  9]   2.00-3.00   sec  5.05 MBytes  42.3 Mbits/sec  0.445 ms  0/646 (0%)  
[SUM]   2.00-3.00   sec  15.2 MBytes   127 Mbits/sec  0.308 ms  0/1940 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  5.03 MBytes  42.2 Mbits/sec  0.143 ms  0/644 (0%)  
[  6]   3.00-4.00   sec  5.02 MBytes  42.1 Mbits/sec  0.114 ms  0/643 (0%)  
[  9]   3.00-4.00   sec  5.03 MBytes  42.2 Mbits/sec  0.253 ms  0/644 (0%)  
[SUM]   3.00-4.00   sec  15.1 MBytes   127 Mbits/sec  0.170 ms  0/1931 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  5.00 MBytes  41.9 Mbits/sec  0.160 ms  0/640 (0%)  
[  6]   4.00-5.00   sec  5.00 MBytes  41.9 Mbits/sec  0.116 ms  0/640 (0%)  
[  9]   4.00-5.00   sec  4.99 MBytes  41.9 Mbits/sec  0.155 ms  0/639 (0%)  
[SUM]   4.00-5.00   sec  15.0 MBytes   126 Mbits/sec  0.144 ms  0/1919 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  5.02 MBytes  42.1 Mbits/sec  0.218 ms  0/642 (0%)  
[  6]   5.00-6.00   sec  5.02 MBytes  42.1 Mbits/sec  0.199 ms  0/642 (0%)  
[  9]   5.00-6.00   sec  5.02 MBytes  42.1 Mbits/sec  0.140 ms  0/642 (0%)  
[SUM]   5.00-6.00   sec  15.0 MBytes   126 Mbits/sec  0.186 ms  0/1926 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  5.05 MBytes  42.3 Mbits/sec  0.284 ms  0/646 (0%)  
[  6]   6.00-7.00   sec  5.05 MBytes  42.3 Mbits/sec  0.132 ms  0/646 (0%)  
[  9]   6.00-7.00   sec  5.04 MBytes  42.3 Mbits/sec  0.181 ms  0/645 (0%)  
[SUM]   6.00-7.00   sec  15.1 MBytes   127 Mbits/sec  0.199 ms  0/1937 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  5.05 MBytes  42.3 Mbits/sec  0.137 ms  0/646 (0%)  
[  6]   7.00-8.00   sec  5.05 MBytes  42.3 Mbits/sec  0.167 ms  0/646 (0%)  
[  9]   7.00-8.00   sec  5.05 MBytes  42.3 Mbits/sec  0.156 ms  0/646 (0%)  
[SUM]   7.00-8.00   sec  15.1 MBytes   127 Mbits/sec  0.153 ms  0/1938 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  5.05 MBytes  42.4 Mbits/sec  0.193 ms  0/647 (0%)  
[  6]   8.00-9.00   sec  5.05 MBytes  42.3 Mbits/sec  0.210 ms  0/646 (0%)  
[  9]   8.00-9.00   sec  5.05 MBytes  42.3 Mbits/sec  0.157 ms  0/646 (0%)  
[SUM]   8.00-9.00   sec  15.1 MBytes   127 Mbits/sec  0.186 ms  0/1939 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  5.02 MBytes  42.1 Mbits/sec  0.172 ms  0/642 (0%)  
[  6]   9.00-10.00  sec  5.02 MBytes  42.1 Mbits/sec  0.130 ms  0/643 (0%)  
[  9]   9.00-10.00  sec  5.02 MBytes  42.1 Mbits/sec  0.273 ms  0/642 (0%)  
[SUM]   9.00-10.00  sec  15.1 MBytes   126 Mbits/sec  0.192 ms  0/1927 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  50.4 MBytes  42.3 Mbits/sec  0.156 ms  0/6454 (0%)  
[  4] Sent 6454 datagrams
[  6]   0.00-10.00  sec  50.4 MBytes  42.3 Mbits/sec  0.163 ms  0/6452 (0%)  
[  6] Sent 6452 datagrams
[  9]   0.00-10.00  sec  50.4 MBytes  42.3 Mbits/sec  0.299 ms  0/6448 (0%)  
[  9] Sent 6448 datagrams
[SUM]   0.00-10.00  sec   151 MBytes   127 Mbits/sec  0.206 ms  0/19354 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smp_icu_same_vpe_netcat.log
Type: text/x-log
Size: 625 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment-0005.bin>
-------------- next part --------------
+ : ':::::::[' configuration vanilla ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51814 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.2 MBytes   178 Mbits/sec   27   72.1 KBytes       
[  4]   1.00-2.00   sec  20.6 MBytes   173 Mbits/sec   29   70.7 KBytes       
[  4]   2.00-3.00   sec  20.8 MBytes   174 Mbits/sec   35   60.8 KBytes       
[  4]   3.00-4.00   sec  20.8 MBytes   174 Mbits/sec   29   73.5 KBytes       
[  4]   4.00-5.00   sec  20.8 MBytes   174 Mbits/sec   32   70.7 KBytes       
[  4]   5.00-6.00   sec  20.7 MBytes   174 Mbits/sec   35   69.3 KBytes       
[  4]   6.00-7.00   sec  20.8 MBytes   174 Mbits/sec   36   60.8 KBytes       
[  4]   7.00-8.00   sec  20.8 MBytes   175 Mbits/sec   29   59.4 KBytes       
[  4]   8.00-9.00   sec  20.8 MBytes   175 Mbits/sec   41   46.7 KBytes       
[  4]   9.00-10.00  sec  20.8 MBytes   175 Mbits/sec   28   50.9 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec  321             sender
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51862 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.63 MBytes  80.7 Mbits/sec                  
[  4]   1.00-2.00   sec  9.65 MBytes  81.0 Mbits/sec                  
[  4]   2.00-3.00   sec  9.52 MBytes  79.9 Mbits/sec                  
[  4]   3.00-4.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   4.00-5.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   5.00-6.00   sec  9.66 MBytes  81.0 Mbits/sec                  
[  4]   6.00-7.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   7.00-8.00   sec  9.70 MBytes  81.4 Mbits/sec                  
[  4]   8.00-9.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   9.00-10.00  sec  9.79 MBytes  82.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51957 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2101  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   8.00-9.00   sec  17.8 MBytes   150 Mbits/sec  2282  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2292  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  136434.385 ms  1349/1417 (95%)  
[  4] Sent 1417 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 46317 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.7 MBytes   124 Mbits/sec  0.077 ms  0/1885 (0%)  
[  4]   1.00-2.00   sec  15.2 MBytes   127 Mbits/sec  0.072 ms  0/1942 (0%)  
[  4]   2.00-3.00   sec  15.0 MBytes   126 Mbits/sec  0.074 ms  0/1924 (0%)  
[  4]   3.00-4.00   sec  14.3 MBytes   120 Mbits/sec  0.080 ms  0/1825 (0%)  
[  4]   4.00-5.00   sec  14.4 MBytes   120 Mbits/sec  0.079 ms  0/1837 (0%)  
[  4]   5.00-6.00   sec  14.8 MBytes   124 Mbits/sec  0.065 ms  0/1888 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1956 (0%)  
[  4]   7.00-8.00   sec  15.2 MBytes   128 Mbits/sec  0.095 ms  0/1948 (0%)  
[  4]   8.00-9.00   sec  15.1 MBytes   127 Mbits/sec  0.092 ms  0/1932 (0%)  
[  4]   9.00-10.00  sec  15.1 MBytes   127 Mbits/sec  0.095 ms  0/1938 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   149 MBytes   125 Mbits/sec  0.085 ms  0/19082 (0%)  
[  4] Sent 19082 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 48172 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  58.5 MBytes   491 Mbits/sec  7494  
[  4]   1.00-2.00   sec  60.6 MBytes   508 Mbits/sec  7756  
[  4]   2.00-3.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   3.00-4.00   sec  60.2 MBytes   505 Mbits/sec  7710  
[  4]   4.00-5.00   sec  59.0 MBytes   495 Mbits/sec  7556  
[  4]   5.00-6.00   sec  60.5 MBytes   508 Mbits/sec  7744  
[  4]   6.00-7.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   7.00-8.00   sec  59.1 MBytes   496 Mbits/sec  7565  
[  4]   8.00-9.00   sec  60.4 MBytes   507 Mbits/sec  7730  
[  4]   9.00-10.00  sec  59.9 MBytes   502 Mbits/sec  7664  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  2051749.337 ms  64268/64294 (1e+02%)  
[  4] Sent 64294 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 35361 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.097 ms  0/1830 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.101 ms  0/1830 (0%)  
[  4]   2.00-3.00   sec  14.3 MBytes   120 Mbits/sec  0.072 ms  0/1827 (0%)  
[  4]   3.00-4.00   sec  14.2 MBytes   119 Mbits/sec  0.081 ms  0/1819 (0%)  
[  4]   4.00-5.00   sec  14.3 MBytes   120 Mbits/sec  0.070 ms  0/1834 (0%)  
[  4]   5.00-6.00   sec  14.3 MBytes   120 Mbits/sec  0.085 ms  0/1833 (0%)  
[  4]   6.00-7.00   sec  14.3 MBytes   120 Mbits/sec  0.082 ms  0/1835 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.109 ms  0/1836 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.080 ms  0/1822 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.090 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   143 MBytes   120 Mbits/sec  0.104 ms  0/18298 (0%)  
[  4] Sent 18298 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 53231 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   1.00-2.00   sec   107 MBytes   896 Mbits/sec  13675  
[  4]   2.00-3.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   3.00-4.00   sec   107 MBytes   898 Mbits/sec  13700  
[  4]   4.00-5.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   5.00-6.00   sec   108 MBytes   902 Mbits/sec  13762  
[  4]   6.00-7.00   sec   107 MBytes   899 Mbits/sec  13719  
[  4]   7.00-8.00   sec   108 MBytes   902 Mbits/sec  13760  
[  4]   8.00-9.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   9.00-10.00  sec   107 MBytes   902 Mbits/sec  13756  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.05 GBytes   900 Mbits/sec  5762140.265 ms  210/220 (95%)  
[  4] Sent 220 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 34296 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.084 ms  0/1835 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.075 ms  0/1835 (0%)  
[  4]   2.00-3.00   sec  14.5 MBytes   122 Mbits/sec  0.062 ms  0/1858 (0%)  
[  4]   3.00-4.00   sec  15.1 MBytes   127 Mbits/sec  0.060 ms  0/1935 (0%)  
[  4]   4.00-5.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1958 (0%)  
[  4]   5.00-6.00   sec  14.5 MBytes   122 Mbits/sec  0.078 ms  0/1861 (0%)  
[  4]   6.00-7.00   sec  14.4 MBytes   120 Mbits/sec  0.100 ms  0/1837 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.098 ms  0/1835 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.085 ms  0/1821 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.110 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   145 MBytes   122 Mbits/sec  0.101 ms  0/18606 (0%)  
[  4] Sent 18606 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 52130 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52132 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52134 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  7.47 MBytes  62.6 Mbits/sec   73   17.0 KBytes       
[  6]   0.00-1.00   sec  7.21 MBytes  60.5 Mbits/sec   78   19.8 KBytes       
[  9]   0.00-1.00   sec  7.14 MBytes  59.9 Mbits/sec   76   31.1 KBytes       
[SUM]   0.00-1.00   sec  21.8 MBytes   183 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.95 MBytes  66.7 Mbits/sec   61   12.7 KBytes       
[  6]   1.00-2.00   sec  5.84 MBytes  49.0 Mbits/sec   99   35.4 KBytes       
[  9]   1.00-2.00   sec  7.08 MBytes  59.4 Mbits/sec   78   32.5 KBytes       
[SUM]   1.00-2.00   sec  20.9 MBytes   175 Mbits/sec  238             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   73   31.1 KBytes       
[  6]   2.00-3.00   sec  8.95 MBytes  75.1 Mbits/sec   64   22.6 KBytes       
[  9]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   81   18.4 KBytes       
[SUM]   2.00-3.00   sec  21.1 MBytes   177 Mbits/sec  218             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  6.71 MBytes  56.3 Mbits/sec   80   11.3 KBytes       
[  6]   3.00-4.00   sec  8.26 MBytes  69.3 Mbits/sec   76   17.0 KBytes       
[  9]   3.00-4.00   sec  6.28 MBytes  52.7 Mbits/sec   77   42.4 KBytes       
[SUM]   3.00-4.00   sec  21.3 MBytes   178 Mbits/sec  233             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  6.59 MBytes  55.3 Mbits/sec   94   12.7 KBytes       
[  6]   4.00-5.00   sec  7.58 MBytes  63.6 Mbits/sec   63   28.3 KBytes       
[  9]   4.00-5.00   sec  6.84 MBytes  57.3 Mbits/sec   62   11.3 KBytes       
[SUM]   4.00-5.00   sec  21.0 MBytes   176 Mbits/sec  219             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  8.76 MBytes  73.5 Mbits/sec   57   22.6 KBytes       
[  6]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   80   38.2 KBytes       
[  9]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   90   7.07 KBytes       
[SUM]   5.00-6.00   sec  21.3 MBytes   179 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.33 MBytes  61.5 Mbits/sec   72   18.4 KBytes       
[  6]   6.00-7.00   sec  7.02 MBytes  58.9 Mbits/sec   66   35.4 KBytes       
[  9]   6.00-7.00   sec  6.77 MBytes  56.8 Mbits/sec   67   17.0 KBytes       
[SUM]   6.00-7.00   sec  21.1 MBytes   177 Mbits/sec  205             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  8.45 MBytes  70.9 Mbits/sec   72   25.5 KBytes       
[  6]   7.00-8.00   sec  6.71 MBytes  56.3 Mbits/sec   82   35.4 KBytes       
[  9]   7.00-8.00   sec  5.90 MBytes  49.5 Mbits/sec   74   17.0 KBytes       
[SUM]   7.00-8.00   sec  21.1 MBytes   177 Mbits/sec  228             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  6.46 MBytes  54.2 Mbits/sec   77   36.8 KBytes       
[  6]   8.00-9.00   sec  6.90 MBytes  57.9 Mbits/sec   78   11.3 KBytes       
[  9]   8.00-9.00   sec  7.89 MBytes  66.2 Mbits/sec   68   11.3 KBytes       
[SUM]   8.00-9.00   sec  21.3 MBytes   178 Mbits/sec  223             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  6.59 MBytes  55.3 Mbits/sec   79   38.2 KBytes       
[  6]   9.00-10.00  sec  8.76 MBytes  73.5 Mbits/sec   58   24.0 KBytes       
[  9]   9.00-10.00  sec  5.72 MBytes  48.0 Mbits/sec   77   7.07 KBytes       
[SUM]   9.00-10.00  sec  21.1 MBytes   177 Mbits/sec  214             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  72.4 MBytes  60.7 Mbits/sec  738             sender
[  4]   0.00-10.00  sec  72.0 MBytes  60.4 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  73.5 MBytes  61.7 Mbits/sec  744             sender
[  6]   0.00-10.00  sec  73.2 MBytes  61.4 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  66.0 MBytes  55.4 Mbits/sec  750             sender
[  9]   0.00-10.00  sec  65.6 MBytes  55.1 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   212 MBytes   178 Mbits/sec  2232             sender
[SUM]   0.00-10.00  sec   211 MBytes   177 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 52178 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52180 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52182 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.03 MBytes  33.8 Mbits/sec                  
[  6]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec                  
[  9]   0.00-1.00   sec  2.79 MBytes  23.4 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   1.00-2.00   sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.72 MBytes  81.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   2.00-3.00   sec  3.30 MBytes  27.6 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.80 MBytes  82.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   3.00-4.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   3.00-4.00   sec  3.19 MBytes  26.8 Mbits/sec                  
[SUM]   3.00-4.00   sec  9.57 MBytes  80.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  2.22 MBytes  18.6 Mbits/sec                  
[  6]   4.00-5.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[  9]   4.00-5.00   sec  2.28 MBytes  19.2 Mbits/sec                  
[SUM]   4.00-5.00   sec  6.88 MBytes  57.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.30 MBytes  27.7 Mbits/sec                  
[  6]   5.00-6.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  9]   5.00-6.00   sec  3.18 MBytes  26.7 Mbits/sec                  
[SUM]   5.00-6.00   sec  9.85 MBytes  82.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  2.99 MBytes  25.1 Mbits/sec                  
[  6]   6.00-7.00   sec  2.88 MBytes  24.1 Mbits/sec                  
[  9]   6.00-7.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[SUM]   6.00-7.00   sec  8.87 MBytes  74.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.14 MBytes  26.3 Mbits/sec                  
[  6]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.64 MBytes  80.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.25 MBytes  27.2 Mbits/sec                  
[  6]   8.00-9.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   8.00-9.00   sec  3.16 MBytes  26.5 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.65 MBytes  81.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   9.00-10.00  sec  3.21 MBytes  26.9 Mbits/sec                  
[  9]   9.00-10.00  sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.68 MBytes  81.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 36791 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51969 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 39473 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  6]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  9]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[SUM]   0.00-1.00   sec   114 MBytes   958 Mbits/sec  14613  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  6]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  9]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[SUM]   4.00-5.00   sec   114 MBytes   956 Mbits/sec  14592  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  6]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  9]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[SUM]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14628  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  6]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  9]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[SUM]   9.00-10.00  sec   114 MBytes   955 Mbits/sec  14568  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.391 ms  0/3 (0%)  
[  4] Sent 3 datagrams
[  6]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.281 ms  0/3 (0%)  
[  6] Sent 3 datagrams
[  9]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.181 ms  0/3 (0%)  
[  9] Sent 3 datagrams
[SUM]   0.00-10.00  sec  1.11 GBytes   958 Mbits/sec  9052841.285 ms  0/9 (0%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 43263 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 49331 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60542 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.156 ms  0/630 (0%)  
[  6]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.170 ms  0/630 (0%)  
[  9]   0.00-1.00   sec  4.91 MBytes  41.2 Mbits/sec  0.237 ms  0/629 (0%)  
[SUM]   0.00-1.00   sec  14.8 MBytes   124 Mbits/sec  0.188 ms  0/1889 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.92 MBytes  41.3 Mbits/sec  0.173 ms  0/630 (0%)  
[  6]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.191 ms  0/629 (0%)  
[  9]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.192 ms  0/629 (0%)  
[SUM]   1.00-2.00   sec  14.8 MBytes   124 Mbits/sec  0.185 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.96 MBytes  41.6 Mbits/sec  0.246 ms  0/635 (0%)  
[  6]   2.00-3.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[  9]   2.00-3.00   sec  4.95 MBytes  41.5 Mbits/sec  0.232 ms  0/634 (0%)  
[SUM]   2.00-3.00   sec  14.9 MBytes   125 Mbits/sec  0.215 ms  0/1905 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.189 ms  0/636 (0%)  
[  6]   3.00-4.00   sec  4.96 MBytes  41.6 Mbits/sec  0.121 ms  0/635 (0%)  
[  9]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.195 ms  0/636 (0%)  
[SUM]   3.00-4.00   sec  14.9 MBytes   125 Mbits/sec  0.168 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.180 ms  0/636 (0%)  
[  6]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.185 ms  0/636 (0%)  
[  9]   4.00-5.00   sec  4.96 MBytes  41.6 Mbits/sec  0.132 ms  0/635 (0%)  
[SUM]   4.00-5.00   sec  14.9 MBytes   125 Mbits/sec  0.166 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.178 ms  0/636 (0%)  
[  6]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.209 ms  0/636 (0%)  
[  9]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[SUM]   5.00-6.00   sec  14.9 MBytes   125 Mbits/sec  0.185 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.141 ms  0/628 (0%)  
[  6]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.211 ms  0/628 (0%)  
[  9]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.152 ms  0/629 (0%)  
[SUM]   6.00-7.00   sec  14.7 MBytes   124 Mbits/sec  0.168 ms  0/1885 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  4.92 MBytes  41.3 Mbits/sec  0.290 ms  0/630 (0%)  
[  6]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.167 ms  0/629 (0%)  
[  9]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.367 ms  0/629 (0%)  
[SUM]   7.00-8.00   sec  14.8 MBytes   124 Mbits/sec  0.275 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.93 MBytes  41.4 Mbits/sec  0.147 ms  0/631 (0%)  
[  6]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.170 ms  0/628 (0%)  
[  9]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.137 ms  0/628 (0%)  
[SUM]   8.00-9.00   sec  14.7 MBytes   124 Mbits/sec  0.151 ms  0/1887 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  4.97 MBytes  41.7 Mbits/sec  0.215 ms  0/636 (0%)  
[  6]   9.00-10.00  sec  4.98 MBytes  41.7 Mbits/sec  0.150 ms  0/637 (0%)  
[  9]   9.00-10.00  sec  4.96 MBytes  41.6 Mbits/sec  0.272 ms  0/635 (0%)  
[SUM]   9.00-10.00  sec  14.9 MBytes   125 Mbits/sec  0.212 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.227 ms  0/6335 (0%)  
[  4] Sent 6335 datagrams
[  6]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.183 ms  0/6331 (0%)  
[  6] Sent 6331 datagrams
[  9]   0.00-10.00  sec  49.4 MBytes  41.5 Mbits/sec  0.261 ms  0/6327 (0%)  
[  9] Sent 6327 datagrams
[SUM]   0.00-10.00  sec   148 MBytes   124 Mbits/sec  0.224 ms  0/18993 (0%)  

iperf Done.
-------------- next part --------------
+ : ':::::::[' configuration vanilla ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 52728 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.2 MBytes   178 Mbits/sec   24   66.5 KBytes       
[  4]   1.00-2.00   sec  20.8 MBytes   175 Mbits/sec   36   67.9 KBytes       
[  4]   2.00-3.00   sec  20.5 MBytes   172 Mbits/sec   40   52.3 KBytes       
[  4]   3.00-4.00   sec  20.7 MBytes   174 Mbits/sec   37   45.2 KBytes       
[  4]   4.00-5.00   sec  20.4 MBytes   171 Mbits/sec   27   46.7 KBytes       
[  4]   5.00-6.00   sec  20.6 MBytes   173 Mbits/sec   36   66.5 KBytes       
[  4]   6.00-7.00   sec  20.8 MBytes   174 Mbits/sec   31   56.6 KBytes       
[  4]   7.00-8.00   sec  20.8 MBytes   174 Mbits/sec   46   43.8 KBytes       
[  4]   8.00-9.00   sec  20.9 MBytes   176 Mbits/sec   31   48.1 KBytes       
[  4]   9.00-10.00  sec  20.9 MBytes   175 Mbits/sec   28   65.0 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec  336             sender
[  4]   0.00-10.00  sec   207 MBytes   174 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 52768 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.95 MBytes  83.5 Mbits/sec                  
[  4]   1.00-2.00   sec  13.0 MBytes   109 Mbits/sec                  
[  4]   2.00-3.00   sec  13.0 MBytes   109 Mbits/sec                  
[  4]   3.00-4.00   sec  13.0 MBytes   109 Mbits/sec                  
[  4]   4.00-5.00   sec  13.1 MBytes   110 Mbits/sec                  
[  4]   5.00-6.00   sec  13.2 MBytes   111 Mbits/sec                  
[  4]   6.00-7.00   sec  13.2 MBytes   111 Mbits/sec                  
[  4]   7.00-8.00   sec  13.2 MBytes   111 Mbits/sec                  
[  4]   8.00-9.00   sec  13.3 MBytes   112 Mbits/sec                  
[  4]   9.00-10.00  sec  10.2 MBytes  85.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   125 MBytes   105 Mbits/sec    0             sender
[  4]   0.00-10.00  sec   125 MBytes   105 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 40911 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2100  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2286  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2289  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  136432.924 ms  1354/1422 (95%)  
[  4] Sent 1422 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 45555 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.3 MBytes   128 Mbits/sec  0.077 ms  0/1960 (0%)  
[  4]   1.00-2.00   sec  15.3 MBytes   129 Mbits/sec  0.068 ms  0/1962 (0%)  
[  4]   2.00-3.00   sec  15.2 MBytes   127 Mbits/sec  0.051 ms  0/1942 (0%)  
[  4]   3.00-4.00   sec  15.2 MBytes   127 Mbits/sec  0.074 ms  0/1940 (0%)  
[  4]   4.00-5.00   sec  15.3 MBytes   128 Mbits/sec  0.064 ms  0/1959 (0%)  
[  4]   5.00-6.00   sec  14.7 MBytes   123 Mbits/sec  0.093 ms  0/1879 (0%)  
[  4]   6.00-7.00   sec  15.5 MBytes   130 Mbits/sec  0.086 ms  0/1990 (0%)  
[  4]   7.00-8.00   sec  17.5 MBytes   146 Mbits/sec  0.089 ms  0/2235 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.060 ms  0/1816 (0%)  
[  4]   9.00-10.00  sec  15.0 MBytes   126 Mbits/sec  0.095 ms  0/1917 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   153 MBytes   128 Mbits/sec  0.101 ms  0/19606 (0%)  
[  4] Sent 19606 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 33642 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.3 MBytes   497 Mbits/sec  7585  
[  4]   1.00-2.00   sec  58.5 MBytes   491 Mbits/sec  7492  
[  4]   2.00-3.00   sec  60.0 MBytes   503 Mbits/sec  7677  
[  4]   3.00-4.00   sec  59.3 MBytes   498 Mbits/sec  7596  
[  4]   4.00-5.00   sec  60.9 MBytes   511 Mbits/sec  7794  
[  4]   5.00-6.00   sec  59.0 MBytes   495 Mbits/sec  7556  
[  4]   6.00-7.00   sec  59.7 MBytes   501 Mbits/sec  7639  
[  4]   7.00-8.00   sec  59.2 MBytes   496 Mbits/sec  7574  
[  4]   8.00-9.00   sec  60.4 MBytes   507 Mbits/sec  7736  
[  4]   9.00-10.00  sec  58.7 MBytes   493 Mbits/sec  7517  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   595 MBytes   499 Mbits/sec  1147799.599 ms  64273/64308 (1e+02%)  
[  4] Sent 64308 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 42014 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.2 MBytes   127 Mbits/sec  0.086 ms  0/1942 (0%)  
[  4]   1.00-2.00   sec  15.2 MBytes   127 Mbits/sec  0.099 ms  0/1940 (0%)  
[  4]   2.00-3.00   sec  15.1 MBytes   127 Mbits/sec  0.087 ms  0/1932 (0%)  
[  4]   3.00-4.00   sec  15.0 MBytes   126 Mbits/sec  0.059 ms  0/1920 (0%)  
[  4]   4.00-5.00   sec  15.1 MBytes   127 Mbits/sec  0.070 ms  0/1931 (0%)  
[  4]   5.00-6.00   sec  15.2 MBytes   127 Mbits/sec  0.109 ms  0/1942 (0%)  
[  4]   6.00-7.00   sec  15.2 MBytes   127 Mbits/sec  0.102 ms  0/1941 (0%)  
[  4]   7.00-8.00   sec  15.2 MBytes   127 Mbits/sec  0.069 ms  0/1943 (0%)  
[  4]   8.00-9.00   sec  15.0 MBytes   126 Mbits/sec  0.074 ms  0/1926 (0%)  
[  4]   9.00-10.00  sec  15.0 MBytes   126 Mbits/sec  0.082 ms  0/1919 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   151 MBytes   127 Mbits/sec  0.089 ms  0/19342 (0%)  
[  4] Sent 19342 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 55639 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  96.9 MBytes   813 Mbits/sec  12402  
[  4]   1.00-2.00   sec   107 MBytes   897 Mbits/sec  13693  
[  4]   2.00-3.00   sec   107 MBytes   898 Mbits/sec  13701  
[  4]   3.00-4.00   sec   107 MBytes   898 Mbits/sec  13698  
[  4]   4.00-5.00   sec   107 MBytes   897 Mbits/sec  13689  
[  4]   5.00-6.00   sec   107 MBytes   896 Mbits/sec  13679  
[  4]   6.00-7.00   sec   107 MBytes   898 Mbits/sec  13710  
[  4]   7.00-8.00   sec   107 MBytes   899 Mbits/sec  13719  
[  4]   8.00-9.00   sec   107 MBytes   894 Mbits/sec  13635  
[  4]   9.00-10.00  sec   107 MBytes   899 Mbits/sec  13725  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.03 GBytes   889 Mbits/sec  3022016.748 ms  1257/1277 (98%)  
[  4] Sent 1277 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 54887 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  15.2 MBytes   127 Mbits/sec  0.087 ms  0/1942 (0%)  
[  4]   1.00-2.00   sec  15.2 MBytes   127 Mbits/sec  0.092 ms  0/1945 (0%)  
[  4]   2.00-3.00   sec  15.1 MBytes   126 Mbits/sec  0.078 ms  0/1930 (0%)  
[  4]   3.00-4.00   sec  15.1 MBytes   127 Mbits/sec  0.078 ms  0/1938 (0%)  
[  4]   4.00-5.00   sec  15.3 MBytes   128 Mbits/sec  0.080 ms  0/1954 (0%)  
[  4]   5.00-6.00   sec  15.3 MBytes   128 Mbits/sec  0.088 ms  0/1959 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   129 Mbits/sec  0.084 ms  0/1961 (0%)  
[  4]   7.00-8.00   sec  15.3 MBytes   128 Mbits/sec  0.266 ms  0/1956 (0%)  
[  4]   8.00-9.00   sec  15.2 MBytes   128 Mbits/sec  0.079 ms  0/1949 (0%)  
[  4]   9.00-10.00  sec  15.1 MBytes   127 Mbits/sec  0.069 ms  0/1939 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   152 MBytes   128 Mbits/sec  0.063 ms  0/19480 (0%)  
[  4] Sent 19480 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 53060 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 53062 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 53064 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  8.14 MBytes  68.3 Mbits/sec   65   11.3 KBytes       
[  6]   0.00-1.00   sec  6.65 MBytes  55.8 Mbits/sec   81   12.7 KBytes       
[  9]   0.00-1.00   sec  7.20 MBytes  60.4 Mbits/sec   60   49.5 KBytes       
[SUM]   0.00-1.00   sec  22.0 MBytes   184 Mbits/sec  206             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  6.84 MBytes  57.3 Mbits/sec   76   25.5 KBytes       
[  6]   1.00-2.00   sec  6.59 MBytes  55.3 Mbits/sec   89   24.0 KBytes       
[  9]   1.00-2.00   sec  7.83 MBytes  65.7 Mbits/sec   60   18.4 KBytes       
[SUM]   1.00-2.00   sec  21.3 MBytes   178 Mbits/sec  225             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  7.83 MBytes  65.7 Mbits/sec   78   15.6 KBytes       
[  6]   2.00-3.00   sec  6.84 MBytes  57.3 Mbits/sec   69   29.7 KBytes       
[  9]   2.00-3.00   sec  6.77 MBytes  56.8 Mbits/sec   72   19.8 KBytes       
[SUM]   2.00-3.00   sec  21.4 MBytes   180 Mbits/sec  219             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  6.52 MBytes  54.7 Mbits/sec  120   18.4 KBytes       
[  6]   3.00-4.00   sec  7.08 MBytes  59.4 Mbits/sec   90   26.9 KBytes       
[  9]   3.00-4.00   sec  6.77 MBytes  56.8 Mbits/sec   77   31.1 KBytes       
[SUM]   3.00-4.00   sec  20.4 MBytes   171 Mbits/sec  287             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  6.28 MBytes  52.6 Mbits/sec   82   21.2 KBytes       
[  6]   4.00-5.00   sec  7.15 MBytes  59.9 Mbits/sec   61   19.8 KBytes       
[  9]   4.00-5.00   sec  7.71 MBytes  64.6 Mbits/sec   61   22.6 KBytes       
[SUM]   4.00-5.00   sec  21.1 MBytes   177 Mbits/sec  204             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  8.95 MBytes  75.1 Mbits/sec   61   11.3 KBytes       
[  6]   5.00-6.00   sec  5.84 MBytes  49.0 Mbits/sec  105   39.6 KBytes       
[  9]   5.00-6.00   sec  5.10 MBytes  42.7 Mbits/sec  112   21.2 KBytes       
[SUM]   5.00-6.00   sec  19.9 MBytes   167 Mbits/sec  278             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.95 MBytes  66.7 Mbits/sec   78   46.7 KBytes       
[  6]   6.00-7.00   sec  6.77 MBytes  56.8 Mbits/sec  110   14.1 KBytes       
[  9]   6.00-7.00   sec  5.65 MBytes  47.4 Mbits/sec  112   18.4 KBytes       
[SUM]   6.00-7.00   sec  20.4 MBytes   171 Mbits/sec  300             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  8.51 MBytes  71.4 Mbits/sec   69   32.5 KBytes       
[  6]   7.00-8.00   sec  6.52 MBytes  54.7 Mbits/sec  109   12.7 KBytes       
[  9]   7.00-8.00   sec  4.97 MBytes  41.7 Mbits/sec   81   19.8 KBytes       
[SUM]   7.00-8.00   sec  20.0 MBytes   168 Mbits/sec  259             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  8.58 MBytes  71.9 Mbits/sec   65   14.1 KBytes       
[  6]   8.00-9.00   sec  5.72 MBytes  48.0 Mbits/sec  104   28.3 KBytes       
[  9]   8.00-9.00   sec  6.59 MBytes  55.3 Mbits/sec   85   11.3 KBytes       
[SUM]   8.00-9.00   sec  20.9 MBytes   175 Mbits/sec  254             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  9.94 MBytes  83.4 Mbits/sec   63   48.1 KBytes       
[  6]   9.00-10.00  sec  4.47 MBytes  37.5 Mbits/sec   75   26.9 KBytes       
[  9]   9.00-10.00  sec  5.03 MBytes  42.2 Mbits/sec  122   43.8 KBytes       
[SUM]   9.00-10.00  sec  19.5 MBytes   163 Mbits/sec  260             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  79.5 MBytes  66.7 Mbits/sec  757             sender
[  4]   0.00-10.00  sec  79.1 MBytes  66.4 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  63.6 MBytes  53.4 Mbits/sec  893             sender
[  6]   0.00-10.00  sec  63.3 MBytes  53.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  63.6 MBytes  53.4 Mbits/sec  842             sender
[  9]   0.00-10.00  sec  63.2 MBytes  53.1 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   207 MBytes   173 Mbits/sec  2492             sender
[SUM]   0.00-10.00  sec   206 MBytes   172 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 53114 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 53116 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 53118 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  3.58 MBytes  30.1 Mbits/sec                  
[  6]   0.00-1.00   sec  3.68 MBytes  30.9 Mbits/sec                  
[  9]   0.00-1.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.64 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.21 MBytes  26.9 Mbits/sec                  
[  6]   1.00-2.00   sec  3.19 MBytes  26.8 Mbits/sec                  
[  9]   1.00-2.00   sec  3.23 MBytes  27.1 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.21 MBytes  26.9 Mbits/sec                  
[  6]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   2.00-3.00   sec  3.17 MBytes  26.6 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.38 MBytes  28.4 Mbits/sec                  
[  6]   3.00-4.00   sec  3.27 MBytes  27.4 Mbits/sec                  
[  9]   3.00-4.00   sec  3.32 MBytes  27.8 Mbits/sec                  
[SUM]   3.00-4.00   sec  9.97 MBytes  83.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.84 MBytes  40.6 Mbits/sec                  
[  6]   4.00-5.00   sec  4.20 MBytes  35.2 Mbits/sec                  
[  9]   4.00-5.00   sec  4.67 MBytes  39.2 Mbits/sec                  
[SUM]   4.00-5.00   sec  13.7 MBytes   115 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.12 MBytes  34.6 Mbits/sec                  
[  6]   5.00-6.00   sec  2.81 MBytes  23.6 Mbits/sec                  
[  9]   5.00-6.00   sec  2.76 MBytes  23.1 Mbits/sec                  
[SUM]   5.00-6.00   sec  9.69 MBytes  81.3 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.25 MBytes  27.2 Mbits/sec                  
[  6]   6.00-7.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   6.00-7.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   6.00-7.00   sec  9.75 MBytes  81.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.27 MBytes  27.4 Mbits/sec                  
[  6]   7.00-8.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  9]   7.00-8.00   sec  3.24 MBytes  27.2 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.88 MBytes  82.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   8.00-9.00   sec  3.20 MBytes  26.8 Mbits/sec                  
[  9]   8.00-9.00   sec  3.18 MBytes  26.7 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   9.00-10.00  sec  3.23 MBytes  27.1 Mbits/sec                  
[  9]   9.00-10.00  sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.73 MBytes  81.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  35.7 MBytes  29.9 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  35.7 MBytes  29.9 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  33.8 MBytes  28.3 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  33.8 MBytes  28.3 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  32.8 MBytes  27.5 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  32.8 MBytes  27.5 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   102 MBytes  85.8 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec   102 MBytes  85.8 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 54179 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 53430 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 57739 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  38.0 MBytes   318 Mbits/sec  4860  
[  6]   0.00-1.00   sec  38.0 MBytes   318 Mbits/sec  4860  
[  9]   0.00-1.00   sec  38.0 MBytes   318 Mbits/sec  4860  
[SUM]   0.00-1.00   sec   114 MBytes   955 Mbits/sec  14580  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4872  
[  6]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4872  
[  9]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4872  
[SUM]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14616  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  38.0 MBytes   319 Mbits/sec  4870  
[  6]   2.00-3.00   sec  38.0 MBytes   319 Mbits/sec  4870  
[  9]   2.00-3.00   sec  38.0 MBytes   319 Mbits/sec  4870  
[SUM]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14610  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4872  
[  6]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4872  
[  9]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4872  
[SUM]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14616  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   4.00-5.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   9.00-10.00  sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  8487039.300 ms  0/4 (0%)  
[  4] Sent 4 datagrams
[  6]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  8487039.639 ms  365/369 (99%)  
[  6] Sent 369 datagrams
[  9]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  8487039.544 ms  472/476 (99%)  
[  9] Sent 476 datagrams
[SUM]   0.00-10.00  sec  1.12 GBytes   958 Mbits/sec  8487039.495 ms  837/849 (99%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 58078 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 50018 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 46349 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.97 MBytes  41.7 Mbits/sec  0.205 ms  0/636 (0%)  
[  6]   0.00-1.00   sec  4.96 MBytes  41.6 Mbits/sec  0.154 ms  0/635 (0%)  
[  9]   0.00-1.00   sec  4.96 MBytes  41.6 Mbits/sec  0.248 ms  0/635 (0%)  
[SUM]   0.00-1.00   sec  14.9 MBytes   125 Mbits/sec  0.202 ms  0/1906 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.95 MBytes  41.5 Mbits/sec  0.162 ms  0/634 (0%)  
[  6]   1.00-2.00   sec  4.95 MBytes  41.5 Mbits/sec  0.216 ms  0/634 (0%)  
[  9]   1.00-2.00   sec  4.95 MBytes  41.5 Mbits/sec  0.125 ms  0/633 (0%)  
[SUM]   1.00-2.00   sec  14.9 MBytes   125 Mbits/sec  0.168 ms  0/1901 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.91 MBytes  41.2 Mbits/sec  0.148 ms  0/629 (0%)  
[  6]   2.00-3.00   sec  4.92 MBytes  41.3 Mbits/sec  0.213 ms  0/630 (0%)  
[  9]   2.00-3.00   sec  4.91 MBytes  41.2 Mbits/sec  0.123 ms  0/629 (0%)  
[SUM]   2.00-3.00   sec  14.8 MBytes   124 Mbits/sec  0.161 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.94 MBytes  41.4 Mbits/sec  0.226 ms  0/632 (0%)  
[  6]   3.00-4.00   sec  4.94 MBytes  41.4 Mbits/sec  0.151 ms  0/632 (0%)  
[  9]   3.00-4.00   sec  4.94 MBytes  41.4 Mbits/sec  0.171 ms  0/632 (0%)  
[SUM]   3.00-4.00   sec  14.8 MBytes   124 Mbits/sec  0.183 ms  0/1896 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.98 MBytes  41.8 Mbits/sec  0.191 ms  0/638 (0%)  
[  6]   4.00-5.00   sec  4.98 MBytes  41.7 Mbits/sec  0.129 ms  0/637 (0%)  
[  9]   4.00-5.00   sec  4.98 MBytes  41.7 Mbits/sec  0.154 ms  0/637 (0%)  
[SUM]   4.00-5.00   sec  14.9 MBytes   125 Mbits/sec  0.158 ms  0/1912 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.98 MBytes  41.7 Mbits/sec  0.162 ms  0/637 (0%)  
[  6]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.085 ms  0/636 (0%)  
[  9]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.157 ms  0/636 (0%)  
[SUM]   5.00-6.00   sec  14.9 MBytes   125 Mbits/sec  0.135 ms  0/1909 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.97 MBytes  41.7 Mbits/sec  0.221 ms  0/636 (0%)  
[  6]   6.00-7.00   sec  4.97 MBytes  41.7 Mbits/sec  0.115 ms  0/636 (0%)  
[  9]   6.00-7.00   sec  4.96 MBytes  41.6 Mbits/sec  0.193 ms  0/635 (0%)  
[SUM]   6.00-7.00   sec  14.9 MBytes   125 Mbits/sec  0.176 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  4.94 MBytes  41.4 Mbits/sec  0.226 ms  0/632 (0%)  
[  6]   7.00-8.00   sec  4.94 MBytes  41.4 Mbits/sec  0.134 ms  0/632 (0%)  
[  9]   7.00-8.00   sec  4.94 MBytes  41.4 Mbits/sec  0.180 ms  0/632 (0%)  
[SUM]   7.00-8.00   sec  14.8 MBytes   124 Mbits/sec  0.180 ms  0/1896 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.92 MBytes  41.3 Mbits/sec  0.196 ms  0/630 (0%)  
[  6]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.161 ms  0/629 (0%)  
[  9]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.161 ms  0/629 (0%)  
[SUM]   8.00-9.00   sec  14.8 MBytes   124 Mbits/sec  0.173 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  4.95 MBytes  41.5 Mbits/sec  0.194 ms  0/633 (0%)  
[  6]   9.00-10.00  sec  4.95 MBytes  41.5 Mbits/sec  0.132 ms  0/633 (0%)  
[  9]   9.00-10.00  sec  4.94 MBytes  41.4 Mbits/sec  0.107 ms  0/632 (0%)  
[SUM]   9.00-10.00  sec  14.8 MBytes   124 Mbits/sec  0.144 ms  0/1898 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.6 MBytes  41.6 Mbits/sec  0.223 ms  0/6344 (0%)  
[  4] Sent 6344 datagrams
[  6]   0.00-10.00  sec  49.5 MBytes  41.6 Mbits/sec  0.153 ms  0/6341 (0%)  
[  6] Sent 6341 datagrams
[  9]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.125 ms  0/6337 (0%)  
[  9] Sent 6337 datagrams
[SUM]   0.00-10.00  sec   149 MBytes   125 Mbits/sec  0.167 ms  0/19022 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vanilla_netcat.log
Type: text/x-log
Size: 566 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment-0006.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0904-backport-vanilla-eth-driver-v2.patch
Type: text/x-patch
Size: 26004 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190203/1abece47/attachment-0007.bin>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mbak at fxnet.hu  Sun Feb  3 07:12:33 2019
From: mbak at fxnet.hu (Mikael Bak)
Date: Sun, 3 Feb 2019 13:12:33 +0100
Subject: [OpenWrt-Devel] Alternative DNS servers for DHCP static clients
 in Luci?
In-Reply-To: <7e53dd3b-b601-16f0-7b6d-075862ff81a9@bk.ru>
References: <e5c27d8b-d3fa-cb85-a6f7-cb97173fbbcd@fxnet.hu>
 <7e53dd3b-b601-16f0-7b6d-075862ff81a9@bk.ru>
Message-ID: <d94b216e-1df1-8c84-9821-3a0447eb041f@fxnet.hu>

Hi,

On 2019. 01. 09. 16:18, A. Benz wrote:
> Hi,
> 
> I setup something similar to what you're trying to do, basically:
> 
> 1. Create another dnsmasq instance with the desired DNS servers for 
> static/known clients. You do this by editing /etc/config/dhcp, like so:
> 
> config dnsmasq 'main'
>  ??? option domainneeded '1'
>  ??? <snip>
>  ??? list server '208.67.222.222'
>  ??? list server '208.67.220.220'
>  ??? option localservice '1'
> 
> config dnsmasq 'secondary'
>  ??? <snip>
>  ??? option resolvfile '/tmp/resolv.conf.auto'
>  ??? option port '5353'??????????? <--------- Note we specify port so it 
> won't conflict with 'main' dnsmasq instance.
>  ??? option localservice '1'
> 
> config dhcp 'lan'
>  ??? option interface 'lan'
>  ??? option start '100'
>  ??? option limit '150'
>  ??? option leasetime '12h'
>  ??? option instance 'main'? <-------- We specify the instance to be 
> used for the lan interface.
> 
> You will now have two instances of dnsmasq running, in our example, one 
> is using opendns, and the other using the default (isp provided) dns 
> servers. When we specified instance 'main', we let all devices joining 
> our network use opendns servers.
> 
> 
> 2. Create a firewall rule to add exceptions which will redirect to port 
> 5353, our "secondary" dnsmasq instance, like so /etc/config/firewall:
> 
> config redirect
>  ??? option name 'DNS_exceptions'
>  ??? option target 'DNAT'
>  ??? option src 'lan'
>  ??? option proto 'udp'
>  ??? option src_dport '53'
>  ??? option dest_ip '192.168.1.1' <--- your router's own IP.
>  ??? option dest_port '5353' <----- port of secondary dnsmasq instance.
>  ??? option dest 'lan'
>  ??? list src_mac '33:22:11:CC:BB:AA'
>  ??? list src_mac '44:44:55:CC:BB:AA'
> 
> Regards,
> A. Benz
> 


Thank you for the configuration example! It helped me very much.

After reading dhcp config documentation on OpenWrt website[1], I went 
with an easier solution:

(in /etc/config/dhcp)

config host
         option name 'MyPC'
         option dns '1'
         option mac 'XX:XX:XX:XX:XX:XX'
         option ip '192.168.xx.xx'
         option tag 'cloudflaredns'

config host
         option name 'MyOtherPC'
         option dns '1'
         option mac 'XX:XX:XX:XX:XX:XX'
         option ip '192.168.xx.xx'
         option tag 'googledns'

config tag 'cloudflaredns'
         list dhcp_option '6,1.1.1.1,1.0.0.1'
         option force '1'

config tag 'googledns'
         list dhcp_option '6,8.8.8.8,8.8.4.4'
         option force '1'

This way only this host gets alternate DNS server configuration from the 
DHCP server.

Thanks again for your help, and thank to all of you for a great firmware!

It woud be fantastic if some day I could configure tags in Luci and 
assign static host to those tags.

Cheers,
Mikael

[1] https://openwrt.org/docs/guide-user/base-system/dhcp_configuration

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From nbd at nbd.name  Sun Feb  3 08:54:40 2019
From: nbd at nbd.name (Felix Fietkau)
Date: Sun, 3 Feb 2019 14:54:40 +0100
Subject: [OpenWrt-Devel] mt76 issues on 18.06 HEAD - was: 18.06.2
 branching/builds
In-Reply-To: <1549130884.6819.0@volatilesystems.org>
References: <99D80534-25F0-4234-B4CA-84CC6C6C650F@volatilesystems.org>
 <2e2aae0e-59c1-d075-0826-0fa73c1bc56f@nbd.name>
 <1548888392.7653.0@volatilesystems.org>
 <1549130884.6819.0@volatilesystems.org>
Message-ID: <3046ab8b-93c3-6404-94df-4812704d166d@nbd.name>

On 2019-02-02 19:08, Stijn Segers wrote:
> Hi Felix,
> 
> I built 18.06 HEAD with your 2019-01-30 bump, and with the 
> mt76-disable-edcca.patch applied. That seemed very stable (up since 
> 30/01 evening, very high throughput - never seen anything close to 50 
> MBps on my 2x2 client before; I barely got close to 25 MBps before). No 
> laggy feeling, so didn't check ping. Wireless wasn't used in the 
> morning or the day, but I have tried to stress it in the evening 
> (31/01) -transferred about 65 GiB of data over the WLAN (scp). No 
> hiccups whatsoever.
> 
> I then reverted to vanilla 18.06 HEAD 31/01, so none of the patches 
> applied, and the connection kept working but page loading in the 
> browser e.g. would occasionally be slow (nothing else chewing on my 
> network connection). I checked ping, and it was all over the place 
> again (from sub-milliseconds to 10 ms, occasionally 100ms to other 
> devices on the LAN). I suppose there's no real value in those numbers, 
> but it does quantify the feeling of the wireless 'choking' momentarily, 
> then picking up again. After like half an hour, wireless would hang on 
> my laptop: I was unable to ping anything, web pages stopped loading 
> altogether. Same thing on my smartphone. However, when I disabled 
> wireless on both clients, then turned it on again, the connection 
> started working once more; that didn't happen on the previous mt76 
> bumps. There the radio would just seem to die like explained in the bug 
> report.
Thanks, that information was very helpful. Did you run those tests on
2.4 GHz or 5 GHz?

> Since that hang already happened within the hour, I ran a new build 
> with the most recent mt76 bump (2019-01-31) together with the 'disable 
> edcca' patch. That has been working fine so far (although I'm not 
> hitting 50 MBps anymore :-P ). It's been up since Friday afternoon, so 
> almost 30 hours now. The radio gets shut down at night, but I've been 
> using it for hours and no issues as far as I can tell.
> 
> Do you want me to try the second patch, or is this OKNo need. I've pushed a whole bunch of ED/CCA related patches to mt76.git
(haven't bumped OpenWrt git yet).
Could you please test that latest version (commit
e301f2349a191c845b6bd2d487e64591ac2ed64d)?

Thanks,

- Felix

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From noreply at github.com  Sun Feb  3 13:06:23 2019
From: noreply at github.com (Stephen Walker)
Date: Sun, 03 Feb 2019 10:06:23 -0800
Subject: [OpenWrt-Devel] [sdwalker/sdwalker.github.io] 35dfdd: This week's
 update
Message-ID: <sdwalker/sdwalker.github.io/push/refs/heads/master/890f02-35dfdd@github.com>

  Branch: refs/heads/master
  Home:   https://github.com/sdwalker/sdwalker.github.io
  Commit: 35dfddf3f40af203483f339cb552dcaa69923945
      https://github.com/sdwalker/sdwalker.github.io/commit/35dfddf3f40af203483f339cb552dcaa69923945
  Author: Stephen Walker <stephendwalker+github at gmail.com>
  Date:   2019-02-03 (Sun, 03 Feb 2019)

  Changed paths:
    M uscan/index-18.06.html
    M uscan/index.html

  Log Message:
  -----------
  This week's update



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From luci at powerneth.ro  Mon Feb  4 03:29:03 2019
From: luci at powerneth.ro (Lucian Cristian)
Date: Mon, 4 Feb 2019 10:29:03 +0200
Subject: [OpenWrt-Devel] [RFC 0/6] x86: switch to generic image
 generation code and
In-Reply-To: <20190113214915.14059-1-tomek_n@o2.pl>
References: <20190113214915.14059-1-tomek_n@o2.pl>
Message-ID: <4e2c7c1c-87ee-e440-880d-d06f634578a4@powerneth.ro>

On 13.01.2019 23:49, Tomasz Maciej Nowak wrote:
> This is aftermath of partially failed series [1].
> When I was searching for ways to upgrade of bootloader on existing
> OpenWrt installations, I noticed that it'll be difficult to add this
> feature within existing code creating x86 target images. I decided to
> switch this code to generic one, wich is used in most of the OpenWrt
> targets. Both of the chages are rather intrusive hence te RFC tag.
> Please voice Your concerns and opinions.
>
> https://patchwork.ozlabs.org/cover/1000625
>
> Tomasz Maciej Nowak (6):
>    x86/grub2: move grub2 image creation to grub2 package
>    x86: switch image generation to new code
>    x86: remove obsolete profiles
>    x86: geode: shrink amount of default packages
>    x86/grub2: add bootloader upgrade on sysupgrade
>    grub2: add preinit hook for bootloader upgrade
>
>   config/Config-images.in                       |  22 +-
>   include/image.mk                              |   1 -
>   package/boot/grub2/Makefile                   |  79 ++++++-
>   .../boot/grub2/files/81_upgrade_bootloader    |  20 ++
>   .../boot/grub2/files}/grub-early.cfg          |   0
>   target/linux/x86/64/profiles/000-Generic.mk   |  15 --
>   target/linux/x86/64/target.mk                 |   2 +-
>   target/linux/x86/Makefile                     |   4 +-
>   .../x86/base-files/lib/upgrade/platform.sh    |  27 ++-
>   .../linux/x86/generic/profiles/000-Generic.mk |  18 --
>   target/linux/x86/generic/target.mk            |   2 +-
>   .../linux/x86/geode/profiles/000-Generic.mk   |  20 --
>   target/linux/x86/geode/profiles/100-Geos.mk   |  19 --
>   target/linux/x86/geode/target.mk              |  14 +-
>   target/linux/x86/image/64.mk                  |   5 +
>   target/linux/x86/image/Makefile               | 199 +++++++-----------
>   target/linux/x86/image/generic.mk             |   8 +
>   target/linux/x86/image/geode.mk               |  16 ++
>   target/linux/x86/image/grub-iso.cfg           |   2 +-
>   .../linux/x86/image/{grub.cfg => grub-pc.cfg} |   4 +-
>   target/linux/x86/image/legacy.mk              |   8 +
>   .../linux/x86/legacy/profiles/000-Generic.mk  |  18 --
>   target/linux/x86/legacy/target.mk             |   1 +
>   23 files changed, 255 insertions(+), 249 deletions(-)
>   create mode 100644 package/boot/grub2/files/81_upgrade_bootloader
>   rename {target/linux/x86/image => package/boot/grub2/files}/grub-early.cfg (100%)
>   delete mode 100644 target/linux/x86/64/profiles/000-Generic.mk
>   delete mode 100644 target/linux/x86/generic/profiles/000-Generic.mk
>   delete mode 100644 target/linux/x86/geode/profiles/000-Generic.mk
>   delete mode 100644 target/linux/x86/geode/profiles/100-Geos.mk
>   create mode 100644 target/linux/x86/image/64.mk
>   create mode 100644 target/linux/x86/image/generic.mk
>   create mode 100644 target/linux/x86/image/geode.mk
>   rename target/linux/x86/image/{grub.cfg => grub-pc.cfg} (57%)
>   create mode 100644 target/linux/x86/image/legacy.mk
>   delete mode 100644 target/linux/x86/legacy/profiles/000-Generic.mk
>
tested on systems with multiple drives and multiple partitions, the only 
thing is that the target images will always be gziped, this is annoying 
on other targets too, also needs a rebase

Regards


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From koen.vandeputte at ncentric.com  Mon Feb  4 06:11:32 2019
From: koen.vandeputte at ncentric.com (Koen Vandeputte)
Date: Mon, 4 Feb 2019 12:11:32 +0100
Subject: [OpenWrt-Devel] New CT wave-2 firmware available.
In-Reply-To: <d6c00be1-a984-4dad-5688-bf8d8c46e6e5@candelatech.com>
References: <d6c00be1-a984-4dad-5688-bf8d8c46e6e5@candelatech.com>
Message-ID: <ca62f40a-eaf8-855c-6b9d-f2f2dac0c537@ncentric.com>

done & verified.

Thanks Ben!


Koen

On 03.02.19 04:27, Ben Greear wrote:
>
> Here are the sha-sums, the 002 version changes to 003.
> If someone could update openwrt to use them I'd appreciate it. Changelog
> is at the bottom.? I am hoping this resolves the crashes related to
> rate-ctrl.
>
> 9980
> 6685623e2ee75909f734e45ae9321b9f78b18ed8c585eadef88f951b8aa4b3be 
> firmware-5-ct-full-community-12.bin-lede.003
> ea5ccdc88a1371e958b4b5e7657782b1bcc55ac24e11e6fa36a3fce2746be4d6 
> firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
> /home/greearb/candela_html/downloads
> 9984
> 0815fffb4757596a5ee41efb8353fb90667e4c26363fbd62a5ccf269e9a55938 
> firmware-5-ct-full-community-12.bin-lede.003
> 425b66e51039f1970802940c864ad3d6b743926e310006f6601acb9689144315 
> firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
> /home/greearb/candela_html/downloads
> 4019
> 6e9171d012b50053b04572933b619927070b95fd2d8b9274a3e59a374088a09d 
> firmware-5-ct-full-community-12.bin-lede.003
> b265428fadda7e3ac33ef977ba1a13788914689110275e57bba7796c583f8480 
> firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
> /home/greearb/candela_html/downloads
> 9888
> fba3ce709cd0e17abec260639034bc99b0157f36c044713201cff2e5b408a6e2 
> firmware-5-ct-full-community-12.bin-lede.003
> 943c0ec1967a41f16e27fd1dfebefc9196412d48d4deba204b157bd7b9b90512 
> firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
>
>
> ? *? Jan 2, 2019:? Rebase patches to make 9980 bisectable.
>
> ? *? Jan 2, 2019:? Fix scheduling related assert when wal-peer is 
> deleted with pending
> ???? tx buffers (bug 54, and others)
>
> ? *? Jan 7, 2019:? Fix specifying retransmits for AMPDU frames. It was 
> previously ignored
> ???? since it is a 'software' retransmit instead of a hardware 
> retransmit.
>
> ? *? Jan 9 2019:? Fix potential way to get zero rates selected (and 
> then assert)
>
> ? *? Jan 18 2019:? pfsched has specific work-around to just return if 
> we find invalid flags AND
> ?????????????????? if we are in an out-of-order situation.? Maybe this 
> is last of the pfsched
> ?????????????????? related issues (bug 54 and similar).
>
> ? *? Jan 24 2019:? The rcSibUpdate method can be called concurrently 
> with IRQ tx-completion callback,
> ?????????????????? and that could potentially allow the tx-completion 
> callback to see invalid state
> ?????????????????? and assert or otherwise mess up the rate-ctrl 
> logic.? So, disable IRQs in
> ?????????????????? rcSibUpdate to prevent this.? Related to bug 58.
>
> ? *? Jan 28 2019:? Ensure that cached config is applied to ratectrl 
> objects when fetched from
> ?????????????????? the cache.? This should fix part of bug 58.
>
> ? *? Jan 28 2019:? Ensure that ratectrl objects from cachemgr are 
> always initialized.? This fixes
> ?????????????????? another part of bug 58.
>
> ? *? Jan 30 2019:? Better use of temporary rate-ctrl object.? Make 
> sure it is initialized, simplify
> ?????????????????? code path.? This finishes up porting forward 
> similar changes I made for wave-1
> ?????????????????? firmware long ago, and fixes another potential way 
> to hit bug-58 issues.
>
> ? *? Jan 30 2019:? Cachemgr did not have a callback for when memory 
> was logically freed.? This means
> ?????????????????? that peers could keep stale references to rate-ctrl 
> objects that were in process
> ?????????????????? of being DMA'd into to load a different peer's 
> rate-ctrl state.? This was causing
> ?????????????????? the bugcheck logic to fail early and often, and I 
> suspect it might be a root cause
> ?????????????????? of bug 58 as well.? The fix is to add a callback 
> and set any 'deleted' memory references
> ?????????????????? to NULL so that we cannot access it accidentally.? 
> Thanks to excellent logs and patience
> ?????????????????? from the bug-58 reporter!
>
>
> Thanks,
> Ben
>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Mon Feb  4 09:59:37 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Mon, 4 Feb 2019 06:59:37 -0800
Subject: [OpenWrt-Devel] [PATCH 1/2] ath79: Add GL.iNet AR-300M-Lite
In-Reply-To: <2167BAA0-1B59-4FAC-9DF3-CCFA3426952A@reboot.ch>
References: <cb3d8a54-8018-affa-4026-49be1de99b00@wagsky.com>
 <2167BAA0-1B59-4FAC-9DF3-CCFA3426952A@reboot.ch>
Message-ID: <813df3ae-660f-90a5-6c7e-b4205f8a1eaa@wagsky.com>

On 2/4/19 4:20 AM, warp at reboot.ch wrote:

> Hello Jeff, thanks for adding GL.iNet AR-300M-Lite !
>
> I can't test it as it's not yet merged into master I think,
> I'm currently using GL.iNet AR-300M settings with a GL.iNet AR-300M-Lite box
> and USB is not working, lsusb shows nothing.
>
> Wondering if it's a known issue and if your latest patches fix it.
>
> Thank you!
> - will

It will be this evening, GMT+8, until I will be able to check, but it 
wouldn't surprise me if the change to "gl-ar300m:green:usb" in the DTS 
will resolve the issue. I can imagine all kinds of problems with a 
trigger on a USB device-present flipping the USB power!

Until then, you can try changing the trigger to "always on" in 
/etc/config/system or through LuCI.

Jeff



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Mon Feb  4 12:17:09 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Mon, 04 Feb 2019 18:17:09 +0100
Subject: [OpenWrt-Devel] [RFT] toolchain/musl: update to version 1.1.21
In-Reply-To: <1869614.4JvWSSSJ5o@debian64>
References: <20190122161509.11014-1-chunkeey@gmail.com>
 <1d3a9acc-abb0-63fc-55a7-287d7e10e33c@ncentric.com>
 <1869614.4JvWSSSJ5o@debian64>
Message-ID: <2355254.ikdjl0YjDs@debian64>

On Wednesday, January 23, 2019 6:54:11 PM CET Christian Lamparter wrote:
> On Wednesday, January 23, 2019 2:26:20 PM CET Koen Vandeputte wrote:
> > Hi Christian,
> > 
> > fwiw, I've been using every musl git bump up to this release on my 
> > devices offshore. It has been running on ~65 devices covering multiple 
> > arches. (armv6k-mpcore, armv7, mips24, mips74, x86_64)
> > 
> > Looks really ok to me, and I statistically do see a drop in weird 
> > one-time issues compared to 1.1.20
> > 
> > Concerning the patch itself:
> > 
> > You probably will need to rebase and refresh the musl patches based on 
> > the latest master state. I also created the bump in my staging tree when 
> > 1.1.21 it was released, and I have an additional patch refreshed, which 
> > is a delta to yours.
> You are right, I had a version bump in my tree that updated the offsets of
> 110-read_timezone_from_fs.patch. With it the patches are identical (apart
> from the commit message).
> 
> > Other than that:
> > 
> > Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
> 
> I'm a bit worried about:
> "This release makes improvements with respect to default thread stack
> size, including increasing the default from 80k to 128k, increasing
> the default guard size from 4k to 8k, and allowing the default to be
> increased via ELF headers so that programs that need larger stacks can
> be build without source-level changes, using just LDFLAGS." and it's
> impact on LOWMEM devices. Currently, I'm looking into making some
> "before and after" comparisions before moving on.

Results are in. On most of my OpenWrt devices (which have 64 MiB and
more) there is hardly any change in the memory consumption. So I focused
just on my most memory starved device: a WD My Range Extender AR9344/AR7010(ath79)
which has a MemTotal (/proc/meminfo) of 26900 KiB.

On this device the RAM consumption went up when it was running the proposed
musl-1.1.21 by 44 KiB (or about a extra 4 KiB page per process). Whereas the
uncompressed squash image size slightly decreased by about a 1 KIB. 
The RAM changes are almost indistinguishable from the noise and there's a
tiny ROM size advantage... But more importantly, there hasn't been any
worriesome  reports on the ML or updates on musl's git. I do think this 
is ready, but the question is, should we add it "now" so it will be in 19.01?

I know that Hauke's mentioned in his 19.01 plans back in 2018 November:
<http://lists.infradead.org/pipermail/openwrt-devel/2018-November/014526.html>
That musl could be upgraded to 1.1.21? But back then, musl 1.1.21 was
just on the roadmap.

Regards,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From foss at volatilesystems.org  Mon Feb  4 16:57:46 2019
From: foss at volatilesystems.org (Stijn Segers)
Date: Mon, 04 Feb 2019 22:57:46 +0100
Subject: [OpenWrt-Devel] mt76 issues on 18.06 HEAD - was: 18.06.2
 branching/builds
In-Reply-To: <3046ab8b-93c3-6404-94df-4812704d166d@nbd.name>
References: <99D80534-25F0-4234-B4CA-84CC6C6C650F@volatilesystems.org>
 <2e2aae0e-59c1-d075-0826-0fa73c1bc56f@nbd.name>
 <1548888392.7653.0@volatilesystems.org>
 <1549130884.6819.0@volatilesystems.org>
 <3046ab8b-93c3-6404-94df-4812704d166d@nbd.name>
Message-ID: <1549317466.2103.0@volatilesystems.org>



Op zondag 3 februari 2019 om 14:54 schreef Felix Fietkau <nbd at nbd.name>:
> On 2019-02-02 19:08, Stijn Segers wrote:
>>  Hi Felix,
>> 
>>  I built 18.06 HEAD with your 2019-01-30 bump, and with the
>>  mt76-disable-edcca.patch applied. That seemed very stable (up since
>>  30/01 evening, very high throughput - never seen anything close to 
>> 50
>>  MBps on my 2x2 client before; I barely got close to 25 MBps 
>> before). No
>>  laggy feeling, so didn't check ping. Wireless wasn't used in the
>>  morning or the day, but I have tried to stress it in the evening
>>  (31/01) -transferred about 65 GiB of data over the WLAN (scp). No
>>  hiccups whatsoever.
>> 
>>  I then reverted to vanilla 18.06 HEAD 31/01, so none of the patches
>>  applied, and the connection kept working but page loading in the
>>  browser e.g. would occasionally be slow (nothing else chewing on my
>>  network connection). I checked ping, and it was all over the place
>>  again (from sub-milliseconds to 10 ms, occasionally 100ms to other
>>  devices on the LAN). I suppose there's no real value in those 
>> numbers,
>>  but it does quantify the feeling of the wireless 'choking' 
>> momentarily,
>>  then picking up again. After like half an hour, wireless would hang 
>> on
>>  my laptop: I was unable to ping anything, web pages stopped loading
>>  altogether. Same thing on my smartphone. However, when I disabled
>>  wireless on both clients, then turned it on again, the connection
>>  started working once more; that didn't happen on the previous mt76
>>  bumps. There the radio would just seem to die like explained in the 
>> bug
>>  report.
> Thanks, that information was very helpful. Did you run those tests on
> 2.4 GHz or 5 GHz?

Hi Felix,

5 GHz only (I don't use the 2,4 GHz radio).


> 
>>  Since that hang already happened within the hour, I ran a new build
>>  with the most recent mt76 bump (2019-01-31) together with the 
>> 'disable
>>  edcca' patch. That has been working fine so far (although I'm not
>>  hitting 50 MBps anymore :-P ). It's been up since Friday afternoon, 
>> so
>>  almost 30 hours now. The radio gets shut down at night, but I've 
>> been
>>  using it for hours and no issues as far as I can tell.
>> 
>>  Do you want me to try the second patch, or is this OK
> No need. I've pushed a whole bunch of ED/CCA related patches to 
> mt76.git
> (haven't bumped OpenWrt git yet).
> Could you please test that latest version (commit
> e301f2349a191c845b6bd2d487e64591ac2ed64d)?

I just rebuilt your 2019-02-03 bump (copied the Makefile from master to 
the 18.06 package feed), installed the kmods on top of my existing 
18.06 build and rebooted.
Initially it seemed fine, although the connection seemed a bit laggy at 
first but that stabilised. My smartphone then just disconnected after 
an hour (router uptime 1:15' +-) and the AP was not visible anymore 
despite 'wifi status radio0' saying it was still up. Dmesg was 
completely silent (nothing related to mt76 or the AP dying).

'Wifi reload' brought it back temporarily - it then only took a few 
minutes to go down again though, for the AP to disappear again and this 
second time the MCU timeout messages reappeared like in the bug report 
on Flyspray.

I didn't have either of your previous patches applied (so 'vanilla' 
mt76 2019-02-03). I'm rolling back to vanilla 18.06 + your ED/CCA patch 
for now. If you need any other info/need me to test/check other things, 
let me know. (I hope this is software and not dying hardware, I 
wouldn't be able to tell the difference.)

Thanks for your help already so far.

Stijn

> 
> Thanks,
> 
> - Felix


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From pozega.tomislav at gmail.com  Mon Feb  4 18:30:54 2019
From: pozega.tomislav at gmail.com (Tom Psyborg)
Date: Tue, 5 Feb 2019 00:30:54 +0100
Subject: [OpenWrt-Devel] ath79: ar71xx: Upgrade: tl-wr842n-v1 has Wrong
 BOARDNAME in ar71xx Builds
In-Reply-To: <2647c5b7-70e2-f236-ecbc-8f06df5959bd@wagsky.com>
References: <2647c5b7-70e2-f236-ecbc-8f06df5959bd@wagsky.com>
Message-ID: <CAKR_QV+JdZhBoFvNKXnGcwWKWBedbVPabSveVRDcCsmdy0EHRg@mail.gmail.com>

see what happens when you're too savy on few lines of code that will
 not reduce image size a bit in the selected target...do it proper and
 have each device have it's own profile

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From allen at rgalli.ml  Mon Feb  4 21:16:20 2019
From: allen at rgalli.ml (Farheen)
Date: 04 Feb 2019 18:16:20 -0800
Subject: [OpenWrt-Devel] order and specifications
Message-ID: <20190204181620.D00AE25148B99ADA@rgalli.ml>

An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190204/9c42761e/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: order and specifications.doc
Type: application/msword
Size: 148779 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190204/9c42761e/attachment.doc>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Tue Feb  5 00:24:20 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Mon, 4 Feb 2019 21:24:20 -0800
Subject: [OpenWrt-Devel] mac80211: 802.11s TCP/IP Connectivity Fails After
 2018-09
Message-ID: <707982b4-5acd-e006-efbc-cf2c9ef484d3@wagsky.com>

802.11s mesh appears to not transport TCP/IP even though the mesh
appears up, for commits on master after late September, 2018.

(Steps to replicate at the end of this message)

The output of `iw dev mesh0 station dump` yields similar results for
working and non-working builds, along the lines of:

 ??? mesh plink:??? ESTAB
 ??? mesh local PS mode:??? ACTIVE
 ??? mesh peer PS mode:??? ACTIVE
 ??? mesh non-peer PS mode:??? ACTIVE
 ??? authorized:??? yes
 ??? authenticated:??? yes
 ??? associated:??? yes

or

 ??? mesh plink:??? ESTAB
 ??? mesh local PS mode:??? ACTIVE
 ??? mesh peer PS mode:??? UNKNOWN
 ??? mesh non-peer PS mode:??? ACTIVE
 ??? authorized:??? yes
 ??? authenticated:??? yes
 ??? associated:??? yes

ping to the peer(s) prior to the first failing commit is sucessful and
the peer is reflected in the arp table.? Full connectivity can be
established over the mesh to peers with UDP or TCP transport.

Both ping and arp fail to behave as expected on or after the first
failing commit.

The routing is the same for both builds.

Behavior seen on both Archer C7 v2 (QCA9880-BR4A v2)
and a GL.iNet AR750S (QCA9887), both on ath79 target (AR750S is WIP)

Confirmed that the newer (newest?) firmware (ver 10.2.4-1.0-00041)
works on the "old" build.

Lack of TCP/IP transport over the mesh confirmed both with 802.11s
integral routing, as well with 802.11s routing disabled and replaced
with batman-adv.? Configuration using both 802.11s routing and
batman-adv on distinct meshes on the same radios has been running
successfully with four or five Archer C7 v2 units for both backhaul
over the 5 GHz mesh, as well as client access on 5 GHz.? (Not tested
on 2.4 GHz on either the Archer C7 or the AR750S.)


git bisect was used to identify the "first failing commit":

commit db90c243a0b9bd72fc691cd09e58a96ac2a452cf
Author: Hauke Mehrtens <redacted>
Date:?? Sun Sep 23 18:02:35 2018 +0200

 ??? mac80211: update to version based on 4.19-rc4


Note that the Candela Technologies drivers do not appear to support
mesh on either chipset.


Any suggestions as to how I can further explore this issue, or assist
others in the process?

Jeff





Additional notes at
<https://forum.openwrt.org/t/mac80211-802-11s-tcp-ip-connectivity-on-master-failing-after-2018-09/30629>

Thanks to @slh and Koen for hopping on thing there!


**To Replicate:**

==> Pick your target of choice

$ ./scripts/diffconfig.sh
CONFIG_TARGET_ath79=y
CONFIG_TARGET_ath79_generic=y
CONFIG_TARGET_ath79_generic_DEVICE_glinet_gl-ar750s-nor=y
CONFIG_DEVEL=y
CONFIG_ATH10K_LEDS=y
CONFIG_BUILD_LOG=y
CONFIG_CCACHE=y
CONFIG_OPENSSL_WITH_DEPRECATED=y
CONFIG_OPENSSL_WITH_EC=y
CONFIG_OPENSSL_WITH_NPN=y
CONFIG_OPENSSL_WITH_PSK=y
CONFIG_OPENSSL_WITH_SRP=y
CONFIG_PACKAGE_ath10k-firmware-qca9887=y
# CONFIG_PACKAGE_ath10k-firmware-qca9887-ct is not set
CONFIG_PACKAGE_diffutils=y
CONFIG_PACKAGE_findutils-find=y
CONFIG_PACKAGE_kmod-ath10k=y
# CONFIG_PACKAGE_kmod-ath10k-ct is not set
# CONFIG_PACKAGE_kmod-hwmon-core is not set
CONFIG_PACKAGE_less=y
CONFIG_PACKAGE_libncurses=y
CONFIG_PACKAGE_libopenssl=y
CONFIG_PACKAGE_terminfo=y
# CONFIG_PACKAGE_wpad-basic is not set
CONFIG_PACKAGE_wpad-mesh-openssl=y


==> Add to `/etc/config/network`

config interface 'nwi_mesh0'
 ??? option ifname 'mesh0'
 ??? option mtu '2304'
 ??? option proto 'static'
 ??? option ipaddr '172.16.0.NNN'
 ??? option netmask '255.255.255.0'


==> Add to / replace in `/etc/config/wireless`
 ????? * Please confirm a valid channel for your location
 ????? * Adjust the device path/reference as needed
 ????? * 'n' used for support of older iPhones here

config wifi-device 'radio5'
 ??? option type 'mac80211'
 ??? option channel '149'
 ??? option hwmode '11a'
 ??? option path 'pci0000:00/0000:00:00.0'
 ??? option htmode 'VHT80'
 ??????? option require_mode 'n'

config wifi-iface 'mesh0'
 ??? option device 'radio5'
 ??? option ifname 'mesh0'
 ??? option network 'nwi_mesh0'
 ??? option mode 'mesh'
 ??? option mesh_id 'TestMesh'
 ??? option mesh_fwding '1'
 ??? option encryption 'psk2+ccmp'
 ??? option key 'TestMeshPassPhrase'


==> Flash and configure additional unit(s), changing the last octet
of the nwi_mesh0 interface address.

==> Note that the mesh appears established from the output of
`iw dev mesh0 station dump`

==> Note that the one unit can?t ping the other?s nwi_mesh0 address
when building on or after "first bad commit" but ping (arp and ip
neigh) will work as expected prior to that commit.


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ynezz at true.cz  Tue Feb  5 12:39:55 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Tue, 5 Feb 2019 18:39:55 +0100
Subject: [OpenWrt-Devel] [PATCH] usbgadget: Add new package
In-Reply-To: <1889362.jnGHAdHgZx@kerker>
References: <1548772235-6139-1-git-send-email-ynezz@true.cz>
 <1889362.jnGHAdHgZx@kerker>
Message-ID: <20190205173955.GN26426@meh.true.cz>

Michael Heimpold <mhei at heimpold.de> [2019-02-02 10:09:40]:

Hi,

> I would prefer to have "config gadget <a-gadget-name>" to configure one
> (multi-function) gadget and then have individual "config function <...>"
> section to configure one function for a referenced gadget.  I think the
> functions are orthogonal and thus "acm+rndis" looks like wrong approach for
> me.

I'm not sure I follow, please can you provide example configs? Thanks.

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at aparcar.org  Tue Feb  5 12:53:16 2019
From: mail at aparcar.org (Paul Spooren)
Date: Tue, 5 Feb 2019 18:53:16 +0100
Subject: [OpenWrt-Devel] buildbots: offer zsync support for snapshots
Message-ID: <47c1316b-adb4-9055-0009-a0cfed4173be@aparcar.org>

Hi,

tl;dr: please run zsyncmake[0] on created snapshot SDK and IB archives

I'm offering a web service to download custom firmware images via an
API[1], this includes snapshot images. To stay up to date, all snapshot
ImageBuilders are daily re-downloaded. While being convenient for some
developers, this introduces quite some traffic. Would it be possible to
offer a .zsync file to allow delta downloads?

The command would be something like

??? zsyncmake openwrt-imagebuilder*
??? zsyncmake openwrt-sdk*

Paul

/mnt/worker/updater/imagebuilder/openwrt/snapshots# du -sh
14G???? .

[0]: https://linux.die.net/man/1/zsyncmake
[1]: https://chef.libremesh.org/


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ynezz at true.cz  Tue Feb  5 13:00:01 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Tue, 5 Feb 2019 19:00:01 +0100
Subject: [OpenWrt-Devel] ath79: ar71xx: Upgrade: tl-wr842n-v1 has Wrong
 BOARDNAME in ar71xx Builds
In-Reply-To: <2647c5b7-70e2-f236-ecbc-8f06df5959bd@wagsky.com>
References: <2647c5b7-70e2-f236-ecbc-8f06df5959bd@wagsky.com>
Message-ID: <20190205180001.GO26426@meh.true.cz>

Adding Marcin to Cc loop.

Jeff Kletsky <lede at allycomm.com> [2019-02-01 11:33:46]:

> As a result, users upgrading that device to ath79 will not have a seamless
> experience, requiring manual intervention.

Yes, it's a known deficiency, I'm not sure how to handle it properly at this
point of time. Maybe we should provide some additional checks in sysupgrade on
ar71xx just for those devices?

> I'm hesitant to suggest that the TL-MR3420 be added to SUPPORTED_DEVICES for
> tl-wr842n-v2 under ath79, as I believe the MR3420 is a 4/32 device and the
> WR842N v1 is a 8/32 device. Some <strike>idiot</strike> uninformed user
> might suggest that TL-MR3420 users try to flash the 8 MB image.

Well I've suggested it as well, but it wasn't considered safe[1].

1. https://github.com/openwrt/openwrt/pull/1625

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Tue Feb  5 16:41:44 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Tue, 05 Feb 2019 22:41:44 +0100
Subject: [OpenWrt-Devel] [PATCH] treewide: dts: Unify naming of
 gpio-keys nodes
In-Reply-To: <20190122205241.GB26426@meh.true.cz>
References: <1546168645-5891-1-git-send-email-ynezz@true.cz>
 <5014695.yzVzQGATWV@debian64> <20190122205241.GB26426@meh.true.cz>
Message-ID: <3054254.MVboohGWKy@debian64>

Hello,

I've just pushed the remaining patches. Except for lantiq.
But these are moving along in Mathias Kresin' staging tree:
<https://git.openwrt.org/?p=openwrt/staging/mkresin.git;a=commit;h=d6bf46cc43fa7de8b035fbfe39959adec1876f48>

Thanks,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mhei at heimpold.de  Tue Feb  5 16:59:53 2019
From: mhei at heimpold.de (Michael Heimpold)
Date: Tue, 05 Feb 2019 22:59:53 +0100
Subject: [OpenWrt-Devel] [PATCH] usbgadget: Add new package
In-Reply-To: <20190205173955.GN26426@meh.true.cz>
References: <1548772235-6139-1-git-send-email-ynezz@true.cz>
 <1889362.jnGHAdHgZx@kerker> <20190205173955.GN26426@meh.true.cz>
Message-ID: <2515697.EZ2ivb0mcS@kerker>

Hi,

Am Dienstag, 5. Februar 2019, 18:39:55 CET schrieb Petr ?tetiar:
> Michael Heimpold <mhei at heimpold.de> [2019-02-02 10:09:40]:
> 
> Hi,
> 
> > I would prefer to have "config gadget <a-gadget-name>" to configure one
> > (multi-function) gadget and then have individual "config function <...>"
> > section to configure one function for a referenced gadget.  I think the
> > functions are orthogonal and thus "acm+rndis" looks like wrong approach
> > for
> > me.
> 
> I'm not sure I follow, please can you provide example configs? Thanks.

I hope the following will illustrate my idea (it should just show the idea,
no deeper sense):
I assume a CPU with two USB device ports, e.g. ci_hdrc.0 and ci_hdrc.1.
On ci_hdrc.0 a gadget with serial console and network is configured, on
ci_hdrc.1 a CD-ROM and a camera.

config gadget gadget1
    option manufacturer 'OpenWrt'
    option product 'OpenWrt USB CDC/ACM'
    option serial_number '007'
    option usb_vid '0xbeef'
    option usb_pid '0x1234'
    option udc_dev 'ci_hdrc.0'
    option disabled 0

config configuration config1
    option gadget gadget1
    option maxpower 120

config function console1
    option gadget gadget1
    option type 'acm'
    option disabled 0

config function network1
    option gadget gadget1          
    option type 'rndis'
    option host_addr 00:01:02:04:05:06
    option dev_addr 00:01:02:04:05:07
    option disabled 0

config gadget gadget2
    option manufacturer 'OpenWrt'
    option product 'OpenWrt USB CDC/ACM'
    option serial_number '007'
    option usb_vid '0xbeef'
    option usb_pid '0x1235'
    option udc_dev 'ci_hdrc.1'
    option disabled 0

config function msd
    option gadget gadget2
    option type 'mass_storage'
    option file '/path/to/backing/file'
    option removable 1
    option cdrom 1
    option disabled 0

config function network
    option gadget gadget2
    option type 'uvc'
    option disabled 1

Cheers,
mhei




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From szab.hu at gmail.com  Tue Feb  5 19:19:14 2019
From: szab.hu at gmail.com (Szabolcs Hubai)
Date: Wed, 6 Feb 2019 01:19:14 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] ath79: GL.iNet AR300M family:
 Correct DTS LED definitions
Message-ID: <CAOZt9c8L6Z_LkuhmbHhOnvX5Zexf7WSEgr+2syVqfwuHa6KYOw@mail.gmail.com>

Hi Jeff,

sorry for being late in the topic, but that [1] red "status" LED is
GL-AR300M-Lite specific, and isn't suitable for the original GL-AR300M
model, IMHO.


Here are my points:

I opened my GL-AR300MD's case (a limited, dualband model), and it has
a "GL-AR300M-V1.3.1" print on it's PCB.
It has the exactly same pinouts as it could be seen on the
documentation page [2] (picture attached) and it's WLAN LED is red,
the other two, LAN and SYS (in DTS: "status") are green.

I'm unsure how are the LED colors in the other GL-AR300M sub-models.

Another point is that, there is Reto Schneider's pull request [3]:
"ar71xx: Fix system LED color for GL-AR300M", which was closed himself
because - "Turns out, my 'fix' only applies for the GL-AR300M-lite
version."


I hope there is az easy way to implement this color difference in the dts files.


BR,
Szabolcs


[1]: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=ee3120a9db780480e58199f6811c52896f494b1d
[2]: https://docs.gl-inet.com/en/2/hardware/ar300m/#pcb-pinout
[3]: https://github.com/openwrt/openwrt/pull/842
-------------- next part --------------
A non-text attachment was scrubbed...
Name: GL-AR300M-PINOUT-1.jpg
Type: image/jpeg
Size: 224533 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190206/058bf6c3/attachment.jpg>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Tue Feb  5 20:25:00 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Tue, 5 Feb 2019 17:25:00 -0800
Subject: [OpenWrt-Devel] [PATCH 2/2] ath79: GL.iNet AR300M family:
 Correct DTS LED definitions
In-Reply-To: <CAOZt9c8L6Z_LkuhmbHhOnvX5Zexf7WSEgr+2syVqfwuHa6KYOw@mail.gmail.com>
References: <CAOZt9c8L6Z_LkuhmbHhOnvX5Zexf7WSEgr+2syVqfwuHa6KYOw@mail.gmail.com>
Message-ID: <ecef263a-f2cc-8820-dd75-c8da30d651f7@wagsky.com>


On 2/5/19 4:19 PM, Szabolcs Hubai wrote:
> Hi Jeff,
>
> sorry for being late in the topic, but that [1] red "status" LED is
> GL-AR300M-Lite specific, and isn't suitable for the original GL-AR300M
> model, IMHO.
>
>
> Here are my points:
>
> I opened my GL-AR300MD's case (a limited, dualband model), and it has
> a "GL-AR300M-V1.3.1" print on it's PCB.
> It has the exactly same pinouts as it could be seen on the
> documentation page [2] (picture attached) and it's WLAN LED is red,
> the other two, LAN and SYS (in DTS: "status") are green.
>
> I'm unsure how are the LED colors in the other GL-AR300M sub-models.
>
I checked the GL.iNet site and the video of the GL-AR300M at
<https://docs.gl-inet.com/en/2/hardware/ar300m/#debrick>
published in January, 2017, shows two green and a red LED,
consistent with your description.

On the other hand, GL.iNet's source shows them as all "green"
(as is the AR300M-Lite I have in hand)

<https://github.com/gl-inet/openwrt/blob/develop/target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar300m.c#L49>

I'm fine with leaving the color alone or being consistent with current 
production
and the OEM's definitions. Shoot, my Archer C7 v2 has "blue" LEDs under 
OpenWrt.
Too bad that doesn't actually change the color of them ;)

The GPIO assignments are still in need of correction, as far as I can 
tell, for all variants.


Jeff



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From szab.hu at gmail.com  Wed Feb  6 02:27:26 2019
From: szab.hu at gmail.com (Szabolcs Hubai)
Date: Wed, 6 Feb 2019 08:27:26 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] ath79: GL.iNet AR300M family:
 Correct DTS LED definitions
In-Reply-To: <ecef263a-f2cc-8820-dd75-c8da30d651f7@wagsky.com>
References: <CAOZt9c8L6Z_LkuhmbHhOnvX5Zexf7WSEgr+2syVqfwuHa6KYOw@mail.gmail.com>
 <ecef263a-f2cc-8820-dd75-c8da30d651f7@wagsky.com>
Message-ID: <CAOZt9c8HvfmsUZkVD5M0TYy-+N27vxfzeFybcEMCTs3urBY5hQ@mail.gmail.com>

Jeff Kletsky <lede at allycomm.com> ezt ?rta (id?pont: 2019. febr. 6., Sze, 2:25):
>
>
> On 2/5/19 4:19 PM, Szabolcs Hubai wrote:
> > Hi Jeff,
> >
> > sorry for being late in the topic, but that [1] red "status" LED is
> > GL-AR300M-Lite specific, and isn't suitable for the original GL-AR300M
> > model, IMHO.
> >
> >
> > Here are my points:
> >
> > I opened my GL-AR300MD's case (a limited, dualband model), and it has
> > a "GL-AR300M-V1.3.1" print on it's PCB.
> > It has the exactly same pinouts as it could be seen on the
> > documentation page [2] (picture attached) and it's WLAN LED is red,
> > the other two, LAN and SYS (in DTS: "status") are green.
> >
> > I'm unsure how are the LED colors in the other GL-AR300M sub-models.
> >
> I checked the GL.iNet site and the video of the GL-AR300M at
> <https://docs.gl-inet.com/en/2/hardware/ar300m/#debrick>
> published in January, 2017, shows two green and a red LED,
> consistent with your description.
>
> On the other hand, GL.iNet's source shows them as all "green"
> (as is the AR300M-Lite I have in hand)
>
> <https://github.com/gl-inet/openwrt/blob/develop/target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar300m.c#L49>
>
> I'm fine with leaving the color alone or being consistent with current
> production
> and the OEM's definitions. Shoot, my Archer C7 v2 has "blue" LEDs under
> OpenWrt.
> Too bad that doesn't actually change the color of them ;)
>
> The GPIO assignments are still in need of correction, as far as I can
> tell, for all variants.
>
>
> Jeff
>
>

My GL-AR300MD is pretty old, I bought it when that debrick video was created. :)

It would be nice, that you could introduce the Lite support with red
"status" LED color.
And the GL-AR300M model "status" LED should have at least a comment
about this inconsistency to avoid the "fixes" to change it back and
forth.
It is also possible that the newly produced versions of GL-AR300M (not
just the -Lite edition) has the new colors.


Yup, the GPIO change was correct.



Szabolcs

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ynezz at true.cz  Wed Feb  6 04:32:56 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Wed, 6 Feb 2019 10:32:56 +0100
Subject: [OpenWrt-Devel] [RFC] User space replacement for named GPIO exports
 kernel patch
Message-ID: <20190206093256.GQ26426@meh.true.cz>

Hi,

there's open PR[A] on GitHub "kernel: move GPIO-add-named-gpio-exports.patch
to generic" which has started discussion around this topic already and before
digging into the possible solution deeper, I would like to get some feedback
first (Maybe, that someone is already working on this also).

It's clear, that this named gpio exports kernel patch was rejected by upstream
long time ago, so we shouldn't probably carry it on forever, and we should
probably start using libgpiod based solution instead.

How to tackle this in the OpenWrt spirit? I see following options:

1. Use commandline utils from libgpiod (gpio-set, gpio-find etc.) and
   potentially add missing features to those utils - probably good enough for
   handling of outputs only
2. Add support for GPIO inputs/outputs using libgpiod to procd
3. Create gpiod and add support for GPIO inputs/outputs using libgpiod
4. Other


A. https://github.com/openwrt/openwrt/pull/1366

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From jonas.gorski at gmail.com  Wed Feb  6 07:12:17 2019
From: jonas.gorski at gmail.com (Jonas Gorski)
Date: Wed, 6 Feb 2019 13:12:17 +0100
Subject: [OpenWrt-Devel] [PATCH] config: enable some useful features on
 !SMALL_FLASH devices
In-Reply-To: <20190115144158.GB6178@makrotopia.org>
References: <20181229055126.GA9794@makrotopia.org>
 <20181230102658.GA89802@meh.true.cz>
 <20190101165624.GA1360@makrotopia.org> <20190101194625.GB5744@meh.true.cz>
 <20190107090306.GA2815@makrotopia.org> <20190107110054.GB429@meh.true.cz>
 <CAOiHx=kKuZDJxufGQEpb7AAnr3kg06YARqU6pT1AdN9Z+iPEGQ@mail.gmail.com>
 <20190107142032.GB1158@makrotopia.org>
 <CAOiHx=kM0KXayngViP+x0LFJFOWYem5Q=FqFgWD3U0dcZF0bRw@mail.gmail.com>
 <20190107144827.GD1158@makrotopia.org> <20190115144158.GB6178@makrotopia.org>
Message-ID: <CAOiHx=kdZ5Gv6PchmMPEFVmSWyFdhFx6ZZcvUnvsh7GTp810+Q@mail.gmail.com>

On Tue, 15 Jan 2019 at 15:42, Daniel Golle <daniel at makrotopia.org> wrote:
>
> Hi Jonas,
>
> On Mon, Jan 07, 2019 at 03:48:29PM +0100, Daniel Golle wrote:
> > On Mon, Jan 07, 2019 at 02:39:26PM +0000, Jonas Gorski wrote:
> > > On Mon, 7 Jan 2019 at 14:21, Daniel Golle <daniel at makrotopia.org> wrote:
> > > >
> > > > On Mon, Jan 07, 2019 at 01:17:34PM +0000, Jonas Gorski wrote:
> > > > > On Mon, 7 Jan 2019 at 11:42, Petr ?tetiar <ynezz at true.cz> wrote:
> > > > > >
> > > > > > Daniel Golle <daniel at makrotopia.org> [2019-01-07 10:03:09]:
> > > > > >
> > > > > > Hi,
> > > > > >
> > > > > > > One. The MT7621 EVB. The TP-LINK RE350 v1 can probably be converted to
> > > > > > > a more sane flash partition layout to gain another megabyte or so.
> > > > > >
> > > > > > I've looked only at mt7621, so this was just example from one subtarget of
> > > > > > ramips target. So I tend to believe, that there's quite more such cases hidden
> > > > > > in the tree. Please correct me if I'm wrong.
> > > > > >
> > > > > > > Why specific devices? Wouldn't all devices with the resources (which
> > > > > > > boils down to !SMALL_FLASH) be potentially more useful with those
> > > > > > > kernel features enabled?
> > > > > >
> > > > > > You currently can't use !SMALL_FLASH, because this is target/subtarget
> > > > > > specific feature, not per device feature. I think, that in order to use this
> > > > > > feature, you would need to convert/fix all devices like that TP-Link RE350
> > > > > > from all (sub)targets into tiny subtarget and then you could freely use
> > > > > > !SMALL_FLASH.
> > > > >
> > > > > I agree with not abusing small_flash for that. It has a clear defined
> > > > > meaning, and shouldn't have unrelated side effects.
> > > >
> > > > So what else would the SMALL_FLASH symbol be used for then?
> > > > A quick grep reveals that currently already quite a few kernel config
> > > > defaults are set according to SMALL_FLASH, see
> > > >
> > > > origin/master:Config-kernel.in-
> > > > origin/master:Config-kernel.in-config KERNEL_SWAP
> > > > origin/master:Config-kernel.in- bool "Support for paging of anonymous memory (swap)"
> > > > origin/master:Config-kernel.in: default y if !SMALL_FLASH
> > > > --
> > > > origin/master:Config-kernel.in-
> > > > origin/master:Config-kernel.in-config KERNEL_KALLSYMS
> > > > origin/master:Config-kernel.in- bool "Compile the kernel with symbol table information"
> > > > origin/master:Config-kernel.in: default y if !SMALL_FLASH
> > > > --
> > > > origin/master:Config-kernel.in-
> > > > origin/master:Config-kernel.in-config KERNEL_DEBUG_INFO
> > > > origin/master:Config-kernel.in- bool "Compile the kernel with debug information"
> > > > origin/master:Config-kernel.in: default y if !SMALL_FLASH
> > > > --
> > > > origin/master:Config-kernel.in-config KERNEL_ELF_CORE
> > > > origin/master:Config-kernel.in- bool "Enable process core dump support"
> > > > origin/master:Config-kernel.in- select KERNEL_COREDUMP
> > > > origin/master:Config-kernel.in: default y if !SMALL_FLASH
> > > > ...
> > >
> > > Most of these option only influence the size of the kernel, and have
> > > no further runtime side effects. Also small_flash has impact on the
> > > compression options used.
> >
> > They sure do, cache size on small CPUs is a very finite resource
> > and having a kernel with debug symbols will make things slower, of
> > course. SWAP also makes every single malloc call more expensive and
> > is just as well only useful on devices with block storage (ok, and
> > zramswap, but lets not talk about that).
> >
> > >
> > > >
> > > > >
> > > > > I think a new opt-in symbol for those targets with hardware
> > > > > virtualization support and/or beefy enough cpus would make more sense.
> > > > > Those virtualization options (probably) don't come for free, they will
> > > > > have also a memory and performance impact even when not actively used.
> > > > > How much that is (and if this assumption is true) would be nice to
> > > > > have in the PR/patch for it.
> > > >
> > > > This is not about virtualization and none of the features selected
> > > > requires any special hardware support apart from the few extra
> > > > kilobytes of flash and memory. You are still right, it doesn't come
> > > > all for free at runtime in terms of CPU cycles, but the impact is
> > > > hardly measurable.
> > > >
> > > > But sure, I understand that this can be opt-in, so lets call it
> > > > 'full_kernel' or something like that and have target maintainers
> > > > decide themselves. In the picture I get after browsing through
> > > > all targets, it would still end up such that
> > > > full_kernel == !small_flash is true for all cases.
> > >
> > > "Full kernel" really has no real meaning and would describe
> > > everything. The name should clearly describe the (non-default) feature
> > > set it enables.
> >
> > But they are not even necessarily related, just closer to the vanilla
> > default config which is used eg. by Debian and most other Linux distros
> > so projects like LVM2 started to rely on them.
> > My goal here is to bring modern generic kernel features into OpenWrt,
> > they are quite unrelated apart from being left out for space reasons
> > and because for a minimal router/AP they are unneeded.
> >
> > >
> > > > And sure, I can carry out some size measurements and compare memory
> > > > allocation after boot. I'm sure the run-time CPU impact is hardly
> > > > measurable at all.
> > >
> > > Please do so especially on low end devices. Maybe something like
> > > routing throughput with/without.
> >
> > I'll do within the next couple of days and post the results.
>
> Kernel size increases by about 90kB (lzma compressed).
> Memory consumption just after boot (ironically) seems to be lower with
> those options enabled, however, it's all in the range of +/- 100kB.
> Network performance seems to be exactly identical.
>
> (tested on ar71xx based on latest master commit)

I gave it my own test with a bcm6328 (320 MHz), and did see some
variance in network performance, but only a few percent. Might have
been differences from code changing alignments to cache lines or so.

I did see a more pronounced memory change though, in the range of ~500
kB less free memory. Might be relevant for 32 MiB devices.

Since growing kernels breaking boards with u-boot not loading enough
from flash is a common enough occurrence, I'd vote for deferring this
change until we branched for the upcoming release, to not introduce
additional board breakage shortly before that. After that we'll get
enough breakage there from the 4.19 switch anyway, so we might then
also up the official minimum requirement to 8 MiB flash.

Regards
Jonas

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From tomek_n at o2.pl  Wed Feb  6 09:08:08 2019
From: tomek_n at o2.pl (Tomasz Maciej Nowak)
Date: Wed, 6 Feb 2019 15:08:08 +0100
Subject: [OpenWrt-Devel] [RFC 0/6] x86: switch to generic image
 generation code and
In-Reply-To: <4e2c7c1c-87ee-e440-880d-d06f634578a4@powerneth.ro>
References: <20190113214915.14059-1-tomek_n@o2.pl>
 <4e2c7c1c-87ee-e440-880d-d06f634578a4@powerneth.ro>
Message-ID: <ff3cccc0-f0b2-a3a3-4108-5f949f46796f@o2.pl>

W dniu 04.02.2019 o?09:29, Lucian Cristian pisze:
> On 13.01.2019 23:49, Tomasz Maciej Nowak wrote:
>> This is aftermath of partially failed series [1].
>> When I was searching for ways to upgrade of bootloader on existing
>> OpenWrt installations, I noticed that it'll be difficult to add this
>> feature within existing code creating x86 target images. I decided to
>> switch this code to generic one, wich is used in most of the OpenWrt
>> targets. Both of the chages are rather intrusive hence te RFC tag.
>> Please voice Your concerns and opinions.
>>
>> https://patchwork.ozlabs.org/cover/1000625
>>
>> Tomasz Maciej Nowak (6):
>> ?? x86/grub2: move grub2 image creation to grub2 package
>> ?? x86: switch image generation to new code
>> ?? x86: remove obsolete profiles
>> ?? x86: geode: shrink amount of default packages
>> ?? x86/grub2: add bootloader upgrade on sysupgrade
>> ?? grub2: add preinit hook for bootloader upgrade
>>
>> ? config/Config-images.in?????????????????????? |? 22 +-
>> ? include/image.mk????????????????????????????? |?? 1 -
>> ? package/boot/grub2/Makefile?????????????????? |? 79 ++++++-
>> ? .../boot/grub2/files/81_upgrade_bootloader??? |? 20 ++
>> ? .../boot/grub2/files}/grub-early.cfg????????? |?? 0
>> ? target/linux/x86/64/profiles/000-Generic.mk?? |? 15 --
>> ? target/linux/x86/64/target.mk???????????????? |?? 2 +-
>> ? target/linux/x86/Makefile???????????????????? |?? 4 +-
>> ? .../x86/base-files/lib/upgrade/platform.sh??? |? 27 ++-
>> ? .../linux/x86/generic/profiles/000-Generic.mk |? 18 --
>> ? target/linux/x86/generic/target.mk??????????? |?? 2 +-
>> ? .../linux/x86/geode/profiles/000-Generic.mk?? |? 20 --
>> ? target/linux/x86/geode/profiles/100-Geos.mk?? |? 19 --
>> ? target/linux/x86/geode/target.mk????????????? |? 14 +-
>> ? target/linux/x86/image/64.mk????????????????? |?? 5 +
>> ? target/linux/x86/image/Makefile?????????????? | 199 +++++++-----------
>> ? target/linux/x86/image/generic.mk???????????? |?? 8 +
>> ? target/linux/x86/image/geode.mk?????????????? |? 16 ++
>> ? target/linux/x86/image/grub-iso.cfg?????????? |?? 2 +-
>> ? .../linux/x86/image/{grub.cfg => grub-pc.cfg} |?? 4 +-
>> ? target/linux/x86/image/legacy.mk????????????? |?? 8 +
>> ? .../linux/x86/legacy/profiles/000-Generic.mk? |? 18 --
>> ? target/linux/x86/legacy/target.mk???????????? |?? 1 +
>> ? 23 files changed, 255 insertions(+), 249 deletions(-)
>> ? create mode 100644 package/boot/grub2/files/81_upgrade_bootloader
>> ? rename {target/linux/x86/image => package/boot/grub2/files}/grub-early.cfg (100%)
>> ? delete mode 100644 target/linux/x86/64/profiles/000-Generic.mk
>> ? delete mode 100644 target/linux/x86/generic/profiles/000-Generic.mk
>> ? delete mode 100644 target/linux/x86/geode/profiles/000-Generic.mk
>> ? delete mode 100644 target/linux/x86/geode/profiles/100-Geos.mk
>> ? create mode 100644 target/linux/x86/image/64.mk
>> ? create mode 100644 target/linux/x86/image/generic.mk
>> ? create mode 100644 target/linux/x86/image/geode.mk
>> ? rename target/linux/x86/image/{grub.cfg => grub-pc.cfg} (57%)
>> ? create mode 100644 target/linux/x86/image/legacy.mk
>> ? delete mode 100644 target/linux/x86/legacy/profiles/000-Generic.mk
>>
> tested on systems with multiple drives and multiple partitions, the only thing is that the target images will always be gziped, this is annoying on other targets too, also needs a rebase

Thank You for testing.
The generated images are gziped because they are built by default and this will save space and bandwidth, maybe this can be turned off by default and enabling it would be responsibility of buildbots, this would need some input of someone responsible for infrastructure.
I'll rebase and add minor improvements to this series after sorting out some of my pending patches.

> 
> Regards
> 

Regards, Tomasz.

-- 
TMN

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From luci at powerneth.ro  Wed Feb  6 09:13:05 2019
From: luci at powerneth.ro (Lucian Cristian)
Date: Wed, 6 Feb 2019 16:13:05 +0200
Subject: [OpenWrt-Devel] [RFC 0/6] x86: switch to generic image
 generation code and
In-Reply-To: <ff3cccc0-f0b2-a3a3-4108-5f949f46796f@o2.pl>
References: <20190113214915.14059-1-tomek_n@o2.pl>
 <4e2c7c1c-87ee-e440-880d-d06f634578a4@powerneth.ro>
 <ff3cccc0-f0b2-a3a3-4108-5f949f46796f@o2.pl>
Message-ID: <60e90237-72a5-8c9c-9995-6c494a780c9c@powerneth.ro>

On 06.02.2019 16:08, Tomasz Maciej Nowak wrote:
> W dniu 04.02.2019 o?09:29, Lucian Cristian pisze:
>> On 13.01.2019 23:49, Tomasz Maciej Nowak wrote:
>>> This is aftermath of partially failed series [1].
>>> When I was searching for ways to upgrade of bootloader on existing
>>> OpenWrt installations, I noticed that it'll be difficult to add this
>>> feature within existing code creating x86 target images. I decided to
>>> switch this code to generic one, wich is used in most of the OpenWrt
>>> targets. Both of the chages are rather intrusive hence te RFC tag.
[...]
>>>  ? rename target/linux/x86/image/{grub.cfg => grub-pc.cfg} (57%)
>>>  ? create mode 100644 target/linux/x86/image/legacy.mk
>>>  ? delete mode 100644 target/linux/x86/legacy/profiles/000-Generic.mk
>>>
>> tested on systems with multiple drives and multiple partitions, the only thing is that the target images will always be gziped, this is annoying on other targets too, also needs a rebase
> Thank You for testing.
> The generated images are gziped because they are built by default and this will save space and bandwidth, maybe this can be turned off by default and enabling it would be responsibility of buildbots, this would need some input of someone responsible for infrastructure.
> I'll rebase and add minor improvements to this series after sorting out some of my pending patches.
>
>> Regards
>>
> Regards, Tomasz.
>
selecting ext4, gzip option will appear and deselecting gzip images has 
no effect, before the option was available for squashfs also, anyway 
this is another issue that is seen on other targets and if I remember 
there was recently a PR related to this option on some target


Regards



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From chunkeey at gmail.com  Wed Feb  6 12:17:01 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Wed,  6 Feb 2019 18:17:01 +0100
Subject: [OpenWrt-Devel] [PATCH] include: add KERNEL_ENTRY to TARGET_VARS
Message-ID: <20190206171701.2596-1-chunkeey@gmail.com>

This will allow us to override the variable from within a Device template.

Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 include/image.mk | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/include/image.mk b/include/image.mk
index 4851a71bcd..aea27c0458 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -388,8 +388,8 @@ endef
 
 DEFAULT_DEVICE_VARS := \
   DEVICE_NAME KERNEL KERNEL_INITRAMFS KERNEL_SIZE KERNEL_INITRAMFS_IMAGE \
-  KERNEL_LOADADDR DEVICE_DTS DEVICE_DTS_CONFIG DEVICE_DTS_DIR BOARD_NAME \
-  CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI \
+  KERNEL_ENTRY KERNEL_LOADADDR DEVICE_DTS DEVICE_DTS_CONFIG DEVICE_DTS_DIR \
+  BOARD_NAME CMDLINE UBOOTENV_IN_UBI KERNEL_IN_UBI \
   BLOCKSIZE PAGESIZE SUBPAGESIZE VID_HDR_OFFSET \
   UBINIZE_OPTS UIMAGE_NAME UBINIZE_PARTS \
   SUPPORTED_DEVICES IMAGE_METADATA
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From kristian.evensen at gmail.com  Wed Feb  6 15:21:51 2019
From: kristian.evensen at gmail.com (Kristian Evensen)
Date: Wed,  6 Feb 2019 21:21:51 +0100
Subject: [OpenWrt-Devel] [PATCH] firewall3: Improve ipset support
Message-ID: <20190206202151.4624-1-kristian.evensen@gmail.com>

This patch is an attempt at improving the ipset support in firewall3.
The following changes have been made:

* The enabled option did not work properly for ipsets, as it was not
checked on create/destroy of a set. After this commit, sets are only
created/destroyed if enabled is set to true.

* Add support for reloading, or recreating, ipsets on firewall reload.
By setting "reload_set" to true, the set will be destroyed and then
re-created when the firewall is reloaded. My use-case for "reload_set"
was to reset sets populated by dnsmasq, without having to restart the
firewall or resort to scripts.

* Add support for the counters and comment extensions. By setting
"counters" or "comment" to true, then counters or comments are added to
the set.

Signed-off-by: Kristian Evensen <kristian.evensen at gmail.com>
---
 ipsets.c  | 35 +++++++++++++++++++++++++++++++++--
 ipsets.h  |  6 ++++--
 main.c    | 16 +++++++++++-----
 options.h |  4 ++++
 utils.c   |  5 +++++
 5 files changed, 57 insertions(+), 9 deletions(-)

diff --git a/ipsets.c b/ipsets.c
index b73c3d2..49ba672 100644
--- a/ipsets.c
+++ b/ipsets.c
@@ -21,6 +21,9 @@
 
 const struct fw3_option fw3_ipset_opts[] = {
 	FW3_OPT("enabled",       bool,           ipset,     enabled),
+	FW3_OPT("reload_set",	 bool,           ipset,     reload_set),
+	FW3_OPT("counters",	 bool,           ipset,     counters),
+	FW3_OPT("comment",	 bool,           ipset,     comment),
 
 	FW3_OPT("name",          string,         ipset,     name),
 	FW3_OPT("family",        family,         ipset,     family),
@@ -56,6 +59,8 @@ enum ipset_optflag {
 	OPT_HASHSIZE  = (1 << 3),
 	OPT_MAXELEM   = (1 << 4),
 	OPT_FAMILY    = (1 << 5),
+	OPT_COUNTERS  = (1 << 6),
+	OPT_COMMENT   = (1 << 7),
 };
 
 struct ipset_type {
@@ -204,6 +209,10 @@ check_types(struct uci_element *e, struct fw3_ipset *ipset)
 static bool
 check_ipset(struct fw3_state *state, struct fw3_ipset *ipset, struct uci_element *e)
 {
+	if (!ipset->enabled) {
+		return false;
+	}
+
 	if (ipset->external)
 	{
 		if (!*ipset->external)
@@ -253,6 +262,9 @@ fw3_alloc_ipset(struct fw3_state *state)
 	INIT_LIST_HEAD(&ipset->entries);
 
 	ipset->enabled = true;
+	ipset->reload_set = false;
+	ipset->counters = false;
+	ipset->comment = false;
 	ipset->family  = FW3_FAMILY_V4;
 
 	list_add_tail(&ipset->list, &state->ipsets);
@@ -389,6 +401,12 @@ create_ipset(struct fw3_ipset *ipset, struct fw3_state *state)
 	if (ipset->hashsize > 0)
 		fw3_pr(" hashsize %u", ipset->hashsize);
 
+	if (ipset->counters)
+		fw3_pr(" counters");
+
+	if (ipset->comment)
+		fw3_pr(" comment");
+
 	fw3_pr("\n");
 
 	list_for_each_entry(entry, &ipset->entries, list)
@@ -398,7 +416,8 @@ create_ipset(struct fw3_ipset *ipset, struct fw3_state *state)
 }
 
 void
-fw3_create_ipsets(struct fw3_state *state)
+fw3_create_ipsets(struct fw3_state *state, enum fw3_family family,
+		  bool reload_set)
 {
 	int tries;
 	bool exec = false;
@@ -410,6 +429,10 @@ fw3_create_ipsets(struct fw3_state *state)
 	/* spawn ipsets */
 	list_for_each_entry(ipset, &state->ipsets, list)
 	{
+		if (ipset->family != family ||
+		    (reload_set && !ipset->reload_set))
+			continue;
+
 		if (ipset->external)
 			continue;
 
@@ -442,15 +465,23 @@ fw3_create_ipsets(struct fw3_state *state)
 }
 
 void
-fw3_destroy_ipsets(struct fw3_state *state)
+fw3_destroy_ipsets(struct fw3_state *state, enum fw3_family family,
+		   bool reload_set)
 {
 	int tries;
 	bool exec = false;
 	struct fw3_ipset *ipset;
 
+	if (state->disable_ipsets)
+		return;
+
 	/* destroy ipsets */
 	list_for_each_entry(ipset, &state->ipsets, list)
 	{
+		if (ipset->family != family ||
+		    (reload_set && !ipset->reload_set))
+			continue;
+
 		if (!exec)
 		{
 			exec = fw3_command_pipe(false, "ipset", "-exist", "-");
diff --git a/ipsets.h b/ipsets.h
index 2ba862d..fec79f8 100644
--- a/ipsets.h
+++ b/ipsets.h
@@ -28,8 +28,10 @@
 extern const struct fw3_option fw3_ipset_opts[];
 
 void fw3_load_ipsets(struct fw3_state *state, struct uci_package *p, struct blob_attr *a);
-void fw3_create_ipsets(struct fw3_state *state);
-void fw3_destroy_ipsets(struct fw3_state *state);
+void fw3_create_ipsets(struct fw3_state *state, enum fw3_family family,
+		       bool reload_set);
+void fw3_destroy_ipsets(struct fw3_state *state, enum fw3_family family,
+			bool reload_set);
 
 struct fw3_ipset * fw3_lookup_ipset(struct fw3_state *state, const char *name);
 
diff --git a/main.c b/main.c
index 1410fef..8d9a2e8 100644
--- a/main.c
+++ b/main.c
@@ -224,8 +224,10 @@ stop(bool complete)
 		rv = 0;
 	}
 
-	if (run_state)
-		fw3_destroy_ipsets(run_state);
+	if (run_state) {
+		for (family = FW3_FAMILY_V4; family <= FW3_FAMILY_V6; family++)
+			fw3_destroy_ipsets(run_state, family, false);
+	}
 
 	if (complete)
 		fw3_flush_conntrack(NULL);
@@ -244,11 +246,11 @@ start(void)
 	enum fw3_table table;
 	struct fw3_ipt_handle *handle;
 
-	if (!print_family)
-		fw3_create_ipsets(cfg_state);
-
 	for (family = FW3_FAMILY_V4; family <= FW3_FAMILY_V6; family++)
 	{
+		if (!print_family)
+			fw3_create_ipsets(cfg_state, family, false);
+
 		if (family == FW3_FAMILY_V6 && cfg_state->defaults.disable_ipv6)
 			continue;
 
@@ -352,6 +354,8 @@ reload(void)
 			fw3_ipt_close(handle);
 		}
 
+		fw3_destroy_ipsets(run_state, family, true);
+
 		family_set(run_state, family, false);
 		family_set(cfg_state, family, false);
 
@@ -359,6 +363,8 @@ start:
 		if (family == FW3_FAMILY_V6 && cfg_state->defaults.disable_ipv6)
 			continue;
 
+		fw3_create_ipsets(cfg_state, family, true);
+
 		for (table = FW3_TABLE_FILTER; table <= FW3_TABLE_RAW; table++)
 		{
 			if (!fw3_has_table(family == FW3_FAMILY_V6, fw3_flag_names[table]))
diff --git a/options.h b/options.h
index a75cfa3..cffc01c 100644
--- a/options.h
+++ b/options.h
@@ -501,6 +501,10 @@ struct fw3_ipset
 	struct list_head list;
 
 	bool enabled;
+	bool reload_set;
+	bool counters;
+	bool comment;
+
 	const char *name;
 	enum fw3_family family;
 
diff --git a/utils.c b/utils.c
index 7f09787..cd5e7de 100644
--- a/utils.c
+++ b/utils.c
@@ -585,6 +585,11 @@ write_ipset_uci(struct uci_context *ctx, struct fw3_ipset *s,
 	ptr.value  = s->name;
 	uci_set(ctx, &ptr);
 
+	ptr.o      = NULL;
+	ptr.option = "reload_set";
+	ptr.value  = s->reload_set ? "true" : "false";
+	uci_set(ctx, &ptr);
+
 	ptr.o      = NULL;
 	ptr.option = "storage";
 	ptr.value  = fw3_ipset_method_names[s->method];
-- 
2.19.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From simomamuni79 at gmail.com  Wed Feb  6 21:27:56 2019
From: simomamuni79 at gmail.com (simo mamuni)
Date: Thu, 7 Feb 2019 03:27:56 +0100
Subject: [OpenWrt-Devel] (no subject)
Message-ID: <CAKCZERekcaqy36Gg2fUbVNwEmvJ=Vy8Ssza5R7Fb9CxwedJ5KQ@mail.gmail.com>

Code de admin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190207/f26fa6a4/attachment.htm>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From nbd at nbd.name  Thu Feb  7 08:30:51 2019
From: nbd at nbd.name (Felix Fietkau)
Date: Thu, 7 Feb 2019 14:30:51 +0100
Subject: [OpenWrt-Devel] mt76 issues on 18.06 HEAD - was: 18.06.2
 branching/builds
In-Reply-To: <1549317466.2103.0@volatilesystems.org>
References: <99D80534-25F0-4234-B4CA-84CC6C6C650F@volatilesystems.org>
 <2e2aae0e-59c1-d075-0826-0fa73c1bc56f@nbd.name>
 <1548888392.7653.0@volatilesystems.org>
 <1549130884.6819.0@volatilesystems.org>
 <3046ab8b-93c3-6404-94df-4812704d166d@nbd.name>
 <1549317466.2103.0@volatilesystems.org>
Message-ID: <06d72bf4-c365-83ce-f5a2-f707269fffc1@nbd.name>

On 2019-02-04 22:57, Stijn Segers wrote:
> 
> 
> Op zondag 3 februari 2019 om 14:54 schreef Felix Fietkau <nbd at nbd.name>:
>> On 2019-02-02 19:08, Stijn Segers wrote:
>>>  Hi Felix,
>>> 
>>>  I built 18.06 HEAD with your 2019-01-30 bump, and with the
>>>  mt76-disable-edcca.patch applied. That seemed very stable (up since
>>>  30/01 evening, very high throughput - never seen anything close to 
>>> 50
>>>  MBps on my 2x2 client before; I barely got close to 25 MBps 
>>> before). No
>>>  laggy feeling, so didn't check ping. Wireless wasn't used in the
>>>  morning or the day, but I have tried to stress it in the evening
>>>  (31/01) -transferred about 65 GiB of data over the WLAN (scp). No
>>>  hiccups whatsoever.
>>> 
>>>  I then reverted to vanilla 18.06 HEAD 31/01, so none of the patches
>>>  applied, and the connection kept working but page loading in the
>>>  browser e.g. would occasionally be slow (nothing else chewing on my
>>>  network connection). I checked ping, and it was all over the place
>>>  again (from sub-milliseconds to 10 ms, occasionally 100ms to other
>>>  devices on the LAN). I suppose there's no real value in those 
>>> numbers,
>>>  but it does quantify the feeling of the wireless 'choking' 
>>> momentarily,
>>>  then picking up again. After like half an hour, wireless would hang 
>>> on
>>>  my laptop: I was unable to ping anything, web pages stopped loading
>>>  altogether. Same thing on my smartphone. However, when I disabled
>>>  wireless on both clients, then turned it on again, the connection
>>>  started working once more; that didn't happen on the previous mt76
>>>  bumps. There the radio would just seem to die like explained in the 
>>> bug
>>>  report.
>> Thanks, that information was very helpful. Did you run those tests on
>> 2.4 GHz or 5 GHz?
> 
> Hi Felix,
> 
> 5 GHz only (I don't use the 2,4 GHz radio).
> 
> 
>> 
>>>  Since that hang already happened within the hour, I ran a new build
>>>  with the most recent mt76 bump (2019-01-31) together with the 
>>> 'disable
>>>  edcca' patch. That has been working fine so far (although I'm not
>>>  hitting 50 MBps anymore :-P ). It's been up since Friday afternoon, 
>>> so
>>>  almost 30 hours now. The radio gets shut down at night, but I've 
>>> been
>>>  using it for hours and no issues as far as I can tell.
>>> 
>>>  Do you want me to try the second patch, or is this OK
>> No need. I've pushed a whole bunch of ED/CCA related patches to 
>> mt76.git
>> (haven't bumped OpenWrt git yet).
>> Could you please test that latest version (commit
>> e301f2349a191c845b6bd2d487e64591ac2ed64d)?
> 
> I just rebuilt your 2019-02-03 bump (copied the Makefile from master to 
> the 18.06 package feed), installed the kmods on top of my existing 
> 18.06 build and rebooted.
> Initially it seemed fine, although the connection seemed a bit laggy at 
> first but that stabilised. My smartphone then just disconnected after 
> an hour (router uptime 1:15' +-) and the AP was not visible anymore 
> despite 'wifi status radio0' saying it was still up. Dmesg was 
> completely silent (nothing related to mt76 or the AP dying).
> 
> 'Wifi reload' brought it back temporarily - it then only took a few 
> minutes to go down again though, for the AP to disappear again and this 
> second time the MCU timeout messages reappeared like in the bug report 
> on Flyspray.
> 
> I didn't have either of your previous patches applied (so 'vanilla' 
> mt76 2019-02-03). I'm rolling back to vanilla 18.06 + your ED/CCA patch 
> for now. If you need any other info/need me to test/check other things, 
> let me know. (I hope this is software and not dying hardware, I 
> wouldn't be able to tell the difference.)
> 
> Thanks for your help already so far.
Thanks for testing!
Does this issue happen for you only on 2.4 GHz, or also on 5 GHz?
My patches seem to have resolved the hang for at least one other user.
I suspect that this is way more likely to happen on 2.4 GHz because of
all the extra noise, so I'm considering disabling ED/CCA for 2.4 GHz.

- Felix

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From bjorn at mork.no  Thu Feb  7 09:08:28 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Thu, 07 Feb 2019 15:08:28 +0100
Subject: [OpenWrt-Devel] [LEDE-DEV] [PATCH 1/2] uqmi: add support for
 MBIM devices with QMI
In-Reply-To: <09bc01d4beee$3898f830$a9cae890$@net> (Mikael MiWire's message of
 "Thu, 7 Feb 2019 15:05:45 +0100")
References: <09bc01d4beee$3898f830$a9cae890$@net>
Message-ID: <87mun7bsir.fsf@miraculix.mork.no>

"Mikael MiWire" <mikael at miwire.net> writes:

> I?m looking for Bj?rn Mork as I have some question about the qmi interface.
>
> Do you have an email address to him?

It's in the driver :-)

But I prefer questions in public so I can answer in public.  Most
questions are relevant for others too.  And that's the only type of
question I'll answer anyway...


Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From foss at volatilesystems.org  Thu Feb  7 10:38:44 2019
From: foss at volatilesystems.org (Stijn Segers)
Date: Thu, 07 Feb 2019 16:38:44 +0100
Subject: [OpenWrt-Devel] mt76 issues on 18.06 HEAD - was: 18.06.2
 branching/builds
In-Reply-To: <06d72bf4-c365-83ce-f5a2-f707269fffc1@nbd.name>
References: <99D80534-25F0-4234-B4CA-84CC6C6C650F@volatilesystems.org>
 <2e2aae0e-59c1-d075-0826-0fa73c1bc56f@nbd.name>
 <1548888392.7653.0@volatilesystems.org>
 <1549130884.6819.0@volatilesystems.org>
 <3046ab8b-93c3-6404-94df-4812704d166d@nbd.name>
 <1549317466.2103.0@volatilesystems.org>
 <06d72bf4-c365-83ce-f5a2-f707269fffc1@nbd.name>
Message-ID: <2F47C848-D79C-4799-B836-59FCFC783434@volatilesystems.org>

Felix Fietkau <nbd at nbd.name> schreef op 7 februari 2019 14:30:51 CET:
>On 2019-02-04 22:57, Stijn Segers wrote:
>> 
>> 
>> Op zondag 3 februari 2019 om 14:54 schreef Felix Fietkau
><nbd at nbd.name>:
>>> On 2019-02-02 19:08, Stijn Segers wrote:
>>>>  Hi Felix,
>>>> 
>>>>  I built 18.06 HEAD with your 2019-01-30 bump, and with the
>>>>  mt76-disable-edcca.patch applied. That seemed very stable (up
>since
>>>>  30/01 evening, very high throughput - never seen anything close to
>
>>>> 50
>>>>  MBps on my 2x2 client before; I barely got close to 25 MBps 
>>>> before). No
>>>>  laggy feeling, so didn't check ping. Wireless wasn't used in the
>>>>  morning or the day, but I have tried to stress it in the evening
>>>>  (31/01) -transferred about 65 GiB of data over the WLAN (scp). No
>>>>  hiccups whatsoever.
>>>> 
>>>>  I then reverted to vanilla 18.06 HEAD 31/01, so none of the
>patches
>>>>  applied, and the connection kept working but page loading in the
>>>>  browser e.g. would occasionally be slow (nothing else chewing on
>my
>>>>  network connection). I checked ping, and it was all over the place
>>>>  again (from sub-milliseconds to 10 ms, occasionally 100ms to other
>>>>  devices on the LAN). I suppose there's no real value in those 
>>>> numbers,
>>>>  but it does quantify the feeling of the wireless 'choking' 
>>>> momentarily,
>>>>  then picking up again. After like half an hour, wireless would
>hang 
>>>> on
>>>>  my laptop: I was unable to ping anything, web pages stopped
>loading
>>>>  altogether. Same thing on my smartphone. However, when I disabled
>>>>  wireless on both clients, then turned it on again, the connection
>>>>  started working once more; that didn't happen on the previous mt76
>>>>  bumps. There the radio would just seem to die like explained in
>the 
>>>> bug
>>>>  report.
>>> Thanks, that information was very helpful. Did you run those tests
>on
>>> 2.4 GHz or 5 GHz?
>> 
>> Hi Felix,
>> 
>> 5 GHz only (I don't use the 2,4 GHz radio).
>> 
>> 
>>> 
>>>>  Since that hang already happened within the hour, I ran a new
>build
>>>>  with the most recent mt76 bump (2019-01-31) together with the 
>>>> 'disable
>>>>  edcca' patch. That has been working fine so far (although I'm not
>>>>  hitting 50 MBps anymore :-P ). It's been up since Friday
>afternoon, 
>>>> so
>>>>  almost 30 hours now. The radio gets shut down at night, but I've 
>>>> been
>>>>  using it for hours and no issues as far as I can tell.
>>>> 
>>>>  Do you want me to try the second patch, or is this OK
>>> No need. I've pushed a whole bunch of ED/CCA related patches to 
>>> mt76.git
>>> (haven't bumped OpenWrt git yet).
>>> Could you please test that latest version (commit
>>> e301f2349a191c845b6bd2d487e64591ac2ed64d)?
>> 
>> I just rebuilt your 2019-02-03 bump (copied the Makefile from master
>to 
>> the 18.06 package feed), installed the kmods on top of my existing 
>> 18.06 build and rebooted.
>> Initially it seemed fine, although the connection seemed a bit laggy
>at 
>> first but that stabilised. My smartphone then just disconnected after
>
>> an hour (router uptime 1:15' +-) and the AP was not visible anymore 
>> despite 'wifi status radio0' saying it was still up. Dmesg was 
>> completely silent (nothing related to mt76 or the AP dying).
>> 
>> 'Wifi reload' brought it back temporarily - it then only took a few 
>> minutes to go down again though, for the AP to disappear again and
>this 
>> second time the MCU timeout messages reappeared like in the bug
>report 
>> on Flyspray.
>> 
>> I didn't have either of your previous patches applied (so 'vanilla' 
>> mt76 2019-02-03). I'm rolling back to vanilla 18.06 + your ED/CCA
>patch 
>> for now. If you need any other info/need me to test/check other
>things, 
>> let me know. (I hope this is software and not dying hardware, I 
>> wouldn't be able to tell the difference.)
>> 
>> Thanks for your help already so far.
>Thanks for testing!
>Does this issue happen for you only on 2.4 GHz, or also on 5 GHz?
>My patches seem to have resolved the hang for at least one other user.
>I suspect that this is way more likely to happen on 2.4 GHz because of
>all the extra noise, so I'm considering disabling ED/CCA for 2.4 GHz.
>
>- Felix

Hi Felix,

I don't know I'd my reply got caught in the chain or if you read it the other way around - but I'm only using 5 GHz.

Cheers

Stijn


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From alin.nastac at gmail.com  Thu Feb  7 11:13:30 2019
From: alin.nastac at gmail.com (Alin Nastac)
Date: Thu,  7 Feb 2019 17:13:30 +0100
Subject: [OpenWrt-Devel] [PATCH] ipset: add support for hash(ip,mac)
Message-ID: <1549556010-15159-1-git-send-email-alin.nastac@gmail.com>

Signed-off-by: Alin Nastac <alin.nastac at gmail.com>
---
 package/kernel/linux/modules/netfilter.mk | 1 +
 1 file changed, 1 insertion(+)

diff --git a/package/kernel/linux/modules/netfilter.mk b/package/kernel/linux/modules/netfilter.mk
index 25715be..ef17524 100644
--- a/package/kernel/linux/modules/netfilter.mk
+++ b/package/kernel/linux/modules/netfilter.mk
@@ -334,6 +334,7 @@ define KernelPackage/ipt-ipset
 	CONFIG_IP_SET_HASH_IPPORT \
 	CONFIG_IP_SET_HASH_IPPORTIP \
 	CONFIG_IP_SET_HASH_IPPORTNET \
+	CONFIG_IP_SET_HASH_IPMAC \
 	CONFIG_IP_SET_HASH_MAC \
 	CONFIG_IP_SET_HASH_NET \
 	CONFIG_IP_SET_HASH_NETNET \
-- 
2.7.4


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From lede at allycomm.com  Thu Feb  7 12:15:13 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Thu, 7 Feb 2019 09:15:13 -0800
Subject: [OpenWrt-Devel] Importing DTS Files from Future Kernel -- Best
 Practice?
Message-ID: <40d29e33-2f2d-430c-7acf-430cece4043a@wagsky.com>

I'm working on a derivative of the qcom-ipq4019-ap.dk07.1-c1 that
is present in Kernel 4.19, but not in 4.14

In the interest of "correctness" and future maintainability,
I'd like to import from Kernel 4.19 linux/arch/arm/boot/dts/

* qcom-ipq4019-ap.dk07.1-c1.dts
* qcom-ipq4019-ap.dk07.1.dtsi

and use the upstream sources as #include in the EA8300 DTS
rather than the monolithic approach used in a previously
declined patch set for the device.

I can see a couple ways of doing this:

* target/linux/ipq40xx/patches-4.14/ -- patch in the entire files
* target/linux/ipq40xx/files-4.14/?? -- add the files directly

Which is the preference of the project, or is there another approach?

Jeff





_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb  7 14:47:07 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu,  7 Feb 2019 20:47:07 +0100
Subject: [OpenWrt-Devel] [PATCH 1/2] gemini: Fix typo
Message-ID: <20190207194707.22165-1-linus.walleij@linaro.org>

It's kmod-ledtrig-* not kmod-led-trig-*.

Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 target/linux/gemini/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/gemini/Makefile b/target/linux/gemini/Makefile
index 03f0fdbb1d6c..38a4f254de4a 100644
--- a/target/linux/gemini/Makefile
+++ b/target/linux/gemini/Makefile
@@ -26,7 +26,7 @@ include $(INCLUDE_DIR)/target.mk
 DEFAULT_PACKAGES += \
 	kmod-usb-core kmod-usb-fotg210 \
 	kmod-usb-ledtrig-usbport \
-	kmod-leds-gpio kmod-led-trig-heartbeat \
+	kmod-leds-gpio kmod-ledtrig-heartbeat \
 	kmod-gpio-button-hotplug
 
 $(eval $(call BuildTarget))
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb  7 14:47:07 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu,  7 Feb 2019 20:47:07 +0100
Subject: [OpenWrt-Devel] [PATCH 1/2] gemini: Fix typo
Message-ID: <20190207194707.22165-1-linus.walleij@linaro.org>

It's kmod-ledtrig-* not kmod-led-trig-*.

Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 target/linux/gemini/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/gemini/Makefile b/target/linux/gemini/Makefile
index 03f0fdbb1d6c..38a4f254de4a 100644
--- a/target/linux/gemini/Makefile
+++ b/target/linux/gemini/Makefile
@@ -26,7 +26,7 @@ include $(INCLUDE_DIR)/target.mk
 DEFAULT_PACKAGES += \
 	kmod-usb-core kmod-usb-fotg210 \
 	kmod-usb-ledtrig-usbport \
-	kmod-leds-gpio kmod-led-trig-heartbeat \
+	kmod-leds-gpio kmod-ledtrig-heartbeat \
 	kmod-gpio-button-hotplug
 
 $(eval $(call BuildTarget))
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb  7 14:47:15 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu,  7 Feb 2019 20:47:15 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] gemini: Name binary "bootpart.tar.gz"
Message-ID: <20190207194715.22224-1-linus.walleij@linaro.org>

This factory binary i supposed to actually be unzipped and
untarred by the user as part of the installation process
(this NAS boots from harddisk), so name it "bootpart.tar.gz"
and not "factory.bin" so it is helpful for users.

Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 target/linux/gemini/image/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
index 21a375d75307..1ec1b095023c 100644
--- a/target/linux/gemini/image/Makefile
+++ b/target/linux/gemini/image/Makefile
@@ -123,8 +123,8 @@ define Device/dlink_dns-313
 	DEVICE_TITLE := D-Link DNS-313 1-Bay Network Storage Enclosure
 	DEVICE_DTS := gemini-dlink-dns-313
 	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
-	IMAGES := factory.bin
-	IMAGE/factory.bin := dns313-images
+	IMAGES := bootpart.tar.gz
+	IMAGE/bootpart.tar.gz := dns313-images
 endef
 TARGET_DEVICES += dlink_dns-313
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb  7 14:47:15 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu,  7 Feb 2019 20:47:15 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] gemini: Name binary "bootpart.tar.gz"
Message-ID: <20190207194715.22224-1-linus.walleij@linaro.org>

This factory binary i supposed to actually be unzipped and
untarred by the user as part of the installation process
(this NAS boots from harddisk), so name it "bootpart.tar.gz"
and not "factory.bin" so it is helpful for users.

Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 target/linux/gemini/image/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
index 21a375d75307..1ec1b095023c 100644
--- a/target/linux/gemini/image/Makefile
+++ b/target/linux/gemini/image/Makefile
@@ -123,8 +123,8 @@ define Device/dlink_dns-313
 	DEVICE_TITLE := D-Link DNS-313 1-Bay Network Storage Enclosure
 	DEVICE_DTS := gemini-dlink-dns-313
 	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
-	IMAGES := factory.bin
-	IMAGE/factory.bin := dns313-images
+	IMAGES := bootpart.tar.gz
+	IMAGE/bootpart.tar.gz := dns313-images
 endef
 TARGET_DEVICES += dlink_dns-313
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ikegami_to at yahoo.co.jp  Thu Feb  7 15:38:03 2019
From: ikegami_to at yahoo.co.jp (Tokunori Ikegami)
Date: Fri,  8 Feb 2019 05:38:03 +0900
Subject: [OpenWrt-Devel] [PATCH v2 0/1] ar71xx: Remove mtd cfi_cmdset_0002
 force word write patch
Message-ID: <20190207203804.18210-1-ikegami_to@yahoo.co.jp>

On linux upstream it is under working to apply the patch to chagne use chip_good().
The patch is base on the mtd fix cfi_cmdset_0002 status check in OpenWrt.
Also it is related to the OpenWrt issue below.
  <https://forum.openwrt.org/t/impossible-to-install-update-any-packages-on-wzr-hp-g300nh-18-06-1/21666>

For the investigation it was confimred as that the buffer write works correctly.
Currently the patches are tested on the Buffalo WZR-HP-G300NH WiFi router.
And the mtd cfi_cmdset_0002 driver itself works correctly with the patches.

But currently JFFS2 file system seems does not work correctly.
And it is not depended on the patches so it is caused without the patches also.
The remaining issue will be investigated separately.

Signed-off-by: Tokunori Ikegami <ikegami_to at yahoo.co.jp>
Cc: Felix Fietkau <nbd at nbd.name>
Cc: openwrt-devel at lists.openwrt.org

Tokunori Ikegami (1):
  ar71xx: Remove mtd cfi_cmdset_0002 force word write patch

 .../411-mtd-cfi_cmdset_0002-force-word-write.patch | 61 ----------------------
 1 file changed, 61 deletions(-)
 delete mode 100644 target/linux/ar71xx/patches-4.14/411-mtd-cfi_cmdset_0002-force-word-write.patch

-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ikegami_to at yahoo.co.jp  Thu Feb  7 15:38:04 2019
From: ikegami_to at yahoo.co.jp (Tokunori Ikegami)
Date: Fri,  8 Feb 2019 05:38:04 +0900
Subject: [OpenWrt-Devel] [PATCH v2 1/1] ar71xx: Remove mtd cfi_cmdset_0002
 force word write patch
In-Reply-To: <20190207203804.18210-1-ikegami_to@yahoo.co.jp>
References: <20190207203804.18210-1-ikegami_to@yahoo.co.jp>
Message-ID: <20190207203804.18210-2-ikegami_to@yahoo.co.jp>

Currently the buffer write works as same with word write correctly.
So it looks that it is not necessary to force word write.
Also the write performance will be improved by the change to buffer write.

Signed-off-by: Tokunori Ikegami <ikegami_to at yahoo.co.jp>
Cc: Felix Fietkau <nbd at nbd.name>
Cc: openwrt-devel at lists.openwrt.org
---
 .../411-mtd-cfi_cmdset_0002-force-word-write.patch | 61 ----------------------
 1 file changed, 61 deletions(-)
 delete mode 100644 target/linux/ar71xx/patches-4.14/411-mtd-cfi_cmdset_0002-force-word-write.patch

diff --git a/target/linux/ar71xx/patches-4.14/411-mtd-cfi_cmdset_0002-force-word-write.patch b/target/linux/ar71xx/patches-4.14/411-mtd-cfi_cmdset_0002-force-word-write.patch
deleted file mode 100644
index 3862dfd14b..0000000000
--- a/target/linux/ar71xx/patches-4.14/411-mtd-cfi_cmdset_0002-force-word-write.patch
+++ /dev/null
@@ -1,61 +0,0 @@
---- a/drivers/mtd/chips/cfi_cmdset_0002.c
-+++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -40,7 +40,7 @@
- #include <linux/mtd/xip.h>
- 
- #define AMD_BOOTLOC_BUG
--#define FORCE_WORD_WRITE 0
-+#define FORCE_WORD_WRITE 1
- 
- #define MAX_RETRIES 3
- 
-@@ -51,7 +51,9 @@
- 
- static int cfi_amdstd_read (struct mtd_info *, loff_t, size_t, size_t *, u_char *);
- static int cfi_amdstd_write_words(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
-+#if !FORCE_WORD_WRITE
- static int cfi_amdstd_write_buffers(struct mtd_info *, loff_t, size_t, size_t *, const u_char *);
-+#endif
- static int cfi_amdstd_erase_chip(struct mtd_info *, struct erase_info *);
- static int cfi_amdstd_erase_varsize(struct mtd_info *, struct erase_info *);
- static void cfi_amdstd_sync (struct mtd_info *);
-@@ -202,6 +204,7 @@ static void fixup_amd_bootblock(struct m
- }
- #endif
- 
-+#if !FORCE_WORD_WRITE
- static void fixup_use_write_buffers(struct mtd_info *mtd)
- {
- 	struct map_info *map = mtd->priv;
-@@ -211,6 +214,7 @@ static void fixup_use_write_buffers(stru
- 		mtd->_write = cfi_amdstd_write_buffers;
- 	}
- }
-+#endif /* !FORCE_WORD_WRITE */
- 
- /* Atmel chips don't use the same PRI format as AMD chips */
- static void fixup_convert_atmel_pri(struct mtd_info *mtd)
-@@ -1794,6 +1798,7 @@ static int cfi_amdstd_write_words(struct
- /*
-  * FIXME: interleaved mode not tested, and probably not supported!
-  */
-+#if !FORCE_WORD_WRITE
- static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
- 				    unsigned long adr, const u_char *buf,
- 				    int len)
-@@ -1922,7 +1927,6 @@ static int __xipram do_write_buffer(stru
- 	return ret;
- }
- 
--
- static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
- 				    size_t *retlen, const u_char *buf)
- {
-@@ -1997,6 +2001,7 @@ static int cfi_amdstd_write_buffers(stru
- 
- 	return 0;
- }
-+#endif /* !FORCE_WORD_WRITE */
- 
- /*
-  * Wait for the flash chip to become ready to write data
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From openwrt-devel at lists.openwrt.org  Thu Feb  7 16:30:08 2019
From: openwrt-devel at lists.openwrt.org (Alice Parrott via openwrt-devel)
Date: Thu, 07 Feb 2019 21:30:08 +0000
Subject: [OpenWrt-Devel] Embedded World Conference 2019
Message-ID: <mailman.19865.1549575008.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: "Alice Parrott" <alice.parrott at leads4expo.com>
Subject: Embedded World Conference 2019
Date: Thu, 7 Feb 2019 20:57:23 +0530
Size: 8459
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190207/ec795c5c/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From moritzwarning at web.de  Thu Feb  7 17:59:05 2019
From: moritzwarning at web.de (Moritz Warning)
Date: Thu, 7 Feb 2019 23:59:05 +0100
Subject: [OpenWrt-Devel] GSoC idea - feedback requested
Message-ID: <b37c7adb-6f7f-1f39-954a-4634cf5c822c@web.de>

Hi,

I have a proposal for a Google Summer of Code idea:

https://github.com/freifunk/projects.freifunk.net-contents/pull/30

Would this be a desired/good idea?

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From petrcvekcz at gmail.com  Fri Feb  8 03:23:11 2019
From: petrcvekcz at gmail.com (Petr Cvek)
Date: Fri, 8 Feb 2019 09:23:11 +0100
Subject: [OpenWrt-Devel] [BUG] lantiq: net: wrong operator
Message-ID: <b36ecdbf-6134-9707-45a8-783c3bbbb08a@gmail.com>

Hello,

There is a wrong code in 0025-NET-MIPS-lantiq-adds-xrx200-net.patch [1], the original code:

+	link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0010);
+	link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0020);

wants to mask the register value and is using a logical AND and not a bitwise AND. 

The fix should be:

+	link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0010);
+	link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0020);

References:
[1] https://github.com/openwrt/openwrt/blob/master/target/linux/lantiq/patches-4.14/0025-NET-MIPS-lantiq-adds-xrx200-net.patch#L937

Petr Cvek

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Fri Feb  8 07:00:07 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Fri, 08 Feb 2019 13:00:07 +0100
Subject: [OpenWrt-Devel] Importing DTS Files from Future Kernel -- Best
 Practice?
In-Reply-To: <40d29e33-2f2d-430c-7acf-430cece4043a@wagsky.com>
References: <40d29e33-2f2d-430c-7acf-430cece4043a@wagsky.com>
Message-ID: <2003820.qN37J0fbFp@debian64>

On Thursday, February 7, 2019 6:15:13 PM CET Jeff Kletsky wrote:
> I'm working on a derivative of the qcom-ipq4019-ap.dk07.1-c1 that
> is present in Kernel 4.19, but not in 4.14
> 
> In the interest of "correctness" and future maintainability,
> I'd like to import from Kernel 4.19 linux/arch/arm/boot/dts/
> 
> * qcom-ipq4019-ap.dk07.1-c1.dts
> * qcom-ipq4019-ap.dk07.1.dtsi
> 
> and use the upstream sources as #include in the EA8300 DTS
> rather than the monolithic approach used in a previously
> declined patch set for the device.

This is confusing. I hope you can help me there. I found two
PRs on github for this device: 
https://github.com/openwrt/openwrt/pull/1216

And later:
https://github.com/openwrt/openwrt/pull/1229

The last one got declined for other reason than the DTS namely:
" * merge commits need to be removed
  * each patch should contain only 1 change and have a clean
    prefixed subject line and description body
  * at first glance there were several white space errors (spaces vs tabs)
  * why do you reintroduce the msm bus support patch ?"


> I can see a couple ways of doing this:
> 
> * target/linux/ipq40xx/patches-4.14/ -- patch in the entire files
> * target/linux/ipq40xx/files-4.14/   -- add the files directly
> 
> Which is the preference of the project, or is there another approach?

My advice for including one of the reference board dts(i) is: "please don't".

If you look in the openwrt.git, you'll find that I did this initially
too. However, I came around because I wasn't aware that the upstream
qcom-ipq40$x$y-ap.dk0$z.$v-c$w.dts and qcom-ipq40$x$y-ap.dk0$z.dtsi are
pretty much out of your control. You can end up in constant conflict with
other (un-)related devices that snuck in changes into the included
device-tree sources that break your device.

So if you want to start over, just do the minimum and include
"qcom-ipq4019.dtsi". in the hopes that upstream will leave it
mostly alone. 

(Though, this is not 100%. Because as a matter of fact upstream
added board-specifc button and leds definition into the
qcom-ipq8064.dtsi. This will be fun to deal with).

Note: Adding includes for dt-bindings headers (like for platform,
gpio or input codes) is totally fine.

Cheers,
Christian




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From petrcvekcz at gmail.com  Fri Feb  8 08:10:51 2019
From: petrcvekcz at gmail.com (Petr Cvek)
Date: Fri, 8 Feb 2019 14:10:51 +0100
Subject: [OpenWrt-Devel] [RFC] [PATCH v2] lantiq: net: ethernet driver with
 fragments
Message-ID: <88e70713-aa5f-c339-0b60-02cb65dc8c9e@gmail.com>

I think I've managed to fix the backported driver from vanilla kernel. I
forgot to copy phy_start() call from original driver (that's probably
why it didn't work, I'm booting from NFS and from port 0, so it was
enabled already) and I've added the support for the skb fragments. This
seems to greatly increase the TX throughput.

In the addition it seems the DMA burst patch doesn't increase the
throughput anymore (TX is probably saturated now, and the code is
better), but the driver supports any burst mode now anyway (there was
just a problem with buffer alignment).

There were ring full events often, so I've increased the number of
descriptors from 0x40 to 0xc0 and changed the timeout. Maybe it should
work better if the queue is stopped around 50% or something like that.

Attached:
0904...		- new driver
0905...		- descriptor increase
run.sh		- testing script, various iperf3 modes
vanilla...	- vanilla openwrt test
z4_hyst...	- new driver test (measured with previous patches for SMP ICU
and burst)

Petr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0904-backport-vanilla-eth-driver.patch
Type: text/x-patch
Size: 31648 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190208/ac1188b1/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0905-increase-dma-descriptors.patch
Type: text/x-patch
Size: 614 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190208/ac1188b1/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run.sh
Type: application/x-shellscript
Size: 726 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190208/ac1188b1/attachment-0002.bin>
-------------- next part --------------
+ : ':::::::[' configuration vanilla ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51814 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.2 MBytes   178 Mbits/sec   27   72.1 KBytes       
[  4]   1.00-2.00   sec  20.6 MBytes   173 Mbits/sec   29   70.7 KBytes       
[  4]   2.00-3.00   sec  20.8 MBytes   174 Mbits/sec   35   60.8 KBytes       
[  4]   3.00-4.00   sec  20.8 MBytes   174 Mbits/sec   29   73.5 KBytes       
[  4]   4.00-5.00   sec  20.8 MBytes   174 Mbits/sec   32   70.7 KBytes       
[  4]   5.00-6.00   sec  20.7 MBytes   174 Mbits/sec   35   69.3 KBytes       
[  4]   6.00-7.00   sec  20.8 MBytes   174 Mbits/sec   36   60.8 KBytes       
[  4]   7.00-8.00   sec  20.8 MBytes   175 Mbits/sec   29   59.4 KBytes       
[  4]   8.00-9.00   sec  20.8 MBytes   175 Mbits/sec   41   46.7 KBytes       
[  4]   9.00-10.00  sec  20.8 MBytes   175 Mbits/sec   28   50.9 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec  321             sender
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51862 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.63 MBytes  80.7 Mbits/sec                  
[  4]   1.00-2.00   sec  9.65 MBytes  81.0 Mbits/sec                  
[  4]   2.00-3.00   sec  9.52 MBytes  79.9 Mbits/sec                  
[  4]   3.00-4.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   4.00-5.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   5.00-6.00   sec  9.66 MBytes  81.0 Mbits/sec                  
[  4]   6.00-7.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   7.00-8.00   sec  9.70 MBytes  81.4 Mbits/sec                  
[  4]   8.00-9.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   9.00-10.00  sec  9.79 MBytes  82.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51957 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2101  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   8.00-9.00   sec  17.8 MBytes   150 Mbits/sec  2282  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2292  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  136434.385 ms  1349/1417 (95%)  
[  4] Sent 1417 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 46317 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.7 MBytes   124 Mbits/sec  0.077 ms  0/1885 (0%)  
[  4]   1.00-2.00   sec  15.2 MBytes   127 Mbits/sec  0.072 ms  0/1942 (0%)  
[  4]   2.00-3.00   sec  15.0 MBytes   126 Mbits/sec  0.074 ms  0/1924 (0%)  
[  4]   3.00-4.00   sec  14.3 MBytes   120 Mbits/sec  0.080 ms  0/1825 (0%)  
[  4]   4.00-5.00   sec  14.4 MBytes   120 Mbits/sec  0.079 ms  0/1837 (0%)  
[  4]   5.00-6.00   sec  14.8 MBytes   124 Mbits/sec  0.065 ms  0/1888 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1956 (0%)  
[  4]   7.00-8.00   sec  15.2 MBytes   128 Mbits/sec  0.095 ms  0/1948 (0%)  
[  4]   8.00-9.00   sec  15.1 MBytes   127 Mbits/sec  0.092 ms  0/1932 (0%)  
[  4]   9.00-10.00  sec  15.1 MBytes   127 Mbits/sec  0.095 ms  0/1938 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   149 MBytes   125 Mbits/sec  0.085 ms  0/19082 (0%)  
[  4] Sent 19082 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 48172 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  58.5 MBytes   491 Mbits/sec  7494  
[  4]   1.00-2.00   sec  60.6 MBytes   508 Mbits/sec  7756  
[  4]   2.00-3.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   3.00-4.00   sec  60.2 MBytes   505 Mbits/sec  7710  
[  4]   4.00-5.00   sec  59.0 MBytes   495 Mbits/sec  7556  
[  4]   5.00-6.00   sec  60.5 MBytes   508 Mbits/sec  7744  
[  4]   6.00-7.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   7.00-8.00   sec  59.1 MBytes   496 Mbits/sec  7565  
[  4]   8.00-9.00   sec  60.4 MBytes   507 Mbits/sec  7730  
[  4]   9.00-10.00  sec  59.9 MBytes   502 Mbits/sec  7664  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  2051749.337 ms  64268/64294 (1e+02%)  
[  4] Sent 64294 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 35361 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.097 ms  0/1830 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.101 ms  0/1830 (0%)  
[  4]   2.00-3.00   sec  14.3 MBytes   120 Mbits/sec  0.072 ms  0/1827 (0%)  
[  4]   3.00-4.00   sec  14.2 MBytes   119 Mbits/sec  0.081 ms  0/1819 (0%)  
[  4]   4.00-5.00   sec  14.3 MBytes   120 Mbits/sec  0.070 ms  0/1834 (0%)  
[  4]   5.00-6.00   sec  14.3 MBytes   120 Mbits/sec  0.085 ms  0/1833 (0%)  
[  4]   6.00-7.00   sec  14.3 MBytes   120 Mbits/sec  0.082 ms  0/1835 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.109 ms  0/1836 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.080 ms  0/1822 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.090 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   143 MBytes   120 Mbits/sec  0.104 ms  0/18298 (0%)  
[  4] Sent 18298 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 53231 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   1.00-2.00   sec   107 MBytes   896 Mbits/sec  13675  
[  4]   2.00-3.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   3.00-4.00   sec   107 MBytes   898 Mbits/sec  13700  
[  4]   4.00-5.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   5.00-6.00   sec   108 MBytes   902 Mbits/sec  13762  
[  4]   6.00-7.00   sec   107 MBytes   899 Mbits/sec  13719  
[  4]   7.00-8.00   sec   108 MBytes   902 Mbits/sec  13760  
[  4]   8.00-9.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   9.00-10.00  sec   107 MBytes   902 Mbits/sec  13756  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.05 GBytes   900 Mbits/sec  5762140.265 ms  210/220 (95%)  
[  4] Sent 220 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 34296 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.084 ms  0/1835 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.075 ms  0/1835 (0%)  
[  4]   2.00-3.00   sec  14.5 MBytes   122 Mbits/sec  0.062 ms  0/1858 (0%)  
[  4]   3.00-4.00   sec  15.1 MBytes   127 Mbits/sec  0.060 ms  0/1935 (0%)  
[  4]   4.00-5.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1958 (0%)  
[  4]   5.00-6.00   sec  14.5 MBytes   122 Mbits/sec  0.078 ms  0/1861 (0%)  
[  4]   6.00-7.00   sec  14.4 MBytes   120 Mbits/sec  0.100 ms  0/1837 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.098 ms  0/1835 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.085 ms  0/1821 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.110 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   145 MBytes   122 Mbits/sec  0.101 ms  0/18606 (0%)  
[  4] Sent 18606 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 52130 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52132 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52134 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  7.47 MBytes  62.6 Mbits/sec   73   17.0 KBytes       
[  6]   0.00-1.00   sec  7.21 MBytes  60.5 Mbits/sec   78   19.8 KBytes       
[  9]   0.00-1.00   sec  7.14 MBytes  59.9 Mbits/sec   76   31.1 KBytes       
[SUM]   0.00-1.00   sec  21.8 MBytes   183 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.95 MBytes  66.7 Mbits/sec   61   12.7 KBytes       
[  6]   1.00-2.00   sec  5.84 MBytes  49.0 Mbits/sec   99   35.4 KBytes       
[  9]   1.00-2.00   sec  7.08 MBytes  59.4 Mbits/sec   78   32.5 KBytes       
[SUM]   1.00-2.00   sec  20.9 MBytes   175 Mbits/sec  238             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   73   31.1 KBytes       
[  6]   2.00-3.00   sec  8.95 MBytes  75.1 Mbits/sec   64   22.6 KBytes       
[  9]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   81   18.4 KBytes       
[SUM]   2.00-3.00   sec  21.1 MBytes   177 Mbits/sec  218             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  6.71 MBytes  56.3 Mbits/sec   80   11.3 KBytes       
[  6]   3.00-4.00   sec  8.26 MBytes  69.3 Mbits/sec   76   17.0 KBytes       
[  9]   3.00-4.00   sec  6.28 MBytes  52.7 Mbits/sec   77   42.4 KBytes       
[SUM]   3.00-4.00   sec  21.3 MBytes   178 Mbits/sec  233             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  6.59 MBytes  55.3 Mbits/sec   94   12.7 KBytes       
[  6]   4.00-5.00   sec  7.58 MBytes  63.6 Mbits/sec   63   28.3 KBytes       
[  9]   4.00-5.00   sec  6.84 MBytes  57.3 Mbits/sec   62   11.3 KBytes       
[SUM]   4.00-5.00   sec  21.0 MBytes   176 Mbits/sec  219             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  8.76 MBytes  73.5 Mbits/sec   57   22.6 KBytes       
[  6]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   80   38.2 KBytes       
[  9]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   90   7.07 KBytes       
[SUM]   5.00-6.00   sec  21.3 MBytes   179 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.33 MBytes  61.5 Mbits/sec   72   18.4 KBytes       
[  6]   6.00-7.00   sec  7.02 MBytes  58.9 Mbits/sec   66   35.4 KBytes       
[  9]   6.00-7.00   sec  6.77 MBytes  56.8 Mbits/sec   67   17.0 KBytes       
[SUM]   6.00-7.00   sec  21.1 MBytes   177 Mbits/sec  205             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  8.45 MBytes  70.9 Mbits/sec   72   25.5 KBytes       
[  6]   7.00-8.00   sec  6.71 MBytes  56.3 Mbits/sec   82   35.4 KBytes       
[  9]   7.00-8.00   sec  5.90 MBytes  49.5 Mbits/sec   74   17.0 KBytes       
[SUM]   7.00-8.00   sec  21.1 MBytes   177 Mbits/sec  228             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  6.46 MBytes  54.2 Mbits/sec   77   36.8 KBytes       
[  6]   8.00-9.00   sec  6.90 MBytes  57.9 Mbits/sec   78   11.3 KBytes       
[  9]   8.00-9.00   sec  7.89 MBytes  66.2 Mbits/sec   68   11.3 KBytes       
[SUM]   8.00-9.00   sec  21.3 MBytes   178 Mbits/sec  223             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  6.59 MBytes  55.3 Mbits/sec   79   38.2 KBytes       
[  6]   9.00-10.00  sec  8.76 MBytes  73.5 Mbits/sec   58   24.0 KBytes       
[  9]   9.00-10.00  sec  5.72 MBytes  48.0 Mbits/sec   77   7.07 KBytes       
[SUM]   9.00-10.00  sec  21.1 MBytes   177 Mbits/sec  214             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  72.4 MBytes  60.7 Mbits/sec  738             sender
[  4]   0.00-10.00  sec  72.0 MBytes  60.4 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  73.5 MBytes  61.7 Mbits/sec  744             sender
[  6]   0.00-10.00  sec  73.2 MBytes  61.4 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  66.0 MBytes  55.4 Mbits/sec  750             sender
[  9]   0.00-10.00  sec  65.6 MBytes  55.1 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   212 MBytes   178 Mbits/sec  2232             sender
[SUM]   0.00-10.00  sec   211 MBytes   177 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 52178 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52180 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52182 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.03 MBytes  33.8 Mbits/sec                  
[  6]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec                  
[  9]   0.00-1.00   sec  2.79 MBytes  23.4 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   1.00-2.00   sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.72 MBytes  81.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   2.00-3.00   sec  3.30 MBytes  27.6 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.80 MBytes  82.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   3.00-4.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   3.00-4.00   sec  3.19 MBytes  26.8 Mbits/sec                  
[SUM]   3.00-4.00   sec  9.57 MBytes  80.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  2.22 MBytes  18.6 Mbits/sec                  
[  6]   4.00-5.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[  9]   4.00-5.00   sec  2.28 MBytes  19.2 Mbits/sec                  
[SUM]   4.00-5.00   sec  6.88 MBytes  57.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.30 MBytes  27.7 Mbits/sec                  
[  6]   5.00-6.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  9]   5.00-6.00   sec  3.18 MBytes  26.7 Mbits/sec                  
[SUM]   5.00-6.00   sec  9.85 MBytes  82.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  2.99 MBytes  25.1 Mbits/sec                  
[  6]   6.00-7.00   sec  2.88 MBytes  24.1 Mbits/sec                  
[  9]   6.00-7.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[SUM]   6.00-7.00   sec  8.87 MBytes  74.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.14 MBytes  26.3 Mbits/sec                  
[  6]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.64 MBytes  80.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.25 MBytes  27.2 Mbits/sec                  
[  6]   8.00-9.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   8.00-9.00   sec  3.16 MBytes  26.5 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.65 MBytes  81.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   9.00-10.00  sec  3.21 MBytes  26.9 Mbits/sec                  
[  9]   9.00-10.00  sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.68 MBytes  81.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 36791 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51969 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 39473 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  6]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  9]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[SUM]   0.00-1.00   sec   114 MBytes   958 Mbits/sec  14613  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  6]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  9]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[SUM]   4.00-5.00   sec   114 MBytes   956 Mbits/sec  14592  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  6]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  9]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[SUM]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14628  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  6]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  9]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[SUM]   9.00-10.00  sec   114 MBytes   955 Mbits/sec  14568  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.391 ms  0/3 (0%)  
[  4] Sent 3 datagrams
[  6]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.281 ms  0/3 (0%)  
[  6] Sent 3 datagrams
[  9]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.181 ms  0/3 (0%)  
[  9] Sent 3 datagrams
[SUM]   0.00-10.00  sec  1.11 GBytes   958 Mbits/sec  9052841.285 ms  0/9 (0%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 43263 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 49331 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60542 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.156 ms  0/630 (0%)  
[  6]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.170 ms  0/630 (0%)  
[  9]   0.00-1.00   sec  4.91 MBytes  41.2 Mbits/sec  0.237 ms  0/629 (0%)  
[SUM]   0.00-1.00   sec  14.8 MBytes   124 Mbits/sec  0.188 ms  0/1889 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.92 MBytes  41.3 Mbits/sec  0.173 ms  0/630 (0%)  
[  6]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.191 ms  0/629 (0%)  
[  9]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.192 ms  0/629 (0%)  
[SUM]   1.00-2.00   sec  14.8 MBytes   124 Mbits/sec  0.185 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.96 MBytes  41.6 Mbits/sec  0.246 ms  0/635 (0%)  
[  6]   2.00-3.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[  9]   2.00-3.00   sec  4.95 MBytes  41.5 Mbits/sec  0.232 ms  0/634 (0%)  
[SUM]   2.00-3.00   sec  14.9 MBytes   125 Mbits/sec  0.215 ms  0/1905 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.189 ms  0/636 (0%)  
[  6]   3.00-4.00   sec  4.96 MBytes  41.6 Mbits/sec  0.121 ms  0/635 (0%)  
[  9]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.195 ms  0/636 (0%)  
[SUM]   3.00-4.00   sec  14.9 MBytes   125 Mbits/sec  0.168 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.180 ms  0/636 (0%)  
[  6]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.185 ms  0/636 (0%)  
[  9]   4.00-5.00   sec  4.96 MBytes  41.6 Mbits/sec  0.132 ms  0/635 (0%)  
[SUM]   4.00-5.00   sec  14.9 MBytes   125 Mbits/sec  0.166 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.178 ms  0/636 (0%)  
[  6]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.209 ms  0/636 (0%)  
[  9]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[SUM]   5.00-6.00   sec  14.9 MBytes   125 Mbits/sec  0.185 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.141 ms  0/628 (0%)  
[  6]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.211 ms  0/628 (0%)  
[  9]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.152 ms  0/629 (0%)  
[SUM]   6.00-7.00   sec  14.7 MBytes   124 Mbits/sec  0.168 ms  0/1885 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  4.92 MBytes  41.3 Mbits/sec  0.290 ms  0/630 (0%)  
[  6]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.167 ms  0/629 (0%)  
[  9]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.367 ms  0/629 (0%)  
[SUM]   7.00-8.00   sec  14.8 MBytes   124 Mbits/sec  0.275 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.93 MBytes  41.4 Mbits/sec  0.147 ms  0/631 (0%)  
[  6]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.170 ms  0/628 (0%)  
[  9]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.137 ms  0/628 (0%)  
[SUM]   8.00-9.00   sec  14.7 MBytes   124 Mbits/sec  0.151 ms  0/1887 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  4.97 MBytes  41.7 Mbits/sec  0.215 ms  0/636 (0%)  
[  6]   9.00-10.00  sec  4.98 MBytes  41.7 Mbits/sec  0.150 ms  0/637 (0%)  
[  9]   9.00-10.00  sec  4.96 MBytes  41.6 Mbits/sec  0.272 ms  0/635 (0%)  
[SUM]   9.00-10.00  sec  14.9 MBytes   125 Mbits/sec  0.212 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.227 ms  0/6335 (0%)  
[  4] Sent 6335 datagrams
[  6]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.183 ms  0/6331 (0%)  
[  6] Sent 6331 datagrams
[  9]   0.00-10.00  sec  49.4 MBytes  41.5 Mbits/sec  0.261 ms  0/6327 (0%)  
[  9] Sent 6327 datagrams
[SUM]   0.00-10.00  sec   148 MBytes   124 Mbits/sec  0.224 ms  0/18993 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: z4_hyst.log
Type: text/x-log
Size: 27176 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190208/ac1188b1/attachment-0003.bin>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Fri Feb  8 10:05:08 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Fri, 8 Feb 2019 07:05:08 -0800
Subject: [OpenWrt-Devel] Importing DTS Files from Future Kernel -- Best
 Practice?
In-Reply-To: <2003820.qN37J0fbFp@debian64>
References: <40d29e33-2f2d-430c-7acf-430cece4043a@wagsky.com>
 <2003820.qN37J0fbFp@debian64>
Message-ID: <7c52f362-292d-0295-84cc-82379507f4ac@wagsky.com>


On 2/8/19 4:00 AM, Christian Lamparter wrote:
> On Thursday, February 7, 2019 6:15:13 PM CET Jeff Kletsky wrote:
>> I'm working on a derivative of the qcom-ipq4019-ap.dk07.1-c1 that
>> is present in Kernel 4.19, but not in 4.14
>>
>> In the interest of "correctness" and future maintainability,
>> I'd like to import from Kernel 4.19 linux/arch/arm/boot/dts/
>>
>> * qcom-ipq4019-ap.dk07.1-c1.dts
>> * qcom-ipq4019-ap.dk07.1.dtsi
>>
>> and use the upstream sources as #include in the EA8300 DTS
>> rather than the monolithic approach used in a previously
>> declined patch set for the device.
> This is confusing. I hope you can help me there. I found two
> PRs on github for this device:
> https://github.com/openwrt/openwrt/pull/1216
>
> And later:
> https://github.com/openwrt/openwrt/pull/1229
>
> The last one got declined for other reason than the DTS namely:
> " * merge commits need to be removed
>    * each patch should contain only 1 change and have a clean
>      prefixed subject line and description body
>    * at first glance there were several white space errors (spaces vs tabs)
>    * why do you reintroduce the msm bus support patch ?"
>

I was familiar with #1229 and the repo behind it, but did not know
about #1216 (same requester).

The line about the "msm bus support patch" puzzled me, as the context
wasn't clear to me, at least from the aggregated diffs.

I've got the groundwork done, based on the current state of the
`master` branch and reusing utilities introduced by the structurally
similar `linksys,ea6350v3`, to start work on the DTS for OpenWrt.
Between the Bunkerschild work and the surprisingly complete GPL drop
from Linksys (Linux 3.14.77), I think I'm in pretty good shape. Part
of me wants to try to extract the DTB from the OEM firmware or OEM
/proc/device-tree, but the other part of me wants to get it up and
running and back to trying to find the cause of the 802.11s regression.



> My advice for including one of the reference board dts(i) is: "please don't".
>
> If you look in the openwrt.git, you'll find that I did this initially
> too. However, I came around because I wasn't aware that the upstream
> qcom-ipq40$x$y-ap.dk0$z.$v-c$w.dts and qcom-ipq40$x$y-ap.dk0$z.dtsi are
> pretty much out of your control. You can end up in constant conflict with
> other (un-)related devices that snuck in changes into the included
> device-tree sources that break your device.
>
> So if you want to start over, just do the minimum and include
> "qcom-ipq4019.dtsi". in the hopes that upstream will leave it
> mostly alone.
>
> (Though, this is not 100%. Because as a matter of fact upstream
> added board-specifc button and leds definition into the
> qcom-ipq8064.dtsi. This will be fun to deal with).
>
> Note: Adding includes for dt-bindings headers (like for platform,
> gpio or input codes) is totally fine.



Thanks for the advice to "go standalone" rather than trust the
stability of upstream DTS definitions.? I didn't know that they
changed significantly.

At least these "upstream" definitions that come as a result of #include
are overridden by later statements including /delete-property/ and
/delete-node/.? Big trick is *finding* those changes before they cause
ill-behaved systems or other breakage.



>
> Cheers,
> Christian
>

Thanks again!

Jeff


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From daniel.engberg.lists at pyret.net  Sat Feb  9 03:15:48 2019
From: daniel.engberg.lists at pyret.net (Daniel Engberg)
Date: Sat, 09 Feb 2019 09:15:48 +0100
Subject: [OpenWrt-Devel] Cleanup in 4.19 generic kernel config?
Message-ID: <90eb2aac9caad5eb4a66fdec7d0aef35@pyret.net>

Hi,

After my attempt getting Linux 4.19 working for the Octeon target
I started to look at the generic configuration for 4.19 and it
seems that there are quite a bit of target specific options listed
and potentially generating larger kernels than necessary.
Given that some options are incorrect for certain targets I assume
that they get overridden and/or ignored. Unless I misunderstand
how the Linux kernel configuration works =y is equivalent to always
compiled into kernel?

I'm taking about this file by the way:
https://github.com/openwrt/openwrt/blob/master/target/linux/generic/config-4.19

Should be set by target? Shouldn't coexist with CONFIG_64BIT as
far as I can tell.
CONFIG_32BIT=y

ARM specific, should be set by target?
CONFIG_ARM_CPU_TOPOLOGY=y
CONFIG_ARM_DMA_MEM_BUFFERABLE=y
CONFIG_ARM_GIC_MAX_NR=1

Target specific, no need to have it enabled by default and/or
possibly at all?
CONFIG_ATA_BMDMA=y
CONFIG_ATA_SFF=y

Seems to be defined by default?
CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
https://github.com/torvalds/linux/blob/master/drivers/block/Kconfig#L217

Should be set by target?
CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3

Debug option - Adds unnecessary overhead?
CONFIG_BRANCH_PROFILE_NONE=y
https://cateee.net/lkddb/web-lkddb/BRANCH_PROFILE_NONE.html

Should be set by target (ARM)?
CONFIG_CACHE_L2X0_PMU=y

Should be set by target, why is it enabled in 2019?
CONFIG_CARDBUS=y

Should be set by target (seems x86/64x specific)?
CONFIG_DOUBLEFAULT=y

Gets defined automatically based on target/platform?
CONFIG_HZ=100
CONFIG_HZ_100=y

Already default?
CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
https://cateee.net/lkddb/web-lkddb/IIO_CONSUMERS_PER_TRIGGER.html

Why?
CONFIG_ISDN=y
CONFIG_JOLIET=y

Should be set by target (ARM)?
CONFIG_KERNEL_MODE_NEON=y

Set Page_Size by target?
CONFIG_PAGE_SIZE_4KB=y
CONFIG_PPC_4K_PAGES=y

Already default?
CONFIG_PWRSEQ_EMMC=y
https://cateee.net/lkddb/web-lkddb/PWRSEQ_EMMC.html

Default 21 isn't enough?
CONFIG_RCU_CPU_STALL_TIMEOUT=60

Needed for?
CONFIG_RXKAD=y

Obsolete?
CONFIG_SLABINFO=y

Shouldn't be default and/or platform specific?
CONFIG_SND_X86=y

Needed for?
CONFIG_USB_ARMLINUX=y
CONFIG_USB_BELKIN=y

Platform specific?
CONFIG_USB_OHCI_LITTLE_ENDIAN=y

Platform specific?
CONFIG_X86_SYSFB=y

Best regads,
Daniel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mauro at ezplanet.org  Sat Feb  9 10:00:27 2019
From: mauro at ezplanet.org (Mauro Mozzarelli)
Date: Sat, 9 Feb 2019 15:00:27 +0000
Subject: [OpenWrt-Devel] Issue with broaband led pppoa-wan device
Message-ID: <ea040af1-3406-bea2-435b-2af3001a7b07@ezplanet.org>

I have BT Home Hub 5 routers.

I have just built release 9290.

Something happened to the broadband LED configuration between release 
8495 and 9290

In 9290 LED associated to device pppoa-wan no longer works (it remains 
off once the pppoa-wan connection is established), however if, after 
having established the pppoa-wan communication, I apply the exact same 
configuration (through luci), the LED starts working normally until the 
line state changes again.


Here is my LED configuration for the broadband LED:

config led 'led_internet'
 ??? option name 'internet'
 ??? option sysfs 'bthomehubv5a:blue:broadband'
 ??? option trigger 'netdev'
 ??? option mode 'link tx rx'
 ??? option default '0'
 ??? option dev 'pppoa-wan'

config led 'led_dsl'
 ??? option name 'dsl'
 ??? option trigger 'netdev'
 ??? option sysfs 'bthomehubv5a:red:broadband'
 ??? option default '0'
 ??? option dev 'dsl0'
 ??? option mode 'link'


The normal expected behaviour is: the broadband LED blinks RED whilst 
the DSL link is negoatiated.

Once the DSL link is established and pppoa-wan starts, the LED turns 
BLUE and it blinks during packet exchanges.


led_dsl controls the red flashing whilst the dsl connection is negotiated

led_internet turns the led blue and blinking when the pppoa-wan 
connection is established.


Has something changed in the firmware that requires a configuration 
change, or is this a bug?





_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hauke at hauke-m.de  Sat Feb  9 10:58:02 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Sat, 9 Feb 2019 16:58:02 +0100
Subject: [OpenWrt-Devel] Issue with broaband led pppoa-wan device
In-Reply-To: <ea040af1-3406-bea2-435b-2af3001a7b07@ezplanet.org>
References: <ea040af1-3406-bea2-435b-2af3001a7b07@ezplanet.org>
Message-ID: <f073cd70-e8fd-2ea0-e6f3-bcbf4ec1a1d5@hauke-m.de>

On 2/9/19 4:00 PM, Mauro Mozzarelli wrote:
> I have BT Home Hub 5 routers.
> 
> I have just built release 9290.
> 
> Something happened to the broadband LED configuration between release
> 8495 and 9290
> 
> In 9290 LED associated to device pppoa-wan no longer works (it remains
> off once the pppoa-wan connection is established), however if, after
> having established the pppoa-wan communication, I apply the exact same
> configuration (through luci), the LED starts working normally until the
> line state changes again.
> 
> 
> Here is my LED configuration for the broadband LED:
> 
> config led 'led_internet'
> ??? option name 'internet'
> ??? option sysfs 'bthomehubv5a:blue:broadband'
> ??? option trigger 'netdev'
> ??? option mode 'link tx rx'
> ??? option default '0'
> ??? option dev 'pppoa-wan'
> 
> config led 'led_dsl'
> ??? option name 'dsl'
> ??? option trigger 'netdev'
> ??? option sysfs 'bthomehubv5a:red:broadband'
> ??? option default '0'
> ??? option dev 'dsl0'
> ??? option mode 'link'
> 
> 
> The normal expected behaviour is: the broadband LED blinks RED whilst
> the DSL link is negoatiated.
> 
> Once the DSL link is established and pppoa-wan starts, the LED turns
> BLUE and it blinks during packet exchanges.654124b1afe4a2a13fe8202e9389d656c770fe00
> 
> 
> led_dsl controls the red flashing whilst the dsl connection is negotiated
> 
> led_internet turns the led blue and blinking when the pppoa-wan
> connection is established.
> 
> 
> Has something changed in the firmware that requires a configuration
> change, or is this a bug?

Hi,

The led trigger changed, could you please check if one of these patches
broke it:
https://git.openwrt.org/654124b1afe4a2a13fe8202e9389d656c770fe00
https://git.openwrt.org/aa3b6a08c5616fdebd3b219f021a9674533a6519

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at david-bauer.net  Sun Feb 10 08:34:28 2019
From: mail at david-bauer.net (David Bauer)
Date: Sun, 10 Feb 2019 14:34:28 +0100
Subject: [OpenWrt-Devel] [PATCH 1/3] scripts: make eva_ramboot.py offset
 configurable
Message-ID: <20190210133430.23792-1-mail@david-bauer.net>

The current eva_ramboot.py script is currently only compatible with
Lantiq based AVM devices. For IPQ40xx devices, the offset needs to be
changed. Also an alignment is not necessary here.

Adjust the script to be able to pass an optional offset to load the
image to. In case no offset is provided, the script behaves exactly as
before this commit.

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 scripts/flashing/eva_ramboot.py | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/scripts/flashing/eva_ramboot.py b/scripts/flashing/eva_ramboot.py
index b825d2768b..b182f09d21 100755
--- a/scripts/flashing/eva_ramboot.py
+++ b/scripts/flashing/eva_ramboot.py
@@ -1,24 +1,32 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
+
+import argparse
 
 from ftplib import FTP
 from sys import argv
 from os import stat
 
-assert len(argv) == 3
-ip = argv[1]
-image = argv[2]
+parser = argparse.ArgumentParser(description='Tool to boot AVM EVA ramdisk images.')
+parser.add_argument('ip', type=str, help='IP-address to transfer the image to')
+parser.add_argument('image', type=str, help='Location of the ramdisk image')
+parser.add_argument('--offset', type=lambda x: int(x,0), help='Offset to load the image to in hex format with leading 0x. Only needed for non-lantiq devices.')
+args = parser.parse_args()
 
-size = stat(image).st_size
+size = stat(args.image).st_size
 # arbitrary size limit, to prevent the address calculations from overflows etc.
 assert size < 0x2000000
 
-# We need to align the address. A page boundary seems to be sufficient on 7362sl
-# and 7412
-addr = ((0x8000000 - size) & ~0xfff)
-haddr = 0x80000000 + addr
-img = open(image, "rb")
+if args.offset:
+	addr = size
+	haddr = args.offset
+else:
+	# We need to align the address.
+	# A page boundary seems to be sufficient on 7362sl and 7412
+	addr = ((0x8000000 - size) & ~0xfff)
+	haddr = 0x80000000 + addr
 
-ftp = FTP(ip, 'adam2', 'adam2')
+img = open(args.image, "rb")
+ftp = FTP(args.ip, 'adam2', 'adam2')
 
 def adam(cmd):
 	print("> %s"%(cmd))
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Sun Feb 10 08:34:29 2019
From: mail at david-bauer.net (David Bauer)
Date: Sun, 10 Feb 2019 14:34:29 +0100
Subject: [OpenWrt-Devel] [PATCH 2/3] uboot-fritz4040: bump version to
 2019-02-08
In-Reply-To: <20190210133430.23792-1-mail@david-bauer.net>
References: <20190210133430.23792-1-mail@david-bauer.net>
Message-ID: <20190210133430.23792-2-mail@david-bauer.net>

Adds support for the AVM FRITZ!Box 7530.

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 package/boot/uboot-fritz4040/Makefile | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile
index df00b89af0..45f211527d 100644
--- a/package/boot/uboot-fritz4040/Makefile
+++ b/package/boot/uboot-fritz4040/Makefile
@@ -10,22 +10,23 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_SOURCE_URL:=https://github.com/chunkeey/FritzBox-4040-UBOOT
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=a768e513b07b5999a8e7d7740ac8d9da04ee7e51
-PKG_SOURCE_DATE:=2019-01-25
-PKG_MIRROR_HASH:=eb552c946bcad53763557b19703b10210f7acabf0d135759beddb7b11fa4ef25
+PKG_SOURCE_VERSION:=d306cce36f98a0a67becc42f20df4b22f1d1465f
+PKG_SOURCE_DATE:=2019-02-08
+PKG_MIRROR_HASH:=715380605dd0cd6ffd65a18b34127bd57dfe9fb0a0164bf8aca703ee018d8070
 
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 include $(INCLUDE_DIR)/u-boot.mk
 include $(INCLUDE_DIR)/package.mk
 
 define U-Boot/Default
   BUILD_TARGET:=ipq40xx
+  UBOOT_BOARD:=$(1)
+  UBOOT_IMAGE:=uboot-$(1).bin
 endef
 
 define U-Boot/fritz4040
   NAME:=FritzBox 4040
-  UBOOT_IMAGE:=uboot-fritz4040.bin
   BUILD_DEVICES:=avm_fritzbox-4040
 endef
 
@@ -42,7 +43,7 @@ endef
 
 define Build/Compile
 	$(Build/Compile/U-Boot)
-	(cd $(PKG_BUILD_DIR); ./fritz/fritzcreator.sh;)
+	(cd $(PKG_BUILD_DIR); ./fritz/fritzcreator.sh $(UBOOT_BOARD);)
 endef
 
 define Build/InstallDev
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Sun Feb 10 08:34:30 2019
From: mail at david-bauer.net (David Bauer)
Date: Sun, 10 Feb 2019 14:34:30 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ipq40xx: add support for FritzBox 7530
In-Reply-To: <20190210133430.23792-1-mail@david-bauer.net>
References: <20190210133430.23792-1-mail@david-bauer.net>
Message-ID: <20190210133430.23792-3-mail@david-bauer.net>

Hardware
--------
CPU:   Qualcomm IPQ4019
RAM:   256M
FLASH: 128M NAND
ETH:   QCA8075
VDSL:  Intel/Lantiq VRX518 PCIe attached
       currently not supported
DECT:  Dialog SC14448
       currently not supported
WiFi2: IPQ4019 2T2R 2SS b/g/n
WiFi5: IPQ4019 2T2R 2SS n/ac
LED:    - Power/DSL green
        - WLAN green
        - FON/DECT green
        - Connect/WPS green
        - Info green
        - Info red
BTN:    - WLAN
        - FON
        - WPS/Connect
UART:  115200n8 3.3V (located under the Dialog chip)
       VCC - RX - TX - GND (Square is VCC)

Installation
------------
1. Grab the uboot for the Device from the 'u-boot-fritz7530'
   subdirectory. Place it in the same directory as the 'eva_ramboot.py'
   script. It is located in the 'scripts/flashing' subdirectory of the
   OpenWRT tree.

2. Assign yourself the IP address 192.168.178.10/24. Connect your
   Computer to one of the boxes LAN ports.

3. Connect Power to the Box. As soon as the LAN port of your computer
   shows link, load the U-Boot to the box using following command.

   > ./eva_ramboot.py --offset 0x85000000 192.168.178.1 uboot-fritz7530.bin

4. The U-Boot will now start. Now assign yourself the IP address
   192.168.1.70/24. Copy the OpenWRT initramfs (!) image to a TFTP
   server root directory and rename it to 'FRITZ7530.bin'.

5. The Box will now boot OpenWRT from RAM. This can take up to two
   minutes.

6. Copy the U-Boot and the OpenWRT sysupgrade (!) image to the Box using
   scp. SSH into the Box and first write the Bootloader to both previous
   kernel partitions.

   > mtd write /path/to/uboot-fritz7530.bin uboot0
   > mtd write /path/to/uboot-fritz7530.bin uboot1

7. Remove the AVM filesystem partitions to make room for our kernel +
   rootfs + overlayfs.

   > ubirmvol /dev/ubi0 --name=avm_filesys_0
   > ubirmvol /dev/ubi0 --name=avm_filesys_1

8. Flash OpenWRT peristently using sysupgrade.

   > sysupgrade -n /path/to/openwrt-sysupgrade.bin

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 package/boot/uboot-fritz4040/Makefile         |   7 +-
 package/firmware/ipq-wifi/Makefile            |   3 +-
 package/firmware/ipq-wifi/board-fritz7530.bin | Bin 0 -> 24324 bytes
 .../ipq40xx/base-files/etc/board.d/01_leds    |   1 +
 .../ipq40xx/base-files/etc/board.d/02_network |   4 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata  |   6 +
 .../base-files/lib/upgrade/platform.sh        |   3 +-
 .../boot/dts/qcom-ipq4019-fritzbox-7530.dts   | 281 ++++++++++++++++++
 .../boot/dts/qcom-ipq4019-fritzbox-7530.dts   | 281 ++++++++++++++++++
 target/linux/ipq40xx/image/Makefile           |   9 +
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 12 files changed, 596 insertions(+), 5 deletions(-)
 create mode 100644 package/firmware/ipq-wifi/board-fritz7530.bin
 create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
 create mode 100644 target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts

diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile
index 45f211527d..a53b7d010f 100644
--- a/package/boot/uboot-fritz4040/Makefile
+++ b/package/boot/uboot-fritz4040/Makefile
@@ -30,6 +30,11 @@ define U-Boot/fritz4040
   BUILD_DEVICES:=avm_fritzbox-4040
 endef
 
+define U-Boot/fritz7530
+  NAME:=FritzBox 7530
+  BUILD_DEVICES:=avm_fritzbox-7530
+endef
+
 UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
 UBOOT_MAKE_FLAGS = USE_PRIVATE_LIBGCC=yes
 export DTC
@@ -56,6 +61,6 @@ define Package/u-boot/install
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/upload-to-f4040.sh $(1)/
 endef
 
-UBOOT_TARGETS := fritz4040
+UBOOT_TARGETS := fritz4040 fritz7530
 
 $(eval $(call BuildPackage/U-Boot))
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index cf1ad042bf..6523b19a76 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -17,7 +17,7 @@ endef
 # Please send a mail with your device-specific board files upstream.
 # You can find instructions and examples on the linux-wireless wiki:
 # <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
-ALLWIFIBOARDS:=engenius_eap1300 linksys_ea6350v3
+ALLWIFIBOARDS:=engenius_eap1300 linksys_ea6350v3 fritz7530
 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
 
 define Package/ipq-wifi-default
@@ -54,5 +54,6 @@ endef
 #$(eval $(call generate-ipq-wifi-package,<devicename>,<filename>,<displayname>))
 $(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
 $(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,board-linksys_ea6350v3.bin,Linksys EA6350v3))
+$(eval $(call generate-ipq-wifi-package,fritz7530,board-fritz7530.bin,AVM FRITZ!Box 7530))
 
 $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
diff --git a/package/firmware/ipq-wifi/board-fritz7530.bin b/package/firmware/ipq-wifi/board-fritz7530.bin
new file mode 100644
index 0000000000000000000000000000000000000000..905145f1da5ee91c481f30e6bd08b3cf8da0c2ed
GIT binary patch
literal 24324
zcmeHPT~HHQ7QR9LR8%?%e<3s>;U{rPfWSzEC?P~9ffg7R5u)oNqLKhZ1m(v#CFP<b
zMr1 at 80!ENRMSgl+rCgm+nOz;%+0vA|FZ1ThzRiPFSzBAath2Y%2 at pxf1Yr%(C)~d0
zp1$XvbHDB+-F-juMOLOTvq+hgm at Aa$XBH|zO-&7eqDvsQ0A#>Yex!cO-pca$@*0hB
zU!_JT)KqLqw6w}=_tsSqO>ts;!`?d0-Y*Yt$t>P3%q~<FspYjz!qm at _6KiO23=SNR
zlQ14gqk&b&=_$p;*c%6c7bpW at jb9+q1aQkuhP6L@ITC>&nHUOy<mBXkzj*_sOkeQ!
zU*|JyWfjwr*N1H!KzsUruTC-&_yx-Q`<%BoOz#SWvmstKA#$|oGj)c;j3-=-IMZ*<
z^pG4tzNQUUg-M at naUA!di*bpOh?&hU4A>?L+gf1dmaJX7e!W``4mxuk*gl0x*D*$%
zHde9E;MMSWd%ISnQfIsx?`vzWQ0J;PKN{&f-Cn2pLbd79DAejTg{sfqLb-ic5C>k5
zjGt_;(rj1DUXAvhYOYjcD(Rz}L^ricC4mlS+Z&-RopgxX2wo43A8RgAr>WwhYisj9
zwE}j#-q#LYb0z#o<9!#Jb?QP%qSYbJKEDsNnxTB4i~VlO!5$CCt>u7{<C!fj>yv at 1
zuX41BJA*UEuGF`sR>bUJ<vtuaWXwLzuL~_Rj_xvUKFz6T?7e?kb1b)tw>?;Pf3Wsc
zdZnN=9D91R`J4RHqWXw^-;OpKx1SX at vJX7DqC1wopQ~b|JszrU&8dyu5v;gzUDKm%
z|4n0f<^A!7{)FR^I!4*jLW#=OhJcUX>b2`OAdH}pu<(dT+b8}^O?<}Ah|SBch8IKt
z&}d#>UNmC6YL$<VkFQnyhC7?el+R8S at R`xkJop#Gjf&!Nqqy8+Z+~FDLa`f-YAh-O
zot+I0MMYS)1gu at _>q~}`2x53#ZX|3l{r>az-Mb*Dkv75 at 5#Z<L?fqX%R~m5SPmZ#9
zTiqDE9)ZK_j(3a^g^0wrN^CSCTuwxAY&4h4LD{TOsLkI7J$XDHF%TTpI^M_F9HD}s
z2$G3rB1vcxqC0Z*c<Y&tuAaFHkXq$|TM8Yei|Ehk2n%J2SXdw$h=ihYR4$S~mm at i7
zjwlC{p)y2?iczsh{9KHrp=qKtED=paB<OS!ra{N*bWT#~bXJr)=lHk+2?J%kW+35c
zxF{UULbG0HA-QO-C>KjclV2wz>1etr9U~9I?5!mf3H_pPiE~$X#xyp&#C)X8e6u*#
z9KB!WYg-Q2q|_W-Ir<bz6iQAIpiT`Zz}T5rBuaJ&Pz?$J3IPfM3IPfM3V{`jK!`X5
ziKKrn{v64tr;1aN47$HfKw<fX!P}2#Z*8~!?$vW+thUL5#aO|Iked2(LBQ1&0$2Mj
zF<h|Sm4=BI0KmG*Ffj4r{Te>0hR>)`b{Lb#<B$)(q2 at U@E)+|Cp%#UBIM4JXTND&d
zB*ZTSDzGN<^CX+6pRO1E5Fkqdz(7Z6!B9G_^+jvV_eX#fNWEnM0e^oiXaOJz at DRwO
zg2Wpx<n!2y6x!uJf|qhX!9QRjYD)?9Mu1<74`&$efA#Wb at Y7E}TWUfl3MI=IfnRO~
zFulAg;0go)G%s)eZ=hU-Vw>?jC?8|PO5lg<z{HQv>bTgL=ucV5l{<2+j$EC?3W`d0
zmsM06IxqHI9vB)PyESp|;a`6E at rC<4X07A7cjdZddIQTkC`NCyt%O?EKrwlnZ57nA
z{)vg(Y%8GdgXq*_`J=mJPJ`u at s4Hv6dBuAUbaY?2j^Ca9n=^fRp)xZY<~t_BM%f}Z
z#srFY3Iszj5r!#1%DWUqib_RNEM>v&uV<pVqXmnD5tN=S&PMX+o5Y)tt#oxS at tQk^
z?R(BvFO^#ycX{_oF7fWMZW;}e?wdL-Ebt&J?>@+nL<e3{@(A8N0N&oD#eU2C?OfhH
z<R4_%%6xhEFv|D#kpNg|-aU~c5d*ag<e2|H!>70FJf|_!&jsGSowwt-?(psbgTZiE
z*lac+N<ct>J7x9i#pK<~m;=n04*$o&4i=}4(a}+-`{wR|$9k5`-S4VpMK0%3lXm6w
z at IaJYNt^0JAwVHOA+S^tC at WJJle~L6J#Za43paW9Wu*VQbzW~s{{shXW3pKAnrgv?
z;@w;C${yJ6&VEgyc=yxjxI%xoLHd91>&i2f*^GNqx1>u>aM8EK8+kV8p3py%b{~V4
z5D&W_zL<4;VW)oR!(-}<xf;hzNe1>*o4E?lHHi%olXp$s`a`AJl9<Wc_>e)bEtRl|
z{}sF36UPTrUFK$7ZIT&;Q<uzoe3waXNWdpd16plqo+N(q&!!9dno_xhLpYd>adBX(
z*L)H`Xeuylnd&#6!K+O>^g{ewL$|h0sgQ`FLzlkV=5WOrCjhY9Ib3Hb)NY!(X70k9
z3?*7AK56LF9#(GShgu?3X?Kw+nR<zoOy+jHO0Ou5o*Fct$LkC`v|I7-3`T8(QppdW
zyl1*(Nhy*@=}IpjM(8pB0pF+Js$@aeHe92ZE5q?WnfkRg%1lXu`8#~j(5&4lVG$1f
zy at FUU)opIU%k*i=uqmUt6|c}sm0>Uuqy9)~u0&wIi}xDpwE4<tGJ*i6bl%*Am*~Yx
z=G52bqqrJsi1|K#6=Erqps(&sUN$vqvy@?E1ULtG!~-w&sgztffD}p;N=^`14yT5b
zsZr(?i@@D8$9}ghNyrZKz1CK}J5?MNvEKi1cXq4b5UV^O`}?8&=eFp12SZB#+SR1a
z5XJ_D`rNs6tSUz?P6!V at KTzC}bd;mrkoWXv^#xf=OikFHXT6$&)VSCX03P)ptyX4<
zgb at +<h7WbiP6+DgJ06c{x-wdL)uDTy^w*ckH^s0+10GzfKB!cp+(3q*FYjd1;h>%C
zw%xy3ej)8Rrz&XILsRwc0!4f@;yp3gP`6FV<p;6ajrpfi8bV70ly^pde at Sv8vL<NH
zM9<-Us;%)nhVO`}p<acFB|+g6{dFB#$Kq>(3!nWl=WKj)*nz;Ex4MsN^A!Rv-FL`X
z`(;6qFeRLO!>DQ7dSv54M(*|D+TQe5ULAAKjq|#4MLLhoX7+wvv42}myf}z;u4Cs{
zDO&C>y6pBy{pGxK{KnAzEB3^pCQc!+3=sI(U*YhZEe`M)XwxYrO=_u_9}^P||KKlh
zaClKs+^Aw7kNFjjxtw?#?cRUE*6ioTu+i>UFIWr*@KYuVf%zfeD(PdP`^_)gW#dKh
z?ja|B5jp#w#Ibjji>IH+!;nu;^4}2)ho0cquW1#uC?HRM<7RFqSt1W at +-xaV1HF?h
zJbHpl at 7J;h7NYjySa|mY*WO3)PYeH^<lw*b^!cyk{0LsWH{`{a^bG&77`*t!#?~3%
z-e&)loO>cR#k-$bnwy74@$TmV8s*~I2)MFl?2Kza+wR%3oPTx{?|!krHGh5l{{g(;
Bh^qhq

literal 0
HcmV?d00001

diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
index 9105bf2452..39383f4fa8 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
@@ -28,6 +28,7 @@ engenius,eap1300)
 	ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
 	ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
 	;;
+avm,fritzbox-7530 |\
 glinet,gl-b1300)
 	ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
 	;;
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index bcc5f4cec9..e8ccffca37 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -27,6 +27,10 @@ ipq40xx_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0u at eth0" "1:lan" "2:lan" "3:lan" "4:lan"
 		;;
+	avm,fritzbox-7530)
+		ucidef_add_switch "switch0" \
+			"0u at eth0" "1:lan" "2:lan" "3:lan" "4:lan"
+		;;
 	compex,wpj428)
 		ucidef_set_interface_lan "eth0 eth1"
 		;;
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 69b6c2591c..b4252f0ea6 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -126,6 +126,9 @@ case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
+	avm,fritzbox-7530)
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 16384 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0")
+		;;
 	meraki,mr33)
 		ath10kcal_ubi_extract "ART" 4096 12064
 		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
@@ -164,6 +167,9 @@ case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
+	avm,fritzbox-7530)
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 16384 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
+		;;
 	meraki,mr33)
 		ath10kcal_ubi_extract "ART" 20480 12064
 		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 20480 12064
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index c5f06ffb3a..76f78dd032 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -46,7 +46,8 @@ zyxel_do_upgrade() {
 
 platform_do_upgrade() {
 	case "$(board_name)" in
-	8dev,jalapeno)
+	8dev,jalapeno|\
+	avm,fritzbox-7530)
 		nand_do_upgrade "$ARGV"
 		;;
 	asus,rt-ac58u)
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
new file mode 100644
index 0000000000..ea2d70a8bd
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
@@ -0,0 +1,281 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Box 7530";
+	compatible = "avm,fritzbox-7530", "qcom,ipq4019";
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &info_red;
+		led-running = &power_green;
+		led-upgrade = &info_green;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		tcsr at 194b000 {
+			compatible = "qcom,tcsr";
+			reg = <0x194b000 0x100>;
+			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb3 at 8af8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+			qcom,num_gmac = <1>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wlan {
+			label = "wlan";
+			gpios = <&tlmm 42 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 41 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		dect {
+			label = "dect";
+			gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		info_red: info_red {
+			label = "fritzbox-7530:red:info";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		info_green: info {
+			label = "fritzbox-7530:green:info";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan {
+			label = "fritzbox-7530:green:wlan";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+		};
+
+		fon {
+			label = "fritzbox-7530:green:fon";
+			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+		};
+
+		power_green: power {
+			label = "fritzbox-7530:green:power";
+			gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "fritzbox-7530:green:wps";
+			gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio52", "gpio53", "gpio58",
+				"gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+
+	usb-power {
+		line-name = "enable USB3 power";
+		gpios = <49 GPIO_ACTIVE_HIGH>;
+		gpio-hog;
+		output-high;
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "MIBIB";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition at 180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition at 1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition at 240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition at 2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition at b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition at f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition at 1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&usb3_ss_phy {
+	status = "okay";
+};
+
+&usb3_hs_phy {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&wifi1 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
new file mode 100644
index 0000000000..ea2d70a8bd
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
@@ -0,0 +1,281 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Box 7530";
+	compatible = "avm,fritzbox-7530", "qcom,ipq4019";
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &info_red;
+		led-running = &power_green;
+		led-upgrade = &info_green;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		tcsr at 194b000 {
+			compatible = "qcom,tcsr";
+			reg = <0x194b000 0x100>;
+			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb3 at 8af8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+			qcom,num_gmac = <1>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wlan {
+			label = "wlan";
+			gpios = <&tlmm 42 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 41 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		dect {
+			label = "dect";
+			gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		info_red: info_red {
+			label = "fritzbox-7530:red:info";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		info_green: info {
+			label = "fritzbox-7530:green:info";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan {
+			label = "fritzbox-7530:green:wlan";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+		};
+
+		fon {
+			label = "fritzbox-7530:green:fon";
+			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+		};
+
+		power_green: power {
+			label = "fritzbox-7530:green:power";
+			gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "fritzbox-7530:green:wps";
+			gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio52", "gpio53", "gpio58",
+				"gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+
+	usb-power {
+		line-name = "enable USB3 power";
+		gpios = <49 GPIO_ACTIVE_HIGH>;
+		gpio-hog;
+		output-high;
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "MIBIB";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition at 180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition at 1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition at 240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition at 2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition at b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition at f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition at 1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&usb3_ss_phy {
+	status = "okay";
+};
+
+&usb3_hs_phy {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&wifi1 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index a670380ab3..ca5a453b47 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -97,6 +97,15 @@ define Device/avm_fritzbox-4040
 endef
 TARGET_DEVICES += avm_fritzbox-4040
 
+define Device/avm_fritzbox-7530
+	$(call Device/FitImageLzma)
+	DEVICE_DTS := qcom-ipq4019-fritzbox-7530
+	DEVICE_TITLE := AVM Fritz!Box 7530
+	DEVICE_PACKAGES := fritz-caldata ipq-wifi-fritz7530
+	IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += avm_fritzbox-7530
+
 define Device/compex_wpj428
 	$(call Device/FitImage)
 	DEVICE_DTS := qcom-ipq4028-wpj428
diff --git a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
index e0619a64dd..6844b2b2cf 100644
--- a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,22 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,23 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -27,6 +27,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk01.1-c1.dtb \
 +	qcom-ipq4019-a62.dtb \
 +	qcom-ipq4019-ap.dk04.1-c1.dtb \
++	qcom-ipq4019-fritzbox-7530.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
 +	qcom-ipq4029-mr33.dtb \
diff --git a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
index d0f892bc48..37dc78e971 100644
--- a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,25 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,26 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -30,6 +30,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk07.1-c1.dtb \
  	qcom-ipq4019-ap.dk07.1-c2.dtb \
 +	qcom-ipq4019-a62.dtb \
++	qcom-ipq4019-fritzbox-7530.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
 +	qcom-ipq4029-mr33.dtb \
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Sun Feb 10 10:49:25 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Sun, 10 Feb 2019 16:49:25 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <75f8c243-a3df-8825-2eed-e3483edc0afc@gmail.com>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
 <75f8c243-a3df-8825-2eed-e3483edc0afc@gmail.com>
Message-ID: <ef6bfbb9-d562-7ad6-1106-6568d8c677ff@hauke-m.de>

Hi Petr,

Thank you for the tests.

On 2/3/19 9:44 AM, Petr Cvek wrote:
> I did an exhaustive ethernet measuring. Parameters: no wifi, no running
> dsl connection, 1 cable (in 1G port with external phy), no USB, almost
> vanilla openwrt (changes for rootfs on NFS, kernel command line and fix
> for uwc2 USB).
> 
> run.sh
> A script which runs and logs measurements into a file named by its first
> parameter (or just the unix epoch time). You need to run "iperf3 -s" on
> lantiq manually.

I am surprised that "iperf3 -c 10.0.0.80" has the double speed of
"iperf3 -c 10.0.0.80 -R" isn't this the same stream just in the
different direction?

> *_a and *_b files
> Main iperf3 measurements. It seems the schedulers migrates processes
> between VPEs (in every configuration). There are sometimes differences
> of ~20Mbit/s. To isolate that one would probably have to compile and use
> cgroups.
> 
> *_netcat
> Running netcat pipe with pipeview in server/client and TCP/UDP mode.
> More useful to measure the changes of the process affinity.
> 
> vanilla*
> Default (slowest) openwrt code.
> 
> backported*
> Ethernet driver with full napi polling, used from vanilla kernel v5.
> Newest patch in the attachment too.
> 
> dma_burst*
> The change in size of DMA burst, from default to (probably) 4 words.
> 
> smp_icu_different_vpes*
> ICU with SMP interrupts support. Forcing the IRQ SMP affinity to
> different VPE for TX and RX interrupt. Process jumping between VPE
> should have the smallest impact here.
> 
> smp_icu_same_vpe*
> Both TX and RX interrupts are on the same VPE (forced on CPU0). Probably
> the biggest impact from process jumping between VPEs (not checked).
> 
> everything*
> SMP ICU, DMA burst and "backported" ethernet driver together.
> 
> 
> Notes:
> 1) The backported driver seems to not working on some machines (I would
> assume everything different from 4x 1G ports). You can still patch the
> polling and interrupt routines to match the vanilla kernel. A help why
> it doesn't boot would be appreciated (are your machine using multiple
> eth%d interfaces, how does dmesg look like, ...).
> 
> 2) The vanilla openwrt driver declares TX2 interrupt and HW. There is no
> traffic on this interrupt (on DMA channel probably too?). Does anybody
> have some documentation how this work? Are there more DMA interfaces
> from/to which send the data?

In the SoC there are 2 internal GPHYs and some *MII connections to
external PHYs. They are all connected to the GSWIP inside of the SoC, on
the CPU port normally a special tag is added to every packet which
indicates from which LAN port it was received on. This CPU port is
connected to the PPE and the PPE is connected to two DMA channels which
send the packets to the MIPS CPU running Linux. There are two ports
between the PPA and the CPU, the upstream driver only uses one of these
ports as we let the PPE stay in the default configuration. We could
later use it to put high prio packets on a special channel or to put the
DSL packets onto the other channel.

> 3) The second ICU devicetree node doesn't need to be deleted for
> uniprocessor ICU usage.

When the Voice firmware is used the second VPE is used for this FW and
not for Linux then the ICU should only use one block.

> Feel free to make your own tests and sorry for hardcoded IPs :-D

I would like to use the upstream driver also in OpenWrt, I am working on
bridge offloading for the upstream DSA driver.  OpenWrt still misses a
script which can convert the common swconfig configuration into a bridge
configuration if such a script would be there I would like to switch to
the DSA driver with kernel 4.19.
Therefore I am not sure how efficient it is to invest so much time into
the driver currently used in OpenWrt.

> 
> Petr
> 
> Dne 30. 01. 19 v 11:38 Petr Cvek napsal(a):
>> Hello,
>>
>> I discovered the lantiq xrx200 lacks support for interrupts on secondary
>> VPE, and I've managed to add this functionality to the kernel, the
>> second icu controller lives on base address 0x1f880300 and works in the
>> same way as first. Tested with 4.14.93 kernel, untested patches in the
>> attachment or on openwrt forum:
>>
>> https://forum.openwrt.org/t/xrx200-irq-balancing-between-vpes/29732/11
>>
>> My second submission is a backported xrx200 ethernet driver from vanilla
>> kernel v5 patched with switch and phy functions. Using kernel napi
>> polling seems to highly increase the throughput of the network.
>>
>> Trying to initially increase the throughput of the network I've found
>> there is an inefficiently setting of DMA burst size. My patch sets this
>> value to a higher value.
>>
>> These two patches were tested with 4.14.93 kernel too, there is forum
>> thread:
>>
>> https://forum.openwrt.org/t/how-can-we-make-the-lantiq-xrx200-devices-faster/9724/30
>>
>> RFC for any parallel development info (next version of ethernet driver
>> will be based on vanilla kernel version?), ideas, testing ...
>>
>> best regards,
>> Petr Cvek
>>
>>
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel at lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Sun Feb 10 11:10:55 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Sun, 10 Feb 2019 17:10:55 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] gemini: Name binary
 "bootpart.tar.gz"
In-Reply-To: <20190207194715.22224-1-linus.walleij@linaro.org>
References: <20190207194715.22224-1-linus.walleij@linaro.org>
Message-ID: <2414693.zVDyxz821i@debian64>

On Thursday, February 7, 2019 8:47:15 PM CET Linus Walleij wrote:
> This factory binary i supposed to actually be unzipped and
> untarred by the user as part of the installation process
> (this NAS boots from harddisk), so name it "bootpart.tar.gz"
> and not "factory.bin" so it is helpful for users.
> 
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> ---

The name "factory" images comes from the various router images

<https://openwrt.org/docs/guide-quick-start/factory_installation>
<https://openwrt.org/faq/before_installation#what_is_the_difference_between_the_different_image_formats>

| a factory image is designed to replace the vendor's ?stock? firmware.
| It matches the format of the file the vendor supplies.
| You usually use the vendor's Web GUI to install a factory image.
|
| [...] a factory image would have extra header information or whatever
| the platform needs. Generally speaking, the factory image is to be
| used with the OEM GUI or OEM flashing utilities to convert the device
| to OpenWrt. 

From what I know (in the context of NAS and such), these images are used
for the first installation or refresh the device to OpenWrt's factory
defaults.

That said, I did find your article: "Recent Linux on the D-Link DNS-313"
<https://dflund.se/~triad/krad/dlink-dns-313/> which listed the 
installation process.

And wondered if it isn't possible to make a "factory" image with the
existing firmware tools (ptgen, genext2fs) that aligns with the other
NAS device.

Please look at the attached patches. I think they should mostly do what
you are after. Or, in other words:

They cut down the installation process/script to just:
 1. download either the ext4 or squashfs factory.bin.gz to your PC
 2. extract the factory.bin.gz on your PC
 3. write the extracted image to the attached NAS' HDD with dd.

Since the kernel and rootfs are now integrated into one image. This will
also solve the problem you mentioned: "There are daily snapshots from
OpenWRT available, but these does not currently include a .tar.gz version
of the root filesystem which is necessary for the DNS-313." and as a bonus
the squashfs image should work as it is supposed to. 

But of course, this needs some testing + fixing.

Cheers,
Christian
---

From 0afe6df0ef4a81e19b73dc2e6a297701bbf155a8 Mon Sep 17 00:00:00 2001
From: Christian Lamparter <chunkeey at gmail.com>
Date: Sun, 10 Feb 2019 14:36:26 +0100
Subject: [PATCH] firmware-tools: ptgen: allow specifying empty partitions

This patch make it possible through a new "-n" flag to specify
partitions with a zero size. These partition entries will be
left zeroed out which allows the user to specify them at a
later time.

This should help NAS devices like the DNS-313 that have the
boot and root partition in PTE 2 and 3.

Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
---
 tools/firmware-utils/src/ptgen.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c
index 13e0eda622..0192bb65e5 100644
--- a/tools/firmware-utils/src/ptgen.c
+++ b/tools/firmware-utils/src/ptgen.c
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdint.h>
+#include <stdbool.h>
 #include <ctype.h>
 #include <fcntl.h>
 #include <stdint.h>
@@ -59,6 +60,7 @@ int active = 1;
 int heads = -1;
 int sectors = -1;
 int kb_align = 0;
+bool ignore_null_sized_partition = false;
 struct partinfo parts[4];
 char *filename = NULL;
 
@@ -140,6 +142,8 @@ static int gen_ptable(uint32_t signature, int nr)
 	memset(pte, 0, sizeof(struct pte) * 4);
 	for (i = 0; i < nr; i++) {
 		if (!parts[i].size) {
+			if (ignore_null_sized_partition)
+				continue;
 			fprintf(stderr, "Invalid size in partition %d!\n", i);
 			return -1;
 		}
@@ -196,7 +200,7 @@ fail:
 
 static void usage(char *prog)
 {
-	fprintf(stderr, "Usage: %s [-v] -h <heads> -s <sectors> -o <outputfile> [-a 0..4] [-l <align kB>] [[-t <type>] -p <size>...] \n", prog);
+	fprintf(stderr, "Usage: %s [-v] [-n] -h <heads> -s <sectors> -o <outputfile> [-a 0..4] [-l <align kB>] [[-t <type>] -p <size>...] \n", prog);
 	exit(EXIT_FAILURE);
 }
 
@@ -207,7 +211,7 @@ int main (int argc, char **argv)
 	int part = 0;
 	uint32_t signature = 0x5452574F; /* 'OWRT' */
 
-	while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vl:S:")) != -1) {
+	while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vnl:S:")) != -1) {
 		switch (ch) {
 		case 'o':
 			filename = optarg;
@@ -215,6 +219,9 @@ int main (int argc, char **argv)
 		case 'v':
 			verbose++;
 			break;
+		case 'n':
+			ignore_null_sized_partition = true;
+			break;
 		case 'h':
 			heads = (int)strtoul(optarg, NULL, 0);
 			break;

---
From 169dd527e49a10285ec507bc05cf42b46ff29641 Mon Sep 17 00:00:00 2001
From: Christian Lamparter <chunkeey at gmail.com>
Date: Sun, 10 Feb 2019 14:57:31 +0100
Subject: [PATCH] gemini: generate hdd image for DNS313

---
 target/linux/gemini/Makefile                  |  2 +-
 target/linux/gemini/config-4.14               |  6 +++++
 target/linux/gemini/config-4.19               |  6 +++++
 target/linux/gemini/image/Makefile            | 18 ++++++++-----
 .../linux/gemini/image/dns313_gen_hdd_img.sh  | 27 +++++++++++++++++++
 5 files changed, 52 insertions(+), 7 deletions(-)
 create mode 100755 target/linux/gemini/image/dns313_gen_hdd_img.sh

diff --git a/target/linux/gemini/Makefile b/target/linux/gemini/Makefile
index 3204b3f5d8..14b79829db 100644
--- a/target/linux/gemini/Makefile
+++ b/target/linux/gemini/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 ARCH:=arm
 BOARD:=gemini
 BOARDNAME:=Cortina Systems CS351x
-FEATURES:=squashfs pci rtc usb dt gpio display
+FEATURES:=squashfs pci rtc usb dt gpio display ext4 root-part boot-part
 CPU_TYPE:=fa526
 MAINTAINER:=Roman Yeryomin <roman at advem.lv>
 
diff --git a/target/linux/gemini/config-4.14 b/target/linux/gemini/config-4.14
index 326b05c089..53c8ec7ba7 100644
--- a/target/linux/gemini/config-4.14
+++ b/target/linux/gemini/config-4.14
@@ -45,6 +45,7 @@ CONFIG_ATAGS=y
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_AUTO_ZRELADDR=y
 CONFIG_BINFMT_MISC=y
+CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_BLK_MQ_PCI=y
 CONFIG_BLK_SCSI_REQUEST=y
@@ -148,6 +149,11 @@ CONFIG_ELF_CORE=y
 # CONFIG_ENABLE_WARN_DEPRECATED is not set
 # CONFIG_EXPERT is not set
 CONFIG_EXT4_FS=y
+# CONFIG_F2FS_CHECK_FS is not set
+CONFIG_F2FS_FS=y
+# CONFIG_F2FS_FS_SECURITY is not set
+CONFIG_F2FS_FS_XATTR=y
+CONFIG_F2FS_STAT_FS=y
 CONFIG_FARADAY_FTINTC010=y
 CONFIG_FHANDLE=y
 CONFIG_FIRMWARE_IN_KERNEL=y
diff --git a/target/linux/gemini/config-4.19 b/target/linux/gemini/config-4.19
index 7025ec149c..e2bd4f6351 100644
--- a/target/linux/gemini/config-4.19
+++ b/target/linux/gemini/config-4.19
@@ -45,6 +45,7 @@ CONFIG_ATAGS=y
 CONFIG_ATA_VERBOSE_ERROR=y
 CONFIG_AUTO_ZRELADDR=y
 CONFIG_BINFMT_MISC=y
+CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_BLK_MQ_PCI=y
 CONFIG_BLK_SCSI_REQUEST=y
@@ -173,6 +174,11 @@ CONFIG_ELF_CORE=y
 # CONFIG_EMBEDDED is not set
 # CONFIG_EXPERT is not set
 CONFIG_EXT4_FS=y
+# CONFIG_F2FS_CHECK_FS is not set
+CONFIG_F2FS_FS=y
+# CONFIG_F2FS_FS_SECURITY is not set
+CONFIG_F2FS_FS_XATTR=y
+CONFIG_F2FS_STAT_FS=y
 CONFIG_FARADAY_FTINTC010=y
 CONFIG_FB=y
 CONFIG_FB_CFB_COPYAREA=y
diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
index d0180e297a..d0f2703621 100644
--- a/target/linux/gemini/image/Makefile
+++ b/target/linux/gemini/image/Makefile
@@ -38,9 +38,12 @@ define Build/dns313-images
 	dns313-header $(IMAGE_KERNEL) \
 		$@.tmp/.boot/zImage
 
-	tar --sort=name --owner=0 --group=0 --numeric-owner -czf $@ \
-		-C $@.tmp .boot \
-		$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)")
+	genext2fs --block-size $(BLOCKSIZE:%k=%Ki) \
+		--size-in-blocks $$((1024 * $(CONFIG_TARGET_KERNEL_PARTSIZE))) \
+		--root $@.tmp/.boot $@.tmp/boot
+
+	./dns313_gen_hdd_img.sh $@ $@.tmp/boot $(IMAGE_ROOTFS) \
+		$(CONFIG_TARGET_KERNEL_PARTSIZE) $(CONFIG_TARGET_ROOTFS_PARTSIZE)
 
 	rm -rf $@.tmp
 endef
@@ -106,7 +109,8 @@ GEMINI_NAS_PACKAGES:=kmod-md-mod kmod-md-linear kmod-md-multipath \
 		kmod-fs-btrfs kmod-fs-cifs kmod-fs-nfs \
 		kmod-fs-nfsd kmod-fs-ntfs kmod-fs-reiserfs kmod-fs-vfat \
 		kmod-nls-utf8 kmod-usb-storage-extras \
-		samba36-server mdadm cfdisk fdisk e2fsprogs badblocks
+		samba36-server mdadm cfdisk fdisk e2fsprogs badblocks \
+		mkf2fs f2fsck partx-utils
 
 define Device/dlink_dir-685
 	DEVICE_TITLE := D-Link DIR-685 Xtreme N Storage Router
@@ -123,8 +127,10 @@ define Device/dlink_dns-313
 	DEVICE_TITLE := D-Link DNS-313 1-Bay Network Storage Enclosure
 	DEVICE_DTS := gemini-dlink-dns-313
 	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
-	IMAGES := factory.bin
-	IMAGE/factory.bin := dns313-images
+	BLOCKSIZE := 1k
+	FILESYSTEMS := ext4 squashfs
+	IMAGES := factory.bin.gz
+	IMAGE/factory.bin.gz := dns313-images | gzip
 endef
 TARGET_DEVICES += dlink_dns-313
 
diff --git a/target/linux/gemini/image/dns313_gen_hdd_img.sh b/target/linux/gemini/image/dns313_gen_hdd_img.sh
new file mode 100755
index 0000000000..d24d928716
--- /dev/null
+++ b/target/linux/gemini/image/dns313_gen_hdd_img.sh
@@ -0,0 +1,27 @@
+#!/usr/bin/env bash
+
+set -x
+[ $# -eq 5 ] || {
+    echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
+    exit 1
+}
+
+OUTPUT="$1"
+BOOTFS="$2"
+ROOTFS="$3"
+BOOTFSSIZE="$4"
+ROOTFSSIZE="$5"
+
+head=4
+sect=63
+
+set `ptgen -o $OUTPUT -h $head -s $sect -l 1024 -t 83 -n -p 0 -p 0 -p ${BOOTFSSIZE}M -p ${ROOTFSSIZE}M`
+
+BOOTOFFSET="$(($1 / 512))"
+BOOTSIZE="$(($2 / 512))"
+ROOTFSOFFSET="$(($3 / 512))"
+ROOTFSSIZE="$(($4 / 512))"
+
+dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc
+dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc
+
-- 
2.20.1



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From petrcvekcz at gmail.com  Sun Feb 10 11:28:56 2019
From: petrcvekcz at gmail.com (Petr Cvek)
Date: Sun, 10 Feb 2019 17:28:56 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <ef6bfbb9-d562-7ad6-1106-6568d8c677ff@hauke-m.de>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
 <75f8c243-a3df-8825-2eed-e3483edc0afc@gmail.com>
 <ef6bfbb9-d562-7ad6-1106-6568d8c677ff@hauke-m.de>
Message-ID: <0535b4e0-f367-e323-eec0-4a03c865efa1@gmail.com>

Hi,

Dne 10. 02. 19 v 16:49 Hauke Mehrtens napsal(a):
> Hi Petr,
> 
> Thank you for the tests.
> 
> On 2/3/19 9:44 AM, Petr Cvek wrote:
>> I did an exhaustive ethernet measuring. Parameters: no wifi, no running
>> dsl connection, 1 cable (in 1G port with external phy), no USB, almost
>> vanilla openwrt (changes for rootfs on NFS, kernel command line and fix
>> for uwc2 USB).
>>
>> run.sh
>> A script which runs and logs measurements into a file named by its first
>> parameter (or just the unix epoch time). You need to run "iperf3 -s" on
>> lantiq manually.
> 
> I am surprised that "iperf3 -c 10.0.0.80" has the double speed of
> "iperf3 -c 10.0.0.80 -R" isn't this the same stream just in the
> different direction?
> 
Yeah that's why I started poking in the system at the first place. The
transmitting out was slow. It seems the problem is in the packet
generation, probably copying a skb into a linear buffer. When I
converted the driver for the skb frags support it speeded up (thread:
"[OpenWrt-Devel] [RFC] [PATCH v2] lantiq: net: ethernet driver with
fragments").

> In the SoC there are 2 internal GPHYs and some *MII connections to
> external PHYs. They are all connected to the GSWIP inside of the SoC, on
> the CPU port normally a special tag is added to every packet which
> indicates from which LAN port it was received on. This CPU port is
> connected to the PPE and the PPE is connected to two DMA channels which
> send the packets to the MIPS CPU running Linux. There are two ports
> between the PPA and the CPU, the upstream driver only uses one of these
> ports as we let the PPE stay in the default configuration. We could
> later use it to put high prio packets on a special channel or to put the
> DSL packets onto the other channel.
> 

Or make something like dual queue which is in the lantiq etop driver?
Thanks for info. I was thinking about a generic dual queue (each VPE
handling one) could be another speedup.

>> 3) The second ICU devicetree node doesn't need to be deleted for
>> uniprocessor ICU usage.
> 
> When the Voice firmware is used the second VPE is used for this FW and
> not for Linux then the ICU should only use one block.
> 
So machines with voice ports won't have second ICU node and machines
without voice ports can have it.

>> Feel free to make your own tests and sorry for hardcoded IPs :-D
> 
> I would like to use the upstream driver also in OpenWrt, I am working on
> bridge offloading for the upstream DSA driver.  OpenWrt still misses a
> script which can convert the common swconfig configuration into a bridge
> configuration if such a script would be there I would like to switch to
> the DSA driver with kernel 4.19.
> Therefore I am not sure how efficient it is to invest so much time into
> the driver currently used in OpenWrt.
> 

Well my changes are mostly only in xmit and TX polling NAPI code, maybe
some DMA intialization, so it should be fairly compatible I can patch
it. We should definitely put skb frags code in the final version though.

Petr

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From greearb at candelatech.com  Sun Feb 10 12:04:53 2019
From: greearb at candelatech.com (Ben Greear)
Date: Sun, 10 Feb 2019 09:04:53 -0800
Subject: [OpenWrt-Devel] New CT wave-2 firmware available.
In-Reply-To: <ca62f40a-eaf8-855c-6b9d-f2f2dac0c537@ncentric.com>
References: <d6c00be1-a984-4dad-5688-bf8d8c46e6e5@candelatech.com>
 <ca62f40a-eaf8-855c-6b9d-f2f2dac0c537@ncentric.com>
Message-ID: <f1b8a3df-55bf-d0e5-9115-7b0eb1025874@candelatech.com>

Here is a new set of firmware images.  This hopefully fixes another rate-ctrl crash,
and fixes at least the obvious bug with 4-addr vlans.  If you can, please make a patch
and submit this upstream to OpenWRT:


9980
e3876b50cbd095f406a5d8eff310148bbef51ddc07d37af51494e35e9a19590d  firmware-5-ct-full-community-12.bin-lede.004
59c67a9707fe5c3c632cc19f4b35814abe948dc07274e9aa1095a4e838840388  firmware-5-ct-full-htt-mgt-community-12.bin-lede.004
/home/greearb/candela_html/downloads
9984
96fc12fc46f8520d2f36a081058e214325037313ae48afe245101466e027b6b0  firmware-5-ct-full-community-12.bin-lede.004
7f1211c64b52ab59fc2efb39e7a279847e426de96eeff1e017becea8663f798d  firmware-5-ct-full-htt-mgt-community-12.bin-lede.004
/home/greearb/candela_html/downloads
4019
47fc0409b9766cce3718342ea8d272f0153459450bc1833d44a72a1884e81f11  firmware-5-ct-full-community-12.bin-lede.004
fb376ccde84b9a013aafc4ab2db573d0e982ae398aa647042c6f917559293a3a  firmware-5-ct-full-htt-mgt-community-12.bin-lede.004
/home/greearb/candela_html/downloads
9888
beb4e2973330c7640e036500f8d2c68fc428a9b2266a077aebb8e8e798eca75c  firmware-5-ct-full-community-12.bin-lede.004
15fa57f6c5752877d7c96a05d2301f7eccd01832bc07d15d33246b8c06890d4c  firmware-5-ct-full-htt-mgt-community-12.bin-lede.004


Release notes since last time:

   *  Feb 8, 2019:  Fix rate-ctrl assert related to bad logic that tried to guess that lower bandwidth probes
                    were automatically successful if higher was.  The NSS mismatch that can happen here caused
                    the assert.  Just comment out the offending code (per comment from original QCA code).
                    This is bug 69.

   *  Feb 10, 2019: Fix bssid mis-alignment that broke 4-addr vlan mode (bug 67).  Original buggy commit
                    was commit 2bf89e70ecd1eaf8d1c70df7d32f99d1e1c47fe3
                    dev-ds: Better packing of wal_vdev struct.

Thanks,
Ben

On 02/04/2019 03:11 AM, Koen Vandeputte wrote:
> done & verified.
>
> Thanks Ben!
>
>
> Koen
>
> On 03.02.19 04:27, Ben Greear wrote:
>>
>> Here are the sha-sums, the 002 version changes to 003.
>> If someone could update openwrt to use them I'd appreciate it. Changelog
>> is at the bottom.  I am hoping this resolves the crashes related to
>> rate-ctrl.
>>
>> 9980
>> 6685623e2ee75909f734e45ae9321b9f78b18ed8c585eadef88f951b8aa4b3be firmware-5-ct-full-community-12.bin-lede.003
>> ea5ccdc88a1371e958b4b5e7657782b1bcc55ac24e11e6fa36a3fce2746be4d6 firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
>> /home/greearb/candela_html/downloads
>> 9984
>> 0815fffb4757596a5ee41efb8353fb90667e4c26363fbd62a5ccf269e9a55938 firmware-5-ct-full-community-12.bin-lede.003
>> 425b66e51039f1970802940c864ad3d6b743926e310006f6601acb9689144315 firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
>> /home/greearb/candela_html/downloads
>> 4019
>> 6e9171d012b50053b04572933b619927070b95fd2d8b9274a3e59a374088a09d firmware-5-ct-full-community-12.bin-lede.003
>> b265428fadda7e3ac33ef977ba1a13788914689110275e57bba7796c583f8480 firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
>> /home/greearb/candela_html/downloads
>> 9888
>> fba3ce709cd0e17abec260639034bc99b0157f36c044713201cff2e5b408a6e2 firmware-5-ct-full-community-12.bin-lede.003
>> 943c0ec1967a41f16e27fd1dfebefc9196412d48d4deba204b157bd7b9b90512 firmware-5-ct-full-htt-mgt-community-12.bin-lede.003
>>
>>
>>   *  Jan 2, 2019:  Rebase patches to make 9980 bisectable.
>>
>>   *  Jan 2, 2019:  Fix scheduling related assert when wal-peer is deleted with pending
>>      tx buffers (bug 54, and others)
>>
>>   *  Jan 7, 2019:  Fix specifying retransmits for AMPDU frames. It was previously ignored
>>      since it is a 'software' retransmit instead of a hardware retransmit.
>>
>>   *  Jan 9 2019:  Fix potential way to get zero rates selected (and then assert)
>>
>>   *  Jan 18 2019:  pfsched has specific work-around to just return if we find invalid flags AND
>>                    if we are in an out-of-order situation.  Maybe this is last of the pfsched
>>                    related issues (bug 54 and similar).
>>
>>   *  Jan 24 2019:  The rcSibUpdate method can be called concurrently with IRQ tx-completion callback,
>>                    and that could potentially allow the tx-completion callback to see invalid state
>>                    and assert or otherwise mess up the rate-ctrl logic.  So, disable IRQs in
>>                    rcSibUpdate to prevent this.  Related to bug 58.
>>
>>   *  Jan 28 2019:  Ensure that cached config is applied to ratectrl objects when fetched from
>>                    the cache.  This should fix part of bug 58.
>>
>>   *  Jan 28 2019:  Ensure that ratectrl objects from cachemgr are always initialized.  This fixes
>>                    another part of bug 58.
>>
>>   *  Jan 30 2019:  Better use of temporary rate-ctrl object.  Make sure it is initialized, simplify
>>                    code path.  This finishes up porting forward similar changes I made for wave-1
>>                    firmware long ago, and fixes another potential way to hit bug-58 issues.
>>
>>   *  Jan 30 2019:  Cachemgr did not have a callback for when memory was logically freed.  This means
>>                    that peers could keep stale references to rate-ctrl objects that were in process
>>                    of being DMA'd into to load a different peer's rate-ctrl state.  This was causing
>>                    the bugcheck logic to fail early and often, and I suspect it might be a root cause
>>                    of bug 58 as well.  The fix is to add a callback and set any 'deleted' memory references
>>                    to NULL so that we cannot access it accidentally.  Thanks to excellent logs and patience
>>                    from the bug-58 reporter!
>>
>>
>> Thanks,
>> Ben
>>
>

-- 
Ben Greear <greearb at candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From noreply at github.com  Sun Feb 10 12:08:08 2019
From: noreply at github.com (Stephen Walker)
Date: Sun, 10 Feb 2019 09:08:08 -0800
Subject: [OpenWrt-Devel] [sdwalker/sdwalker.github.io] 026559: This week's
 update
Message-ID: <sdwalker/sdwalker.github.io/push/refs/heads/master/35dfdd-026559@github.com>

  Branch: refs/heads/master
  Home:   https://github.com/sdwalker/sdwalker.github.io
  Commit: 0265594f802658cb403a43541425d711e56ad794
      https://github.com/sdwalker/sdwalker.github.io/commit/0265594f802658cb403a43541425d711e56ad794
  Author: Stephen Walker <stephendwalker+github at gmail.com>
  Date:   2019-02-10 (Sun, 10 Feb 2019)

  Changed paths:
    M uscan/index-18.06.html
    M uscan/index.html

  Log Message:
  -----------
  This week's update



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Sun Feb 10 12:23:27 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Sun, 10 Feb 2019 18:23:27 +0100
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC2 SPI speed to
 50MHz
In-Reply-To: <20190201073613.14656-1-rosenp@gmail.com>
References: <20190201073613.14656-1-rosenp@gmail.com>
Message-ID: <2532659.MQdL4lFfpy@debian64>

On Friday, February 1, 2019 8:36:13 AM CET Rosen Penev wrote:
> The flash chip on the board (Spansion S25FL256SAIF00) is rated to support
> at least 50MHz according to the datasheet.
> 
> From testing this, that seems correct.
> 
> time dd if=/dev/mtdblock3 of=/dev/null bs=64k from
> 
> 41.78s to 16.61s
> 
> Signed-off-by: Rosen Penev <rosenp at gmail.com>

Hm, this is fine. There's just a small caveat. The mt7621-spi [0]
can do at most (SYS_CLOCK) / 2 which works out as 50 MHz / 2 = 25 MHz
and this is supported by your results as well:

Because 41.78s / 16.61s = 2.51. If the spi-transfers were operating
at 50 Mhz, dd would have taken just around 8-9 seconds.

The reason why the dts patch this is still fine is because the
spi-max-frequency's value is supposed to be taken from the slave
device (S25FL256SAIF00 datasheet). So maybe, you could just mention in the
commit message that speed it sadly capped at 25 Mhz.

(Maybe you could also test, if you get better read performance
by adding the "m25p,fast-read;" property [1] to the device's dts)

Regards,
Christian

[0] <https://github.com/torvalds/linux/blob/master/drivers/staging/mt7621-spi/spi-mt7621.c#L304>
[1] <https://www.kernel.org/doc/Documentation/devicetree/bindings/mtd/jedec%2Cspi-nor.txt>
> ---
>  target/linux/ramips/dts/GB-PC2.dts | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/linux/ramips/dts/GB-PC2.dts b/target/linux/ramips/dts/GB-PC2.dts
> index 788d4e6c08..f951083b8f 100644
> --- a/target/linux/ramips/dts/GB-PC2.dts
> +++ b/target/linux/ramips/dts/GB-PC2.dts
> @@ -81,7 +81,7 @@
>  	m25p80 at 0 {
>  		compatible = "jedec,spi-nor";
>  		reg = <0>;
> -		spi-max-frequency = <10000000>;
> +		spi-max-frequency = <50000000>;
>  
>  		partitions {
>  			compatible = "fixed-partitions";
> 





_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Sun Feb 10 13:21:17 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Sun, 10 Feb 2019 19:21:17 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <0535b4e0-f367-e323-eec0-4a03c865efa1@gmail.com>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
 <75f8c243-a3df-8825-2eed-e3483edc0afc@gmail.com>
 <ef6bfbb9-d562-7ad6-1106-6568d8c677ff@hauke-m.de>
 <0535b4e0-f367-e323-eec0-4a03c865efa1@gmail.com>
Message-ID: <2118fd31-6471-2008-85b1-1ebdb446889f@hauke-m.de>

On 2/10/19 5:28 PM, Petr Cvek wrote:
> Hi,
> 
> Dne 10. 02. 19 v 16:49 Hauke Mehrtens napsal(a):
>> Hi Petr,
>>
>> Thank you for the tests.
>>
>> On 2/3/19 9:44 AM, Petr Cvek wrote:
>>> I did an exhaustive ethernet measuring. Parameters: no wifi, no running
>>> dsl connection, 1 cable (in 1G port with external phy), no USB, almost
>>> vanilla openwrt (changes for rootfs on NFS, kernel command line and fix
>>> for uwc2 USB).
>>>
>>> run.sh
>>> A script which runs and logs measurements into a file named by its first
>>> parameter (or just the unix epoch time). You need to run "iperf3 -s" on
>>> lantiq manually.
>>
>> I am surprised that "iperf3 -c 10.0.0.80" has the double speed of
>> "iperf3 -c 10.0.0.80 -R" isn't this the same stream just in the
>> different direction?
>>
> Yeah that's why I started poking in the system at the first place. The
> transmitting out was slow. It seems the problem is in the packet
> generation, probably copying a skb into a linear buffer. When I
> converted the driver for the skb frags support it speeded up (thread:
> "[OpenWrt-Devel] [RFC] [PATCH v2] lantiq: net: ethernet driver with
> fragments").

One of the iperf instances was running on the router?
When the VR9 SoC was doing the TX it was slow and when it received it
was fast.

There are also 2 areas for the DMA controller so we can remove the
locking in the dma controller and use one register area for each CPU.

Did you also test the forwarding performance like NAT between 2 pots?


>> In the SoC there are 2 internal GPHYs and some *MII connections to
>> external PHYs. They are all connected to the GSWIP inside of the SoC, on
>> the CPU port normally a special tag is added to every packet which
>> indicates from which LAN port it was received on. This CPU port is
>> connected to the PPE and the PPE is connected to two DMA channels which
>> send the packets to the MIPS CPU running Linux. There are two ports
>> between the PPA and the CPU, the upstream driver only uses one of these
>> ports as we let the PPE stay in the default configuration. We could
>> later use it to put high prio packets on a special channel or to put the
>> DSL packets onto the other channel.
>>
> 
> Or make something like dual queue which is in the lantiq etop driver?
> Thanks for info. I was thinking about a generic dual queue (each VPE
> handling one) could be another speedup.

Yes we can probably also do something like this.

> 
>>> 3) The second ICU devicetree node doesn't need to be deleted for
>>> uniprocessor ICU usage.
>>
>> When the Voice firmware is used the second VPE is used for this FW and
>> not for Linux then the ICU should only use one block.
>>
> So machines with voice ports won't have second ICU node and machines
> without voice ports can have it.

To make voice work you need the voice FW whihc runs on one VPE.

> 
>>> Feel free to make your own tests and sorry for hardcoded IPs :-D
>>
>> I would like to use the upstream driver also in OpenWrt, I am working on
>> bridge offloading for the upstream DSA driver.  OpenWrt still misses a
>> script which can convert the common swconfig configuration into a bridge
>> configuration if such a script would be there I would like to switch to
>> the DSA driver with kernel 4.19.
>> Therefore I am not sure how efficient it is to invest so much time into
>> the driver currently used in OpenWrt.
>>
> 
> Well my changes are mostly only in xmit and TX polling NAPI code, maybe
> some DMA intialization, so it should be fairly compatible I can patch
> it. We should definitely put skb frags code in the final version though.
> 
> Petr

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Sun Feb 10 13:58:06 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Sun, 10 Feb 2019 19:58:06 +0100
Subject: [OpenWrt-Devel] [RFC] lantiq: SMP interrupts and ethernet
 driver backport from vanilla v5
In-Reply-To: <de8f9a7b-7ddf-29bd-2289-f6e492e6838d@gmail.com>
References: <97e9b305-b22f-18e3-f472-ab6a11b681a3@gmail.com>
 <466090c6-4b42-d0f8-ce71-5ba6a1c1476d@kresin.me>
 <b54f4672-ebba-2033-c640-2b484626890e@hauke-m.de>
 <de8f9a7b-7ddf-29bd-2289-f6e492e6838d@gmail.com>
Message-ID: <60b802cb-966d-13d3-bd4d-c580af930a8d@hauke-m.de>

On 2/1/19 12:36 PM, Petr Cvek wrote:
> Dne 01. 02. 19 v 10:51 Hauke Mehrtens napsal(a):> On 1/31/19 9:30 PM,
> Mathias Kresin wrote:
>>> 30/01/2019 11:38, Petr Cvek:
>>>>
> 
> Hi,
> 
> thank you both for the answer and sorry for "./" in the patches I
> usually do only git patching :-D. The patches are really RFC only. For
> example I would like to know if a separate node is the best way for SMP
> irq controller (ICU). The second set of the registers could be just
> appended at the end of icu0 registers.

Yes there are two identical register blocks for the ICU for each VPE
like you detected correctly.

The split into these 5 memory blocks we currently have in the driver
does not really match the documentation and the hardware, there it is
one block for each VPE. As the drivers currently already use the 5
register blocks for one ICU, I would suggest to add the 5 additional
memory blocks to the existing driver, if it does SMP. Be aware that this
driver is also used by some SoC which do not have multiple VPEs.

I think the locking should also be improved, but I do not know which
constrains the Linux kernel already provides you when these functions
are called.

> Origin of patches: well I was able to find second ICU just by dumping
> iomem space and looking for patterns (which is enough to make a clean
> implementation), but I was lazy to write it (again, done it once for
> some FPGA) myself so I've copied part of the code from this repo:
> 
> https://github.com/paldier/K3C-merlin/blob/master/release/src-lantiq/linux/linux-3.10.104/arch/mips/lantiq/irq.c
> 
> The probable address of second ICU was confirmed by grepping the GPL
> source codes from my modem's vendor (tplink td-W9980)
> 
> https://static.tp-link.com/resources/gpl/GPL_TD-W9980.tar.gz
> 
> The burst flag is basically the same value as in "etop" code path. The
> warning about 8 word burst size is again from tplink source blob (btw I
> think the DMA_2W_BURST flag in 4.14.9x is actually 4 word burst, but I
> didn't confirmed it yet).

I will have a look at this later.

>> I am also interested in benchmarks with only one of the patches to know
>> which patch gives us which improvement. The IRQ controller patch needs
>> some improvements to get into mainline Linux kernel and I would look
>> into it if it creates some improvement.
> 
> Thats gonna be a bit of a problem. My TD-W9980 has sadly a wave300 5G
> wifi driver, so I cannot test on it as it is broken and crashing the
> system (I've managed only make a few scans). For 2.4G wifi, I have only
> 150Mbps usb dongles, which are slow even without local interferences. My
> VDSL has only 22:2 which is OK even with vendor's firmware.
> 
> My only option for a benchmarking is the ethernet which is (with the
> vanilla openwrt driver) extremely slow. My backport increased the TX
> speed of the modem from about 4.5 MiByte/s to about 7.5 MiByte/s (TCP
> netcat pipe, ACKs on RX FIFO). Gonna try iperf tomorrow. The driver
> works even with NFS rootfs over it. Sometimes a kernel warning about
> timeout is printed, but the system works afterwards and this is only a
> RFC stage. Probably some spinlock is missing or irq gets acked at the
> wrong place. It _will_ be fixed.
> 
> What is interesting is my observation of long frames (4000-6000) which
> are sometimes coming from lantiq (observed in wireshark). My server is
> sending only classic ~1500 frames and I know the lantiq driver is
> limited to them too (+ tested in ip link set eth0 mtu 3000 -> error).

Can you please send me a capture of such a packet. Do you know how to
reproduce this? Is DSL also active when you see this? The datapath of
the DSL goes through the PPE which also handles Ethernet.

I am mostly interested in the MAC addresses and if there are any special
headers.

>> Are the IRQs on the 2. VPE used automatically or do you use it with irq
>> balanced?
>> Could you please provide the output of "cat /proc/interrupts"
>>
> The interupts are used automatically, but the distribution is quite
> random. I don't have irqbalance package compiled.
> 
> # cat /proc/interrupts
>            CPU0       CPU1
>   7:      31309      31096      MIPS   7  timer
>   8:        586        607      MIPS   0  IPI call
>   9:       5991      10371      MIPS   1  IPI resched
>  22:      14762          1       icu  22  spi_rx
>  23:       2496          1       icu  23  spi_tx
>  24:          0          0       icu  24  spi_err
>  62:          0          0       icu  62  1e101000.usb, dwc2_hsotg:usb1
>  63:          0        192       icu  63  mei_cpe
>  72:      11133          0       icu  72  vrx200_rx
>  73:          0      13833       icu  73  vrx200_tx
>  91:          0         81       icu  91  1e106000.usb, dwc2_hsotg:usb2
> 112:        745          0       icu 112  asc_tx
> 113:          0        222       icu 113  asc_rx
> 114:          0          0       icu 114  asc_err
> 126:          0          0       icu 126  gptu
> 127:          0          0       icu 127  gptu
> 128:          0          0       icu 128  gptu
> 129:          0          0       icu 129  gptu
> 130:          0          0       icu 130  gptu
> 131:          0          0       icu 131  gptu
> 161:          0          0       icu 161  ifx_pcie_rc0
> ERR:          1
> 
> (using napi polling decreases interrupt generation, so 11133 and 13833
> values are not real number of packets transmitted, the vanilla driver
> has more then twice as much as backported driver)
> 
> The affinity can be set in /proc/irq/$NUM, this can be used for testing
> the improvements cause by patch (the burst width can be written on the
> fly too).
> 
>> We should probably make use for scattered DMA in
>> the driver too. 
> 
> I would like to try, but I don't have any vrx200 SoC TRM datasheets and
> even with different kernel versions (from vendors) the picture is not
> complete.

scattered DMA is the same as support for the skb frag.

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Sun Feb 10 18:49:31 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Sun, 10 Feb 2019 15:49:31 -0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC2 SPI speed to
 50MHz
In-Reply-To: <2532659.MQdL4lFfpy@debian64>
References: <20190201073613.14656-1-rosenp@gmail.com>
 <2532659.MQdL4lFfpy@debian64>
Message-ID: <CAKxU2N-FKf0FxOeKfEoL1LVueDUQKaqDF1vGrFymdyd+6wUz6Q@mail.gmail.com>

On Sun, Feb 10, 2019 at 9:23 AM Christian Lamparter <chunkeey at gmail.com> wrote:
>
> On Friday, February 1, 2019 8:36:13 AM CET Rosen Penev wrote:
> > The flash chip on the board (Spansion S25FL256SAIF00) is rated to support
> > at least 50MHz according to the datasheet.
> >
> > From testing this, that seems correct.
> >
> > time dd if=/dev/mtdblock3 of=/dev/null bs=64k from
> >
> > 41.78s to 16.61s
> >
> > Signed-off-by: Rosen Penev <rosenp at gmail.com>
>
> Hm, this is fine. There's just a small caveat. The mt7621-spi [0]
> can do at most (SYS_CLOCK) / 2 which works out as 50 MHz / 2 = 25 MHz
> and this is supported by your results as well:
>
> Because 41.78s / 16.61s = 2.51. If the spi-transfers were operating
> at 50 Mhz, dd would have taken just around 8-9 seconds.
After applying the upstream spi driver (
https://github.com/openwrt/openwrt/pull/1578 ), time goes down to
9.54s on the PC1. It's a little lower on the PC2 (no idea why).

On the PC1, I can go even higher with the SPI frequency to get better
performance. However, the later versions of the PC1 switched flash
chips to Spansion to avoid a restart bug. Those are documented as
accepting 50MHz for read requests.

>
> The reason why the dts patch this is still fine is because the
> spi-max-frequency's value is supposed to be taken from the slave
> device (S25FL256SAIF00 datasheet). So maybe, you could just mention in the
> commit message that speed it sadly capped at 25 Mhz.
>
> (Maybe you could also test, if you get better read performance
> by adding the "m25p,fast-read;" property [1] to the device's dts)
>
> Regards,
> Christian
>
> [0] <https://github.com/torvalds/linux/blob/master/drivers/staging/mt7621-spi/spi-mt7621.c#L304>
> [1] <https://www.kernel.org/doc/Documentation/devicetree/bindings/mtd/jedec%2Cspi-nor.txt>
> > ---
> >  target/linux/ramips/dts/GB-PC2.dts | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/target/linux/ramips/dts/GB-PC2.dts b/target/linux/ramips/dts/GB-PC2.dts
> > index 788d4e6c08..f951083b8f 100644
> > --- a/target/linux/ramips/dts/GB-PC2.dts
> > +++ b/target/linux/ramips/dts/GB-PC2.dts
> > @@ -81,7 +81,7 @@
> >       m25p80 at 0 {
> >               compatible = "jedec,spi-nor";
> >               reg = <0>;
> > -             spi-max-frequency = <10000000>;
> > +             spi-max-frequency = <50000000>;
> >
> >               partitions {
> >                       compatible = "fixed-partitions";
> >
>
>
>
>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Sun Feb 10 19:05:06 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Sun, 10 Feb 2019 16:05:06 -0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC2 SPI speed to
 50MHz
In-Reply-To: <2532659.MQdL4lFfpy@debian64>
References: <20190201073613.14656-1-rosenp@gmail.com>
 <2532659.MQdL4lFfpy@debian64>
Message-ID: <CAKxU2N_erS7rnvq5gUyLLoe24i60xynU9dX+n31i+ScuZEwPbQ@mail.gmail.com>

On Sun, Feb 10, 2019 at 9:23 AM Christian Lamparter <chunkeey at gmail.com> wrote:
>
> On Friday, February 1, 2019 8:36:13 AM CET Rosen Penev wrote:
> > The flash chip on the board (Spansion S25FL256SAIF00) is rated to support
> > at least 50MHz according to the datasheet.
> >
> > From testing this, that seems correct.
> >
> > time dd if=/dev/mtdblock3 of=/dev/null bs=64k from
> >
> > 41.78s to 16.61s
> >
> > Signed-off-by: Rosen Penev <rosenp at gmail.com>
>
> Hm, this is fine. There's just a small caveat. The mt7621-spi [0]
> can do at most (SYS_CLOCK) / 2 which works out as 50 MHz / 2 = 25 MHz
> and this is supported by your results as well:
Forgot to mention. since hackpascal's rework of the CPU clock
handling, SPI clock is not tied to sysclock anymore. sysclock is set
to either 50MHz or 125MHz depending on the board. See:
https://github.com/openwrt/openwrt/pull/1578#issuecomment-443676217

Also forgot to mention, those results are with the driver in OpenWrt.
They're better with the upstream one.
>
> Because 41.78s / 16.61s = 2.51. If the spi-transfers were operating
> at 50 Mhz, dd would have taken just around 8-9 seconds.
>
> The reason why the dts patch this is still fine is because the
> spi-max-frequency's value is supposed to be taken from the slave
> device (S25FL256SAIF00 datasheet). So maybe, you could just mention in the
> commit message that speed it sadly capped at 25 Mhz.
Should I? There are other mt7621 with dts files that exceed this figure.
>
> (Maybe you could also test, if you get better read performance
> by adding the "m25p,fast-read;" property [1] to the device's dts)
>
> Regards,
> Christian
>
> [0] <https://github.com/torvalds/linux/blob/master/drivers/staging/mt7621-spi/spi-mt7621.c#L304>
> [1] <https://www.kernel.org/doc/Documentation/devicetree/bindings/mtd/jedec%2Cspi-nor.txt>
> > ---
> >  target/linux/ramips/dts/GB-PC2.dts | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/target/linux/ramips/dts/GB-PC2.dts b/target/linux/ramips/dts/GB-PC2.dts
> > index 788d4e6c08..f951083b8f 100644
> > --- a/target/linux/ramips/dts/GB-PC2.dts
> > +++ b/target/linux/ramips/dts/GB-PC2.dts
> > @@ -81,7 +81,7 @@
> >       m25p80 at 0 {
> >               compatible = "jedec,spi-nor";
> >               reg = <0>;
> > -             spi-max-frequency = <10000000>;
> > +             spi-max-frequency = <50000000>;
> >
> >               partitions {
> >                       compatible = "fixed-partitions";
> >
>
>
>
>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From gch981213 at gmail.com  Sun Feb 10 23:59:32 2019
From: gch981213 at gmail.com (Chuanhong Guo)
Date: Mon, 11 Feb 2019 12:59:32 +0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC2 SPI speed to
 50MHz
In-Reply-To: <CAKxU2N-FKf0FxOeKfEoL1LVueDUQKaqDF1vGrFymdyd+6wUz6Q@mail.gmail.com>
References: <20190201073613.14656-1-rosenp@gmail.com>
 <2532659.MQdL4lFfpy@debian64>
 <CAKxU2N-FKf0FxOeKfEoL1LVueDUQKaqDF1vGrFymdyd+6wUz6Q@mail.gmail.com>
Message-ID: <CAJsYDVLf9Di8SCHzbQ-XX0LfVZ1BWgQJAzrBrdemN5NnJcNNPg@mail.gmail.com>

Hi!
On Mon, Feb 11, 2019 at 7:49 AM Rosen Penev <rosenp at gmail.com> wrote:
> [...]
> On the PC1, I can go even higher with the SPI frequency to get better
> performance. However, the later versions of the PC1 switched flash
> chips to Spansion to avoid a restart bug. Those are documented as
> accepting 50MHz for read requests.

FYI: I haven't check the Spansion datasheet, but when Winbond
datasheets say read instruction accepts SPI clock up to 50MHz it
refers to the normal read instruction (0x03) and for higher clock you
should switch to fast read instruction (0x0B) which can be done by
adding m25p,fast-read to dts. I guess the situation with Spansion
datasheets are the same.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Mon Feb 11 01:42:21 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Sun, 10 Feb 2019 22:42:21 -0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC2 SPI speed to
 50MHz
In-Reply-To: <CAJsYDVLf9Di8SCHzbQ-XX0LfVZ1BWgQJAzrBrdemN5NnJcNNPg@mail.gmail.com>
References: <20190201073613.14656-1-rosenp@gmail.com>
 <2532659.MQdL4lFfpy@debian64>
 <CAKxU2N-FKf0FxOeKfEoL1LVueDUQKaqDF1vGrFymdyd+6wUz6Q@mail.gmail.com>
 <CAJsYDVLf9Di8SCHzbQ-XX0LfVZ1BWgQJAzrBrdemN5NnJcNNPg@mail.gmail.com>
Message-ID: <CAKxU2N_BjedV67WOr=8UW_oaeSzahvrdDU4HnFyTve4Veoa2aw@mail.gmail.com>

On Sun, Feb 10, 2019 at 8:59 PM Chuanhong Guo <gch981213 at gmail.com> wrote:
>
> Hi!
> On Mon, Feb 11, 2019 at 7:49 AM Rosen Penev <rosenp at gmail.com> wrote:
> > [...]
> > On the PC1, I can go even higher with the SPI frequency to get better
> > performance. However, the later versions of the PC1 switched flash
> > chips to Spansion to avoid a restart bug. Those are documented as
> > accepting 50MHz for read requests.
>
> FYI: I haven't check the Spansion datasheet, but when Winbond
> datasheets say read instruction accepts SPI clock up to 50MHz it
> refers to the normal read instruction (0x03) and for higher clock you
> should switch to fast read instruction (0x0B) which can be done by
> adding m25p,fast-read to dts. I guess the situation with Spansion
> datasheets are the same.
Wow, thanks for that fast read hint. According to a datasheet I found
online, it accepts 50MHz for normal reads and 133MHz for fast reads. I
then increased the speed to 80MHz and ran again:

time dd if=/dev/mtdblock3 of=/dev/null = 6.15s
44.854483 seconds for jffs2 to complete building.

I then increased to 104MHz
time dd if=/dev/mtdblock3 of=/dev/null = 6.23s
44.312618 seconds for jffs2 to complete building

108MHz:
time dd if=/dev/mtdblock3 of=/dev/null = 6.28s
44.501574 seconds for jffs2 to complete building

I went back down to 50MHz just to make sure.
time dd if=/dev/mtdblock3 of=/dev/null = 8.68s
46.344117 seconds for jffs2 to complete building

then to 60MHz:
time dd if=/dev/mtdblock3 of=/dev/null = 7.37s
46.172334 seconds for jffs2 to complete building

and finally 66MHz:
time dd if=/dev/mtdblock3 of=/dev/null
45.501151 seconds for jffs2 to complete building

133MHz and 125MHz did not work. The datasheet mentions 66MHz for
mismatching core and I/O voltage and 133MHz for matching. 80MHz is
still faster though...

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From zachcook1991 at gmail.com  Mon Feb 11 09:00:33 2019
From: zachcook1991 at gmail.com (Zachary Cook)
Date: Mon, 11 Feb 2019 09:00:33 -0500
Subject: [OpenWrt-Devel] [PATCH] procd: Add cached and available to memory
 table
Message-ID: <20190211140033.15166-1-zachcook1991@gmail.com>

This should allow Luci to show a better measure of system memory usage
Cached memory will be used to add a new progress bar
MemAvailable is the kernel's estimate of memory that is useable
by userspace without swapping, and is more accurate than the current
memory.free + memory.buffered calculation for total memory available

Signed-off-by: Zachary Cook <zachcook1991 at gmail.com>
---
 system.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/system.c b/system.c
index 8ed3f93..501d589 100644
--- a/system.c
+++ b/system.c
@@ -228,6 +228,13 @@ static int system_info(struct ubus_context *ctx, struct ubus_object *obj,
 #ifdef linux
 	struct sysinfo info;
 	void *c;
+	char line[256];
+	char *key, *val;
+	unsigned long long available, cached;
+	FILE *f;
+
+	if ((f = fopen("/proc/meminfo", "r")) == NULL)
+		return UBUS_STATUS_UNKNOWN_ERROR;
 
 	if (sysinfo(&info))
 		return UBUS_STATUS_UNKNOWN_ERROR;
@@ -251,11 +258,33 @@ static int system_info(struct ubus_context *ctx, struct ubus_object *obj,
 	blobmsg_add_u32(&b, NULL, info.loads[2]);
 	blobmsg_close_array(&b, c);
 
+	//if linux < 3.14 MemAvailable is not in meminfo
+	available = 0;
+	cached = 0;
+
+	while(fgets(line, sizeof(line), f))
+	{
+		key = strtok(line, " :");
+		val = strtok(NULL, " ");
+
+		if (!key || !val)
+			continue;
+
+		if (!strcasecmp(key, "MemAvailable"))
+			available = 1024 * atol(val);
+		else if (!strcasecmp(key, "Cached"))
+			cached =    1024 * atol(val);
+	}
+
+	fclose(f);
+
 	c = blobmsg_open_table(&b, "memory");
 	blobmsg_add_u64(&b, "total",    info.mem_unit * info.totalram);
 	blobmsg_add_u64(&b, "free",     info.mem_unit * info.freeram);
 	blobmsg_add_u64(&b, "shared",   info.mem_unit * info.sharedram);
 	blobmsg_add_u64(&b, "buffered", info.mem_unit * info.bufferram);
+	blobmsg_add_u64(&b, "available",available);
+	blobmsg_add_u64(&b, "cached",   cached);
 	blobmsg_close_table(&b, c);
 
 	c = blobmsg_open_table(&b, "swap");
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mcr at sandelman.ca  Mon Feb 11 09:58:51 2019
From: mcr at sandelman.ca (Michael Richardson)
Date: Mon, 11 Feb 2019 09:58:51 -0500
Subject: [OpenWrt-Devel] moving firewall package to nftables
Message-ID: <30015.1549897131@localhost>


There are some features in nft that we'd like to use in CIRALabs'
SecureHomeGateway project.  In particular, it's much easier to get
statistics out of nft in JSON.  nft is easy to install, but it seemed
that we really needed the updated iptables commands, and I upgraded
that (and libnftnl, which seems to require a git head to work with iptables
iptables 1.8.2. 1.1.2 is not new enough)

I had a small hope that /sbin/fw3 was shelling out to /sbin/iptables to do
it's work, but I see now that it's not the case.  It uses libiptc and ip6tc
directly.    I have not yet investigated how hard it will be to upgrade
to the nft libraries to do this.

Before I continue, I wanted to check if someone else has been down this path
already and determined it is premature, or if there are larger architectural
issues that need to be resolved of which I am ignorant.

--
]               Never tell me the odds!                 | ipv6 mesh networks [
]   Michael Richardson, Sandelman Software Works        |    IoT architect   [
]     mcr at sandelman.ca  http://www.sandelman.ca/        |   ruby on rails    [




-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190211/67407620/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From seckelmann at datto.com  Mon Feb 11 10:47:07 2019
From: seckelmann at datto.com (Sven Eckelmann)
Date: Mon, 11 Feb 2019 16:47:07 +0100
Subject: [OpenWrt-Devel] ar71xx: OM2P ImageBuilder no firmware when
 BIN_DIR used
In-Reply-To: <09b67707-2eb3-d851-fa2c-b55aa11a91fa@aparcar.org>
References: <09b67707-2eb3-d851-fa2c-b55aa11a91fa@aparcar.org>
Message-ID: <2254556.d8lnekz0xd@bentobox>

On Friday, 1 February 2019 13:03:42 CET Paul Spooren wrote:
> Hi all,
> 
> thanks to this[0] bug report I found that the ar71xx/generic
> ImageBuilder doesn't create any firmware images for profile OM2P when
> used with BIN_DIR.
> 
> My first guess is that it's somewhat related to a hard coded destination
> which doesn't handle BIN_DIR. At the very end of an "successful" build log:
> 
> > if [ -e "/home/aparcar/worker/imagebuilder/openwrt/18.06.2/ar71xx/generic/bin/targets/ar71xx/generic/openwrt-18.06.2-c9d037b0992cca4-ar71xx-generic-om2p-squashfs-factory.bin" ]; then cp "/home/aparcar/worker/imagebuilder/openwrt/18.06.2/ar71xx/generic/bin/targets/ar71xx/generic/openwrt-18.06.2-c9d037b0992cca4-ar71xx-generic-om2p-squashfs-factory.bin" "/home/aparcar/worker/imagebuilder/openwrt/18.06.2/ar71xx/generic/bin/targets/ar71xx/generic/openwrt-18.06.2-c9d037b0992cca4-ar71xx-generic-om2p-squashfs-sysupgrade.bin"; fi

Ehrm, no. These things are not hardcoded but your make just filled the 
placeholders before it prints it and sends it to your $SHELL.

The legacy build script is basically calling this helper:

    define Image/Build/OpenMesh
    	-sh $(TOPDIR)/scripts/om-fwupgradecfg-gen.sh \
    		"$(4)" \
    		"$(BUILD_DIR)/fwupgrade.cfg-$(4)" \
    		"$(KDIR_TMP)/vmlinux-$(2).uImage" \
    		"$(KDIR)/root.$(1)"
    	-sh $(TOPDIR)/scripts/combined-ext-image.sh \
    		"$(4)" "$(call factoryname,$(1),$(2))" \
    		"$(BUILD_DIR)/fwupgrade.cfg-$(4)" "fwupgrade.cfg" \
    		"$(KDIR_TMP)/vmlinux-$(2).uImage" "kernel" \
    		"$(KDIR)/root.$(1)" "rootfs"
    	if [ -e "$(call factoryname,$(1),$(2))" ]; then \
    		cp "$(call factoryname,$(1),$(2))" "$(call sysupname,$(1),$(2))"; \
    	fi
    endef

The output files are defined using:

    define sysupname
    $(call imgname,$(1),$(2))-sysupgrade.bin
    endef

    define factoryname
    $(call imgname,$(1),$(2))-factory.bin
    endef


And the imgname is:

    define imgname
    $(BIN_DIR)/$(IMG_PREFIX)-$(2)-$(call rootfs_type,$(1))
    endef


At least it looks to me like BIN_DIR is used. But yes, the second parameter to 
scripts/combined-ext-image.sh in the make output is really using something 
which is definitely not containing the user supplied BIN_DIR but the standard 
BIN_DIR from rules.mk.

If you replace the factoryname with imgname in this line (or directly 
$(BIN_DIR)), you will also see that it is not using the user supplied BIN_DIR.

You can also see this problem when you select "Linksys WRT400N" or "Zcomax 
ZCN-1523H-5-16" - which are also using factoryname/imgname. But also devices 
like "ALFA AP96"/"Atheros AP96", which are using the default "RKuImage", have 
this problem. Something tells me that all(?) legacy build scripts are 
affected. At least it works fine with ap121f from the non-legacy devices.

I would guess that this is caused by the way SingleProfile is defined and how 
it interacts with LegacyDevice (include/image-legacy.mk) vs. Device
(include/image.mk). If you look carefully, you will notice that legacy devices 
spawn a new sub-make - non-legacy devices don't do that.

You can try the attached mini-patch [1] to check whether this is your problem. 

Kind regards,
	Sven

[1] https://github.com/openwrt/openwrt/pull/1815
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-build-Accept-BIN_DIR-parameter-for-legacy-images.patch
Type: text/x-patch
Size: 1574 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190211/68d44398/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190211/68d44398/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From dave at taht.net  Mon Feb 11 12:30:31 2019
From: dave at taht.net (Dave Taht)
Date: Mon, 11 Feb 2019 09:30:31 -0800
Subject: [OpenWrt-Devel] netdevconf + ietf airbnb share in prague?
Message-ID: <87y36mw7uw.fsf@taht.net>


I might be going to either or both of these conferences. I am curious
if anyone else is going and would like to split an airbnb?

https://netdevconf.org/0x13/ has quite a lot of interest to openwrt
folk - in my case the wireless workshop, bpf, and l4s talks are of
note. I've got a talk at netdevconf *maybe* on opening up the 240/4
IPv4 address space.

Netdevconf is march 20-22nd, ietf is 23-

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From info at lank.me  Mon Feb 11 13:16:46 2019
From: info at lank.me (Yaroslav Petrov)
Date: Mon, 11 Feb 2019 19:16:46 +0100
Subject: [OpenWrt-Devel] [RFC] [PATCH v2] lantiq: net: ethernet driver
 with fragments
In-Reply-To: <88e70713-aa5f-c339-0b60-02cb65dc8c9e@gmail.com>
References: <88e70713-aa5f-c339-0b60-02cb65dc8c9e@gmail.com>
Message-ID: <be0a29d8-e1dc-44e8-5740-47c9de290538@lank.me>

Hi Petr,


Now i can test new lan driver on VGV7510KW22. Its look really good, with 
path 904&905 i have 2-4 Mbits more bandwidth, but it seams increasing of 
descriptors not enough to resole ring full events.


Test bench:

* O2 box (VGV7510KW22) are connected on 1 GBit switch.

* Openwrt master (initramfs) with bootargs = "console=ttyLTQ0,115200";

* Boot via TFTP

* disabled: dsl_control, odhcpd, dnsmasq


See logs.


I will test this 2 pathes on BT5 next days


Best regards

Yaro

On 2/8/19 2:10 PM, Petr Cvek wrote:
> I think I've managed to fix the backported driver from vanilla kernel. I
> forgot to copy phy_start() call from original driver (that's probably
> why it didn't work, I'm booting from NFS and from port 0, so it was
> enabled already) and I've added the support for the skb fragments. This
> seems to greatly increase the TX throughput.
>
> In the addition it seems the DMA burst patch doesn't increase the
> throughput anymore (TX is probably saturated now, and the code is
> better), but the driver supports any burst mode now anyway (there was
> just a problem with buffer alignment).
>
> There were ring full events often, so I've increased the number of
> descriptors from 0x40 to 0xc0 and changed the timeout. Maybe it should
> work better if the queue is stopped around 50% or something like that.
>
> Attached:
> 0904...		- new driver
> 0905...		- descriptor increase
> run.sh		- testing script, various iperf3 modes
> vanilla...	- vanilla openwrt test
> z4_hyst...	- new driver test (measured with previous patches for SMP ICU
> and burst)
>
> Petr
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

-- 
Mit freundlichen Gr??en,
Yaroslav Petrov
--
Best regards
Yaroslav Petrov
--
? ?????????
?????? ???????

email: info at lank.me
mob DE: +49 151 521 99000 (WhatsApp)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190211/fb51bde8/attachment.htm>
-------------- next part --------------
[   47.336391] br-lan: port 1(eth0.1) entered disabled state
[   47.342409] device eth0.1 entered promiscuous mode
[   47.346567] device eth0 entered promiscuous mode
[   47.357298] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   50.383706] lantiq,xrx200-net 1e108000.eth eth0: port 3 got link
[   50.388530] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   50.395767] br-lan: port 1(eth0.1) entered blocking state
[   50.400004] br-lan: port 1(eth0.1) entered forwarding state
[   50.406444] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
root at OpenWrt:/# cat /proc/interrupts 
           CPU0       CPU1       
  7:     151484     152800      MIPS   7  timer
  8:       1448     332285      MIPS   0  IPI call
  9:       3967      21752      MIPS   1  IPI resched
 62:          0          0       icu  62  1e101000.usb, dwc2_hsotg:usb1
 63:       2614          0       icu  63  mei_cpe
 72:     453795          0       icu  72  vrx200_rx
 73:     634185          0       icu  73  vrx200_tx
 75:          0          0       icu  75  vrx200_tx_2
112:       4041          0       icu 112  asc_tx
113:        386          0       icu 113  asc_rx
114:          0          0       icu 114  asc_err
126:          0          0       icu 126  gptu
127:          0          0       icu 127  gptu
128:          0          0       icu 128  gptu
129:          0          0       icu 129  gptu
130:          0          0       icu 130  gptu
131:          0          0       icu 131  gptu
150:          0          0       icu 150  mps_mbx vc0
151:          0          0       icu 151  mps_mbx vc1
152:          0          0       icu 152  mps_mbx vc2
153:          0          0       icu 153  mps_mbx vc3
154:          0          0       icu 154  mps_mbx ad0
155:          0          0       icu 155  mps_mbx ad1
ERR:          0
root at OpenWrt:/# 
-------------- next part --------------
+ : ':::::::[' configuration openwrt_master ']:::::::' :
+ iperf3 -c 192.168.1.133
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 56710 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  11.1 MBytes  92.8 Mbits/sec    0    206 KBytes       
[  4]   1.00-2.00   sec  10.0 MBytes  83.9 Mbits/sec    0    206 KBytes       
[  4]   2.00-3.00   sec  11.0 MBytes  92.3 Mbits/sec    0    206 KBytes       
[  4]   3.00-4.00   sec  10.8 MBytes  90.7 Mbits/sec    1    160 KBytes       
[  4]   4.00-5.00   sec  11.2 MBytes  94.3 Mbits/sec    0    198 KBytes       
[  4]   5.00-6.00   sec  11.2 MBytes  93.8 Mbits/sec    0    199 KBytes       
[  4]   6.00-7.00   sec  10.3 MBytes  86.0 Mbits/sec    0    199 KBytes       
[  4]   7.00-8.00   sec  10.2 MBytes  85.5 Mbits/sec    2    175 KBytes       
[  4]   8.00-9.00   sec  10.4 MBytes  87.6 Mbits/sec    0    198 KBytes       
[  4]   9.00-10.00  sec  10.6 MBytes  88.6 Mbits/sec    0    199 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   107 MBytes  89.6 Mbits/sec    3             sender
[  4]   0.00-10.00  sec   106 MBytes  88.6 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 56740 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  5.58 MBytes  46.8 Mbits/sec                  
[  4]   1.00-2.00   sec  5.52 MBytes  46.3 Mbits/sec                  
[  4]   2.00-3.00   sec  5.52 MBytes  46.3 Mbits/sec                  
[  4]   3.00-4.00   sec  5.55 MBytes  46.5 Mbits/sec                  
[  4]   4.00-5.00   sec  5.52 MBytes  46.3 Mbits/sec                  
[  4]   5.00-6.00   sec  5.59 MBytes  46.9 Mbits/sec                  
[  4]   6.00-7.00   sec  5.66 MBytes  47.5 Mbits/sec                  
[  4]   7.00-8.00   sec  5.66 MBytes  47.5 Mbits/sec                  
[  4]   8.00-9.00   sec  5.67 MBytes  47.5 Mbits/sec                  
[  4]   9.00-10.00  sec  5.67 MBytes  47.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  56.3 MBytes  47.3 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  56.3 MBytes  47.3 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 150M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 48112 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   137 Mbits/sec  2093  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2289  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  0.780 ms  9500/11529 (82%)  
[  4] Sent 11529 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 150M -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 50915 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  3.23 MBytes  27.1 Mbits/sec  0.077 ms  1715/2128 (81%)  
[  4]   1.00-2.00   sec  2.73 MBytes  22.9 Mbits/sec  0.072 ms  1702/2052 (83%)  
[  4]   2.00-3.00   sec  3.04 MBytes  25.5 Mbits/sec  0.069 ms  1670/2059 (81%)  
[  4]   3.00-4.00   sec  3.00 MBytes  25.2 Mbits/sec  0.080 ms  1672/2056 (81%)  
[  4]   4.00-5.00   sec  3.13 MBytes  26.3 Mbits/sec  0.065 ms  1656/2057 (81%)  
[  4]   5.00-6.00   sec  3.13 MBytes  26.3 Mbits/sec  0.063 ms  1641/2042 (80%)  
[  4]   6.00-7.00   sec  3.05 MBytes  25.6 Mbits/sec  0.091 ms  1653/2043 (81%)  
[  4]   7.00-8.00   sec  2.88 MBytes  24.1 Mbits/sec  0.079 ms  1683/2051 (82%)  
[  4]   8.00-9.00   sec  2.80 MBytes  23.5 Mbits/sec  0.076 ms  1703/2062 (83%)  
[  4]   9.00-10.00  sec  2.82 MBytes  23.7 Mbits/sec  0.072 ms  1679/2040 (82%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   161 MBytes   135 Mbits/sec  0.068 ms  16802/20621 (81%)  
[  4] Sent 20621 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 500M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 44807 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.3 MBytes   497 Mbits/sec  7591  
[  4]   1.00-2.00   sec  59.9 MBytes   502 Mbits/sec  7666  
[  4]   2.00-3.00   sec  59.3 MBytes   498 Mbits/sec  7593  
[  4]   3.00-4.00   sec  59.9 MBytes   502 Mbits/sec  7667  
[  4]   4.00-5.00   sec  59.3 MBytes   497 Mbits/sec  7590  
[  4]   5.00-6.00   sec  59.9 MBytes   503 Mbits/sec  7669  
[  4]   6.00-7.00   sec  59.3 MBytes   497 Mbits/sec  7589  
[  4]   7.00-8.00   sec  59.9 MBytes   503 Mbits/sec  7670  
[  4]   8.00-9.00   sec  59.3 MBytes   497 Mbits/sec  7590  
[  4]   9.00-10.00  sec  59.9 MBytes   502 Mbits/sec  7667  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  0.852 ms  73857/74829 (99%)  
[  4] Sent 74829 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 500M -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 40207 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  3.34 MBytes  28.0 Mbits/sec  0.064 ms  1685/2112 (80%)  
[  4]   1.00-2.00   sec  2.84 MBytes  23.8 Mbits/sec  0.057 ms  1695/2058 (82%)  
[  4]   2.00-3.00   sec  2.86 MBytes  24.0 Mbits/sec  0.067 ms  1689/2055 (82%)  
[  4]   3.00-4.00   sec  2.88 MBytes  24.2 Mbits/sec  0.063 ms  1685/2054 (82%)  
[  4]   4.00-5.00   sec  3.11 MBytes  26.1 Mbits/sec  0.048 ms  1653/2051 (81%)  
[  4]   5.00-6.00   sec  2.92 MBytes  24.5 Mbits/sec  0.075 ms  1667/2041 (82%)  
[  4]   6.00-7.00   sec  3.08 MBytes  25.8 Mbits/sec  0.067 ms  1651/2045 (81%)  
[  4]   7.00-8.00   sec  2.84 MBytes  23.9 Mbits/sec  0.078 ms  1682/2046 (82%)  
[  4]   8.00-9.00   sec  3.09 MBytes  25.9 Mbits/sec  0.094 ms  1653/2048 (81%)  
[  4]   9.00-10.00  sec  3.07 MBytes  25.8 Mbits/sec  0.063 ms  1675/2068 (81%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   175 MBytes   147 Mbits/sec  0.072 ms  18175/22368 (81%)  
[  4] Sent 22368 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 1000M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 38840 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   103 MBytes   864 Mbits/sec  13185  
[  4]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14622  
[  4]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14624  
[  4]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14622  
[  4]   4.00-5.00   sec   114 MBytes   958 Mbits/sec  14621  
[  4]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14623  
[  4]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14622  
[  4]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14621  
[  4]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14622  
[  4]   9.00-10.00  sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec  0.460 ms  138267/139158 (99%)  
[  4] Sent 139158 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 1000M -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 45503 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.98 MBytes  41.8 Mbits/sec  0.078 ms  1296/1934 (67%)  
[  4]   1.00-2.00   sec  1.55 MBytes  13.0 Mbits/sec  0.084 ms  2033/2232 (91%)  
[  4]   2.00-3.00   sec  1.52 MBytes  12.8 Mbits/sec  0.060 ms  2005/2200 (91%)  
[  4]   3.00-4.00   sec  1.45 MBytes  12.1 Mbits/sec  0.077 ms  2090/2275 (92%)  
[  4]   4.00-5.00   sec  1.45 MBytes  12.2 Mbits/sec  0.079 ms  2125/2311 (92%)  
[  4]   5.00-6.00   sec  1.38 MBytes  11.5 Mbits/sec  0.087 ms  2103/2279 (92%)  
[  4]   6.00-7.00   sec  1.47 MBytes  12.3 Mbits/sec  0.091 ms  2123/2311 (92%)  
[  4]   7.00-8.00   sec  1.54 MBytes  12.9 Mbits/sec  0.069 ms  2052/2249 (91%)  
[  4]   8.00-9.00   sec  1.62 MBytes  13.6 Mbits/sec  0.080 ms  2019/2226 (91%)  
[  4]   9.00-10.00  sec  1.66 MBytes  13.9 Mbits/sec  0.103 ms  2014/2226 (90%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   178 MBytes   149 Mbits/sec  0.107 ms  20307/22735 (89%)  
[  4] Sent 22735 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 56928 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 56930 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 56932 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  3.33 MBytes  27.9 Mbits/sec   26   41.0 KBytes       
[  6]   0.00-1.00   sec  4.56 MBytes  38.3 Mbits/sec   11   83.4 KBytes       
[  8]   0.00-1.00   sec  4.50 MBytes  37.8 Mbits/sec   13   62.2 KBytes       
[SUM]   0.00-1.00   sec  12.4 MBytes   104 Mbits/sec   50             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.98 MBytes  33.4 Mbits/sec    1   60.8 KBytes       
[  6]   1.00-2.00   sec  4.54 MBytes  38.1 Mbits/sec    8   70.7 KBytes       
[  8]   1.00-2.00   sec  2.61 MBytes  21.9 Mbits/sec   10   58.0 KBytes       
[SUM]   1.00-2.00   sec  11.1 MBytes  93.3 Mbits/sec   19             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.79 MBytes  31.8 Mbits/sec    5   82.0 KBytes       
[  6]   2.00-3.00   sec  3.73 MBytes  31.3 Mbits/sec    7   66.5 KBytes       
[  8]   2.00-3.00   sec  3.67 MBytes  30.8 Mbits/sec   16   49.5 KBytes       
[SUM]   2.00-3.00   sec  11.2 MBytes  93.8 Mbits/sec   28             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.10 MBytes  34.4 Mbits/sec   15   48.1 KBytes       
[  6]   3.00-4.00   sec  3.73 MBytes  31.3 Mbits/sec    6   84.8 KBytes       
[  8]   3.00-4.00   sec  3.29 MBytes  27.6 Mbits/sec    4   66.5 KBytes       
[SUM]   3.00-4.00   sec  11.1 MBytes  93.3 Mbits/sec   25             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  2.42 MBytes  20.3 Mbits/sec   17   58.0 KBytes       
[  6]   4.00-5.00   sec  4.41 MBytes  37.0 Mbits/sec    4   72.1 KBytes       
[  8]   4.00-5.00   sec  4.23 MBytes  35.4 Mbits/sec    4   79.2 KBytes       
[SUM]   4.00-5.00   sec  11.1 MBytes  92.8 Mbits/sec   25             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.73 MBytes  31.3 Mbits/sec    9   83.4 KBytes       
[  6]   5.00-6.00   sec  4.54 MBytes  38.1 Mbits/sec    9   82.0 KBytes       
[  8]   5.00-6.00   sec  2.92 MBytes  24.5 Mbits/sec   17   33.9 KBytes       
[SUM]   5.00-6.00   sec  11.2 MBytes  93.8 Mbits/sec   35             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.23 MBytes  35.4 Mbits/sec   22   69.3 KBytes       
[  6]   6.00-7.00   sec  4.23 MBytes  35.4 Mbits/sec    4   70.7 KBytes       
[  8]   6.00-7.00   sec  2.80 MBytes  23.5 Mbits/sec    1   53.7 KBytes       
[SUM]   6.00-7.00   sec  11.2 MBytes  94.4 Mbits/sec   27             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.79 MBytes  31.8 Mbits/sec    5   59.4 KBytes       
[  6]   7.00-8.00   sec  4.47 MBytes  37.5 Mbits/sec   17   56.6 KBytes       
[  8]   7.00-8.00   sec  2.80 MBytes  23.5 Mbits/sec   18   55.1 KBytes       
[SUM]   7.00-8.00   sec  11.1 MBytes  92.8 Mbits/sec   40             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.29 MBytes  27.6 Mbits/sec   25   31.1 KBytes       
[  6]   8.00-9.00   sec  3.73 MBytes  31.3 Mbits/sec    6   77.8 KBytes       
[  8]   8.00-9.00   sec  4.29 MBytes  36.0 Mbits/sec    0   96.2 KBytes       
[SUM]   8.00-9.00   sec  11.3 MBytes  94.9 Mbits/sec   31             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  2.36 MBytes  19.8 Mbits/sec    6   58.0 KBytes       
[  6]   9.00-10.00  sec  5.22 MBytes  43.8 Mbits/sec    4   89.1 KBytes       
[  8]   9.00-10.00  sec  3.60 MBytes  30.2 Mbits/sec   17   59.4 KBytes       
[SUM]   9.00-10.00  sec  11.2 MBytes  93.8 Mbits/sec   27             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  35.0 MBytes  29.4 Mbits/sec  131             sender
[  4]   0.00-10.00  sec  34.5 MBytes  28.9 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  43.2 MBytes  36.2 Mbits/sec   76             sender
[  6]   0.00-10.00  sec  42.6 MBytes  35.7 Mbits/sec                  receiver
[  8]   0.00-10.00  sec  34.7 MBytes  29.1 Mbits/sec  100             sender
[  8]   0.00-10.00  sec  34.2 MBytes  28.7 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   113 MBytes  94.7 Mbits/sec  307             sender
[SUM]   0.00-10.00  sec   111 MBytes  93.3 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3 -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 56956 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 56958 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 56960 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[  6]   0.00-1.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[  8]   0.00-1.00   sec  1.09 MBytes  9.18 Mbits/sec                  
[SUM]   0.00-1.00   sec  5.84 MBytes  49.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  2.00 MBytes  16.8 Mbits/sec                  
[  6]   1.00-2.00   sec  1.99 MBytes  16.7 Mbits/sec                  
[  8]   1.00-2.00   sec  1.91 MBytes  16.0 Mbits/sec                  
[SUM]   1.00-2.00   sec  5.90 MBytes  49.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  1.96 MBytes  16.5 Mbits/sec                  
[  6]   2.00-3.00   sec  1.88 MBytes  15.8 Mbits/sec                  
[  8]   2.00-3.00   sec  2.00 MBytes  16.8 Mbits/sec                  
[SUM]   2.00-3.00   sec  5.84 MBytes  49.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  1.91 MBytes  16.0 Mbits/sec                  
[  6]   3.00-4.00   sec  2.00 MBytes  16.8 Mbits/sec                  
[  8]   3.00-4.00   sec  1.91 MBytes  16.1 Mbits/sec                  
[SUM]   3.00-4.00   sec  5.83 MBytes  48.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  1.98 MBytes  16.6 Mbits/sec                  
[  6]   4.00-5.00   sec  1.88 MBytes  15.7 Mbits/sec                  
[  8]   4.00-5.00   sec  1.96 MBytes  16.5 Mbits/sec                  
[SUM]   4.00-5.00   sec  5.82 MBytes  48.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  1.89 MBytes  15.9 Mbits/sec                  
[  6]   5.00-6.00   sec  2.00 MBytes  16.8 Mbits/sec                  
[  8]   5.00-6.00   sec  1.93 MBytes  16.2 Mbits/sec                  
[SUM]   5.00-6.00   sec  5.83 MBytes  48.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  2.00 MBytes  16.8 Mbits/sec                  
[  6]   6.00-7.00   sec  1.88 MBytes  15.7 Mbits/sec                  
[  8]   6.00-7.00   sec  1.94 MBytes  16.3 Mbits/sec                  
[SUM]   6.00-7.00   sec  5.82 MBytes  48.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  1.88 MBytes  15.7 Mbits/sec                  
[  6]   7.00-8.00   sec  2.00 MBytes  16.8 Mbits/sec                  
[  8]   7.00-8.00   sec  1.94 MBytes  16.3 Mbits/sec                  
[SUM]   7.00-8.00   sec  5.81 MBytes  48.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  2.00 MBytes  16.7 Mbits/sec                  
[  6]   8.00-9.00   sec  1.88 MBytes  15.7 Mbits/sec                  
[  8]   8.00-9.00   sec  1.94 MBytes  16.2 Mbits/sec                  
[SUM]   8.00-9.00   sec  5.81 MBytes  48.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  1.88 MBytes  15.8 Mbits/sec                  
[  6]   9.00-10.00  sec  2.00 MBytes  16.8 Mbits/sec                  
[  8]   9.00-10.00  sec  1.94 MBytes  16.3 Mbits/sec                  
[SUM]   9.00-10.00  sec  5.82 MBytes  48.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  19.9 MBytes  16.7 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  19.9 MBytes  16.7 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  19.9 MBytes  16.7 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  19.9 MBytes  16.7 Mbits/sec                  receiver
[  8]   0.00-10.00  sec  18.7 MBytes  15.7 Mbits/sec    0             sender
[  8]   0.00-10.00  sec  18.7 MBytes  15.7 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  58.5 MBytes  49.1 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  58.5 MBytes  49.1 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3 -u -b 800M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 41304 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 47404 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 48637 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  34.4 MBytes   288 Mbits/sec  4402  
[  6]   0.00-1.00   sec  34.4 MBytes   288 Mbits/sec  4402  
[  8]   0.00-1.00   sec  34.4 MBytes   288 Mbits/sec  4402  
[SUM]   0.00-1.00   sec   103 MBytes   865 Mbits/sec  13206  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  8]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4877  
[  6]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4877  
[  8]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4877  
[SUM]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14631  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  6]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  8]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[SUM]   4.00-5.00   sec   114 MBytes   958 Mbits/sec  14628  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  38.0 MBytes   319 Mbits/sec  4869  
[  6]   5.00-6.00   sec  38.0 MBytes   319 Mbits/sec  4869  
[  8]   5.00-6.00   sec  38.0 MBytes   319 Mbits/sec  4869  
[SUM]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14607  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  8]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4879  
[  6]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4879  
[  8]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4879  
[SUM]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14637  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  38.0 MBytes   320 Mbits/sec  4870  
[  6]   8.00-9.00   sec  38.0 MBytes   320 Mbits/sec  4870  
[  8]   8.00-9.00   sec  38.0 MBytes   320 Mbits/sec  4870  
[SUM]   8.00-9.00   sec   114 MBytes   959 Mbits/sec  14610  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4873  
[  8]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   9.00-10.00  sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   377 MBytes   316 Mbits/sec  29.134 ms  45557/45663 (1e+02%)  
[  4] Sent 45663 datagrams
[  6]   0.00-10.00  sec   377 MBytes   316 Mbits/sec  1.336 ms  45510/45678 (1e+02%)  
[  6] Sent 45678 datagrams
[  8]   0.00-10.00  sec   377 MBytes   316 Mbits/sec  2.736 ms  45498/45645 (1e+02%)  
[  8] Sent 45645 datagrams
[SUM]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec  11.069 ms  136565/136986 (1e+02%)  

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3 -R -u -b 800M
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 41120 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 35598 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 47026 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  1.70 MBytes  14.2 Mbits/sec  0.105 ms  712/929 (77%)  
[  6]   0.00-1.00   sec   256 KBytes  2.10 Mbits/sec  3397.270 ms  880/912 (96%)  
[  8]   0.00-1.00   sec   408 KBytes  3.34 Mbits/sec  996.623 ms  871/922 (94%)  
[SUM]   0.00-1.00   sec  2.34 MBytes  19.7 Mbits/sec  1464.666 ms  2463/2763 (89%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  1.36 MBytes  11.4 Mbits/sec  0.086 ms  601/775 (78%)  
[  6]   1.00-2.00   sec  80.0 KBytes   655 Kbits/sec  1781.800 ms  697/707 (99%)  
[  8]   1.00-2.00   sec   344 KBytes  2.82 Mbits/sec  62.214 ms  729/772 (94%)  
[SUM]   1.00-2.00   sec  1.77 MBytes  14.9 Mbits/sec  614.700 ms  2027/2254 (90%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  1.61 MBytes  13.5 Mbits/sec  0.077 ms  569/775 (73%)  
[  6]   2.00-3.00   sec   104 KBytes   852 Kbits/sec  770.082 ms  827/840 (98%)  
[  8]   2.00-3.00   sec   424 KBytes  3.47 Mbits/sec  2.110 ms  687/740 (93%)  
[SUM]   2.00-3.00   sec  2.12 MBytes  17.8 Mbits/sec  257.423 ms  2083/2355 (88%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  1.39 MBytes  11.7 Mbits/sec  0.059 ms  600/778 (77%)  
[  6]   3.00-4.00   sec  80.0 KBytes   655 Kbits/sec  403.932 ms  633/643 (98%)  
[  8]   3.00-4.00   sec   376 KBytes  3.08 Mbits/sec  0.179 ms  767/814 (94%)  
[SUM]   3.00-4.00   sec  1.84 MBytes  15.4 Mbits/sec  134.723 ms  2000/2235 (89%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  1.46 MBytes  12.3 Mbits/sec  0.091 ms  572/759 (75%)  
[  6]   4.00-5.00   sec   136 KBytes  1.11 Mbits/sec  134.976 ms  804/821 (98%)  
[  8]   4.00-5.00   sec   408 KBytes  3.34 Mbits/sec  0.075 ms  723/774 (93%)  
[SUM]   4.00-5.00   sec  1.99 MBytes  16.7 Mbits/sec  45.047 ms  2099/2354 (89%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  1.34 MBytes  11.2 Mbits/sec  0.076 ms  615/786 (78%)  
[  6]   5.00-6.00   sec   120 KBytes   983 Kbits/sec  51.392 ms  784/799 (98%)  
[  8]   5.00-6.00   sec   320 KBytes  2.62 Mbits/sec  0.095 ms  730/770 (95%)  
[SUM]   5.00-6.00   sec  1.77 MBytes  14.8 Mbits/sec  17.188 ms  2129/2355 (90%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  1.41 MBytes  11.9 Mbits/sec  0.081 ms  591/772 (77%)  
[  6]   6.00-7.00   sec   104 KBytes   852 Kbits/sec  22.327 ms  733/746 (98%)  
[  8]   6.00-7.00   sec   448 KBytes  3.67 Mbits/sec  0.084 ms  701/757 (93%)  
[SUM]   6.00-7.00   sec  1.95 MBytes  16.4 Mbits/sec  7.497 ms  2025/2275 (89%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  1.71 MBytes  14.4 Mbits/sec  0.066 ms  556/775 (72%)  
[  6]   7.00-8.00   sec   112 KBytes   918 Kbits/sec  9.134 ms  851/865 (98%)  
[  8]   7.00-8.00   sec   352 KBytes  2.88 Mbits/sec  0.086 ms  753/797 (94%)  
[SUM]   7.00-8.00   sec  2.16 MBytes  18.2 Mbits/sec  3.095 ms  2160/2437 (89%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  1.47 MBytes  12.3 Mbits/sec  0.070 ms  585/773 (76%)  
[  6]   8.00-9.00   sec   152 KBytes  1.25 Mbits/sec  2.779 ms  746/765 (98%)  
[  8]   8.00-9.00   sec   448 KBytes  3.67 Mbits/sec  0.075 ms  720/776 (93%)  
[SUM]   8.00-9.00   sec  2.05 MBytes  17.2 Mbits/sec  0.974 ms  2051/2314 (89%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  1.59 MBytes  13.3 Mbits/sec  0.075 ms  566/769 (74%)  
[  6]   9.00-10.00  sec   144 KBytes  1.18 Mbits/sec  1.009 ms  668/686 (97%)  
[  8]   9.00-10.00  sec   344 KBytes  2.82 Mbits/sec  0.082 ms  706/749 (94%)  
[SUM]   9.00-10.00  sec  2.06 MBytes  17.3 Mbits/sec  0.389 ms  1940/2204 (88%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  63.0 MBytes  52.8 Mbits/sec  0.069 ms  6103/8061 (76%)  
[  4] Sent 8061 datagrams
[  6]   0.00-10.00  sec  63.0 MBytes  52.8 Mbits/sec  0.952 ms  7852/8014 (98%)  
[  6] Sent 8014 datagrams
[  8]   0.00-10.00  sec  63.0 MBytes  52.8 Mbits/sec  0.083 ms  7553/8042 (94%)  
[  8] Sent 8042 datagrams
[SUM]   0.00-10.00  sec   189 MBytes   159 Mbits/sec  0.368 ms  21508/24117 (89%)  

iperf Done.
-------------- next part --------------
setenv ipaddr 192.168.1.86
setenv serverip 192.168.1.50


/etc/init.d/dsl_control stop
/etc/init.d/odhcpd stop
/etc/init.d/dnsmasq  stop

root at OpenWrt:/# cat /proc/interrupts
           CPU0       CPU1
  7:     440578     443959      MIPS   7  timer
  8:       1367     350775      MIPS   0  IPI call
  9:       3824       2879      MIPS   1  IPI resched
 62:          0          0       icu  62  1e101000.usb, dwc2_hsotg:usb1
 63:       2628          0       icu  63  mei_cpe
 72:     468982          0       icu  72  vrx200_rx
 73:     827779          0       icu  73  vrx200_tx
112:      21263          0       icu 112  asc_tx
113:       1032          0       icu 113  asc_rx
114:          0          0       icu 114  asc_err
126:          0          0       icu 126  gptu
127:          0          0       icu 127  gptu
128:          0          0       icu 128  gptu
129:          0          0       icu 129  gptu
130:          0          0       icu 130  gptu
131:          0          0       icu 131  gptu
150:          0          0       icu 150  mps_mbx vc0
151:          0          0       icu 151  mps_mbx vc1
152:          0          0       icu 152  mps_mbx vc2
153:          0          0       icu 153  mps_mbx vc3
154:          0          0       icu 154  mps_mbx ad0
155:          0          0       icu 155  mps_mbx ad1
ERR:          0
root at OpenWrt:/# uname -a
Linux OpenWrt 4.14.98 #0 SMP Mon Feb 11 10:28:03 2019 mips GNU/Linux
root at OpenWrt:/# cat /etc/os-release
NAME="OpenWrt"
VERSION="SNAPSHOT"
ID="openwrt"
ID_LIKE="lede openwrt"
PRETTY_NAME="OpenWrt SNAPSHOT"
VERSION_ID="snapshot"
HOME_URL="http://openwrt.org/"
BUG_URL="http://bugs.openwrt.org/"
SUPPORT_URL="http://forum.lede-project.org/"
BUILD_ID="r9299-83bcacb521"
LEDE_BOARD="lantiq/xrx200"
LEDE_ARCH="mips_24kc"
LEDE_TAINTS="no-all"
LEDE_DEVICE_MANUFACTURER="OpenWrt"
LEDE_DEVICE_MANUFACTURER_URL="http://openwrt.org/"
LEDE_DEVICE_PRODUCT="Generic"
LEDE_DEVICE_REVISION="v0"
LEDE_RELEASE="OpenWrt SNAPSHOT r9299-83bcacb521"
root at OpenWrt:/# dmesg
...
[   65.859185] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   68.875758] lantiq,xrx200-net 1e108000.eth eth0: port 3 got link
[   68.880578] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   68.888625] br-lan: port 1(eth0.1) entered blocking state
[   68.892694] br-lan: port 1(eth0.1) entered forwarding state
[   68.899143] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[  640.142325] lantiq,xrx200-net 1e108000.eth eth0: not enough TX ring space for frags
[  685.103461] ------------[ cut here ]------------
[  685.106660] WARNING: CPU: 1 PID: 0 at net/sched/sch_generic.c:320 dev_watchdog+0x21c/0x3f8
[  685.114961] NETDEV WATCHDOG: eth0 (lantiq,xrx200-net): transmit queue 0 timed out
[  685.122431] Modules linked in: rt2800pci rt2800mmio rt2800lib rt2x00pci rt2x00mmio rt2x00lib pppoe nf_conntrack_ipv6 mac80211 iptable_nat ipt_REJECT ipt_MASQUERADE cfg80211 xt_time xt_tcpudp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_FLOWOFFLOAD pppox ppp_async nf_reject_ipv4 nf_nat_redirect nf_nat_masquerade_ipv4 nf_conntrack_ipv4 nf_nat_ipv4 nf_nat nf_log_ipv4 nf_flow_table_hw nf_flow_table nf_defrag_ipv6 nf_defrag_ipv4 nf_conntrack_rtcache nf_conntrack ltq_deu_vr9 iptable_mangle iptable_filter ip_tables drv_vmmc crc_itu_t crc_ccitt compat drv_dsl_cpe_api drv_mei_cpe ip6t_REJECT nf_reject_ipv6 nf_log_ipv6 nf_log_common ip6table_mangle ip6table_filter ip6_tables x_tables pppoatm ppp_generic slhc br2684 atm drv_tapi eeprom_93cx6 drv_ifxos
[  685.193717]  dwc2 gpio_button_hotplug
[  685.197415] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.14.98 #0
[  685.203339] Stack : 00000000 00010000 00000001 8007c228 80650000 806003b8 00000000 00000000
[  685.211686]         805c6c8c 83811dac 838340ac 8063c687 805c1bb8 00000001 83811d50 74ab3c7f
[  685.220042]         00000000 00000000 80c60000 00010000 00000000 00000000 00000007 00000000
[  685.228398]         000000ee 0b000000 000000ed 00000000 00000000 80650000 00000000 803c97f8
[  685.236754]         00000009 00000140 80639f94 00010000 00000003 00000000 00000004 80c50004
[  685.245110]         ...
[  685.247550] Call Trace:
[  685.249996] [<800112e4>] show_stack+0x58/0x100
[  685.254459] [<804b55f4>] dump_stack+0xe4/0x120
[  685.258903] [<80033800>] __warn+0xe0/0x114
[  685.262980] [<80033864>] warn_slowpath_fmt+0x30/0x3c
[  685.267943] [<803c97f8>] dev_watchdog+0x21c/0x3f8
[  685.272665] [<80095348>] call_timer_fn.isra.3+0x24/0x84
[  685.277865] [<800955f8>] run_timer_softirq+0x250/0x31c
[  685.283012] [<804d4a90>] __do_softirq+0x128/0x2ec
[  685.287706] [<80038820>] irq_exit+0xac/0xc8
[  685.291888] [<80274a0c>] plat_irq_dispatch+0xfc/0x138
[  685.296935] [<8000b808>] except_vec_vi_end+0xb8/0xc4
[  685.301886] [<8000d1d0>] r4k_wait_irqoff+0x1c/0x24
[  685.306678] [<80071a8c>] do_idle+0xd4/0x154
[  685.310850] [<80071d04>] cpu_startup_entry+0x24/0x30
[  685.315864] ---[ end trace 3466a352a71fc1ff ]---
[  685.320442] eth0: transmit timed out!
-------------- next part --------------
+ : ':::::::[' configuration patch1 ']:::::::' :
+ iperf3 -c 192.168.1.133
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 54774 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  11.9 MBytes   100 Mbits/sec    0    199 KBytes       
[  4]   1.00-2.00   sec  10.4 MBytes  87.1 Mbits/sec    5    164 KBytes       
[  4]   2.00-3.00   sec  10.6 MBytes  88.6 Mbits/sec    2    151 KBytes       
[  4]   3.00-4.00   sec  10.8 MBytes  90.7 Mbits/sec    0    195 KBytes       
[  4]   4.00-5.00   sec  11.2 MBytes  93.8 Mbits/sec    0    199 KBytes       
[  4]   5.00-6.00   sec  11.2 MBytes  94.3 Mbits/sec    0    199 KBytes       
[  4]   6.00-7.00   sec  10.8 MBytes  90.2 Mbits/sec    2    175 KBytes       
[  4]   7.00-8.00   sec  10.8 MBytes  90.2 Mbits/sec    2    150 KBytes       
[  4]   8.00-9.00   sec  11.1 MBytes  93.3 Mbits/sec    0    198 KBytes       
[  4]   9.00-10.00  sec  11.1 MBytes  92.8 Mbits/sec    3    140 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   110 MBytes  92.1 Mbits/sec   14             sender
[  4]   0.00-10.00  sec   109 MBytes  91.2 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 54798 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  10.7 MBytes  89.7 Mbits/sec                  
[  4]   1.00-2.00   sec  10.9 MBytes  91.3 Mbits/sec                  
[  4]   2.00-3.00   sec  10.7 MBytes  89.5 Mbits/sec                  
[  4]   3.00-4.00   sec  10.9 MBytes  91.1 Mbits/sec                  
[  4]   4.00-5.00   sec  10.8 MBytes  90.6 Mbits/sec                  
[  4]   5.00-6.00   sec  10.8 MBytes  90.7 Mbits/sec                  
[  4]   6.00-7.00   sec  10.8 MBytes  90.5 Mbits/sec                  
[  4]   7.00-8.00   sec  10.6 MBytes  89.3 Mbits/sec                  
[  4]   8.00-9.00   sec  10.8 MBytes  90.5 Mbits/sec                  
[  4]   9.00-10.00  sec  10.8 MBytes  90.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   108 MBytes  90.8 Mbits/sec  110             sender
[  4]   0.00-10.00  sec   108 MBytes  90.7 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 150M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 44981 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   137 Mbits/sec  2094  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   8.00-9.00   sec  17.9 MBytes   150 Mbits/sec  2289  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2289  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  0.803 ms  9684/11757 (82%)  
[  4] Sent 11757 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 150M -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 39626 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  3.61 MBytes  30.3 Mbits/sec  0.212 ms  1913/2375 (81%)  
[  4]   1.00-2.00   sec  3.57 MBytes  30.0 Mbits/sec  0.217 ms  1836/2293 (80%)  
[  4]   2.00-3.00   sec  3.71 MBytes  31.1 Mbits/sec  0.177 ms  1813/2288 (79%)  
[  4]   3.00-4.00   sec  3.58 MBytes  30.0 Mbits/sec  0.173 ms  1826/2284 (80%)  
[  4]   4.00-5.00   sec  3.73 MBytes  31.3 Mbits/sec  0.159 ms  1815/2293 (79%)  
[  4]   5.00-6.00   sec  3.73 MBytes  31.3 Mbits/sec  0.241 ms  1812/2289 (79%)  
[  4]   6.00-7.00   sec  3.48 MBytes  29.2 Mbits/sec  0.175 ms  1827/2273 (80%)  
[  4]   7.00-8.00   sec  3.57 MBytes  29.9 Mbits/sec  0.227 ms  1844/2301 (80%)  
[  4]   8.00-9.00   sec  3.54 MBytes  29.7 Mbits/sec  0.224 ms  1837/2290 (80%)  
[  4]   9.00-10.00  sec  3.59 MBytes  30.1 Mbits/sec  0.243 ms  1831/2291 (80%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   180 MBytes   151 Mbits/sec  0.249 ms  18360/22987 (80%)  
[  4] Sent 22987 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 500M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 36224 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  59.3 MBytes   498 Mbits/sec  7592  
[  4]   1.00-2.00   sec  59.9 MBytes   502 Mbits/sec  7666  
[  4]   2.00-3.00   sec  59.3 MBytes   498 Mbits/sec  7592  
[  4]   3.00-4.00   sec  59.9 MBytes   502 Mbits/sec  7665  
[  4]   4.00-5.00   sec  59.3 MBytes   498 Mbits/sec  7593  
[  4]   5.00-6.00   sec  59.9 MBytes   502 Mbits/sec  7666  
[  4]   6.00-7.00   sec  59.3 MBytes   498 Mbits/sec  7593  
[  4]   7.00-8.00   sec  59.9 MBytes   503 Mbits/sec  7669  
[  4]   8.00-9.00   sec  59.3 MBytes   497 Mbits/sec  7589  
[  4]   9.00-10.00  sec  59.9 MBytes   503 Mbits/sec  7670  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  0.757 ms  72395/73320 (99%)  
[  4] Sent 73320 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 500M -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 37964 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec   792 KBytes  6.49 Mbits/sec  10.481 ms  2719/2818 (96%)  
[  4]   1.00-2.00   sec   832 KBytes  6.82 Mbits/sec  0.115 ms  2652/2756 (96%)  
[  4]   2.00-3.00   sec   704 KBytes  5.77 Mbits/sec  0.068 ms  2676/2764 (97%)  
[  4]   3.00-4.00   sec   952 KBytes  7.80 Mbits/sec  0.044 ms  2596/2715 (96%)  
[  4]   4.00-5.00   sec   240 KBytes  1.97 Mbits/sec  0.062 ms  2209/2239 (99%)  
[  4]   5.00-6.00   sec   312 KBytes  2.56 Mbits/sec  0.078 ms  2326/2365 (98%)  
[  4]   6.00-7.00   sec   256 KBytes  2.10 Mbits/sec  0.079 ms  2190/2222 (99%)  
[  4]   7.00-8.00   sec   280 KBytes  2.29 Mbits/sec  0.086 ms  2303/2338 (99%)  
[  4]   8.00-9.00   sec   304 KBytes  2.49 Mbits/sec  0.064 ms  2225/2263 (98%)  
iperf3: error - control socket has closed unexpectedly
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 1000M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 32961 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   103 MBytes   864 Mbits/sec  13185  
[  4]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14621  
[  4]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14624  
[  4]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14621  
[  4]   4.00-5.00   sec   114 MBytes   958 Mbits/sec  14623  
[  4]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14620  
[  4]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14622  
[  4]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14622  
[  4]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14624  
[  4]   9.00-10.00  sec   114 MBytes   954 Mbits/sec  14557  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.10 GBytes   948 Mbits/sec  0.365 ms  139549/140423 (99%)  
[  4] Sent 140423 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -u -b 1000M -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 52256 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec   912 KBytes  7.47 Mbits/sec  4.035 ms  3177/3291 (97%)  
[  4]   1.00-2.00   sec   728 KBytes  5.96 Mbits/sec  0.047 ms  2659/2750 (97%)  
[  4]   2.00-3.00   sec   704 KBytes  5.77 Mbits/sec  0.035 ms  2628/2716 (97%)  
[  4]   3.00-4.00   sec   768 KBytes  6.29 Mbits/sec  0.034 ms  2676/2772 (97%)  
[  4]   4.00-5.00   sec   688 KBytes  5.64 Mbits/sec  0.038 ms  2656/2742 (97%)  
[  4]   5.00-6.00   sec   888 KBytes  7.27 Mbits/sec  0.049 ms  2637/2748 (96%)  
[  4]   6.00-7.00   sec   872 KBytes  7.14 Mbits/sec  0.049 ms  2586/2695 (96%)  
[  4]   7.00-8.00   sec   936 KBytes  7.67 Mbits/sec  0.052 ms  2684/2801 (96%)  
[  4]   8.00-9.00   sec   944 KBytes  7.73 Mbits/sec  0.059 ms  2629/2747 (96%)  
[  4]   9.00-10.00  sec   824 KBytes  6.75 Mbits/sec  0.046 ms  2611/2714 (96%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   219 MBytes   184 Mbits/sec  0.044 ms  27004/28038 (96%)  
[  4] Sent 28038 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 54992 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 54994 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 54996 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  4.39 MBytes  36.8 Mbits/sec    6   82.0 KBytes       
[  6]   0.00-1.00   sec  3.99 MBytes  33.5 Mbits/sec    4   76.4 KBytes       
[  8]   0.00-1.00   sec  3.81 MBytes  31.9 Mbits/sec    7   50.9 KBytes       
[SUM]   0.00-1.00   sec  12.2 MBytes   102 Mbits/sec   17             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.73 MBytes  31.3 Mbits/sec   13   56.6 KBytes       
[  6]   1.00-2.00   sec  3.79 MBytes  31.8 Mbits/sec   21   69.3 KBytes       
[  8]   1.00-2.00   sec  3.91 MBytes  32.8 Mbits/sec    9   62.2 KBytes       
[SUM]   1.00-2.00   sec  11.4 MBytes  95.9 Mbits/sec   43             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.23 MBytes  35.5 Mbits/sec    9   70.7 KBytes       
[  6]   2.00-3.00   sec  2.98 MBytes  25.0 Mbits/sec   24   45.2 KBytes       
[  8]   2.00-3.00   sec  3.91 MBytes  32.9 Mbits/sec   10   74.9 KBytes       
[SUM]   2.00-3.00   sec  11.1 MBytes  93.3 Mbits/sec   43             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.54 MBytes  38.1 Mbits/sec    5   84.8 KBytes       
[  6]   3.00-4.00   sec  2.80 MBytes  23.5 Mbits/sec    6   45.2 KBytes       
[  8]   3.00-4.00   sec  3.98 MBytes  33.4 Mbits/sec   19   43.8 KBytes       
[SUM]   3.00-4.00   sec  11.3 MBytes  94.9 Mbits/sec   30             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.78 MBytes  40.1 Mbits/sec   16   70.7 KBytes       
[  6]   4.00-5.00   sec  3.60 MBytes  30.2 Mbits/sec    7   60.8 KBytes       
[  8]   4.00-5.00   sec  2.92 MBytes  24.5 Mbits/sec    9   66.5 KBytes       
[SUM]   4.00-5.00   sec  11.3 MBytes  94.9 Mbits/sec   32             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.54 MBytes  29.7 Mbits/sec   16   66.5 KBytes       
[  6]   5.00-6.00   sec  3.73 MBytes  31.3 Mbits/sec    8   53.7 KBytes       
[  8]   5.00-6.00   sec  3.85 MBytes  32.3 Mbits/sec    6   86.3 KBytes       
[SUM]   5.00-6.00   sec  11.1 MBytes  93.3 Mbits/sec   30             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  3.79 MBytes  31.8 Mbits/sec   16   60.8 KBytes       
[  6]   6.00-7.00   sec  2.73 MBytes  22.9 Mbits/sec   14   58.0 KBytes       
[  8]   6.00-7.00   sec  4.72 MBytes  39.6 Mbits/sec   25   69.3 KBytes       
[SUM]   6.00-7.00   sec  11.2 MBytes  94.3 Mbits/sec   55             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.23 MBytes  27.1 Mbits/sec   11   56.6 KBytes       
[  6]   7.00-8.00   sec  3.91 MBytes  32.8 Mbits/sec   20   50.9 KBytes       
[  8]   7.00-8.00   sec  4.10 MBytes  34.4 Mbits/sec    4   89.1 KBytes       
[SUM]   7.00-8.00   sec  11.2 MBytes  94.4 Mbits/sec   35             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.79 MBytes  31.8 Mbits/sec   10   50.9 KBytes       
[  6]   8.00-9.00   sec  3.91 MBytes  32.8 Mbits/sec    4   65.0 KBytes       
[  8]   8.00-9.00   sec  3.48 MBytes  29.2 Mbits/sec   34   55.1 KBytes       
[SUM]   8.00-9.00   sec  11.2 MBytes  93.8 Mbits/sec   48             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.54 MBytes  29.7 Mbits/sec    6   70.7 KBytes       
[  6]   9.00-10.00  sec  3.36 MBytes  28.1 Mbits/sec   16   60.8 KBytes       
[  8]   9.00-10.00  sec  4.35 MBytes  36.5 Mbits/sec    9   70.7 KBytes       
[SUM]   9.00-10.00  sec  11.2 MBytes  94.4 Mbits/sec   31             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  39.6 MBytes  33.2 Mbits/sec  108             sender
[  4]   0.00-10.00  sec  39.0 MBytes  32.7 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  34.8 MBytes  29.2 Mbits/sec  124             sender
[  6]   0.00-10.00  sec  34.3 MBytes  28.8 Mbits/sec                  receiver
[  8]   0.00-10.00  sec  39.0 MBytes  32.8 Mbits/sec  132             sender
[  8]   0.00-10.00  sec  38.5 MBytes  32.3 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   113 MBytes  95.1 Mbits/sec  364             sender
[SUM]   0.00-10.00  sec   112 MBytes  93.8 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3 -R
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 55022 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 55024 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 55026 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  2.87 MBytes  24.1 Mbits/sec                  
[  6]   0.00-1.00   sec  3.28 MBytes  27.5 Mbits/sec                  
[  8]   0.00-1.00   sec  2.02 MBytes  17.0 Mbits/sec                  
[SUM]   0.00-1.00   sec  8.17 MBytes  68.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  2.59 MBytes  21.7 Mbits/sec                  
[  6]   1.00-2.00   sec  2.86 MBytes  24.0 Mbits/sec                  
[  8]   1.00-2.00   sec  2.46 MBytes  20.7 Mbits/sec                  
[SUM]   1.00-2.00   sec  7.92 MBytes  66.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  2.59 MBytes  21.7 Mbits/sec                  
[  6]   2.00-3.00   sec  2.79 MBytes  23.4 Mbits/sec                  
[  8]   2.00-3.00   sec  2.50 MBytes  20.9 Mbits/sec                  
[SUM]   2.00-3.00   sec  7.88 MBytes  66.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  2.36 MBytes  19.8 Mbits/sec                  
[  6]   3.00-4.00   sec  2.52 MBytes  21.1 Mbits/sec                  
[  8]   3.00-4.00   sec  2.28 MBytes  19.1 Mbits/sec                  
[SUM]   3.00-4.00   sec  7.17 MBytes  60.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec                  
[  8]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec                  
[SUM]   4.00-5.00   sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec                  
[  8]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec                  
[SUM]   5.00-6.00   sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec                  
[  8]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec                  
[SUM]   6.00-7.00   sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec                  
[  8]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec                  
[SUM]   7.00-8.00   sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
[  6]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
[  8]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
[SUM]   8.00-9.00   sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  
[  6]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  
[  8]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  
[SUM]   9.00-10.00  sec  0.00 Bytes  0.00 bits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  10.7 MBytes  8.96 Mbits/sec    9             sender
[  4]   0.00-10.00  sec  10.4 MBytes  8.74 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  11.8 MBytes  9.87 Mbits/sec   10             sender
[  6]   0.00-10.00  sec  11.5 MBytes  9.61 Mbits/sec                  receiver
[  8]   0.00-10.00  sec  9.54 MBytes  8.00 Mbits/sec    2             sender
[  8]   0.00-10.00  sec  9.39 MBytes  7.88 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  32.0 MBytes  26.8 Mbits/sec   21             sender
[SUM]   0.00-10.00  sec  31.3 MBytes  26.2 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3 -u -b 800M
Connecting to host 192.168.1.133, port 5201
[  4] local 192.168.1.51 port 36779 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 53900 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 52304 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  34.4 MBytes   288 Mbits/sec  4401  
[  6]   0.00-1.00   sec  34.4 MBytes   288 Mbits/sec  4401  
[  8]   0.00-1.00   sec  34.4 MBytes   288 Mbits/sec  4401  
[SUM]   0.00-1.00   sec   103 MBytes   865 Mbits/sec  13203  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  8]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   4.00-5.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   4.00-5.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  8]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4874  
[  8]   9.00-10.00  sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   9.00-10.00  sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   377 MBytes   316 Mbits/sec  0.417 ms  46602/46878 (99%)  
[  4] Sent 46878 datagrams
[  6]   0.00-10.00  sec   377 MBytes   316 Mbits/sec  0.385 ms  45650/45914 (99%)  
[  6] Sent 45914 datagrams
[  8]   0.00-10.00  sec   377 MBytes   316 Mbits/sec  0.443 ms  44780/45055 (99%)  
[  8] Sent 45055 datagrams
[SUM]   0.00-10.00  sec  1.10 GBytes   949 Mbits/sec  0.415 ms  137032/137847 (99%)  

iperf Done.
+ sleep 10
+ iperf3 -c 192.168.1.133 -P3 -R -u -b 800M
Connecting to host 192.168.1.133, port 5201
Reverse mode, remote host 192.168.1.133 is sending
[  4] local 192.168.1.51 port 53655 connected to 192.168.1.133 port 5201
[  6] local 192.168.1.51 port 55456 connected to 192.168.1.133 port 5201
[  8] local 192.168.1.51 port 34728 connected to 192.168.1.133 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec   992 KBytes  8.13 Mbits/sec  2.153 ms  1012/1136 (89%)  
[  6]   0.00-1.00   sec   120 KBytes   983 Kbits/sec  2365.865 ms  945/960 (98%)  
[  8]   0.00-1.00   sec   360 KBytes  2.95 Mbits/sec  341.595 ms  1057/1102 (96%)  
[SUM]   0.00-1.00   sec  1.44 MBytes  12.1 Mbits/sec  903.204 ms  3014/3198 (94%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec   688 KBytes  5.64 Mbits/sec  0.093 ms  865/951 (91%)  
[  6]   1.00-2.00   sec  96.0 KBytes   786 Kbits/sec  1090.584 ms  1035/1047 (99%)  
[  8]   1.00-2.00   sec   184 KBytes  1.51 Mbits/sec  77.455 ms  952/975 (98%)  
[SUM]   1.00-2.00   sec   968 KBytes  7.93 Mbits/sec  389.377 ms  2852/2973 (96%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec   960 KBytes  7.86 Mbits/sec  0.070 ms  835/955 (87%)  
[  6]   2.00-3.00   sec  96.0 KBytes   786 Kbits/sec  502.774 ms  987/999 (99%)  
[  8]   2.00-3.00   sec   184 KBytes  1.51 Mbits/sec  17.600 ms  826/849 (97%)  
[SUM]   2.00-3.00   sec  1.21 MBytes  10.2 Mbits/sec  173.481 ms  2648/2803 (94%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec   896 KBytes  7.34 Mbits/sec  0.068 ms  839/951 (88%)  
[  6]   3.00-4.00   sec  72.0 KBytes   590 Kbits/sec  281.293 ms  921/930 (99%)  
[  8]   3.00-4.00   sec   304 KBytes  2.49 Mbits/sec  1.563 ms  1018/1056 (96%)  
[SUM]   3.00-4.00   sec  1.24 MBytes  10.4 Mbits/sec  94.308 ms  2778/2937 (95%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec   840 KBytes  6.88 Mbits/sec  0.066 ms  838/943 (89%)  
[  6]   4.00-5.00   sec  72.0 KBytes   590 Kbits/sec  157.401 ms  983/992 (99%)  
[  8]   4.00-5.00   sec   216 KBytes  1.77 Mbits/sec  0.315 ms  916/943 (97%)  
[SUM]   4.00-5.00   sec  1.10 MBytes  9.24 Mbits/sec  52.594 ms  2737/2878 (95%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec   864 KBytes  7.08 Mbits/sec  0.052 ms  850/958 (89%)  
[  6]   5.00-6.00   sec  96.0 KBytes   786 Kbits/sec  72.595 ms  956/968 (99%)  
[  8]   5.00-6.00   sec   216 KBytes  1.77 Mbits/sec  0.103 ms  944/971 (97%)  
[SUM]   5.00-6.00   sec  1.15 MBytes  9.63 Mbits/sec  24.250 ms  2750/2897 (95%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec   848 KBytes  6.95 Mbits/sec  0.064 ms  825/931 (89%)  
[  6]   6.00-7.00   sec  64.0 KBytes   524 Kbits/sec  43.354 ms  862/870 (99%)  
[  8]   6.00-7.00   sec   208 KBytes  1.70 Mbits/sec  0.060 ms  910/936 (97%)  
[SUM]   6.00-7.00   sec  1.09 MBytes  9.17 Mbits/sec  14.493 ms  2597/2737 (95%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec   776 KBytes  6.36 Mbits/sec  0.062 ms  872/969 (90%)  
[  6]   7.00-8.00   sec  80.0 KBytes   655 Kbits/sec  22.790 ms  933/943 (99%)  
[  8]   7.00-8.00   sec   264 KBytes  2.16 Mbits/sec  0.047 ms  914/947 (97%)  
[SUM]   7.00-8.00   sec  1.09 MBytes  9.18 Mbits/sec  7.633 ms  2719/2859 (95%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec   808 KBytes  6.62 Mbits/sec  0.069 ms  851/952 (89%)  
[  6]   8.00-9.00   sec   104 KBytes   852 Kbits/sec  9.923 ms  1011/1024 (99%)  
[  8]   8.00-9.00   sec   256 KBytes  2.10 Mbits/sec  0.054 ms  872/904 (96%)  
[SUM]   8.00-9.00   sec  1.14 MBytes  9.57 Mbits/sec  3.348 ms  2734/2880 (95%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec   792 KBytes  6.49 Mbits/sec  0.372 ms  852/951 (90%)  
[  6]   9.00-10.00  sec   120 KBytes   983 Kbits/sec  4.167 ms  934/949 (98%)  
[  8]   9.00-10.00  sec   256 KBytes  2.10 Mbits/sec  0.385 ms  967/999 (97%)  
[SUM]   9.00-10.00  sec  1.14 MBytes  9.57 Mbits/sec  1.641 ms  2753/2899 (95%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  75.8 MBytes  63.6 Mbits/sec  0.332 ms  8644/9704 (89%)  
[  4] Sent 9704 datagrams
[  6]   0.00-10.00  sec  75.8 MBytes  63.6 Mbits/sec  4.167 ms  9567/9682 (99%)  
[  6] Sent 9682 datagrams
[  8]   0.00-10.00  sec  75.8 MBytes  63.6 Mbits/sec  0.363 ms  9393/9700 (97%)  
[  8] Sent 9700 datagrams
[SUM]   0.00-10.00  sec   227 MBytes   191 Mbits/sec  1.621 ms  27604/29086 (95%)  

iperf Done.
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mhei at heimpold.de  Mon Feb 11 14:45:05 2019
From: mhei at heimpold.de (Michael Heimpold)
Date: Mon, 11 Feb 2019 20:45:05 +0100
Subject: [OpenWrt-Devel] [PATCH] procd: Add cached and available to
 memory table
In-Reply-To: <20190211140033.15166-1-zachcook1991@gmail.com>
References: <20190211140033.15166-1-zachcook1991@gmail.com>
Message-ID: <1847733.ZLBHTiPhlM@kerker>

Hi,

a few nitpicks inline...

Am Montag, 11. Februar 2019, 15:00:33 CET schrieb Zachary Cook:
> This should allow Luci to show a better measure of system memory usage
> Cached memory will be used to add a new progress bar
> MemAvailable is the kernel's estimate of memory that is useable
> by userspace without swapping, and is more accurate than the current
> memory.free + memory.buffered calculation for total memory available
> 
> Signed-off-by: Zachary Cook <zachcook1991 at gmail.com>
> ---
>  system.c | 29 +++++++++++++++++++++++++++++
>  1 file changed, 29 insertions(+)
> 
> diff --git a/system.c b/system.c
> index 8ed3f93..501d589 100644
> --- a/system.c
> +++ b/system.c
> @@ -228,6 +228,13 @@ static int system_info(struct ubus_context *ctx, struct
> ubus_object *obj, #ifdef linux
>  	struct sysinfo info;
>  	void *c;
> +	char line[256];
> +	char *key, *val;
> +	unsigned long long available, cached;
> +	FILE *f;
> +
> +	if ((f = fopen("/proc/meminfo", "r")) == NULL)
> +		return UBUS_STATUS_UNKNOWN_ERROR;
> 
>  	if (sysinfo(&info))
>  		return UBUS_STATUS_UNKNOWN_ERROR;

f leaks in case of return here

> @@ -251,11 +258,33 @@ static int system_info(struct ubus_context *ctx,
> struct ubus_object *obj, blobmsg_add_u32(&b, NULL, info.loads[2]);
>  	blobmsg_close_array(&b, c);
> 
> +	//if linux < 3.14 MemAvailable is not in meminfo

please stay consistent with current style and use /* comments*/ 

> +	available = 0;
> +	cached = 0;
> +
> +	while(fgets(line, sizeof(line), f))
> +	{
> +		key = strtok(line, " :");
> +		val = strtok(NULL, " ");
> +
> +		if (!key || !val)
> +			continue;
> +
> +		if (!strcasecmp(key, "MemAvailable"))
> +			available = 1024 * atol(val);

since "available" is unsigned long long, why not use atoll here?

> +		else if (!strcasecmp(key, "Cached"))
> +			cached =    1024 * atol(val);

dito

> +	}
> +
> +	fclose(f);
> +
>  	c = blobmsg_open_table(&b, "memory");
>  	blobmsg_add_u64(&b, "total",    info.mem_unit * info.totalram);
>  	blobmsg_add_u64(&b, "free",     info.mem_unit * info.freeram);
>  	blobmsg_add_u64(&b, "shared",   info.mem_unit * info.sharedram);
>  	blobmsg_add_u64(&b, "buffered", info.mem_unit * info.bufferram);
> +	blobmsg_add_u64(&b, "available",available);
> +	blobmsg_add_u64(&b, "cached",   cached);
>  	blobmsg_close_table(&b, c);
> 
>  	c = blobmsg_open_table(&b, "swap");

mhei




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From zachcook1991 at gmail.com  Mon Feb 11 15:24:59 2019
From: zachcook1991 at gmail.com (Zachary Cook)
Date: Mon, 11 Feb 2019 15:24:59 -0500
Subject: [OpenWrt-Devel] [PATCH v2] procd: Add cached and available to
 memory table
In-Reply-To: <20190211140033.15166-1-zachcook1991@gmail.com>
References: <20190211140033.15166-1-zachcook1991@gmail.com>
Message-ID: <20190211202459.6014-1-zachcook1991@gmail.com>

This should allow Luci to show a better measure of system memory usage
Cached memory will be used to add a new progress bar
MemAvailable is the kernel's estimate of memory that is useable
by userspace without swapping, and is more accurate than the current
memory.free + memory.buffered calculation for total memory available

Changes in v2:
reorganized code to not leak a file descriptor if early return
stay consistent with current comment style
use atoll instead of atol to better match the data size

Signed-off-by: Zachary Cook <zachcook1991 at gmail.com>
---
 system.c | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/system.c b/system.c
index 8ed3f93..79f0ca8 100644
--- a/system.c
+++ b/system.c
@@ -228,9 +228,36 @@ static int system_info(struct ubus_context *ctx, struct ubus_object *obj,
 #ifdef linux
 	struct sysinfo info;
 	void *c;
+	char line[256];
+	char *key, *val;
+	unsigned long long available, cached;
+	FILE *f;
 
 	if (sysinfo(&info))
 		return UBUS_STATUS_UNKNOWN_ERROR;
+
+	if ((f = fopen("/proc/meminfo", "r")) == NULL)
+		return UBUS_STATUS_UNKNOWN_ERROR;
+	
+	/* if linux < 3.14 MemAvailable is not in meminfo */
+	available = 0;
+	cached = 0;
+
+	while(fgets(line, sizeof(line), f))
+	{
+		key = strtok(line, " :");
+		val = strtok(NULL, " ");
+
+		if (!key || !val)
+			continue;
+
+		if (!strcasecmp(key, "MemAvailable"))
+			available = 1024 * atoll(val);
+		else if (!strcasecmp(key, "Cached"))
+			cached =    1024 * atoll(val);
+	}
+
+	fclose(f);
 #endif
 
 	now = time(NULL);
@@ -256,6 +283,8 @@ static int system_info(struct ubus_context *ctx, struct ubus_object *obj,
 	blobmsg_add_u64(&b, "free",     info.mem_unit * info.freeram);
 	blobmsg_add_u64(&b, "shared",   info.mem_unit * info.sharedram);
 	blobmsg_add_u64(&b, "buffered", info.mem_unit * info.bufferram);
+	blobmsg_add_u64(&b, "available",available);
+	blobmsg_add_u64(&b, "cached",   cached);
 	blobmsg_close_table(&b, c);
 
 	c = blobmsg_open_table(&b, "swap");
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Mon Feb 11 17:15:08 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Mon, 11 Feb 2019 23:15:08 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ipq40xx: add support for FritzBox
 7530
In-Reply-To: <20190210133430.23792-3-mail@david-bauer.net>
References: <20190210133430.23792-1-mail@david-bauer.net>
 <20190210133430.23792-3-mail@david-bauer.net>
Message-ID: <2472378.JcC4TsUF54@debian64>

Comments inline.

On Sunday, February 10, 2019 2:34:30 PM CET David Bauer wrote:
> Hardware
> --------
> CPU:   Qualcomm IPQ4019
> RAM:   256M
> FLASH: 128M NAND
> ETH:   QCA8075
> VDSL:  Intel/Lantiq VRX518 PCIe attached
>        currently not supported

Does the pcie device show up during boot when
you add and enable the pcie nodes in the dts?
Or is more work required to get at least "lspci" working?

> DECT:  Dialog SC14448
>        currently not supported
(hm, seems to be a spi? chip)

> WiFi2: IPQ4019 2T2R 2SS b/g/n
> WiFi5: IPQ4019 2T2R 2SS n/ac
> LED:    - Power/DSL green
>         - WLAN green
>         - FON/DECT green
>         - Connect/WPS green
>         - Info green
>         - Info red
> BTN:    - WLAN
>         - FON
>         - WPS/Connect
> UART:  115200n8 3.3V (located under the Dialog chip)
>        VCC - RX - TX - GND (Square is VCC)
>  [...]
> diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
> index 9105bf2452..39383f4fa8 100755
> --- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
> +++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
> @@ -28,6 +28,7 @@ engenius,eap1300)
>  	ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
>  	ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
>  	;;
> +avm,fritzbox-7530 |\
With this addtion, you could just move the ucidef_set_led_wlan entry in front
of engenius,eap1300 device.

Or you could maybe instead place the

linux,default-trigger = "phy0tpt";

property into the DTS (fritzbox-7530:green:wlan's node) to do the same job.
 
>  glinet,gl-b1300)
>  	ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
>  	;;
> diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> index 69b6c2591c..b4252f0ea6 100644
> --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> @@ -126,6 +126,9 @@ case "$FIRMWARE" in
>  	avm,fritzbox-4040)
>  		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
>  		;;
> +	avm,fritzbox-7530)
> +		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 16384 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0")
Oh, I think I remember this from the FB4040 as well. It too had 16384 long
caldata. But everything after byte 12064 was just more padding. That why
I cut it down to make sure not to push any garbage into the running firmware,
because from what I remember, the ath10k will take anything from the pre-cal
at face-value.

> +		;;
>  	meraki,mr33)
>  		ath10kcal_ubi_extract "ART" 4096 12064
>  		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
> @@ -164,6 +167,9 @@ case "$FIRMWARE" in
>  	avm,fritzbox-4040)
>  		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
>  		;;
> +	avm,fritzbox-7530)
> +		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 16384 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
> +		;;
Oh, so if the urlader1 has the same values as urlader0, you could check the return
status of fritz_cal_extract and if it failed, then follow up with a fallback to read
from the other urlader config area.

something like:

/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")

> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> new file mode 100644
> index 0000000000..ea2d70a8bd
> --- /dev/null
> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		info_red: info_red {
> +			label = "fritzbox-7530:red:info";
> +			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		info_green: info {
> +			label = "fritzbox-7530:green:info";
> +			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
> +		};
> +
> +		wlan {
> +			label = "fritzbox-7530:green:wlan";
> +			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
          <this place> (and the same place in 4.19's dts)
> +		};
> +
> +		fon {
> +			label = "fritzbox-7530:green:fon";
> +			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
> +		};
> +
> [...]
> +
> +	nand_pins: nand_pins {
> +		pullups {
> +			pins = "gpio52", "gpio53", "gpio58",
> +				"gpio59";
Just a word of warning here. The gpio52 might not be necessary for the
functioning of the attached nand flash. We put this warning in the
MR33's dts:

/*
 * There are 18 pins. 15 pins are common between LCD and NAND.
 * The QPIC controller arbitrates between LCD and NAND. Of the
 * remaining 4, 2 are for NAND and 2 are for LCD exclusively.
 *
 * The meraki source hints that the bluetooth module claims
 * pin 52 as well. But sadly, there's no data whenever this
 * is a NAND or LCD exclusive pin or not.
 */

> +			function = "qpic";
> +			bias-pull-up;
> +		};
> +
> +		pulldowns {
> +			pins = "gpio54", "gpio55", "gpio56",
> +				"gpio57", "gpio60", "gpio61",
> +				"gpio62", "gpio63", "gpio64",
> +				"gpio65", "gpio66", "gpio67",
> +				"gpio68", "gpio69";
> +			function = "qpic";
> +			bias-pull-down;
> +		};
> +	};
> +
> +	usb-power {
> +		line-name = "enable USB3 power";
> +		gpios = <49 GPIO_ACTIVE_HIGH>;
> +		gpio-hog;
> +		output-high;
In the future, this will hopefully become a regulator.
But so far there's no support for it upstream. Hence this is fine.

> +	};
> +};
> +
> +&nand {
> +	pinctrl-0 = <&nand_pins>;
> +	pinctrl-names = "default";
> +	status = "okay";
> +	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
> +
> +	nand at 0 {
> +		partitions {
> +			compatible = "fixed-partitions";
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			partition at 0 {
> +				label = "MIBIB";
This is strange, is there really a MIBIB partition there? Not that it makes any
difference since we are not going to mess with the bootloaders. But from all the
different Qcom devices I had my hands on, the first partition always contained
the SBL1 (Secondary Bootloader 1). (If it is a copy of the MIBIB, then...
is there another hidden flash chip?! And please give one of the partitions
a (slightly) different name in this case.)
 
> +				reg = <0x000000 0x80000>;
> +				read-only;
> +			};
> +
> +			partition at 80000 {
> +				label = "MIBIB";
> +				reg = <0x080000 0x80000>;
> +				read-only;
> +			};
> +
[...]
> +
> +			partition at 2c0000 {
> +				label = "nand-tffs";
> +				reg = <0x2c0000 0x840000>;
> +				read-only;
> +			};
> +
[...]
> diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> new file mode 100644
> index 0000000000..ea2d70a8bd
> --- /dev/null
> +++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> @@ -0,0 +1,281 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
> +
> +#include "qcom-ipq4019.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/soc/qcom,tcsr.h>
> +
> +/ {
> +	model = "AVM FRITZ!Box 7530";
> +	compatible = "avm,fritzbox-7530", "qcom,ipq4019";
The "qcom,ipq4019"; can be dropped. Upstream dropped them
as well see commit a2501ebfb066 ("ipq40xx: remove qcom,ipq4019 on all devices")

> diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
> index a670380ab3..ca5a453b47 100644
> --- a/target/linux/ipq40xx/image/Makefile
> +++ b/target/linux/ipq40xx/image/Makefile
> @@ -97,6 +97,15 @@ define Device/avm_fritzbox-4040
>  endef
>  TARGET_DEVICES += avm_fritzbox-4040
>  
> +define Device/avm_fritzbox-7530
> +	$(call Device/FitImageLzma)
> +	DEVICE_DTS := qcom-ipq4019-fritzbox-7530
> +	DEVICE_TITLE := AVM Fritz!Box 7530
> +	DEVICE_PACKAGES := fritz-caldata ipq-wifi-fritz7530
I remember seeing a fritz_tffs_nand_read utility:

https://lists.openwrt.org/pipermail/openwrt-devel/2018-March/011501.html
maybe it could be of use?

> +	IMAGES := sysupgrade.bin
> +endef
> +TARGET_DEVICES += avm_fritzbox-7530
> +
>  define Device/compex_wpj428
>  	$(call Device/FitImage)
>  	DEVICE_DTS := qcom-ipq4028-wpj428

Regards,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From me at 0upti.me  Tue Feb 12 03:44:53 2019
From: me at 0upti.me (Ilya K)
Date: Tue, 12 Feb 2019 11:44:53 +0300
Subject: [OpenWrt-Devel] [PATCH v2] ramips: various Netgear R6120 fixes
Message-ID: <2408111549961093@sas2-985f744271ca.qloud-c.yandex.net>

Can confirm this patch is working extremely well on my R6120. Any way I can help in getting this upstreamed?

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at f0wl.cc  Tue Feb 12 11:19:51 2019
From: mail at f0wl.cc (Marius Genheimer)
Date: Tue, 12 Feb 2019 17:19:51 +0100
Subject: [OpenWrt-Devel] [PATCH v2] ipq40xx: add support for ASUS Lyra
Message-ID: <20190212161951.9494-1-mail@f0wl.cc>

SoC:   Qualcomm IPQ4019 (Dakota) 717 MHz, 4 cores
RAM:   256 MiB (Nanya NT5CC128M16IP-DI)
FLASH: 128 MiB (Macronix NAND)
WiFi0: Qualcomm IPQ4019 b/g/n 2x2
WiFi1: Qualcomm IPQ4019 a/n/ac 2x2
WiFi2: Qualcomm Atheros QCA9886 a/n/ac
BT:    Atheros AR3012
IN:    WPS Button, Reset Button
OUT:   RGB-LED via TI LP5523 9-channel Controller
UART:  Front of Device - 115200 N-8
       Pinout 3.3v - RX - TX - GND (Square is VCC)

Installation:
1. Transfer OpenWRT-initramfs image to the device via SSH to /tmp.
Login credentials are identical to the Web UI.

2. Login to the device via SSH.

3. Flash the initramfs image using

> mtd-write -d linux -i openwrt-image-file

4. Power-cycle the device and wait for OpenWRT to boot.

5. From there flash the OpenWRT-sysupgrade image.

Ethernet-Ports: Although labeled identically, the port next to
the power socket is the LAN port and the other one is WAN. This
is the same behavior as in the stock firmware.

Signed-off-by: Marius Genheimer <mail at f0wl.cc>
---
 package/firmware/ipq-wifi/Makefile                 |   3 +-
 package/firmware/ipq-wifi/board-map-ac2200.bin     | Bin 0 -> 24324 bytes
 .../ipq40xx/base-files/etc/board.d/02_network      |   8 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata       |   9 +
 .../lib/preinit/05_set_iface_mac_ipq40xx.sh        |   5 +
 .../ipq40xx/base-files/lib/upgrade/platform.sh     |   4 +
 target/linux/ipq40xx/config-4.14                   |   1 +
 .../arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts  | 304 +++++++++++++++++++++
 .../arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts  | 304 +++++++++++++++++++++
 target/linux/ipq40xx/image/Makefile                |   9 +
 .../patches-4.14/901-arm-boot-add-dts-files.patch  |   3 +-
 .../patches-4.19/901-arm-boot-add-dts-files.patch  |   3 +-
 12 files changed, 650 insertions(+), 3 deletions(-)
 create mode 100644 package/firmware/ipq-wifi/board-map-ac2200.bin
 create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
 create mode 100644 target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts

diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index cf1ad042bf..7c9def8967 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -17,7 +17,7 @@ endef
 # Please send a mail with your device-specific board files upstream.
 # You can find instructions and examples on the linux-wireless wiki:
 # <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
-ALLWIFIBOARDS:=engenius_eap1300 linksys_ea6350v3
+ALLWIFIBOARDS:=asus_map-ac2200 engenius_eap1300 linksys_ea6350v3
 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
 
 define Package/ipq-wifi-default
@@ -52,6 +52,7 @@ Don't install it for any other device!
 endef
 
 #$(eval $(call generate-ipq-wifi-package,<devicename>,<filename>,<displayname>))
+$(eval $(call generate-ipq-wifi-package,asus_map-ac2200,board-map-ac2200.bin,ASUS MAP-AC2200))
 $(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
 $(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,board-linksys_ea6350v3.bin,Linksys EA6350v3))
 
diff --git a/package/firmware/ipq-wifi/board-map-ac2200.bin b/package/firmware/ipq-wifi/board-map-ac2200.bin
new file mode 100644
index 0000000000000000000000000000000000000000..372936010a4723ee0197dc56cbfd3a193e559552
GIT binary patch
literal 24324
zcmeHPeNa<Z7QYE#tWxELfC%^qNq|HlK%h01SOTP!kBAlp4Z0MlwImk#5)eaI+EGj~
zMZ}MS5Jbx;U#65YuCyvvY`5J}rn|E<?O(RDAG0&<F578$x1HHp-1GAC2!WspM8WXR
z^S*oTx%b?A?(f}%_ul=Pmy!}961Js8N2Nz3ZcfNlprWE81X2=7oDtdxsi2~KV}4;l
zctMdm;*~;mNrZa$#wb&%pg6y5H&K*Cg;(a6sq^>k-<Ys9Yiq=&ge?&XNfJp^6!gb{
zKDf{yH?o<{U?8_c?AUCg at 3kF>f$|Vq#_}SHh=UL>2J)qF*b<Q_hUf~Rn3$M<{rDr2
zah9N8{(L;1N^a1>Y=ny#pH1~^Bu7H`L7>iDn%Zh=dF6z`3y}w9AY!C+OCE1C;w!|6
z4#_g)hDOlH9Z#fVlE+kc4tui2_PEy_7?-$Wlan`;i4<r~kU1pFm#<jikb{lJJR7$8
zFqJg)5zEFb))Cz6x?EqcQK#m_- at DwZtKOZHp8DL4p4OxFW$KqwpS{rwTDdwi^_gEl
z2Cj(0&{)sqBlUaLn{wp$dRyzN3v-mIvK!q*vz*jaDL5RfuL4^f=@7OSjdfnGsos&Z
zAvGLa4_CjEqkv`?TkF9!T`IhBxwWafBqviEWp)U&j_)C*YLJICv96{atnsj2as`xZ
z&+N&v-tO4 at Mw%vSyKj77d%14??vO11^y at vPEy+iPWqx@ry*pc;JIXEh&L3)1*QD>|
zZ}OE7T_~=LD-@{$l%I81zq|RUxO~kkAN5wXY&sTE6}abidr3|5tGrb24I`b!htrBf
zvwRhoE~=YT>ep2T6b at akJQsN=sKh(($wG;amO{XT_0;mGS7P2it5yfB38KF7EjjTW
zYZ1!JDu){)xV>O7nM?+8c60Oa at K|CN*4JH)2l76DYm1O05b)t&2roF8&kN at 9vfY>3
zdrx9D8eNzZ0*#H8mD{!{lci|+ at +C{iuB4(6K93g!1rF;!zl at LjfJWK~;~GyE)7|}l
zrlt&J%b)D!(Va{B;C=+UFFDlEM<ik-p;<x&gz&g)d_x619v2Vv_XBPAHt^*0`9w$1
ztGU0q*leMK;TV>HCt%TdG*(h^@X+D68%|!Jl;#NqMaPmdFrmoIa_s>M8)u8zci5Oe
z?l1ONdf{G}AD)OOiWBc7Vrh7qI87<X<yZ<X!6jnJ9SODp-yq(gjKZTZDLyf_!4i*^
ziUbl$-g^uxHBFgpV#Y3`dgI<>-dF%0AP!I_;YnjjSUR3APFKd at F=H`U93Cf*Q<|=a
zc}0-dCWu(t?GHYiP$L1G)0tSiC2t%0CZ~`&isdhhZOzu_Wwtg~xF at COV9(X3QKC_r
z0Rehx%m9p)c~PQdg#cZk5ug#E5ug#E5ug!R#0adCtipoWFG^m-HnZ1D)?@MPrIet|
zf~E at tBa_djXKja1)5my<5~q!^h%X^Mbyq>aPS%2}?j$I873v4?A_VyXeaGP4sX4r<
zhIiC>;A#$^&m~`egSK#NJP=cSekO%@InP;0wqOu$5a7286v&DA7LskDe~eGDFeHyf
zNYBO?z95a}{FFHtF2#@x$=u}#L%$ml)gly)_!vT5Al~qR&qE~{*b_ZOUna6dzlTKR
zrsU<0Ay%yiw+rg;efb^w>Z|WeIiVAY7S~1Ke!nM&$=nS)5C}1t?n~bVIS)e3_$tU;
zY|0(*<=Qd$#Y}lvXoz4w6S;Fo?$wdIbIL8-cI?XAU8rw7)!f$6+11xSc=h at xpMG)I
z at e1VdE$fr!fK2<KO16&L2{rA3Did|oE~sh$Qz_9=JD`q(IHQN_qx+<-1{aCfo;~A?
z?A$#KXWB0suMGcoCf!Bgm^Ka0I0p;F1I2+#4pNLOFeR=OE0qcqJ06S4aG6-9jCI=c
z^|Zn5GWbe-F`S(&NyakR&q|)fo at eKrC64LN)ZaNOxA#$qYCm7OqrCfQyLk8e{TU1(
z-5+Q)vA}&g;E68}As<$)X_~-TT0!vcXA+T$N5V()?itSF-NSevP91Z$ynBlOu3(S{
z)i1 at n$Kk%&BJms+i{-&u;^yJ*MhQY!?sHK6A1tjNt}R1vauZO3!X0tV$5bC{g1>Fv
z{ZyX^mN^^_A`&I=+<=HgiG$^*K`7VR<~(Gk!cFTy&gtNM$+_vn_1)rI>)UUMa#~B<
zhQE_?+jcEwZEG7HZR_y#wC2Q6wT|bDayyrvv^@)D0itA2*v at H#=@8lqU(gkPOmyjw
z3{$FuyzW~DIv`-8o<1h({eg+ at UUfrbGIzA{x;u*B=z%aFHxHI`LZEx05ug!RbO`L&
zk(ohq?0^3G$A3=d*b}__|9<zEZ@>BGYtSsb`}_a++n>Jw{;yzL2{*eI|DS#u`=0cd
z$zr3(KF7!Z{R3%pCa|`6_mPoeF_FX(;o)nAz`4hrqlK?qYwC`RJ4dsHgDu{@g>FB=
zeV=%HbB%f^vrBojyn8AXm!ZGU+l1_SheED}$!Alz<T`ldXJYM6=G+td9BKC<`qLeQ
z*Y8?CUra99`n*iG-5VG_WvJ9<t0M0W4YwL<w7Dwj at D;-uZK*0*8Zta!?9^*DDrq3`
zf5ood3=<-7IBBTRW~s!Z{l*jeVojz>Y8*6lXf&z}Y54GO3{Bc1RiczjI9$IK7KTjC
zG}>%!_UK2(HhqO=t7^URBmEgoS&Bj`0f&>?*C~e^x57kd^qR3<UkUv_Gu&@{PhX=^
zsbt1seXC}F$_qk2(+GPtJIRoSZ$U_-L&jFaoBATn3&S56FBs~<Im7s|zC}}+k|GQk
zzG^sa3Mq&P>E?(~gkY-YjK>WX`aB59U^t>L)vAmi7|v;mQWB(*qaPbD=&Lo`rT(OY
zD3q8(li{F#k2V7;+w})DTU3z{NQ<^Yl`a*HUNN54muWVq2ndHyZixV;4~JU}<@#K$
zV)QChmTPxu(jd(9fTdiDLv5R(N|Thb+T`#l%)t>^fVcW|NcLPn8YLQ~84z%Vr7^?Q
zX!D{)pm|{5rT9}3x`4{_#$UB6j)&E(-naiu@?lY_e}QN6&CXZf*{J2ewn}w=VE?7W
zlaacBih=$;hO`swejQMJyd%3I`XE=cGUK!E*PG<EAw{cm_5E4rq$h%E*cx4TZkwbI
zuV5Ek?J7MZe at j%x&Kl`apNy~NzwVb?)0@>Eq4Td?k>Ar_^`5*zShK27-<okGdcV*1
zr(YQAE@;|th`ZNk=j|bF&*s*!H+_qYA5>h3tLIg+U#@T2To+sEr}9ksu=nND(zk+&
zd~z=u)#nt)xfNJmcW=2tc7#{zr5Zd}){s;aUgVqk`TJ?d!mC&B@!H<q|5`_Kli(m{
zPjk<{_W1hH1DyOzEo$BK6>DGfPQTbyd^YYdzl at W6wmZKi;aG4vJNMK@^;uaRzubG*
zI}O|4h}H0RvgHFk<!u at 72&?>FU9<~_o;Zzw3m{<iD;$#_%gj1)`~M(;y+DiDz at uN6
zC-wULjV%&9Bt!uJ;1 at W!{NP|-a5nr<*#g;Ep3aG<X!lE<wr4+m42pLDl+(tr0Y7b`
z5wMBCPt#;dGkZUq&Tcm)jKx-b81Ek5e}ljaaG_ZX<?+ngEN$>Mop}E(fL;lWhvQ~#
zmNq)Rx!||(*LySy1twG|uxL8rCp!h6kbngv2cG=0PEjq9(r#Juyd at Z7GToQ$g51js
zF%-bZU;CV(bm7mFj&Ldh1TWqlc=0=$yFPssy!ff(IlDX)-=4D1C+D6R`|<Pc*MWpv
z_QNci;}sU)`O+2~?>?LmTWCCC6}F~8+a3=B_UswY#I>Jnw?w-x);YSRm-*D at z`Msy
OaX<L%gsHhU at BaT@Hv2IE

literal 0
HcmV?d00001

diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index bcc5f4cec9..83c8ba5c38 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -42,6 +42,7 @@ ipq40xx_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0u at eth0" "3:lan" "4:lan"
 		;;
+	asus,map-ac2200|\
 	openmesh,a42|\
 	openmesh,a62)
 		ucidef_set_interfaces_lan_wan "eth1" "eth0"
@@ -57,6 +58,13 @@ ipq40xx_setup_macs()
 	local board="$1"
 
 	case "$board" in
+	asus,map-ac2200)
+		mac_addr=$(mtd_get_mac_binary_ubi Factory 4102)
+		lan_mac_addr=$(macaddr_add "$mac_addr" 3)
+		wan_mac_addr=$(macaddr_add "$mac_addr" 1)
+		ucidef_set_interface_macaddr "lan" "$lan_mac_addr"
+		ucidef_set_interface_macaddr "wan" "$wan_mac_addr"
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
 		wan_mac=$(mtd_get_mac_binary_ubi Factory 20486)
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 69b6c2591c..b18f0a1d83 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -106,6 +106,9 @@ case "$FIRMWARE" in
 	;;
 "ath10k/pre-cal-pci-0000:01:00.0.bin")
 	case "$board" in
+	asus,map-ac2200)
+		ath10kcal_ubi_extract "Factory" 36864 12064
+		;;
 	openmesh,a62)
 		ath10kcal_extract "0:ART" 36864 12064
 		;;
@@ -119,6 +122,9 @@ case "$FIRMWARE" in
 	qcom,ap-dk01.1-c1)
 		ath10kcal_extract "ART" 4096 12064
 		;;
+	asus,map-ac2200)
+		ath10kcal_ubi_extract "Factory" 4096 12064
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
 		ath10kcal_ubi_extract "Factory" 4096 12064
@@ -157,6 +163,9 @@ case "$FIRMWARE" in
 	qcom,ap-dk01.1-c1)
 		ath10kcal_extract "ART" 20480 12064
 		;;
+	asus,map-ac2200)
+		ath10kcal_ubi_extract "Factory" 20480 12064
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
 		ath10kcal_ubi_extract "Factory" 20480 12064
diff --git a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
index 44e81ca366..ce5c1fc4bf 100644
--- a/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
+++ b/target/linux/ipq40xx/base-files/lib/preinit/05_set_iface_mac_ipq40xx.sh
@@ -4,6 +4,11 @@
 
 preinit_set_mac_address() {
 	case $(board_name) in
+	asus,map-ac2200)
+		base_mac=$(mtd_get_mac_binary_ubi Factory 4102)
+		ip link set dev eth0 address $(macaddr_add "$base_mac" +1)
+		ip link set dev eth1 address $(macaddr_add "$base_mac" +3)
+		;;
 	meraki,mr33)
 		mac_lan=$(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102)
 		[ -n "$mac_lan" ] && ip link set dev eth0 address "$mac_lan"
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index c5f06ffb3a..f6bc173a76 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -49,6 +49,10 @@ platform_do_upgrade() {
 	8dev,jalapeno)
 		nand_do_upgrade "$ARGV"
 		;;
+	asus,map-ac2200)
+		CI_KERNPART="linux"
+		nand_do_upgrade "$1"
+		;;
 	asus,rt-ac58u)
 		CI_UBIPART="UBI_DEV"
 		CI_KERNPART="linux"
diff --git a/target/linux/ipq40xx/config-4.14 b/target/linux/ipq40xx/config-4.14
index 5ddbcf3df3..c72e693206 100644
--- a/target/linux/ipq40xx/config-4.14
+++ b/target/linux/ipq40xx/config-4.14
@@ -264,6 +264,7 @@ CONFIG_IRQ_DOMAIN=y
 CONFIG_IRQ_DOMAIN_HIERARCHY=y
 CONFIG_IRQ_FORCED_THREADING=y
 CONFIG_IRQ_WORK=y
+CONFIG_LEDS_LP5523=y
 CONFIG_LEDS_LP5562=y
 CONFIG_LEDS_LP55XX_COMMON=y
 CONFIG_LIBFDT=y
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
new file mode 100644
index 0000000000..bd70330b95
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
@@ -0,0 +1,304 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/dts-v1/;
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "ASUS Lyra MAP-AC2200";
+	compatible = "asus,map-ac2200";
+
+	aliases {
+		led-boot = &led_blue0;
+		led-failsafe = &led_red0;
+		led-running = &led_blue0;
+		led-upgrade = &led_red0;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb2 at 60f8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+		reset {
+			label = "reset";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x0 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x80000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x100000>;
+				read-only;
+			};
+
+			partition at 200000 {
+				label = "CDT";
+				reg = <0x200000 0x80000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "APPSBL";
+				reg = <0x280000 0x140000>;
+				read-only;
+			};
+
+			partition at 3c0000 {
+				label = "APPSBLENV";
+				reg = <0x3c0000 0x40000>;
+				read-only;
+			};
+
+			partition at 400000 {
+				label = "ubi";
+				reg = <0x400000 0x7c00000>;
+			};
+		};
+	};
+};
+
+&tlmm {
+	i2c_0_pins: i2c_0_pinmux {
+		pinmux {
+			function = "blsp_i2c0";
+			pins = "gpio20", "gpio21";
+			drive-strength = <16>;
+			bias-disable;
+		};
+	};
+
+	serial_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = 	"gpio52", "gpio53", "gpio58",
+				"gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins =	"gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&wifi1{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&pcie0 {
+	status = "okay";
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		wifi2: wifi at 1,0 {
+			compatible = "qcom,ath10k";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+			qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+		};
+	};
+};
+
+&usb2_hs_phy {
+	/* Bluetooth module attached via USB */
+	status = "okay";
+};
+
+&blsp1_i2c3 {
+	pinctrl-0 = <&i2c_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	lp55231 at 32 {
+		/* 9-channel RGB LED controller */
+		compatible = "national,lp5523";
+		reg = <0x32>;
+		clock-mode = [01];
+
+		led_blue0: blue0 {
+			chan-name = "blue0";
+			label = "map-ac2200:blue:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue1 {
+			chan-name = "blue1";
+			label = "map-ac2200:blue:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue2 {
+			chan-name = "blue2";
+			label = "map-ac2200:blue:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_green0: green0 {
+			chan-name = "green0";
+			label = "map-ac2200:green:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green1 {
+			chan-name = "green1";
+			label = "map-ac2200:green:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green2 {
+			chan-name = "green2";
+			label = "map-ac2200:green:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_red0: red0 {
+			chan-name = "red0";
+			label = "map-ac2200:red:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red1 {
+			chan-name = "red1";
+			label = "map-ac2200:red:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red2 {
+			chan-name = "red2";
+			label = "map-ac2200:red:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+	};
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
new file mode 100644
index 0000000000..bd70330b95
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-map-ac2200.dts
@@ -0,0 +1,304 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/dts-v1/;
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "ASUS Lyra MAP-AC2200";
+	compatible = "asus,map-ac2200";
+
+	aliases {
+		led-boot = &led_blue0;
+		led-failsafe = &led_red0;
+		led-running = &led_blue0;
+		led-upgrade = &led_red0;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb2 at 60f8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+		reset {
+			label = "reset";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RESTART>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x0 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x80000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x100000>;
+				read-only;
+			};
+
+			partition at 200000 {
+				label = "CDT";
+				reg = <0x200000 0x80000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "APPSBL";
+				reg = <0x280000 0x140000>;
+				read-only;
+			};
+
+			partition at 3c0000 {
+				label = "APPSBLENV";
+				reg = <0x3c0000 0x40000>;
+				read-only;
+			};
+
+			partition at 400000 {
+				label = "ubi";
+				reg = <0x400000 0x7c00000>;
+			};
+		};
+	};
+};
+
+&tlmm {
+	i2c_0_pins: i2c_0_pinmux {
+		pinmux {
+			function = "blsp_i2c0";
+			pins = "gpio20", "gpio21";
+			drive-strength = <16>;
+			bias-disable;
+		};
+	};
+
+	serial_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = 	"gpio52", "gpio53", "gpio58",
+				"gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins =	"gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&wifi1{
+	status = "okay";
+	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+};
+
+&pcie0 {
+	status = "okay";
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		wifi2: wifi at 1,0 {
+			compatible = "qcom,ath10k";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+			qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
+		};
+	};
+};
+
+&usb2_hs_phy {
+	/* Bluetooth module attached via USB */
+	status = "okay";
+};
+
+&blsp1_i2c3 {
+	pinctrl-0 = <&i2c_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	lp55231 at 32 {
+		/* 9-channel RGB LED controller */
+		compatible = "national,lp5523";
+		reg = <0x32>;
+		clock-mode = [01];
+
+		led_blue0: blue0 {
+			chan-name = "blue0";
+			label = "map-ac2200:blue:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue1 {
+			chan-name = "blue1";
+			label = "map-ac2200:blue:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		blue2 {
+			chan-name = "blue2";
+			label = "map-ac2200:blue:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_green0: green0 {
+			chan-name = "green0";
+			label = "map-ac2200:green:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green1 {
+			chan-name = "green1";
+			label = "map-ac2200:green:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		green2 {
+			chan-name = "green2";
+			label = "map-ac2200:green:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		led_red0: red0 {
+			chan-name = "red0";
+			label = "map-ac2200:red:chan0";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red1 {
+			chan-name = "red1";
+			label = "map-ac2200:red:chan1";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+
+		red2 {
+			chan-name = "red2";
+			label = "map-ac2200:red:chan2";
+			led-cur = [fa];
+			max-cur = [ff];
+		};
+	};
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index a670380ab3..31468fd758 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -62,6 +62,15 @@ define Device/8dev_jalapeno
 endef
 TARGET_DEVICES += 8dev_jalapeno
 
+define Device/asus_map-ac2200
+	$(call Device/FitImageLzma)
+	DEVICE_DTS := qcom-ipq4019-map-ac2200
+	DEVICE_TITLE := ASUS Lyra MAP-AC2200
+	IMAGES := sysupgrade.bin
+	DEVICE_PACKAGES := ipq-wifi-asus_map-ac2200 ath10k-firmware-qca9888-ct kmod-ath3k
+endef
+TARGET_DEVICES += asus_map-ac2200
+
 define Device/asus_rt-ac58u
 	$(call Device/FitImageLzma)
 	DEVICE_DTS := qcom-ipq4018-rt-ac58u
diff --git a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
index e0619a64dd..20ea3a8449 100644
--- a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,22 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,23 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -27,6 +27,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk01.1-c1.dtb \
 +	qcom-ipq4019-a62.dtb \
 +	qcom-ipq4019-ap.dk04.1-c1.dtb \
++	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
 +	qcom-ipq4029-mr33.dtb \
diff --git a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
index d0f892bc48..f3472b32c0 100644
--- a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,25 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,26 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -30,6 +30,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk07.1-c1.dtb \
  	qcom-ipq4019-ap.dk07.1-c2.dtb \
 +	qcom-ipq4019-a62.dtb \
++	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
 +	qcom-ipq4029-mr33.dtb \
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Tue Feb 12 13:49:30 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Tue, 12 Feb 2019 19:49:30 +0100
Subject: [OpenWrt-Devel] [PATCH v2] ipq40xx: add support for ASUS Lyra
In-Reply-To: <20190212161951.9494-1-mail@f0wl.cc>
References: <20190212161951.9494-1-mail@f0wl.cc>
Message-ID: <4162914.FGsBVsAxUA@debian64>

On Tuesday, February 12, 2019 5:19:51 PM CET Marius Genheimer wrote:
> SoC:   Qualcomm IPQ4019 (Dakota) 717 MHz, 4 cores
> RAM:   256 MiB (Nanya NT5CC128M16IP-DI)
> FLASH: 128 MiB (Macronix NAND)
> WiFi0: Qualcomm IPQ4019 b/g/n 2x2
> WiFi1: Qualcomm IPQ4019 a/n/ac 2x2
> WiFi2: Qualcomm Atheros QCA9886 a/n/ac
> BT:    Atheros AR3012
> IN:    WPS Button, Reset Button
> OUT:   RGB-LED via TI LP5523 9-channel Controller
> UART:  Front of Device - 115200 N-8
>        Pinout 3.3v - RX - TX - GND (Square is VCC)
> 
> Installation:
> 1. Transfer OpenWRT-initramfs image to the device via SSH to /tmp.
> Login credentials are identical to the Web UI.
> 
> 2. Login to the device via SSH.
> 
> 3. Flash the initramfs image using
> 
> > mtd-write -d linux -i openwrt-image-file
> 
> 4. Power-cycle the device and wait for OpenWRT to boot.
> 
> 5. From there flash the OpenWRT-sysupgrade image.
> 
> Ethernet-Ports: Although labeled identically, the port next to
> the power socket is the LAN port and the other one is WAN. This
> is the same behavior as in the stock firmware.
> 
> Signed-off-by: Marius Genheimer <mail at f0wl.cc>
> ---
Thanks. I made some changes to the commit, please let me know 
if the QCA9886 still works as expected (I copied the board WA
from ath79 for the time being - but it would be nice to have
the boardData for the QCA9886 upstream as well - see below).

https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=0be33481fbb784958476cd3449a0c3bd306ac535

> +&wifi0{
> +	status = "okay";
> +	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
> +};
> +
> +&wifi1{
> +	status = "okay";
> +	qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
> +};
> +
> +&pcie0 {
> +	status = "okay";
> +	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
> +	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
> +
> +	bridge at 0,0 {
> +		reg = <0x00000000 0 0 0 0>;
> +		#address-cells = <3>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		wifi2: wifi at 1,0 {
> +			compatible = "qcom,ath10k";
> +			status = "okay";
> +			reg = <0x00010000 0 0 0 0>;
> +			qcom,ath10k-calibration-variant = "ASUS-MAP-AC2200";
> +		};
> +	};
> +};
> +
Since you added the "qcom,ath10k-calibration-variant" for the QCA9886, I looked
into the stock firmware and compared the custom boardData with what's upstream
in the ath10k-firmware board-2.bin repositories. And indeed, you probably want
to also upstream the boardData of the QCA9886(variant of the QCA9888). 

The process is the same as with the IPQ4019/QCA4019 boardData:
<https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>

Best Regards,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel at makrotopia.org  Tue Feb 12 14:49:17 2019
From: daniel at makrotopia.org (Daniel Golle)
Date: Tue, 12 Feb 2019 20:49:17 +0100
Subject: [OpenWrt-Devel] [PATCH] apm821xx, ath79, lantiq,
 ramips: move named gpio exports to generic
Message-ID: <20190212191806.GA4057@makrotopia.org>

The patch was copied to a bunch of platforms and seems to be a quite
useful feature for various things. Move it to generic to avoid code
duplication.

Signed-off-by: Daniel Golle <daniel at makrotopia.org>
---
 .../140-GPIO-add-named-gpio-exports.patch     | 169 ------------------
 .../500-GPIO-add-named-gpio-exports.patch}    |   0
 .../500-GPIO-add-named-gpio-exports.patch}    |   0
 .../0030-GPIO-add-named-gpio-exports.patch    | 169 ------------------
 .../0024-GPIO-add-named-gpio-exports.patch    | 165 -----------------
 5 files changed, 503 deletions(-)
 delete mode 100644 target/linux/apm821xx/patches-4.14/140-GPIO-add-named-gpio-exports.patch
 rename target/linux/{ath79/patches-4.14/0036-GPIO-add-named-gpio-exports.patch => generic/hack-4.14/500-GPIO-add-named-gpio-exports.patch} (100%)
 rename target/linux/{apm821xx/patches-4.19/140-GPIO-add-named-gpio-exports.patch => generic/hack-4.19/500-GPIO-add-named-gpio-exports.patch} (100%)
 delete mode 100644 target/linux/lantiq/patches-4.14/0030-GPIO-add-named-gpio-exports.patch
 delete mode 100644 target/linux/ramips/patches-4.14/0024-GPIO-add-named-gpio-exports.patch

diff --git a/target/linux/apm821xx/patches-4.14/140-GPIO-add-named-gpio-exports.patch b/target/linux/apm821xx/patches-4.14/140-GPIO-add-named-gpio-exports.patch
deleted file mode 100644
index fe4ea4fc24..0000000000
--- a/target/linux/apm821xx/patches-4.14/140-GPIO-add-named-gpio-exports.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From cc809a441d8f2924f785eb863dfa6aef47a25b0b Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic at openwrt.org>
-Date: Tue, 12 Aug 2014 20:49:27 +0200
-Subject: [PATCH 30/36] GPIO: add named gpio exports
-
-Signed-off-by: John Crispin <blogic at openwrt.org>
----
- drivers/gpio/gpiolib-of.c     |   68 +++++++++++++++++++++++++++++++++++++++++
- drivers/gpio/gpiolib.c        |   11 +++++--
- include/asm-generic/gpio.h    |    5 +++
- include/linux/gpio/consumer.h |    8 +++++
- 4 files changed, 90 insertions(+), 2 deletions(-)
-
---- a/drivers/gpio/gpiolib-of.c
-+++ b/drivers/gpio/gpiolib-of.c
-@@ -23,6 +23,8 @@
- #include <linux/pinctrl/pinctrl.h>
- #include <linux/slab.h>
- #include <linux/gpio/machine.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
- 
- #include "gpiolib.h"
- 
-@@ -507,3 +509,72 @@ void of_gpiochip_remove(struct gpio_chip
- 	gpiochip_remove_pin_ranges(chip);
- 	of_node_put(chip->of_node);
- }
-+
-+#ifdef CONFIG_GPIO_SYSFS
-+
-+static struct of_device_id gpio_export_ids[] = {
-+	{ .compatible = "gpio-export" },
-+	{ /* sentinel */ }
-+};
-+
-+static int of_gpio_export_probe(struct platform_device *pdev)
-+{
-+	struct device_node *np = pdev->dev.of_node;
-+	struct device_node *cnp;
-+	u32 val;
-+	int nb = 0;
-+
-+	for_each_child_of_node(np, cnp) {
-+		const char *name = NULL;
-+		int gpio;
-+		bool dmc;
-+		int max_gpio = 1;
-+		int i;
-+
-+		of_property_read_string(cnp, "gpio-export,name", &name);
-+
-+		if (!name)
-+			max_gpio = of_gpio_count(cnp);
-+
-+		for (i = 0; i < max_gpio; i++) {
-+			unsigned flags = 0;
-+			enum of_gpio_flags of_flags;
-+
-+			gpio = of_get_gpio_flags(cnp, i, &of_flags);
-+			if (!gpio_is_valid(gpio))
-+				return gpio;
-+
-+			if (of_flags == OF_GPIO_ACTIVE_LOW)
-+				flags |= GPIOF_ACTIVE_LOW;
-+
-+			if (!of_property_read_u32(cnp, "gpio-export,output", &val))
-+				flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
-+			else
-+				flags |= GPIOF_IN;
-+
-+			if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np)))
-+				continue;
-+
-+			dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change");
-+			gpio_export_with_name(gpio, dmc, name);
-+			nb++;
-+		}
-+	}
-+
-+	dev_info(&pdev->dev, "%d gpio(s) exported\n", nb);
-+
-+	return 0;
-+}
-+
-+static struct platform_driver gpio_export_driver = {
-+	.driver		= {
-+		.name		= "gpio-export",
-+		.owner	= THIS_MODULE,
-+		.of_match_table	= of_match_ptr(gpio_export_ids),
-+	},
-+	.probe		= of_gpio_export_probe,
-+};
-+
-+module_platform_driver(gpio_export_driver);
-+
-+#endif
---- a/include/asm-generic/gpio.h
-+++ b/include/asm-generic/gpio.h
-@@ -127,6 +127,12 @@ static inline int gpio_export(unsigned g
- 	return gpiod_export(gpio_to_desc(gpio), direction_may_change);
- }
- 
-+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
-+static inline int gpio_export_with_name(unsigned gpio, bool direction_may_change, const char *name)
-+{
-+	return __gpiod_export(gpio_to_desc(gpio), direction_may_change, name);
-+}
-+
- static inline int gpio_export_link(struct device *dev, const char *name,
- 				   unsigned gpio)
- {
---- a/include/linux/gpio/consumer.h
-+++ b/include/linux/gpio/consumer.h
-@@ -451,6 +451,7 @@ struct gpio_desc *devm_fwnode_get_gpiod_
- 
- #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
- 
-+int _gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
- int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
- int gpiod_export_link(struct device *dev, const char *name,
- 		      struct gpio_desc *desc);
-@@ -458,6 +459,13 @@ void gpiod_unexport(struct gpio_desc *de
- 
- #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
- 
-+static inline int _gpiod_export(struct gpio_desc *desc,
-+			       bool direction_may_change,
-+			       const char *name)
-+{
-+	return -ENOSYS;
-+}
-+
- static inline int gpiod_export(struct gpio_desc *desc,
- 			       bool direction_may_change)
- {
---- a/drivers/gpio/gpiolib-sysfs.c
-+++ b/drivers/gpio/gpiolib-sysfs.c
-@@ -553,7 +553,7 @@ static struct class gpio_class = {
-  *
-  * Returns zero on success, else an error.
-  */
--int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
-+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name)
- {
- 	struct gpio_chip	*chip;
- 	struct gpio_device	*gdev;
-@@ -615,6 +615,8 @@ int gpiod_export(struct gpio_desc *desc,
- 	offset = gpio_chip_hwgpio(desc);
- 	if (chip->names && chip->names[offset])
- 		ioname = chip->names[offset];
-+	if (name)
-+		ioname = name;
- 
- 	dev = device_create_with_groups(&gpio_class, &gdev->dev,
- 					MKDEV(0, 0), data, gpio_groups,
-@@ -636,6 +638,12 @@ err_unlock:
- 	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
- 	return status;
- }
-+EXPORT_SYMBOL_GPL(__gpiod_export);
-+
-+int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
-+{
-+	return __gpiod_export(desc, direction_may_change, NULL);
-+}
- EXPORT_SYMBOL_GPL(gpiod_export);
- 
- static int match_export(struct device *dev, const void *desc)
diff --git a/target/linux/ath79/patches-4.14/0036-GPIO-add-named-gpio-exports.patch b/target/linux/generic/hack-4.14/500-GPIO-add-named-gpio-exports.patch
similarity index 100%
rename from target/linux/ath79/patches-4.14/0036-GPIO-add-named-gpio-exports.patch
rename to target/linux/generic/hack-4.14/500-GPIO-add-named-gpio-exports.patch
diff --git a/target/linux/apm821xx/patches-4.19/140-GPIO-add-named-gpio-exports.patch b/target/linux/generic/hack-4.19/500-GPIO-add-named-gpio-exports.patch
similarity index 100%
rename from target/linux/apm821xx/patches-4.19/140-GPIO-add-named-gpio-exports.patch
rename to target/linux/generic/hack-4.19/500-GPIO-add-named-gpio-exports.patch
diff --git a/target/linux/lantiq/patches-4.14/0030-GPIO-add-named-gpio-exports.patch b/target/linux/lantiq/patches-4.14/0030-GPIO-add-named-gpio-exports.patch
deleted file mode 100644
index fe4ea4fc24..0000000000
--- a/target/linux/lantiq/patches-4.14/0030-GPIO-add-named-gpio-exports.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From cc809a441d8f2924f785eb863dfa6aef47a25b0b Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic at openwrt.org>
-Date: Tue, 12 Aug 2014 20:49:27 +0200
-Subject: [PATCH 30/36] GPIO: add named gpio exports
-
-Signed-off-by: John Crispin <blogic at openwrt.org>
----
- drivers/gpio/gpiolib-of.c     |   68 +++++++++++++++++++++++++++++++++++++++++
- drivers/gpio/gpiolib.c        |   11 +++++--
- include/asm-generic/gpio.h    |    5 +++
- include/linux/gpio/consumer.h |    8 +++++
- 4 files changed, 90 insertions(+), 2 deletions(-)
-
---- a/drivers/gpio/gpiolib-of.c
-+++ b/drivers/gpio/gpiolib-of.c
-@@ -23,6 +23,8 @@
- #include <linux/pinctrl/pinctrl.h>
- #include <linux/slab.h>
- #include <linux/gpio/machine.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
- 
- #include "gpiolib.h"
- 
-@@ -507,3 +509,72 @@ void of_gpiochip_remove(struct gpio_chip
- 	gpiochip_remove_pin_ranges(chip);
- 	of_node_put(chip->of_node);
- }
-+
-+#ifdef CONFIG_GPIO_SYSFS
-+
-+static struct of_device_id gpio_export_ids[] = {
-+	{ .compatible = "gpio-export" },
-+	{ /* sentinel */ }
-+};
-+
-+static int of_gpio_export_probe(struct platform_device *pdev)
-+{
-+	struct device_node *np = pdev->dev.of_node;
-+	struct device_node *cnp;
-+	u32 val;
-+	int nb = 0;
-+
-+	for_each_child_of_node(np, cnp) {
-+		const char *name = NULL;
-+		int gpio;
-+		bool dmc;
-+		int max_gpio = 1;
-+		int i;
-+
-+		of_property_read_string(cnp, "gpio-export,name", &name);
-+
-+		if (!name)
-+			max_gpio = of_gpio_count(cnp);
-+
-+		for (i = 0; i < max_gpio; i++) {
-+			unsigned flags = 0;
-+			enum of_gpio_flags of_flags;
-+
-+			gpio = of_get_gpio_flags(cnp, i, &of_flags);
-+			if (!gpio_is_valid(gpio))
-+				return gpio;
-+
-+			if (of_flags == OF_GPIO_ACTIVE_LOW)
-+				flags |= GPIOF_ACTIVE_LOW;
-+
-+			if (!of_property_read_u32(cnp, "gpio-export,output", &val))
-+				flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
-+			else
-+				flags |= GPIOF_IN;
-+
-+			if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np)))
-+				continue;
-+
-+			dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change");
-+			gpio_export_with_name(gpio, dmc, name);
-+			nb++;
-+		}
-+	}
-+
-+	dev_info(&pdev->dev, "%d gpio(s) exported\n", nb);
-+
-+	return 0;
-+}
-+
-+static struct platform_driver gpio_export_driver = {
-+	.driver		= {
-+		.name		= "gpio-export",
-+		.owner	= THIS_MODULE,
-+		.of_match_table	= of_match_ptr(gpio_export_ids),
-+	},
-+	.probe		= of_gpio_export_probe,
-+};
-+
-+module_platform_driver(gpio_export_driver);
-+
-+#endif
---- a/include/asm-generic/gpio.h
-+++ b/include/asm-generic/gpio.h
-@@ -127,6 +127,12 @@ static inline int gpio_export(unsigned g
- 	return gpiod_export(gpio_to_desc(gpio), direction_may_change);
- }
- 
-+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
-+static inline int gpio_export_with_name(unsigned gpio, bool direction_may_change, const char *name)
-+{
-+	return __gpiod_export(gpio_to_desc(gpio), direction_may_change, name);
-+}
-+
- static inline int gpio_export_link(struct device *dev, const char *name,
- 				   unsigned gpio)
- {
---- a/include/linux/gpio/consumer.h
-+++ b/include/linux/gpio/consumer.h
-@@ -451,6 +451,7 @@ struct gpio_desc *devm_fwnode_get_gpiod_
- 
- #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
- 
-+int _gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
- int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
- int gpiod_export_link(struct device *dev, const char *name,
- 		      struct gpio_desc *desc);
-@@ -458,6 +459,13 @@ void gpiod_unexport(struct gpio_desc *de
- 
- #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
- 
-+static inline int _gpiod_export(struct gpio_desc *desc,
-+			       bool direction_may_change,
-+			       const char *name)
-+{
-+	return -ENOSYS;
-+}
-+
- static inline int gpiod_export(struct gpio_desc *desc,
- 			       bool direction_may_change)
- {
---- a/drivers/gpio/gpiolib-sysfs.c
-+++ b/drivers/gpio/gpiolib-sysfs.c
-@@ -553,7 +553,7 @@ static struct class gpio_class = {
-  *
-  * Returns zero on success, else an error.
-  */
--int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
-+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name)
- {
- 	struct gpio_chip	*chip;
- 	struct gpio_device	*gdev;
-@@ -615,6 +615,8 @@ int gpiod_export(struct gpio_desc *desc,
- 	offset = gpio_chip_hwgpio(desc);
- 	if (chip->names && chip->names[offset])
- 		ioname = chip->names[offset];
-+	if (name)
-+		ioname = name;
- 
- 	dev = device_create_with_groups(&gpio_class, &gdev->dev,
- 					MKDEV(0, 0), data, gpio_groups,
-@@ -636,6 +638,12 @@ err_unlock:
- 	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
- 	return status;
- }
-+EXPORT_SYMBOL_GPL(__gpiod_export);
-+
-+int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
-+{
-+	return __gpiod_export(desc, direction_may_change, NULL);
-+}
- EXPORT_SYMBOL_GPL(gpiod_export);
- 
- static int match_export(struct device *dev, const void *desc)
diff --git a/target/linux/ramips/patches-4.14/0024-GPIO-add-named-gpio-exports.patch b/target/linux/ramips/patches-4.14/0024-GPIO-add-named-gpio-exports.patch
deleted file mode 100644
index a1d5d9d9ff..0000000000
--- a/target/linux/ramips/patches-4.14/0024-GPIO-add-named-gpio-exports.patch
+++ /dev/null
@@ -1,165 +0,0 @@
-From 4267880319bc1a2270d352e0ded6d6386242a7ef Mon Sep 17 00:00:00 2001
-From: John Crispin <blogic at openwrt.org>
-Date: Tue, 12 Aug 2014 20:49:27 +0200
-Subject: [PATCH 24/53] GPIO: add named gpio exports
-
-Signed-off-by: John Crispin <blogic at openwrt.org>
----
- drivers/gpio/gpiolib-of.c     |   68 +++++++++++++++++++++++++++++++++++++++++
- drivers/gpio/gpiolib-sysfs.c  |   10 +++++-
- include/asm-generic/gpio.h    |    6 ++++
- include/linux/gpio/consumer.h |    8 +++++
- 4 files changed, 91 insertions(+), 1 deletion(-)
-
---- a/drivers/gpio/gpiolib-of.c
-+++ b/drivers/gpio/gpiolib-of.c
-@@ -23,6 +23,8 @@
- #include <linux/pinctrl/pinctrl.h>
- #include <linux/slab.h>
- #include <linux/gpio/machine.h>
-+#include <linux/init.h>
-+#include <linux/platform_device.h>
- 
- #include "gpiolib.h"
- 
-@@ -507,3 +509,68 @@ void of_gpiochip_remove(struct gpio_chip
- 	gpiochip_remove_pin_ranges(chip);
- 	of_node_put(chip->of_node);
- }
-+
-+static struct of_device_id gpio_export_ids[] = {
-+	{ .compatible = "gpio-export" },
-+	{ /* sentinel */ }
-+};
-+
-+static int of_gpio_export_probe(struct platform_device *pdev)
-+{
-+	struct device_node *np = pdev->dev.of_node;
-+	struct device_node *cnp;
-+	u32 val;
-+	int nb = 0;
-+
-+	for_each_child_of_node(np, cnp) {
-+		const char *name = NULL;
-+		int gpio;
-+		bool dmc;
-+		int max_gpio = 1;
-+		int i;
-+
-+		of_property_read_string(cnp, "gpio-export,name", &name);
-+
-+		if (!name)
-+			max_gpio = of_gpio_count(cnp);
-+
-+		for (i = 0; i < max_gpio; i++) {
-+			unsigned flags = 0;
-+			enum of_gpio_flags of_flags;
-+
-+			gpio = of_get_gpio_flags(cnp, i, &of_flags);
-+			if (!gpio_is_valid(gpio))
-+				return gpio;
-+
-+			if (of_flags == OF_GPIO_ACTIVE_LOW)
-+				flags |= GPIOF_ACTIVE_LOW;
-+
-+			if (!of_property_read_u32(cnp, "gpio-export,output", &val))
-+				flags |= val ? GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
-+			else
-+				flags |= GPIOF_IN;
-+
-+			if (devm_gpio_request_one(&pdev->dev, gpio, flags, name ? name : of_node_full_name(np)))
-+				continue;
-+
-+			dmc = of_property_read_bool(cnp, "gpio-export,direction_may_change");
-+			gpio_export_with_name(gpio, dmc, name);
-+			nb++;
-+		}
-+	}
-+
-+	dev_info(&pdev->dev, "%d gpio(s) exported\n", nb);
-+
-+	return 0;
-+}
-+
-+static struct platform_driver gpio_export_driver = {
-+	.driver		= {
-+		.name		= "gpio-export",
-+		.owner	= THIS_MODULE,
-+		.of_match_table	= of_match_ptr(gpio_export_ids),
-+	},
-+	.probe		= of_gpio_export_probe,
-+};
-+
-+module_platform_driver(gpio_export_driver);
---- a/drivers/gpio/gpiolib-sysfs.c
-+++ b/drivers/gpio/gpiolib-sysfs.c
-@@ -553,7 +553,7 @@ static struct class gpio_class = {
-  *
-  * Returns zero on success, else an error.
-  */
--int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
-+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name)
- {
- 	struct gpio_chip	*chip;
- 	struct gpio_device	*gdev;
-@@ -615,6 +615,8 @@ int gpiod_export(struct gpio_desc *desc,
- 	offset = gpio_chip_hwgpio(desc);
- 	if (chip->names && chip->names[offset])
- 		ioname = chip->names[offset];
-+	if (name)
-+		ioname = name;
- 
- 	dev = device_create_with_groups(&gpio_class, &gdev->dev,
- 					MKDEV(0, 0), data, gpio_groups,
-@@ -636,6 +638,12 @@ err_unlock:
- 	gpiod_dbg(desc, "%s: status %d\n", __func__, status);
- 	return status;
- }
-+EXPORT_SYMBOL_GPL(__gpiod_export);
-+
-+int gpiod_export(struct gpio_desc *desc, bool direction_may_change)
-+{
-+	return __gpiod_export(desc, direction_may_change, NULL);
-+}
- EXPORT_SYMBOL_GPL(gpiod_export);
- 
- static int match_export(struct device *dev, const void *desc)
---- a/include/asm-generic/gpio.h
-+++ b/include/asm-generic/gpio.h
-@@ -127,6 +127,12 @@ static inline int gpio_export(unsigned g
- 	return gpiod_export(gpio_to_desc(gpio), direction_may_change);
- }
- 
-+int __gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
-+static inline int gpio_export_with_name(unsigned gpio, bool direction_may_change, const char *name)
-+{
-+	return __gpiod_export(gpio_to_desc(gpio), direction_may_change, name);
-+}
-+
- static inline int gpio_export_link(struct device *dev, const char *name,
- 				   unsigned gpio)
- {
---- a/include/linux/gpio/consumer.h
-+++ b/include/linux/gpio/consumer.h
-@@ -451,6 +451,7 @@ struct gpio_desc *devm_fwnode_get_gpiod_
- 
- #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS)
- 
-+int _gpiod_export(struct gpio_desc *desc, bool direction_may_change, const char *name);
- int gpiod_export(struct gpio_desc *desc, bool direction_may_change);
- int gpiod_export_link(struct device *dev, const char *name,
- 		      struct gpio_desc *desc);
-@@ -458,6 +459,13 @@ void gpiod_unexport(struct gpio_desc *de
- 
- #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */
- 
-+static inline int _gpiod_export(struct gpio_desc *desc,
-+			       bool direction_may_change,
-+			       const char *name)
-+{
-+	return -ENOSYS;
-+}
-+
- static inline int gpiod_export(struct gpio_desc *desc,
- 			       bool direction_may_change)
- {
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Tue Feb 12 14:55:37 2019
From: mail at david-bauer.net (David Bauer)
Date: Tue, 12 Feb 2019 20:55:37 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ipq40xx: add support for FritzBox
 7530
In-Reply-To: <2472378.JcC4TsUF54@debian64>
References: <20190210133430.23792-1-mail@david-bauer.net>
 <20190210133430.23792-3-mail@david-bauer.net> <2472378.JcC4TsUF54@debian64>
Message-ID: <01aedee0-0e42-9a16-9fc2-b3fac8be45c5@david-bauer.net>

Hi Christian,

On 11.02.19 23:15, Christian Lamparter wrote:
> Comments inline.
> 
> On Sunday, February 10, 2019 2:34:30 PM CET David Bauer wrote:
>> Hardware
>> --------
>> CPU:   Qualcomm IPQ4019
>> RAM:   256M
>> FLASH: 128M NAND
>> ETH:   QCA8075
>> VDSL:  Intel/Lantiq VRX518 PCIe attached
>>        currently not supported
> 
> Does the pcie device show up during boot when
> you add and enable the pcie nodes in the dts?
> Or is more work required to get at least "lspci" working?

You will need to adjust the ranges of the PCIe bus, but nothing more is
required to get the endpoint atleast detected. See here:

https://github.com/blocktrron/openwrt/commit/1766b385d6500abdd6a32c33007c47da62e2b757

Maybe we sould add this commented-out to the devicetree? I see no point
in enabling the PCIe bus for a currently non-working device.


>> DECT:  Dialog SC14448
>>        currently not supported
> (hm, seems to be a spi? chip)

It seems to be UART and PCM attached. At least the AVM Firmware smashes
the Firmware for the chip over the UART while booting. There is very
little information about the Chip available only. I assume it's AVM
proprietary so i didn't bother with it.

>> WiFi2: IPQ4019 2T2R 2SS b/g/n
>> WiFi5: IPQ4019 2T2R 2SS n/ac
>> LED:    - Power/DSL green
>>         - WLAN green
>>         - FON/DECT green
>>         - Connect/WPS green
>>         - Info green
>>         - Info red
>> BTN:    - WLAN
>>         - FON
>>         - WPS/Connect
>> UART:  115200n8 3.3V (located under the Dialog chip)
>>        VCC - RX - TX - GND (Square is VCC)
>>  [...]
>> diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
>> index 9105bf2452..39383f4fa8 100755
>> --- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
>> +++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
>> @@ -28,6 +28,7 @@ engenius,eap1300)
>>  	ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
>>  	ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
>>  	;;
>> +avm,fritzbox-7530 |\
> With this addtion, you could just move the ucidef_set_led_wlan entry in front
> of engenius,eap1300 device.

I would prefer the above solution to keep it target-consistent.

> Or you could maybe instead place the
> 
> linux,default-trigger = "phy0tpt";
> 
> property into the DTS (fritzbox-7530:green:wlan's node) to do the same job.
>  
>>  glinet,gl-b1300)
>>  	ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
>>  	;;
>> diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
>> index 69b6c2591c..b4252f0ea6 100644
>> --- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
>> +++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
>> @@ -126,6 +126,9 @@ case "$FIRMWARE" in
>>  	avm,fritzbox-4040)
>>  		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
>>  		;;
>> +	avm,fritzbox-7530)
>> +		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 16384 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0")
> Oh, I think I remember this from the FB4040 as well. It too had 16384 long
> caldata. But everything after byte 12064 was just more padding. That why
> I cut it down to make sure not to push any garbage into the running firmware,
> because from what I remember, the ath10k will take anything from the pre-cal
> at face-value.

Great info, i'm going to check this!

> 
>> +		;;
>>  	meraki,mr33)
>>  		ath10kcal_ubi_extract "ART" 4096 12064
>>  		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
>> @@ -164,6 +167,9 @@ case "$FIRMWARE" in
>>  	avm,fritzbox-4040)
>>  		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
>>  		;;
>> +	avm,fritzbox-7530)
>> +		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 16384 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
>> +		;;
> Oh, so if the urlader1 has the same values as urlader0, you could check the return
> status of fritz_cal_extract and if it failed, then follow up with a fallback to read
> from the other urlader config area.
> 
> something like:
> 
> /usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
> /usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")

Yeah, this is possible as the data is stored in both partitions. I
decided to go for urlader1 as the pointers for the mac-address point
into urlader1, even the ones in urlader0 (see the U-Boot for the device).

I assume urlader1 is the backup in case uralder0 gets corrupted, but as
it's the first box I've seen with such a dual-bootloader setup I'm not
really sure.

>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>> new file mode 100644
>> index 0000000000..ea2d70a8bd
>> --- /dev/null
>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>> +	leds {
>> +		compatible = "gpio-leds";
>> +
>> +		info_red: info_red {
>> +			label = "fritzbox-7530:red:info";
>> +			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
>> +		};
>> +
>> +		info_green: info {
>> +			label = "fritzbox-7530:green:info";
>> +			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
>> +		};
>> +
>> +		wlan {
>> +			label = "fritzbox-7530:green:wlan";
>> +			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
>           <this place> (and the same place in 4.19's dts)
>> +		};
>> +
>> +		fon {
>> +			label = "fritzbox-7530:green:fon";
>> +			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
>> +		};
>> +
>> [...]
>> +
>> +	nand_pins: nand_pins {
>> +		pullups {
>> +			pins = "gpio52", "gpio53", "gpio58",
>> +				"gpio59";
> Just a word of warning here. The gpio52 might not be necessary for the
> functioning of the attached nand flash. We put this warning in the
> MR33's dts:
> 
> /*
>  * There are 18 pins. 15 pins are common between LCD and NAND.
>  * The QPIC controller arbitrates between LCD and NAND. Of the
>  * remaining 4, 2 are for NAND and 2 are for LCD exclusively.
>  *
>  * The meraki source hints that the bluetooth module claims
>  * pin 52 as well. But sadly, there's no data whenever this
>  * is a NAND or LCD exclusive pin or not.
>  */

I've re-checked the device-tree from AVM. They are not referencing a
gpio52 anywhere. So i assume this pin is indeed not related to the NAND
chip.

>> +			function = "qpic";
>> +			bias-pull-up;
>> +		};
>> +
>> +		pulldowns {
>> +			pins = "gpio54", "gpio55", "gpio56",
>> +				"gpio57", "gpio60", "gpio61",
>> +				"gpio62", "gpio63", "gpio64",
>> +				"gpio65", "gpio66", "gpio67",
>> +				"gpio68", "gpio69";
>> +			function = "qpic";
>> +			bias-pull-down;
>> +		};
>> +	};
>> +
>> +	usb-power {
>> +		line-name = "enable USB3 power";
>> +		gpios = <49 GPIO_ACTIVE_HIGH>;
>> +		gpio-hog;
>> +		output-high;
> In the future, this will hopefully become a regulator.
> But so far there's no support for it upstream. Hence this is fine.
> 
>> +	};
>> +};
>> +
>> +&nand {
>> +	pinctrl-0 = <&nand_pins>;
>> +	pinctrl-names = "default";
>> +	status = "okay";
>> +	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
>> +
>> +	nand at 0 {
>> +		partitions {
>> +			compatible = "fixed-partitions";
>> +			#address-cells = <1>;
>> +			#size-cells = <1>;
>> +
>> +			partition at 0 {
>> +				label = "MIBIB";
> This is strange, is there really a MIBIB partition there? Not that it makes any
> difference since we are not going to mess with the bootloaders. But from all the
> different Qcom devices I had my hands on, the first partition always contained
> the SBL1 (Secondary Bootloader 1). (If it is a copy of the MIBIB, then...
> is there another hidden flash chip?! And please give one of the partitions
> a (slightly) different name in this case.)

You got me there ;) It's a mistake this is indeed the SBL1 partition.
The label is a mistake.

>> +				reg = <0x000000 0x80000>;
>> +				read-only;
>> +			};
>> +
>> +			partition at 80000 {
>> +				label = "MIBIB";
>> +				reg = <0x080000 0x80000>;
>> +				read-only;
>> +			};
>> +
> [...]
>> +
>> +			partition at 2c0000 {
>> +				label = "nand-tffs";
>> +				reg = <0x2c0000 0x840000>;
>> +				read-only;
>> +			};
>> +
> [...]
>> diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>> new file mode 100644
>> index 0000000000..ea2d70a8bd
>> --- /dev/null
>> +++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>> @@ -0,0 +1,281 @@
>> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
>> +
>> +#include "qcom-ipq4019.dtsi"
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/input.h>
>> +#include <dt-bindings/soc/qcom,tcsr.h>
>> +
>> +/ {
>> +	model = "AVM FRITZ!Box 7530";
>> +	compatible = "avm,fritzbox-7530", "qcom,ipq4019";
> The "qcom,ipq4019"; can be dropped. Upstream dropped them
> as well see commit a2501ebfb066 ("ipq40xx: remove qcom,ipq4019 on all devices")

Woopsy, missed this one while rebasing

>> diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
>> index a670380ab3..ca5a453b47 100644
>> --- a/target/linux/ipq40xx/image/Makefile
>> +++ b/target/linux/ipq40xx/image/Makefile
>> @@ -97,6 +97,15 @@ define Device/avm_fritzbox-4040
>>  endef
>>  TARGET_DEVICES += avm_fritzbox-4040
>>  
>> +define Device/avm_fritzbox-7530
>> +	$(call Device/FitImageLzma)
>> +	DEVICE_DTS := qcom-ipq4019-fritzbox-7530
>> +	DEVICE_TITLE := AVM Fritz!Box 7530
>> +	DEVICE_PACKAGES := fritz-caldata ipq-wifi-fritz7530
> I remember seeing a fritz_tffs_nand_read utility:
> 
> https://lists.openwrt.org/pipermail/openwrt-devel/2018-March/011501.html
> maybe it could be of use?

Yeah, i've had a modified version working with this box. There is
another effort getting the tool into OpenWRT and i commented about the
issue i faced with the 7530. Let's see if this is going somewhere.

https://github.com/openwrt/openwrt/pull/1766/files#r254196732

Best wishes
David

>> +	IMAGES := sysupgrade.bin
>> +endef
>> +TARGET_DEVICES += avm_fritzbox-7530
>> +
>>  define Device/compex_wpj428
>>  	$(call Device/FitImage)
>>  	DEVICE_DTS := qcom-ipq4028-wpj428
> 
> Regards,
> Christian
> 
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel at makrotopia.org  Tue Feb 12 16:13:05 2019
From: daniel at makrotopia.org (Daniel Golle)
Date: Tue, 12 Feb 2019 22:13:05 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ipq40xx: add support for FritzBox
 7530
In-Reply-To: <01aedee0-0e42-9a16-9fc2-b3fac8be45c5@david-bauer.net>
References: <20190210133430.23792-1-mail@david-bauer.net>
 <20190210133430.23792-3-mail@david-bauer.net>
 <2472378.JcC4TsUF54@debian64>
 <01aedee0-0e42-9a16-9fc2-b3fac8be45c5@david-bauer.net>
Message-ID: <20190212211301.GB4195@makrotopia.org>

On Tue, Feb 12, 2019 at 08:55:37PM +0100, David Bauer wrote:> 
> >> DECT:  Dialog SC14448
> >>        currently not supported
> > (hm, seems to be a spi? chip)
> 
> It seems to be UART and PCM attached. At least the AVM Firmware smashes
> the Firmware for the chip over the UART while booting. There is very
> little information about the Chip available only. I assume it's AVM
> proprietary so i didn't bother with it.

So OsmocomDECT may work on that chips with relatively small effort
and dumped firmware blob. See also:

http://dect.osmocom.org/

http://lists.osmocom.org/pipermail/linux-dect/2017-March/000249.html

https://openwrt-devel.openwrt.narkive.com/eZMxItdJ/patch-rfc-osmocom-dect-stack-on-openwrt

https://lists.openwrt.org/pipermail/openwrt-devel/2017-February/006399.html


Cheers


Daniel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Tue Feb 12 16:17:04 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Tue, 12 Feb 2019 22:17:04 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ipq40xx: add support for FritzBox
 7530
In-Reply-To: <01aedee0-0e42-9a16-9fc2-b3fac8be45c5@david-bauer.net>
References: <20190210133430.23792-1-mail@david-bauer.net>
 <2472378.JcC4TsUF54@debian64>
 <01aedee0-0e42-9a16-9fc2-b3fac8be45c5@david-bauer.net>
Message-ID: <3530167.LDRsXEHEL0@debian64>

On Tuesday, February 12, 2019 8:55:37 PM CET David Bauer wrote:
> Hi Christian,
> On 11.02.19 23:15, Christian Lamparter wrote:
> > Comments inline.
> > 
> > On Sunday, February 10, 2019 2:34:30 PM CET David Bauer wrote:
> >> Hardware
> >> --------
> >> CPU:   Qualcomm IPQ4019
> >> RAM:   256M
> >> FLASH: 128M NAND
> >> ETH:   QCA8075
> >> VDSL:  Intel/Lantiq VRX518 PCIe attached
> >>        currently not supported
> > 
> > Does the pcie device show up during boot when
> > you add and enable the pcie nodes in the dts?
> > Or is more work required to get at least "lspci" working?
> 
> You will need to adjust the ranges of the PCIe bus, but nothing more is
> required to get the endpoint atleast detected. See here:
> 
> https://github.com/blocktrron/openwrt/commit/1766b385d6500abdd6a32c33007c47da62e2b757
> 
> Maybe we sould add this commented-out to the devicetree? I see no point
> in enabling the PCIe bus for a currently non-working device.

Man, this "just" (in QCOM time) got patched :-/.

(This went into 4.20):

<https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm/boot/dts/qcom-ipq4019.dtsi?id=da89f500cb55fb3f19c4b399b46d8add0abbd4d6>


From mail at david-bauer.net  Tue Feb 12 16:38:17 2019
From: mail at david-bauer.net (David Bauer)
Date: Tue, 12 Feb 2019 22:38:17 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ipq40xx: add support for FritzBox
 7530
In-Reply-To: <3530167.LDRsXEHEL0@debian64>
References: <20190210133430.23792-1-mail@david-bauer.net>
 <2472378.JcC4TsUF54@debian64>
 <01aedee0-0e42-9a16-9fc2-b3fac8be45c5@david-bauer.net>
 <3530167.LDRsXEHEL0@debian64>
Message-ID: <39f2fc39-73a1-ec35-ef5d-211386d17ca3@david-bauer.net>



On 12.02.19 22:17, Christian Lamparter wrote:
> On Tuesday, February 12, 2019 8:55:37 PM CET David Bauer wrote:
>> Hi Christian,
>> On 11.02.19 23:15, Christian Lamparter wrote:
>>> Comments inline.
>>>
>>> On Sunday, February 10, 2019 2:34:30 PM CET David Bauer wrote:
>>>> Hardware
>>>> --------
>>>> CPU:   Qualcomm IPQ4019
>>>> RAM:   256M
>>>> FLASH: 128M NAND
>>>> ETH:   QCA8075
>>>> VDSL:  Intel/Lantiq VRX518 PCIe attached
>>>>        currently not supported
>>>
>>> Does the pcie device show up during boot when
>>> you add and enable the pcie nodes in the dts?
>>> Or is more work required to get at least "lspci" working?
>>
>> You will need to adjust the ranges of the PCIe bus, but nothing more is
>> required to get the endpoint atleast detected. See here:
>>
>> https://github.com/blocktrron/openwrt/commit/1766b385d6500abdd6a32c33007c47da62e2b757
>>
>> Maybe we sould add this commented-out to the devicetree? I see no point
>> in enabling the PCIe bus for a currently non-working device.
> 
> Man, this "just" (in QCOM time) got patched :-/.
> 
> (This went into 4.20):
> 
> <https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/arch/arm/boot/dts/qcom-ipq4019.dtsi?id=da89f500cb55fb3f19c4b399b46d8add0abbd4d6>

I'm aware of this patch but i'm not aure if we might indeed have
problems with other devices and the bigger memory space. But i also have
no other device to test this with, soo.

> 
> From what I can tell, the pcie DSL device just does not
> have enough "real-estate". Do you maybe have some bootlogs
> of your 7530 device around when it's doing the pcie initialization?
> (Having bootlogs of both the vendor and openwrt would be great, especially
> openwrt in both configurations: the current, failing one and the working one).

I can provide you with the snippet of working initialization in OpenWRT
and from the vendor for now. I recall it was complaining about not
enough space in the BAR when not altering the range in the device tree.

AVM:

[    0.333513] qcom-pcie 40000000.pci: link up
[    0.333779] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
[    0.333807] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.333833] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
(bus address [0x40200000-0x402fffff])
[    0.333854] pci_bus 0000:00: root bus resource [mem
0x48000000-0x57ffffff]
[    0.333904] pci 0000:00:00.0: [1bef:0030] type 01 class 0x060400
[    0.333952] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff]
[    0.334035] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold
[    0.334411] PCI: bus0: Fast back to back transfers disabled
[    0.334664] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
[    0.334823] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
[    0.335209] pci 0000:01:00.0: supports D1 D2
[    0.335229] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
[    0.335593] PCI: bus1: Fast back to back transfers disabled
[    0.335746] pci 0000:00:00.0: BAR 8: assigned [mem 0x48000000-0x487fffff]
[    0.335774] pci 0000:00:00.0: BAR 0: assigned [mem 0x48800000-0x48800fff]
[    0.335805] pci 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x487fffff]
[    0.335840] pci 0000:00:00.0: PCI bridge to [bus 01]
[    0.335863] pci 0000:00:00.0:   bridge window [mem 0x48000000-0x487fffff]

OpenWRT working:
[    0.339504] qcom-pcie 40000000.pci: link up
[    0.339656] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
[    0.339677] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.339693] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
(bus address [0x40200000-0x402fffff])
[    0.339706] pci_bus 0000:00: root bus resource [mem
0x48000000-0x57ffffff]
[    0.340029] PCI: bus0: Fast back to back transfers disabled
[    0.341058] PCI: bus1: Fast back to back transfers disabled
[    0.341108] pci 0000:00:00.0: BAR 8: assigned [mem 0x48000000-0x487fffff]
[    0.341126] pci 0000:00:00.0: BAR 0: assigned [mem
0x48800000-0x48800fff 64bit]
[    0.341150] pci 0000:01:00.0: BAR 0: assigned [mem 0x48000000-0x487fffff]
[    0.341179] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    0.341194] pci 0000:00:00.0:   bridge window [mem 0x48000000-0x487fffff]


> Because the fix (bigger area) should definitely be sent upstream.
> 
> As for adding the pcie node: please do. I think it's fine to have
> it, even if the driver for the VDSL chip isn't working. 

Okay, will do so.

If anyone is interested: there are some resources for the modem chip
here, but they originate from a GRX350 UGW, so it's most likely platform
specific:

https://github.com/blocktrron/vrx518-pcie
https://github.com/blocktrron/vrx518-mei
https://github.com/blocktrron/vrx518-dsl-cpe-api

>>>> DECT:  Dialog SC14448
>>>>        currently not supported
>>> (hm, seems to be a spi? chip)
>>
>> It seems to be UART and PCM attached. At least the AVM Firmware smashes
>> the Firmware for the chip over the UART while booting. There is very
>> little information about the Chip available only. I assume it's AVM
>> proprietary so i didn't bother with it.
> Oh ok. "Good to know". I guess this would then also require I2S support...
> which is non-existent at the moment.
> 
>>>> WiFi2: IPQ4019 2T2R 2SS b/g/n
>>>> WiFi5: IPQ4019 2T2R 2SS n/ac
>>>> LED:    - Power/DSL green
>>>>         - WLAN green
>>>>         - FON/DECT green
>>>>         - Connect/WPS green
>>>>         - Info green
>>>>         - Info red
>>>> BTN:    - WLAN
>>>>         - FON
>>>>         - WPS/Connect
>>>> UART:  115200n8 3.3V (located under the Dialog chip)
>>>>        VCC - RX - TX - GND (Square is VCC)
>>>>  [...]
>>>> diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
>>>> index 9105bf2452..39383f4fa8 100755
>>>> --- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
>>>> +++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
>>>> @@ -28,6 +28,7 @@ engenius,eap1300)
>>>>  	ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
>>>>  	ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
>>>>  	;;
>>>> +avm,fritzbox-7530 |\
>>> With this addtion, you could just move the ucidef_set_led_wlan entry in front
>>> of engenius,eap1300 device.
>>
>> I would prefer the above solution to keep it target-consistent.
> K. Keep it as is then (just move it)
>  
>>>> diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>> new file mode 100644
>>>> index 0000000000..ea2d70a8bd
>>>> --- /dev/null
>>>> +++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>> @@ -0,0 +1,281 @@
>>>> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
>>>> +
>>>> +#include "qcom-ipq4019.dtsi"
>>>> +#include <dt-bindings/gpio/gpio.h>
>>>> +#include <dt-bindings/input/input.h>
>>>> +#include <dt-bindings/soc/qcom,tcsr.h>
>>>> +
>>>> +/ {
> 
> I just remembered that the rng-node was missing in the soc-subnode.
> Robert Marko discovered this while porting the 4.19. We didn't add
> it for the 4.14 because the qcom rng driver only registers with a
> crypto_rng device. While this is still useful (stdrng), it is not
> a true random number generator. 
> 
> But nevertheless: can you please add:
> 
>                 rng at 22000 {
>                         status = "okay";
>                 };
> 
> to 4.19's dts?

Will do.

>>>> diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
>>>> index a670380ab3..ca5a453b47 100644
>>>> --- a/target/linux/ipq40xx/image/Makefile
>>>> +++ b/target/linux/ipq40xx/image/Makefile
>>>> @@ -97,6 +97,15 @@ define Device/avm_fritzbox-4040
>>>>  endef
>>>>  TARGET_DEVICES += avm_fritzbox-4040
>>>>  
>>>> +define Device/avm_fritzbox-7530
>>>> +	$(call Device/FitImageLzma)
>>>> +	DEVICE_DTS := qcom-ipq4019-fritzbox-7530
>>>> +	DEVICE_TITLE := AVM Fritz!Box 7530
>>>> +	DEVICE_PACKAGES := fritz-caldata ipq-wifi-fritz7530
>>> I remember seeing a fritz_tffs_nand_read utility:
>>>
>>> https://lists.openwrt.org/pipermail/openwrt-devel/2018-March/011501.html
>>> maybe it could be of use?
>>
>> Yeah, i've had a modified version working with this box. There is
>> another effort getting the tool into OpenWRT and i commented about the
>> issue i faced with the 7530. Let's see if this is going somewhere.
>>
>> https://github.com/openwrt/openwrt/pull/1766/files#r254196732
> 
> Oh, boy. Well, this is a bit of a pickle. But for other reasons than you might
> think...

Could you explain why it is? :)

Best wishes
David

> Thanks,
> Christian
> 
> [0] <https://www.openfirmware.info/data/docs/bus.pci.pdf>
> 
> 
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dev at kresin.me  Tue Feb 12 17:19:24 2019
From: dev at kresin.me (Mathias Kresin)
Date: Tue, 12 Feb 2019 23:19:24 +0100
Subject: [OpenWrt-Devel] [PATCH] apm821xx, ath79, lantiq,
 ramips: move named gpio exports to generic
In-Reply-To: <20190212191806.GA4057@makrotopia.org>
References: <20190212191806.GA4057@makrotopia.org>
Message-ID: <88050845-4d59-c253-e9f8-1b0661d6f7a5@kresin.me>

12/02/2019 20:49, Daniel Golle:
> The patch was copied to a bunch of platforms and seems to be a quite
> useful feature for various things. Move it to generic to avoid code
> duplication.

Follow up to the discussion in 
https://github.com/openwrt/openwrt/pull/1814#issuecomment-462942022.

We should rather try to get rid of the patch instead of encourage people 
of using it. Has to be read as soft NAK.

The patch was a hack for missing kernel functionality and was rejected 
upstream a long time ago. The main use case for the patch is pulling 
reset GPIOs or enable a USB VCC supply. More and more drivers/subsystems 
are getting support to control reset GPIOs or enable the VCC supply on 
their own.

The upstream answer to gpio-exports are gpio-hogs. It is just that 
nobody migrated the devicetree source files to GPIO hogs so far. Even if 
gpio-hogs are still a workaround for drivers not able pull their reset 
GPIOs/enable VCC supply, it seem to me the cleaner workaround.

Mathias

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Tue Feb 12 18:08:29 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Tue, 12 Feb 2019 15:08:29 -0800
Subject: [OpenWrt-Devel] Cleanup in 4.19 generic kernel config?
In-Reply-To: <90eb2aac9caad5eb4a66fdec7d0aef35@pyret.net>
References: <90eb2aac9caad5eb4a66fdec7d0aef35@pyret.net>
Message-ID: <CAKxU2N9Eiwr1gXfJ1K5H=_4V0akmcASYCPxgTN_KWHFf5CO22w@mail.gmail.com>

On Sat, Feb 9, 2019 at 12:16 AM Daniel Engberg
<daniel.engberg.lists at pyret.net> wrote:
>
> Hi,
>
> After my attempt getting Linux 4.19 working for the Octeon target
> I started to look at the generic configuration for 4.19 and it
> seems that there are quite a bit of target specific options listed
> and potentially generating larger kernels than necessary.
> Given that some options are incorrect for certain targets I assume
> that they get overridden and/or ignored. Unless I misunderstand
> how the Linux kernel configuration works =y is equivalent to always
> compiled into kernel?
>
> I'm taking about this file by the way:
> https://github.com/openwrt/openwrt/blob/master/target/linux/generic/config-4.19
>
> Should be set by target? Shouldn't coexist with CONFIG_64BIT as
> far as I can tell.
> CONFIG_32BIT=y
>
> ARM specific, should be set by target?
> CONFIG_ARM_CPU_TOPOLOGY=y
> CONFIG_ARM_DMA_MEM_BUFFERABLE=y
> CONFIG_ARM_GIC_MAX_NR=1
>
> Target specific, no need to have it enabled by default and/or
> possibly at all?
> CONFIG_ATA_BMDMA=y
> CONFIG_ATA_SFF=y
>
> Seems to be defined by default?
> CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
> https://github.com/torvalds/linux/blob/master/drivers/block/Kconfig#L217
>
> Should be set by target?
> CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
>
> Debug option - Adds unnecessary overhead?
> CONFIG_BRANCH_PROFILE_NONE=y
> https://cateee.net/lkddb/web-lkddb/BRANCH_PROFILE_NONE.html
>
> Should be set by target (ARM)?
> CONFIG_CACHE_L2X0_PMU=y
>
> Should be set by target, why is it enabled in 2019?
> CONFIG_CARDBUS=y
>
> Should be set by target (seems x86/64x specific)?
> CONFIG_DOUBLEFAULT=y
>
> Gets defined automatically based on target/platform?
> CONFIG_HZ=100
> CONFIG_HZ_100=y
>
> Already default?
> CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
> https://cateee.net/lkddb/web-lkddb/IIO_CONSUMERS_PER_TRIGGER.html
>
> Why?
> CONFIG_ISDN=y
> CONFIG_JOLIET=y
>
> Should be set by target (ARM)?
> CONFIG_KERNEL_MODE_NEON=y
>
> Set Page_Size by target?
> CONFIG_PAGE_SIZE_4KB=y
> CONFIG_PPC_4K_PAGES=y
>
> Already default?
> CONFIG_PWRSEQ_EMMC=y
> https://cateee.net/lkddb/web-lkddb/PWRSEQ_EMMC.html
>
> Default 21 isn't enough?
> CONFIG_RCU_CPU_STALL_TIMEOUT=60
>
> Needed for?
> CONFIG_RXKAD=y
>
> Obsolete?
> CONFIG_SLABINFO=y
>
> Shouldn't be default and/or platform specific?
> CONFIG_SND_X86=y
>
> Needed for?
> CONFIG_USB_ARMLINUX=y
> CONFIG_USB_BELKIN=y
>
> Platform specific?
> CONFIG_USB_OHCI_LITTLE_ENDIAN=y
>
> Platform specific?
> CONFIG_X86_SYSFB=y
>
> Best regads,
> Daniel
I've been running this with ramips for a few days. No issues to report.
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Tue Feb 12 20:03:09 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Tue, 12 Feb 2019 17:03:09 -0800
Subject: [OpenWrt-Devel] [PATCH] kernel: Remove CONFIG_UDF_NLS for kernel
 4.19
Message-ID: <20190213010309.31467-1-rosenp@gmail.com>

kernel 4.18 removed the symbol and made NLS implicit.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 target/linux/generic/config-4.19 | 1 -
 1 file changed, 1 deletion(-)

diff --git a/target/linux/generic/config-4.19 b/target/linux/generic/config-4.19
index 65d908ffe7..5e9a6cf624 100644
--- a/target/linux/generic/config-4.19
+++ b/target/linux/generic/config-4.19
@@ -5300,7 +5300,6 @@ CONFIG_UBIFS_FS_FORMAT4=y
 # CONFIG_UCB1400_CORE is not set
 # CONFIG_UCSI is not set
 # CONFIG_UDF_FS is not set
-CONFIG_UDF_NLS=y
 CONFIG_UEVENT_HELPER=y
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
 # CONFIG_UFS_FS is not set
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ynezz at true.cz  Wed Feb 13 01:14:18 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Wed, 13 Feb 2019 07:14:18 +0100
Subject: [OpenWrt-Devel] [PATCH] apm821xx, ath79, lantiq,
 ramips: move named gpio exports to generic
In-Reply-To: <88050845-4d59-c253-e9f8-1b0661d6f7a5@kresin.me>
References: <20190212191806.GA4057@makrotopia.org>
 <88050845-4d59-c253-e9f8-1b0661d6f7a5@kresin.me>
Message-ID: <20190213061418.GA23776@meh.true.cz>

Mathias Kresin <dev at kresin.me> [2019-02-12 23:19:24]:

> 12/02/2019 20:49, Daniel Golle:
> > The patch was copied to a bunch of platforms and seems to be a quite
> > useful feature for various things. Move it to generic to avoid code
> > duplication.
> 
> Follow up to the discussion in
> https://github.com/openwrt/openwrt/pull/1814#issuecomment-462942022.
> 
> We should rather try to get rid of the patch instead of encourage people of
> using it. Has to be read as soft NAK.
> 
> The patch was a hack for missing kernel functionality and was rejected
> upstream a long time ago. The main use case for the patch is pulling reset
> GPIOs or enable a USB VCC supply. More and more drivers/subsystems are
> getting support to control reset GPIOs or enable the VCC supply on their
> own.
> 
> The upstream answer to gpio-exports are gpio-hogs. It is just that nobody
> migrated the devicetree source files to GPIO hogs so far. Even if gpio-hogs
> are still a workaround for drivers not able pull their reset GPIOs/enable
> VCC supply, it seem to me the cleaner workaround.

I've sent RFC[1] about userspace replacement as well.

1. http://lists.infradead.org/pipermail/openwrt-devel/2019-February/015715.html

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel.engberg.lists at pyret.net  Wed Feb 13 07:01:43 2019
From: daniel.engberg.lists at pyret.net (Daniel Engberg)
Date: Wed, 13 Feb 2019 13:01:43 +0100
Subject: [OpenWrt-Devel] Cleanup in 4.19 generic kernel config?
In-Reply-To: <CAKxU2N9Eiwr1gXfJ1K5H=_4V0akmcASYCPxgTN_KWHFf5CO22w@mail.gmail.com>
References: <90eb2aac9caad5eb4a66fdec7d0aef35@pyret.net>
 <CAKxU2N9Eiwr1gXfJ1K5H=_4V0akmcASYCPxgTN_KWHFf5CO22w@mail.gmail.com>
Message-ID: <4e7ab7e329fc67484ac362c00b323c9e@pyret.net>

On 2019-02-13 00:08, Rosen Penev wrote:
> On Sat, Feb 9, 2019 at 12:16 AM Daniel Engberg
> <daniel.engberg.lists at pyret.net> wrote:
>> 
>> Hi,
>> 
>> After my attempt getting Linux 4.19 working for the Octeon target
>> I started to look at the generic configuration for 4.19 and it
>> seems that there are quite a bit of target specific options listed
>> and potentially generating larger kernels than necessary.
>> Given that some options are incorrect for certain targets I assume
>> that they get overridden and/or ignored. Unless I misunderstand
>> how the Linux kernel configuration works =y is equivalent to always
>> compiled into kernel?
>> 
>> I'm taking about this file by the way:
>> https://github.com/openwrt/openwrt/blob/master/target/linux/generic/config-4.19
>> 
>> Should be set by target? Shouldn't coexist with CONFIG_64BIT as
>> far as I can tell.
>> CONFIG_32BIT=y
>> 
>> ARM specific, should be set by target?
>> CONFIG_ARM_CPU_TOPOLOGY=y
>> CONFIG_ARM_DMA_MEM_BUFFERABLE=y
>> CONFIG_ARM_GIC_MAX_NR=1
>> 
>> Target specific, no need to have it enabled by default and/or
>> possibly at all?
>> CONFIG_ATA_BMDMA=y
>> CONFIG_ATA_SFF=y
>> 
>> Seems to be defined by default?
>> CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
>> https://github.com/torvalds/linux/blob/master/drivers/block/Kconfig#L217
>> 
>> Should be set by target?
>> CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
>> 
>> Debug option - Adds unnecessary overhead?
>> CONFIG_BRANCH_PROFILE_NONE=y
>> https://cateee.net/lkddb/web-lkddb/BRANCH_PROFILE_NONE.html
>> 
>> Should be set by target (ARM)?
>> CONFIG_CACHE_L2X0_PMU=y
>> 
>> Should be set by target, why is it enabled in 2019?
>> CONFIG_CARDBUS=y
>> 
>> Should be set by target (seems x86/64x specific)?
>> CONFIG_DOUBLEFAULT=y
>> 
>> Gets defined automatically based on target/platform?
>> CONFIG_HZ=100
>> CONFIG_HZ_100=y
>> 
>> Already default?
>> CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
>> https://cateee.net/lkddb/web-lkddb/IIO_CONSUMERS_PER_TRIGGER.html
>> 
>> Why?
>> CONFIG_ISDN=y
>> CONFIG_JOLIET=y
>> 
>> Should be set by target (ARM)?
>> CONFIG_KERNEL_MODE_NEON=y
>> 
>> Set Page_Size by target?
>> CONFIG_PAGE_SIZE_4KB=y
>> CONFIG_PPC_4K_PAGES=y
>> 
>> Already default?
>> CONFIG_PWRSEQ_EMMC=y
>> https://cateee.net/lkddb/web-lkddb/PWRSEQ_EMMC.html
>> 
>> Default 21 isn't enough?
>> CONFIG_RCU_CPU_STALL_TIMEOUT=60
>> 
>> Needed for?
>> CONFIG_RXKAD=y
>> 
>> Obsolete?
>> CONFIG_SLABINFO=y
>> 
>> Shouldn't be default and/or platform specific?
>> CONFIG_SND_X86=y
>> 
>> Needed for?
>> CONFIG_USB_ARMLINUX=y
>> CONFIG_USB_BELKIN=y
>> 
>> Platform specific?
>> CONFIG_USB_OHCI_LITTLE_ENDIAN=y
>> 
>> Platform specific?
>> CONFIG_X86_SYSFB=y
>> 
>> Best regads,
>> Daniel
> I've been running this with ramips for a few days. No issues to report.
>> 
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel at lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Hi,

Thanks for giving it a try, hopefully someone we can make generic a
little bit cleaner in the end. Since you tried it on ramips and going
by this 
https://github.com/neheb/source/commit/500f88b54beb9399d1e4927fcd2d0fc59154dfe1
I'm going to assume that you tried this on 4.14? :-)

Best regards,
Daniel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From jan.kardell at telliq.com  Wed Feb 13 10:30:07 2019
From: jan.kardell at telliq.com (Jan Kardell)
Date: Wed, 13 Feb 2019 16:30:07 +0100
Subject: [OpenWrt-Devel]  [packages] pcre build fail
Message-ID: <a91043b3-2230-8bfc-7283-eb61b956bd75@telliq.com>

Hi,

The package libpcrecpp fails to build if pcre is fist built without it,
and thereafter adding libpcrecpp to the config. It can be fixed by either:

1: Adding PKG_CONFIG_DEPENDS:=CONFIG_PACKAGE_libpcrecpp to the package
makefile

2: Always have --enable-cpp in CONFIGURE_ARGS

I would prefer 2. How do the maintainers want it?

I could send a PR if needed.

//Jan

-- 

"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone."
- Bjarne Stroustrup


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From openwrt-devel at lists.openwrt.org  Wed Feb 13 14:35:01 2019
From: openwrt-devel at lists.openwrt.org (=?UTF-8?Q?Amanda_Campbell?= via openwrt-devel)
Date: Wed, 13 Feb 2019 19:35:01 +0000
Subject: [OpenWrt-Devel] Aruba Networks Users Info
References: <!&!AAAAAAAAAAAuAAAAAAAAAH3v+2n+DH9AmCDdbnAZ4sQBAMO2jhD3dRHOtM0AqgC7tuYAAAAAAA4AABAAAABR8f0pdkpATIyhcGl295TRAQAAAAA=@digitalinside.biz>
Message-ID: <mailman.21032.1550086500.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: =?UTF-8?Q?Amanda_Campbell?= <amanda at digitalinside.biz>
Subject: Aruba Networks Users Info
Date: Wed, 13 Feb 2019 19:34:53 +0000
Size: 8505
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190213/e801e1a9/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From rosenp at gmail.com  Wed Feb 13 15:29:06 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Wed, 13 Feb 2019 12:29:06 -0800
Subject: [OpenWrt-Devel] [PATCH] mdadm: add new init features;
 documentation; bug fixes
In-Reply-To: <1547094698-16285-1-git-send-email-joseph.tingiris@gmail.com>
References: <1547094698-16285-1-git-send-email-joseph.tingiris@gmail.com>
Message-ID: <CAKxU2N_UHNdgo-6OtvBPPfJwbxTUWCiH2OWsmsg5KQLqyaoWsg@mail.gmail.com>

On Wed, Jan 9, 2019 at 8:31 PM Joseph Tingiris
<joseph.tingiris at gmail.com> wrote:
>
> This is a significant revision of /etc/init.d/mdadm.  It adds new
> features, support for new configuration options, safer error
> handling, (configurable) verbose output, and contains multiple bug
> fixes.
>
> Most notably, mdadm was being started with the --config flag and
> that prevented it from using its built in Auto Assembly features.
> Users were required to put a correct uuid in /etc/config/mdadm.
> Configuring arrays is not for the feint of heart.
>
> The previous /etc/config/mdadm options left uncommented, that prevented
> mdadm from starting successfully, were corrected and the default startup
> mode is now to automatically assemble all RAID arrays attached to the
> machine using device scans rather than configuation options and a
> persistent state file.
>
> A new UCI section, config mdadm global, was added with new options that are
> supported by the accompanying /etc/init.d/mdadm. Documentation for all
> new (and previous) options was added as well.  See the
> /etc/config/mdadmin or mdadm.init file itself for more details.
>
> Additionally, a new stateful 'auto' feature was added that functions
> similarly to the stateless Auto Assembly feature.  The benefits of
> stateful auto assembly are to support features that mdadm 4.0 will only
> read from a configuration file, such as setting the MAILFROM value.  The
> new mdadm_conf_auto() function will also greatly aid users in
> troubleshooting.  When verbose is turned on it provides tips, better
> visibility for what's actually happening, and sets the stage for
> moderately advanced users to take more control over their RAIDs.
>
> Stateful UCI only configurations are still supported and will still work.
> All previously existing configurations will work in this mode.  However,
> these users will now have to explicitly turn it on.  Documentation is
> provided in the new mdadm.config file.  I'd expect very few regressions.
> Anyone using the old init had to be an expert.  The mdadm 4.0-5 package
> doesn't function out of the box.  For more detail about these parts,
> see FS2043 here https://bugs.openwrt.org/
>
> A new reload_service() function was added to prevent reloads from
> stopping mdadm.  That caused issues when filesystems were mounted.
> Reloads will now be ignored, though the stage is set for reloads to
> trigger scans for new devices.  Explicit restarts still work as expected.
>
> The start_service() function was enhanced to query new UCI mdadm.global
> options: alert_program, config, email, email_from, monitor_frequency,
> and verbose.  Each is documented in /etc/mdadm/config (config.init) and
> some additional code comments were added.  As well, error handling and
> verbose output was greatly enhanced.  It's not going to do anything
> without users knowing what's going on (if verbose is turned on).
> Backward compatibility was retained.  Strict reliance on a shell global
> ($CONF) was removed and replaced with a single global ($TMP_FILE) that's
> for development convenience.  When/if a config file is not specified in
> the UCI config, it will fall back to using $TMP_FILE as the
> configuration file.
>
> Incremented PKG_RELEASE from 5 to 6
>
> For more details, see: https://github.com/openwrt/openwrt/pull/1713/
Any progress on this? I've been using this for a while. I recently ran
into an issue (segfault) with mdadm that required me to bump the
version.
>
> Signed-off-by: Joseph Tingiris <joseph.tingiris at gmail.com>
> ---
>  package/utils/mdadm/Makefile           |   2 +-
>  package/utils/mdadm/files/mdadm.config | 162 ++++++++++-
>  package/utils/mdadm/files/mdadm.init   | 491 +++++++++++++++++++++++++++++++--
>  3 files changed, 615 insertions(+), 40 deletions(-)
>
> diff --git a/package/utils/mdadm/Makefile b/package/utils/mdadm/Makefile
> index ba74997..3fabc8a 100644
> --- a/package/utils/mdadm/Makefile
> +++ b/package/utils/mdadm/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>
>  PKG_NAME:=mdadm
>  PKG_VERSION:=4.0
> -PKG_RELEASE:=5
> +PKG_RELEASE:=6
>
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
>  PKG_SOURCE_URL:=@KERNEL/linux/utils/raid/mdadm
> diff --git a/package/utils/mdadm/files/mdadm.config b/package/utils/mdadm/files/mdadm.config
> index 50afbc2..88e0bb9 100644
> --- a/package/utils/mdadm/files/mdadm.config
> +++ b/package/utils/mdadm/files/mdadm.config
> @@ -1,18 +1,154 @@
> -config mdadm
> +#
> +# The mdadm 'global' section is for options that apply to all sections.
> +#
> +
> +config mdadm global
> +
> +       #
> +       # option 'alert_program' values may be a path to a valid, executable binary.
> +       #
> +       # The default 'alert_program' is not set.
> +       #
> +       # When mdadm detects an event it will execute this program with 3 arguments, see mdadm(8)
> +       # $1 = will be the event
> +       # $2 = will be the meta device
> +       # $3 = may be a related component (if one exists)
> +       #
> +       # * alert_program runs independently from sendmail.
> +       # * If both options alert_program and email are set, and both work, then an email and a
> +       #   custom alert will be generated.
> +       # * no alert program is included in mdadm 4.0-4.
> +       #
> +       # Lots of possibilities exist, i.e. scripts for netdata, slack, etc.
> +       #
> +       #option alert_program /usr/sbin/mdadm_alerts
> +
> +
> +       #
> +       # option 'config' values may be one of the following.
> +       #
> +       # The default 'config' is none (stateless auto assembly).
> +       #
> +       # auto          - stateful, dynamically generated mdadm.conf via block info,
> +       #                 stored in /var/etc/mdadm.conf
> +       # containers    - stateless, mdadm --assemble --scan --config=containers; see mdadm(8)
> +       # none          - stateless, mdadm --assemble --scan --config=none; aka 'Auto Assembly',
> +       #                 see mdadm(8)
> +       # partition     - stateless, mdadm --assemble --scan --config=partition; see mdadm(8)
> +       # uci           - stateful, dynamically generated mdadm.conf via uci array values (below),
> +       #                 stored in /var/etc/mdadm.conf
> +       # </file>       - stateful, manually generated mdadm.conf file(s),
> +       #                 <file> must be preceded by a / and may be a readable filename
> +       #                 or directory with .conf files
> +       #
> +       # Try uncommenting this and using 'auto' if there are issues.  It provides more comprehensive
> +       # diagnostics via verbose messages & the ability to set an email from address.
> +       #
> +       #option config auto
> +
> +
> +       #
> +       # option 'email' values may be a valid (to) email address, or empty.
> +       #
> +       # The default 'email' to send to is root (monitor email will be sent to the local root user).
> +       #
> +       # * Sending mail will only work if /usr/lib/sendmail or /usr/sbin/sendmail is available. Install postfix.
> +       # * Comment, or unset, the email value causes mail to be disabled.  With no email value, mdadm wont even try.
> +       # * A single word name must be a valid user on the system, or it will bounce back to root.
> +       #   Unless user 'mdadm' exists (it doesn't by default), this will bounce:
> +       #   option email mdadm
> +       # * A full email address does not need quoting and will deliver if tcp port 25 (SMTP) is allowed outbound, i.e.
> +       #   option email joseph.tingiris at gmail.com
> +       # * mdadm only supports one email address (MAILADDR) for all arrays. see mdadm.conf(5)
> +       #
> +       # mail will be to 'root@$HOSTNAME', i.e. root at OpenWrt
> +       #
>         option email root
> -       # list devices /dev/hd*
> -       # list devices /dev/sd*
> -       # list devices partitions
>
> -config array
> -       option uuid 52c5c44a:d2162820:f75d3464:799750f8
> -       option device /dev/md0
> -       # option name raid:0
> -       # option super_minor 0
> -       # list devices /dev/sda1
> -       # list devices /dev/sdb1
> -       # option spares 0
> -       # option spare_group spares
> +
> +       #
> +       # option 'email_from' values may be a valid (from) email address, or empty.
> +       #
> +       # The default 'email_from' is 'OpenWrt RAID Monitoring <mdadm@$HOSTNAME>', i.e. mdadm at OpenWrt
> +       #
> +       # * Sending mail will only work if /usr/lib/sendmail or /usr/sbin/sendmail is available. Install postfix.
> +       # * Comment, or unset, the email_from value causes mdadm to send mail from
> +       #   root@$HOSTNAME, e.g. root at OpenWrt
> +       # * A complete from envelope can be specified within quotes, i.e.
> +       #   option email_from 'mdadm monitoring <this_is_not_spam at example.com>'
> +       # * mdadm only supports setting a from address (MAILFROM) with a stateful config,
> +       #   e.g. 'auto' or 'uci'. see mdadm.conf(5)
> +       #
> +       # mail will be from 'OpenWrt RAID Monitoring <mdadm@$HOSTNAME>', i.e. mdadm at OpenWrt
> +       #
> +       option email_from 'OpenWrt RAID Monitoring <mdadm>'
> +
> +
> +       #
> +       # option 'monitor_frequency' values may be a valid integer, or empty.
> +       #
> +       # The default monitor frequency (delayed poll) is 120 seconds.
> +       #
> +       # * This is the polling interval, frequency, or delay.  It's the value for mdadm --delay.  see mdadm(8)
> +       #
> +       option monitor_frequency 300
> +
> +       #
> +       # option 'verbose' values may be '1', 'on', or 'true', everything else is false.
> +       #
> +       # The default verbosity is false (quiet).
> +       #
> +       # * Standard errors will be sent to console and syslog regardless of this setting.
> +       # * When verbose is false mdadm will run in --quiet mode and generate very little log
> +       #   or standard output.
> +       #
> +       # Turn this on if you're having problems, or want more detail.  With SSH_TTY set output will
> +       # be to that TTY, otherwise it will go to syslog via logger.
> +       #
> +       #option verbose on
> +
> +
> +#
> +# The mdadm 'array' section(s) are for stateful, manual configurations. Experts only.  Use with caution.
> +#
> +#
> +# The use of multiple 'array' sections is supported by /etc/init.d/mdadm.
> +# They must all be named 'array'.
> +#
> +# As of this writing unnamed 'mdadm' sections are still allowed, but deprecated. Do not use.
> +#
> +
> +#config array
> +       #
> +       # example 'array' options may be a valid mix of:
> +       #
> +       # bitmap
> +       # container
> +       # device
> +       # devices
> +       # member
> +       # name
> +       # spare_group
> +       # spares
> +       # super_minor
> +       # uuid
> +       #
>         # option bitmap /bitmap.md
>         # option container 00000000:00000000:00000000:00000000
> +       # option device /dev/md0
> +       # -and/or a devices list-
> +       # list devices /dev/hd* # mdadm allows glob, see glob(7)
> +       # list devices /dev/sd*
> +       # list devices /dev/sda1
> +       # list devices /dev/sdb1
> +       # list devices containers
> +       # list devices partitions
>         # option member 1
> +       # option name raid:0
> +       # option spare_group spares
> +       # option spares 0
> +       # option super_minor 0
> +       # use uuid from block info (preferred), or mdadm --misc --detail /dev/md0
> +       # option uuid 2084de11-70c4-4521-8f95-6113e75f1fe9
> +       #
> +       # These options directly translate to mdadm -- options, see man mdadm(8)
> diff --git a/package/utils/mdadm/files/mdadm.init b/package/utils/mdadm/files/mdadm.init
> index 64a50b3..5453f7d 100644
> --- a/package/utils/mdadm/files/mdadm.init
> +++ b/package/utils/mdadm/files/mdadm.init
> @@ -1,13 +1,21 @@
>  #!/bin/sh /etc/rc.common
>
> -START=13
> -STOP=98
> +# 20190106, joseph.tingiris at gmail.com, significant revision; new features,
> +#                                      safer error handling, code formatting,
> +#                                      & multiple bug fixes
> +
> +START=12
> +STOP=X99 # X99? seems to work; passed service enable/disable tests & boot tests
>
>  USE_PROCD=1
>  PROG=/sbin/mdadm
>  NAME=mdadm
>
> -CONF="/var/etc/mdadm.conf"
> +VERBOSE=0 # off
> +
> +TMP_FILE="/var/etc/mdadm.conf" # /var/etc is on /tmp; used for temporary state, to enable stateful only mdadm features
> +
> +[ ! -x "$PROG" ] && exit 1
>
>  append_list_item() {
>         append "$2" "$1" "$3"
> @@ -30,30 +38,165 @@ append_option() {
>         [ -n "$str" ] && append "$var" $(printf "%s=%s" "${name:-${opt//_/-}}" "$str")
>  }
>
> -mdadm_common() {
> -       local cfg="$1"
> -       local email devices
> +verbose() {
> +       local msg="$1"
> +       local level="$2"
>
> -       if [ -x /usr/sbin/sendmail ]; then
> -               config_get email "$cfg" email
> -               [ -n "$email" ] && printf "MAILADDR %s\n" "$email" >> $CONF
> +       [ -z "$level" ] && level="INFO"
> +
> +       if [ "$VERBOSE" == "1" ]; then
> +               if [ ${#SSH_TTY} -gt 0 ]; then
> +                       printf "$NAME: init %7s - %b\n" "$level" "$msg"
> +               else
> +                       # no SSH_TTY goes to logger
> +                       printf "$NAME: init %7s - %b\n" "$level" "$msg" | logger -t mdadm
> +               fi
>         fi
> +}
>
> -       config_list_foreach "$cfg" devices append_list_item devices " "
> -       [ -n "$devices" ] && printf "DEVICE %s\n" "$devices" >> $CONF
> +mdadm_conf_auto() {
> +       local mdadm_conf="$1"
> +
> +       if [ ! -w "$mdadm_conf" ]; then
> +               if [ -z "$mdadm_conf" ]; then
> +                       verbose "mdadm_conf value is empty" ERROR
> +               else
> +                       verbose "'$mdadm_conf' file not found writable" ERROR
> +               fi
> +               return 1
> +       fi
> +
> +       local block_md block_uuid mdadm_md mdadm_md_rc mdadm_uuid
> +
> +       # Check block info for active linux_raid_members, if necessary then compare with mdadm, & dynamically update $mdadm_conf
> +
> +       block_md=0 # counter
> +       for block_uuid in $(block info 2> /dev/null | grep linux_raid_member | awk '{print $2}' | awk -F\" '{print $(NF-1)}'); do
> +               mdadm_md=""
> +               mdadm_md_rc=0
> +
> +               while [ -z "$mdadm_md" ]; do
> +                       if [ -b "/dev/md$block_md" ]; then
> +                               # handle mdadm restart, service reload, multiple starts without stops, physical unplug, etc.
> +
> +                               verbose "/dev/md$block_md block device already exists" NOTICE
> +
> +                               # active arrays will promptly respond; first check
> +                               mdadm_uuid=$($PROG --detail --test --brief "/dev/md$block_md" 2> /dev/null | grep -E "((.*)(UUID=(.){36})$" | head -1 | awk -F= '{print $NF}')
> +
> +                               if [ -z "$mdadm_uuid" ]; then
> +                                       # When an array is unplugged and then plugged in again (without rebooting) then it becomes an INACTIVE-ARRAY
> +                                       # however the device file persists, e.g. /dev/md0, and should be reused, rather than a new device assigned.
> +                                       if $PROG --detail --test --scan "/dev/md$block_md" 2> /dev/null | grep -E "^(INACTIVE-ARRAY(\ |\t)(.*)/dev/md(|/)$block_md(\ |\t)metadata)" &> /dev/null; then
> +                                               verbose "attempting to revive INACTIVE-ARRAY on /dev/md$block_md" NOTICE
> +                                               $PROG --examine --scan 2> /dev/null | egrep -qE "^(ARRAY(\ |\t)(.*)/dev/md(|/)$block_md(\ |\t))"
> +                                               if [ $? -eq 0 ]; then
> +                                                       # this is relatively safe with the above regex validation
> +                                                       mdadm_md="/dev/md$block_md"
> +                                               fi
> +                                       else
> +                                               # This is an unsafe condition to handle with a shell, mdadm sees an inactive device with a different /dev.
> +                                               # Err to the side of caution;--assemble --scan shoud know what to do ... it will abandon the block device.
> +                                               # If these are happening, suggest stateless & sacrifice some minor functionality, e.g. MAILFROM
> +                                               # May be an mdadm or kernel bug with this hardware setup.
> +                                               verbose "bug? unsafe to revive INACTIVE-ARRAY on /dev/md$block_md" WARNING
> +                                               let block_md=$block_md+1
> +                                               continue
> +                                       fi
> +                               fi
> +
> +                               if [ "${block_uuid//-/}" == "${mdadm_uuid//:/}" ]; then
> +                                       # block info & mdadm concur all's well; the meta device is active; reuse
> +                                       mdadm_md="/dev/md$block_md"
> +                                       verbose "auto conf found active RAID member block_uuid=$block_uuid and will reused device '$mdadm_md'" OK
> +                               else
> +                                       if [ ! -e "/dev/md$block_md" ]; then
> +                                               # this block device was never assembled previously; new
> +                                               mdadm_md="/dev/md$block_md"
> +                                               verbose "auto conf found new RAID member block_uuid=$block_uuid and will assign device '$mdadm_md'" OK
> +                                       else
> +                                               let block_md=$block_md+1
> +                                               continue
> +                                       fi
> +                               fi
> +
> +                       else
> +                               if [ ! -e "/dev/md$block_md" ]; then
> +                                       # best scenario; no device or file (yet), safest
> +                                       mdadm_md="/dev/md$block_md"
> +                                       verbose "auto conf found missing RAID member block_uuid=$block_uuid and will assign device '$mdadm_md'" OK
> +                               else
> +                                       # a file exists, but it's not a block device? It's possible (touch), albeit a corner case; discretely say
> +                                       # we know & pass over it.
> +                                       verbose "/dev/md$block_md file found, not a block device" WARNING
> +                                       let block_md=$block_md+1
> +                                       continue
> +                               fi
> +                       fi
> +
> +                       $PROG --detail --test --brief $mdadm_md &> /dev/null # rc 1=ok, 1=degrade, 2=dead, 4=missing
> +                       mdadm_md_rc=$?
> +
> +                       # todo: annouce degraded arrays in the logs? mdadmin monitor will do it but not on demand, only per frequency.
> +                       #       nice to have for hot plugs ...
> +
> +                       verbose "block_md=$block_md, block_uuid=$block_uuid, mdadm_md=$mdadm_md, mdadm_uuid=$mdadm_uuid, rc=$mdadm_md_rc" INFO
> +
> +                       if [ $mdadm_md_rc -lt 4 ]; then
> +                               $PROG --detail --test --brief $mdadm_md 2> /dev/null >> $mdadm_conf
> +                       else
> +                               # there's a device with no header.  maybe it's to replace a failed device ...
> +                               echo "ARRAY $mdadm_md uuid=$block_uuid" >> $mdadm_conf
> +                       fi
> +
> +               done
> +
> +       done
> +
> +       if [ -n "$mdadm_md" ]; then
> +               return 0
> +       else
> +               return 1
> +       fi
>  }
>
> -mdadm_array() {
> +mdadm_conf_uci() {
>         local cfg="$1"
> -       local uuid device devices name array
> +       local mdadm_conf="$2"
> +
> +       if [ -z "$cfg" ]; then
> +               verbose "cfg is empty" WARNING
> +               return 1
> +       fi
> +
> +       local cfg_name=$(uci_get mdadm.$cfg 2> /dev/null)
> +
> +       if [ -z "$cfg_name" ]; then
> +               verbose "($cfg) mdadm config name is empty" NOTICE
> +       fi
> +
> +       if [ -z "$mdadm_conf" ]; then
> +               verbose "($cfg) skipping mdadm.$cfg_name array; config file is empty" WARNING
> +               return 1
> +       fi
> +
> +       if ! touch "$mdadm_conf" 2> /dev/null; then
> +               verbose "($cfg) skipping mdadm.$cfg_name array; can't touch '$mdadm_conf'" ERROR
> +               return 1
> +       fi
> +
> +       local array device devices name uuid
>
> -       config_get uuid "$cfg" uuid
>         config_get name "$cfg" name
>         config_get device "$cfg" device
> +       config_get uuid "$cfg" uuid
> +
> +       config_list_foreach "$cfg" devices append_list_item devices " "
> +       [ -n "$devices" ] && printf "DEVICE %s\n" "$devices" >> $mdadm_conf
>
>         if [ -z "$device" ] || [ -z "$uuid$name" ]; then
> -               echo "Skipping array without device, uuid or name" >&2
> -               return
> +               verbose "($cfg) skipping mdadm.$cfg_name array; no device, uuid, or name" WARNING
> +               return 1
>         fi
>
>         [ -n "$uuid" ] && append array "uuid=$uuid"
> @@ -67,27 +210,323 @@ mdadm_array() {
>         append_option array "$cfg" member
>         append_option array "$cfg" devices devices ","
>
> -       printf "ARRAY %s %s\n" "$device" "$array" >> $CONF
> +       printf "ARRAY %s %s\n" "$device" "$array" >> $mdadm_conf
> +}
> +
> +reload_service() {
> +       # fix. stopping mdadm every time a reload is requested is bad.
> +       # procd needs this or it'll call restart, which will call stop_service and then start_service.
> +       # running start_service() should be OK, it already rescans for hotplugged devices, add new arrays, etc.
> +       # todo: better test calling start_service() on reload, for now, verbosely ignore & exit 0 ...
> +       verbose "reload_service called, ignoring" NOTICE
> +       exit 0
>  }
>
>  start_service() {
> -       local email
> +       local config config_detail config_file config_level config_mode config_rc config_state config_verbose mdadm_conf
> +
> +       # mdadm.global specific locals
> +       local alert_program email email_from mail_program mdadm_args monitor_frequency
> +
> +       config_verbose=$(uci_get mdadm.global.verbose 2> /dev/null | awk '{print tolower($1)}')
> +       if [ "$config_verbose" == "1" ] || [ "$config_verbose" == "on" ] || [ "$config_verbose" == "true" ]; then
> +               VERBOSE=1 # turn verbose on globally
> +               config_verbose=1
> +               mdadm_args="--verbose"
> +       else
> +               unset -v config_verbose
> +               mdadm_args="--quiet"
> +       fi
> +
> +       verbose "start_service $@" INFO
> +
> +       config_rc=0
> +       config_detail="start"
> +       config_level="INFO"
> +       config_mode="service"
> +
> +       config=$(uci_get mdadm.global.config 2> /dev/null)
> +       if [ -z "$config" ]; then
> +               # per PR1713 discussion; this works very well for the majority of use cases; let mdadm do the heavy lifting.
> +               # none is (Auto Assemble; or no --config); see mdadm(8), default
> +               config='none'
> +               config_detail="mdadm.global.config value is empty"
> +               config_state='stateless'
> +               config_mode="default"
> +               config_level='OK'
> +       else
> +               # experts only
>
> -       mkdir -p "${CONF%/*}"
> -       printf "# Autogenerated from /etc/config/mdadm, do not edit!\n" > $CONF
> +               config_mode="manual"
>
> -       config_load mdadm
> -       config_foreach mdadm_common mdadm
> -       config_foreach mdadm_array array
> +               # check file values first, to preserve case of file name values
> +               if [ "${config:0:1}" == "/" ]; then
> +                       config_state='stateful' # all types of file configs are stateful
>
> -       $PROG --assemble --scan --config="$CONF"
> +                       if [ -d "$config" ] && [ -r "$config" ]; then
> +                               local config_file_count=0
> +                               for config_file in ${config}/*.conf; do
> +                                       if [ -r "$config_file" ]; then
> +                                               let config_file_count=$config_file_count+1
> +                                       fi
> +                               done
> +                               if [ $config_file_count -eq 0 ]; then
> +                                       config_level="WARNING"
> +                               else
> +                                       config_level="OK"
> +                               fi
> +                               config_detail="directory found with $config_file_count readable .conf files"
> +                       else
> +                               if [ -w "$config" ]; then
> +                                       if [ -s "$config" ]; then
> +                                               # regardless, this will rely on mdadm for final validation; for informational purposes ...
> +                                               grep -E '^((DEVICE){1}(\ |\t)(.*)(/dev/|containers|partitions))' "$config" &> /dev/null # pattern per mdadm(8)
> +                                               if [ $? -eq 0 ]; then
> +                                                       config_detail="file found, readable with a ^DEVICE"
> +                                                       config_level="OK"
> +                                               else
> +                                                       config_detail="file found, readable without a ^DEVICE"
> +                                                       config_level="WARNING"
> +                                               fi
> +                                       else
> +                                               config_detail="file found, writable and empty"
> +                                               config_level="OK"
> +                                       fi
> +                               else
> +                                       config_detail="file not found, unwritable"
> +                                       config_level="FATAL"
> +                                       config_rc=1
> +                               fi
> +                       fi
> +               else
> +                       config_mode="dynamic"
>
> +                       # allow static values in mixed case; convert to lower
> +                       config="$(awk -v config="$config" 'BEGIN{print tolower(config)}')"
> +                       if [ "$config" == "containers" ] || [ "$config" == "none" ] || [ "$config" == "partition" ]; then
> +                               # pass through to mdadm --config=
> +                               config_detail="dynamic; uci static key value"
> +                               config_level="OK"
> +                               config_state='stateless'
> +                       else
> +                               if [ "$config" == "auto" ] || [ "$config" == "uci" ]; then
> +                                       config_detail="dynamic; $config config"
> +                                       config_level="OK"
> +                                       config_state='stateful'
> +                                       mdadm_conf="$TMP_FILE"
> +                               else
> +                                       config_detail="invalid; unsupported uci config key value"
> +                                       config_level="FATAL"
> +                                       config_state='stateful'
> +                                       config_rc=1
> +                               fi
> +                       fi
> +               fi
> +       fi
> +
> +       # final safety & functional checks
> +
> +       # check for fatality
> +       if [ -z "$config" ]; then
> +               config="${config}?"
> +               config_detail="$config_detail (sorry, something went wrong; check the config settings)"
> +               config_level="FATAL"
> +               config_mode="${config_mode}?"
> +               config_state="${config_state}?"
> +               config_rc=1
> +       fi
> +
> +       # Prefer mdadm.global.email; only one is allowed and can be an --email argument per mdadm.conf(5)
> +       email=$(uci_get mdadm.global.email 2> /dev/null)
> +
> +       # mdadm (or postfix?) bug; workaround.  mdadm 4.0 for 18.06.1 has a compiled in default of '/usr/lib/sendmail -t'.
> +       # There's no configurable way to change it and mdadm must be recompiled differently for Openwrt, or posfix should
> +       # add the link. In 18.06.1, postfix 3.3.0-1 installs sendmail in /usr/sbin; mdadm complains & no mail is delivered.
> +       # Other distro's postfix pkg typically installs this link ... or one in /etc/alternatives.
> +       # Since mdadm needs it, I'm adding it here to be sure mdadm can send email if there's a /usr/sbin/sendmail.
> +
> +       # There's really no point in making mdadm's compiled in sendmail configurable via uci.
> +       mail_program="/usr/lib/sendmail"
> +       if [ -x /usr/sbin/sendmail ] && [ ! -e "$mail_program" ]; then
> +               # a sym link will suffice
> +               ln -s /usr/sbin/sendmail "$mail_program"
> +               if [ $? -ne 0 ]; then
> +                       verbose "ln -s /usr/bin/sendmail /usr/lib/sendmail failed" WARNING
> +               fi
> +       fi
> +
> +       if [ ! -x "$mail_program" ]; then
> +               verbose "disabling email; mail program '/usr/lib/sendmail' not found executable (install postfix)" WARNING
> +               email=""
> +       fi
> +
> +       if [ "$config_state" == "stateful" ] && [ -n "$mdadm_conf" ]; then
> +               if mkdir -p "${mdadm_conf%/*}" &> /dev/null; then
> +                       printf "# Autogenerated from /etc/init.d/mdadm, do not edit!\n" > $mdadm_conf
> +
> +                       # Use mdadm.global.email_from only if there's a valid mta; only one is allowed per mdadm.conf(5)
> +                       # todo: see what other mtas Openwrt has in their opkg repos & maybe support others
> +                       if [ -x "$mail_program" ]; then
> +                               email_from=$(uci_get mdadm.global.email_from 2> /dev/null)
> +                       fi
> +
> +                       if [ "$config" == "auto" ]; then
> +                               # stateful mdadm.conf auto configuration
> +                               if ! mdadm_conf_auto "$mdadm_conf"; then
> +                                       #there's quite a bit of logic & error handling in mdadm_conf_auto; if it doesn't return 0 then it's a fatality
> +                                       config_detail="$config_detail (couldn't find any meta devices; check connections, or try stateless autoconfig)"
> +                                       config_level="FATAL"
> +                                       config_rc=1
> +                               fi
> +                       else
> +                               # stateful mdadm.conf uci configuration
> +
> +                               # load uci config from /etc/config/mdadm
> +                               config_load mdadm
> +
> +                               # This is how mdadm uci mdadm config sections should be named, like fstab does with 'mount'.
> +                               # The included uci /etc/config/mdadm provides more documentation & direction.
> +                               config_foreach mdadm_conf_uci array "$mdadm_conf"
> +
> +                               # The unlabled mdadm. at mdadm[0] section should be (is now) deprecated.
> +                               # It's more difficult to document how to use, redundant, and over complicated this init configuration.
> +
> +                               # Confused; originally config_foreach?
> +                               # It's possible to specify multiple mdadm sections with array options in all sections.
> +                               # Thus multiple option emails which could result in multiple MAILADDR being appended to mdadm.conf.
> +                               # That confuses mdadm.
> +
> +                               # The following code is here to prevent regressions.
> +
> +                               config_foreach mdadm_conf_uci mdadm "$mdadm_conf"
> +
> +                               # For backward compatibility; this will allow an mdadm. at mdadm[0] section's option email.
> +                               # (only if mdadm.global.email is not set; again, prefer mdadm.global.email)
> +                               #
> +                               # bug fixed. The first legacy mdadm section option email will be used.
> +                               # a better fix would be to *only* support array sections.
> +                               #
> +                               [ -z "$email" ] && [ -x "$mail_program" ] && email=$(uci_get mdadm. at mdadm[0].email 2> /dev/null)
> +                               # email_from is a new feature; was not previously handled; no need to and please don't backport
> +
> +                       fi
> +
> +                       # This is nice feature to have to get mdadm mails through spam filters, etc.
> +                       # Too bad mdadm (4.0) doesn't have an argument for it.
> +                       # Maybe mdadm 4.1 will ... todo: revisit when making mdadm 4.1 & it's in Openwrt mainline.
> +                       # This tests successfully with the postfix workaround above & mdadm 4.0.
> +                       if [ -x "$mail_program" ]; then
> +                               printf "MAILFROM %s\n" "$email_from" >> $mdadm_conf # only supported via stateful configs; see mdadm.conf(5)
> +                       fi
> +
> +                       if [ -n "$config_verbose" ] && [ -r "$mdadm_conf" ]; then
> +                               verbose "mdadm_conf = $mdadm_conf (config_verbose=$config_verbose)" INFO
> +                               verbose "---cut $mdadm_conf cut---" INFO
> +                               while read line; do
> +                                       verbose "$line" INFO
> +                               done < "$mdadm_conf"
> +                               unset -v line
> +                               verbose "---cut $mdadm_conf cut---" INFO
> +                       fi
> +
> +               else
> +                       config_detail="$config_detail (mkdir failed; check permissions)"
> +                       config_level="FATAL"
> +                       config_rc=1
> +               fi
> +       fi
> +
> +       if [ $config_rc -ne 0 ]; then
> +               # FATAL
> +               verbose "$config_state,$config_mode config='$config', $config_detail" "$config_level" INFO
> +               [ -n "$mdadm_conf" ] && [ -w "$mdadm_conf" ] && rm -f "$mdadm_conf"
> +               exit $config_rc
> +       fi
> +
> +       # Good to go, no more fatal exits, finish getting global & setting local values ... they're all optional.
> +
> +       mdadm_args="$mdadm_args --scan"
> +
> +       if [ -n "$mdadm_conf" ]; then
> +               # mdadm.global.config </file>
> +               mdadm_args="$mdadm_args --config=$mdadm_conf"
> +       else
> +               # mdadm.global.config all (containers, partitions, etc), except none
> +               [ -n "$config" ] && [ "$config" != 'none' ] && mdadm_args="$mdadm_args --config=$config"
> +       fi
> +
> +       local assemble_count assemble_rc
> +
> +       assemble_count=$($PROG --detail --brief --scan 2>/dev/null | wc -l)
> +       verbose "$assemble_count arrays are currently assembled" INFO
> +
> +       # setup assembly mode
> +
> +       verbose "(assemble) '$PROG --assemble $mdadm_args'" INFO
> +       $PROG --assemble $mdadm_args &> /dev/null
> +       assemble_rc=$?
> +
> +       if [ $assemble_rc -eq 0 ]; then
> +               verbose "all arrays assembled successfully" OK
> +               if [ -n "$config_verbose" ]; then
> +                       >/tmp/mdadm.detail
> +                       local assemble_dev assemble_devs=$($PROG --detail --brief --scan | awk '{print $2}')
> +                       for assemble_dev in $assemble_devs; do
> +                               printf "\n" >> /tmp/mdadm.detail
> +                               $PROG --verbose --detail $assemble_dev >> /tmp/mdadm.detail
> +                               printf "\n" >> /tmp/mdadm.detail
> +                       done
> +                       unset -v assemble_dev
> +                       while read line; do
> +                               verbose "$line" INFO
> +                       done < "/tmp/mdadm.detail"
> +                       unset -v line
> +               fi
> +       else
> +               if [ $assemble_count -eq 0 ]; then
> +                       verbose "no arrays assembled successfully" ERROR
> +               else
> +                       verbose "no new arrays need assembly" NOTICE
> +               fi
> +       fi
> +
> +       # setup monitor mode
> +
> +       alert_program=$(uci_get mdadm.global.alert_program 2> /dev/null)
> +       if [ -n "$alert_program" ]; then
> +               if [ -x "$alert_program" ]; then
> +                       mdadm_args="$mdadm_args --alert=$alert_program"
> +               else
> +                       verbose "disabling alerts; alert_progam '$alert_program' not found executable" WARNING
> +               fi
> +       fi
> +
> +       [ -n "$email" ] && mdadm_args="$mdadm_args --mail=$email"
> +
> +       monitor_frequency=$(uci_get mdadm.global.monitor_frequency 2> /dev/null | sed -e 's/[^0-9]*//g')
> +       if [ -n "$monitor_frequency" ]; then
> +               mdadm_args="$mdadm_args --delay=$monitor_frequency"
> +               verbose "setting monitor frequency to '$monitor_frequency' seconds"
> +       fi
> +
> +       verbose "(monitor) '$PROG --monitor --syslog $mdadm_args'" INFO
> +
> +       # /etc/rc.common doesn't like valid sh constructs like while read line; do echo $line; done <<< "$(echo hello; echo world)" # 8|
> +       # Taking the time machine back to sh is rough enough as it is ... I need to better understand its purpose. I spent too much time
> +       # in /lib/functions.  It's all circa 2006-2013.  Yikes.  Where's the man pages?  Or even code comments?  It would've been way
> +       # easier just to do *everything* the good ol' sysvinit fashioned way, or use systemd.  Just a gripe, I really do like OpenWrt.
>         procd_open_instance
> -       procd_set_param command "$PROG" --monitor --syslog --scan --config="$CONF"
> +       procd_set_param command "$PROG" --monitor --syslog $mdadm_args
>         procd_close_instance
> +
> +       verbose "$config_state,$config_mode config=$config, $config_detail complete" "$config_level"
>  }
>
>  stop_service() {
>         $PROG --stop --scan
> +       if [ $? -eq 0 ]; then
> +               verbose "'$PROG --stop --scan' stop_service succeeded" OK
> +       else
> +               verbose "'$PROG --stop --scan' stop_service failed" ERROR
> +       fi
>  }
> -
> --
> 1.8.3.1
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Wed Feb 13 15:36:05 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Wed, 13 Feb 2019 12:36:05 -0800
Subject: [OpenWrt-Devel] Cleanup in 4.19 generic kernel config?
In-Reply-To: <4e7ab7e329fc67484ac362c00b323c9e@pyret.net>
References: <90eb2aac9caad5eb4a66fdec7d0aef35@pyret.net>
 <CAKxU2N9Eiwr1gXfJ1K5H=_4V0akmcASYCPxgTN_KWHFf5CO22w@mail.gmail.com>
 <4e7ab7e329fc67484ac362c00b323c9e@pyret.net>
Message-ID: <CAKxU2N-Wgkh6yWzP8_aVebYarUA+fmejBBnuK8t=S4Wa8Moyaw@mail.gmail.com>

On Wed, Feb 13, 2019 at 4:01 AM Daniel Engberg
<daniel.engberg.lists at pyret.net> wrote:
>
> On 2019-02-13 00:08, Rosen Penev wrote:
> > On Sat, Feb 9, 2019 at 12:16 AM Daniel Engberg
> > <daniel.engberg.lists at pyret.net> wrote:
> >>
> >> Hi,
> >>
> >> After my attempt getting Linux 4.19 working for the Octeon target
> >> I started to look at the generic configuration for 4.19 and it
> >> seems that there are quite a bit of target specific options listed
> >> and potentially generating larger kernels than necessary.
> >> Given that some options are incorrect for certain targets I assume
> >> that they get overridden and/or ignored. Unless I misunderstand
> >> how the Linux kernel configuration works =y is equivalent to always
> >> compiled into kernel?
> >>
> >> I'm taking about this file by the way:
> >> https://github.com/openwrt/openwrt/blob/master/target/linux/generic/config-4.19
> >>
> >> Should be set by target? Shouldn't coexist with CONFIG_64BIT as
> >> far as I can tell.
> >> CONFIG_32BIT=y
> >>
> >> ARM specific, should be set by target?
> >> CONFIG_ARM_CPU_TOPOLOGY=y
> >> CONFIG_ARM_DMA_MEM_BUFFERABLE=y
> >> CONFIG_ARM_GIC_MAX_NR=1
> >>
> >> Target specific, no need to have it enabled by default and/or
> >> possibly at all?
> >> CONFIG_ATA_BMDMA=y
> >> CONFIG_ATA_SFF=y
> >>
> >> Seems to be defined by default?
> >> CONFIG_BLK_DEV_LOOP_MIN_COUNT=8
> >> https://github.com/torvalds/linux/blob/master/drivers/block/Kconfig#L217
> >>
> >> Should be set by target?
> >> CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3
> >>
> >> Debug option - Adds unnecessary overhead?
> >> CONFIG_BRANCH_PROFILE_NONE=y
> >> https://cateee.net/lkddb/web-lkddb/BRANCH_PROFILE_NONE.html
> >>
> >> Should be set by target (ARM)?
> >> CONFIG_CACHE_L2X0_PMU=y
> >>
> >> Should be set by target, why is it enabled in 2019?
> >> CONFIG_CARDBUS=y
> >>
> >> Should be set by target (seems x86/64x specific)?
> >> CONFIG_DOUBLEFAULT=y
> >>
> >> Gets defined automatically based on target/platform?
> >> CONFIG_HZ=100
> >> CONFIG_HZ_100=y
> >>
> >> Already default?
> >> CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
> >> https://cateee.net/lkddb/web-lkddb/IIO_CONSUMERS_PER_TRIGGER.html
> >>
> >> Why?
> >> CONFIG_ISDN=y
> >> CONFIG_JOLIET=y
> >>
> >> Should be set by target (ARM)?
> >> CONFIG_KERNEL_MODE_NEON=y
> >>
> >> Set Page_Size by target?
> >> CONFIG_PAGE_SIZE_4KB=y
> >> CONFIG_PPC_4K_PAGES=y
> >>
> >> Already default?
> >> CONFIG_PWRSEQ_EMMC=y
> >> https://cateee.net/lkddb/web-lkddb/PWRSEQ_EMMC.html
> >>
> >> Default 21 isn't enough?
> >> CONFIG_RCU_CPU_STALL_TIMEOUT=60
> >>
> >> Needed for?
> >> CONFIG_RXKAD=y
> >>
> >> Obsolete?
> >> CONFIG_SLABINFO=y
> >>
> >> Shouldn't be default and/or platform specific?
> >> CONFIG_SND_X86=y
> >>
> >> Needed for?
> >> CONFIG_USB_ARMLINUX=y
> >> CONFIG_USB_BELKIN=y
> >>
> >> Platform specific?
> >> CONFIG_USB_OHCI_LITTLE_ENDIAN=y
> >>
> >> Platform specific?
> >> CONFIG_X86_SYSFB=y
> >>
> >> Best regads,
> >> Daniel
> > I've been running this with ramips for a few days. No issues to report.
> >>
> >> _______________________________________________
> >> openwrt-devel mailing list
> >> openwrt-devel at lists.openwrt.org
> >> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>
> Hi,
>
> Thanks for giving it a try, hopefully someone we can make generic a
> little bit cleaner in the end. Since you tried it on ramips and going
> by this
> https://github.com/neheb/source/commit/500f88b54beb9399d1e4927fcd2d0fc59154dfe1
> I'm going to assume that you tried this on 4.14? :-)
Yes
>
> Best regards,
> Daniel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Wed Feb 13 17:15:41 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Wed, 13 Feb 2019 23:15:41 +0100
Subject: [OpenWrt-Devel] [PATCH] build: Activate ASLR PIE by default
Message-ID: <20190213221541.10882-1-hauke@hauke-m.de>

This will build all executable as Position Independent Executables (PIE)
by default. PIE executable can make full use of Address Space Layout
Randomization (ASLR) because all sections can be placed at random
offsets of the executed program. This makes it harder to exploit bugs
in our binaries.

This will increase the size of executable, libraries are already build
position independent and their size will not change.

This increases the size of the resulting images by about 3% on MIPS BE.
I tested this with the default configuration for the lantiq xrx200
target.

The size of the initramfs binaries increased by 2.88%:
Without PIE:
5.303.716 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
With PIE:
5.456.339 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin

With PIE activated the executable are getting bigger, here are some
examples from the lantiq mips_24kc target:

Without PIE:
112.309 /bin/opkg
299.061 /bin/busybox
456.549 /usr/sbin/wpad

With PIE:
142.496 /bin/opkg       (26.87% increase)
388.404 /bin/busybox    (29.87% increase)
580.128 /usr/sbin/wpad  (27.06% increase)

With PIE activated the sections of the binaries are loaded to
different offsets for each program instance like shown here:

root at OpenWrt:/# cat /proc/self/maps
555c4000-55622000 r-xp 00000000 00:02 1030       /bin/busybox
55631000-55632000 r-xp 0005d000 00:02 1030       /bin/busybox
55632000-55633000 rwxp 0005e000 00:02 1030       /bin/busybox
55633000-55634000 rwxp 00000000 00:00 0
77ee2000-77f04000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
77f04000-77f05000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
77f05000-77f06000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
77f06000-77f9a000 r-xp 00000000 00:02 329        /lib/libc.so
77fa9000-77fab000 rwxp 00093000 00:02 329        /lib/libc.so
77fab000-77fad000 rwxp 00000000 00:00 0
7fb26000-7fb47000 rw-p 00000000 00:00 0          [stack]
7fefb000-7fefc000 r-xp 00000000 00:00 0
7ff0a000-7ff0b000 r--p 00000000 00:00 0          [vvar]
7ff0b000-7ff0c000 r-xp 00000000 00:00 0          [vdso]
root at OpenWrt:/# cat /proc/self/maps
5561d000-5567b000 r-xp 00000000 00:02 1030       /bin/busybox
5568a000-5568b000 r-xp 0005d000 00:02 1030       /bin/busybox
5568b000-5568c000 rwxp 0005e000 00:02 1030       /bin/busybox
5568c000-5568d000 rwxp 00000000 00:00 0
77e8e000-77eb0000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
77eb0000-77eb1000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
77eb1000-77eb2000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
77eb2000-77f46000 r-xp 00000000 00:02 329        /lib/libc.so
77f55000-77f57000 rwxp 00093000 00:02 329        /lib/libc.so
77f57000-77f59000 rwxp 00000000 00:00 0
7fd1c000-7fd3d000 rw-p 00000000 00:00 0          [stack]
7fefb000-7fefc000 r-xp 00000000 00:00 0
7ff60000-7ff61000 r--p 00000000 00:00 0          [vvar]
7ff61000-7ff62000 r-xp 00000000 00:00 0          [vdso]
root at OpenWrt:/#

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---

I would like to get some comments if we should activate PIE by default.
The advantage is that it will be harder to exploit OpenWrt, but on the 
other hand the binaries are getting bigger. We could also restrict this 
to some CPU types, but as targets share the binaries it is not really 
possible to do this based on the target.

I am not sure if this should go into the next release or wait for later.

This could also break some packages, as it is possible to activate PIE 
by default for some time many bugs are already fixed, but probably not 
all of them.

 config/Config-build.in | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/config/Config-build.in b/config/Config-build.in
index 6d749476db..2d8a9db74c 100644
--- a/config/Config-build.in
+++ b/config/Config-build.in
@@ -196,7 +196,7 @@ menu "Global build settings"
 		bool
 		prompt "User space ASLR PIE compilation"
 		select BUSYBOX_DEFAULT_PIE
-		default n
+		default y
 		help
 		  Add -fPIC to CFLAGS and -specs=hardened-build-ld to LDFLAGS.
 		  This enables package build as Position Independent Executables (PIE)
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From nbd at nbd.name  Wed Feb 13 17:51:31 2019
From: nbd at nbd.name (Felix Fietkau)
Date: Wed, 13 Feb 2019 23:51:31 +0100
Subject: [OpenWrt-Devel] [PATCH] build: Activate ASLR PIE by default
In-Reply-To: <20190213221541.10882-1-hauke@hauke-m.de>
References: <20190213221541.10882-1-hauke@hauke-m.de>
Message-ID: <a8a1fa14-6afb-032b-4e14-86b9d8229078@nbd.name>

On 2019-02-13 23:15, Hauke Mehrtens wrote:
> This will build all executable as Position Independent Executables (PIE)
> by default. PIE executable can make full use of Address Space Layout
> Randomization (ASLR) because all sections can be placed at random
> offsets of the executed program. This makes it harder to exploit bugs
> in our binaries.
> 
> This will increase the size of executable, libraries are already build
> position independent and their size will not change.
> 
> This increases the size of the resulting images by about 3% on MIPS BE.
> I tested this with the default configuration for the lantiq xrx200
> target.
> 
> The size of the initramfs binaries increased by 2.88%:
> Without PIE:
> 5.303.716 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
> With PIE:
> 5.456.339 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
> 
> With PIE activated the executable are getting bigger, here are some
> examples from the lantiq mips_24kc target:
> 
> Without PIE:
> 112.309 /bin/opkg
> 299.061 /bin/busybox
> 456.549 /usr/sbin/wpad
> 
> With PIE:
> 142.496 /bin/opkg       (26.87% increase)
> 388.404 /bin/busybox    (29.87% increase)
> 580.128 /usr/sbin/wpad  (27.06% increase)
> 
> With PIE activated the sections of the binaries are loaded to
> different offsets for each program instance like shown here:
> 
> root at OpenWrt:/# cat /proc/self/maps
> 555c4000-55622000 r-xp 00000000 00:02 1030       /bin/busybox
> 55631000-55632000 r-xp 0005d000 00:02 1030       /bin/busybox
> 55632000-55633000 rwxp 0005e000 00:02 1030       /bin/busybox
> 55633000-55634000 rwxp 00000000 00:00 0
> 77ee2000-77f04000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
> 77f04000-77f05000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
> 77f05000-77f06000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
> 77f06000-77f9a000 r-xp 00000000 00:02 329        /lib/libc.so
> 77fa9000-77fab000 rwxp 00093000 00:02 329        /lib/libc.so
> 77fab000-77fad000 rwxp 00000000 00:00 0
> 7fb26000-7fb47000 rw-p 00000000 00:00 0          [stack]
> 7fefb000-7fefc000 r-xp 00000000 00:00 0
> 7ff0a000-7ff0b000 r--p 00000000 00:00 0          [vvar]
> 7ff0b000-7ff0c000 r-xp 00000000 00:00 0          [vdso]
> root at OpenWrt:/# cat /proc/self/maps
> 5561d000-5567b000 r-xp 00000000 00:02 1030       /bin/busybox
> 5568a000-5568b000 r-xp 0005d000 00:02 1030       /bin/busybox
> 5568b000-5568c000 rwxp 0005e000 00:02 1030       /bin/busybox
> 5568c000-5568d000 rwxp 00000000 00:00 0
> 77e8e000-77eb0000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
> 77eb0000-77eb1000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
> 77eb1000-77eb2000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
> 77eb2000-77f46000 r-xp 00000000 00:02 329        /lib/libc.so
> 77f55000-77f57000 rwxp 00093000 00:02 329        /lib/libc.so
> 77f57000-77f59000 rwxp 00000000 00:00 0
> 7fd1c000-7fd3d000 rw-p 00000000 00:00 0          [stack]
> 7fefb000-7fefc000 r-xp 00000000 00:00 0
> 7ff60000-7ff61000 r--p 00000000 00:00 0          [vvar]
> 7ff61000-7ff62000 r-xp 00000000 00:00 0          [vdso]
> root at OpenWrt:/#
> 
> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> ---
> 
> I would like to get some comments if we should activate PIE by default.
> The advantage is that it will be harder to exploit OpenWrt, but on the 
> other hand the binaries are getting bigger. We could also restrict this 
> to some CPU types, but as targets share the binaries it is not really 
> possible to do this based on the target.
> 
> I am not sure if this should go into the next release or wait for later.
> 
> This could also break some packages, as it is possible to activate PIE 
> by default for some time many bugs are already fixed, but probably not 
> all of them.
I think this is a lot of extra bloat. Maybe we can add a restricted PIE
mode where packages can opt-in individually?

- Felix

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From petrcvekcz at gmail.com  Wed Feb 13 18:27:25 2019
From: petrcvekcz at gmail.com (Petr Cvek)
Date: Thu, 14 Feb 2019 00:27:25 +0100
Subject: [OpenWrt-Devel] [RFC] [PATCH v3] lantiq: net: add fragmented skb
 support to xrx200 ethernet
Message-ID: <3776b6a6-6104-213f-91ad-34b34c651c96@gmail.com>

setup:
	iperf3 -s	#on lantiq
	./run.sh testX	#on host

	everything_interrupts.log	#cat /proc/interrupts (you may change the SMP
affinity)
	running on experimental 1000Hz build, not much change in speed


As illustrated in vanilla.log, the default xrx200 ethernet driver seems
to be really slow in lantiq->host traffic (xDSL download). That seems to
be (at least) partially caused by making unnecessary linear skbs in the
network stack. These patches (and the ICU SMP ones) can increase the
lantiq->host UDP speed to an almost twice as big value and effectively
increase the speed of TCP in the both ways too.

The changes from "[RFC] [PATCH v2] lantiq: net: ethernet driver with
fragments" are:

I've had to increase the DMA descriptor count as there is now more than
one descriptors for one packet. With the original 64 there would be
frequent queue stops, which decreased the speed. With 128 now they are
not so much frequent (with 192 even less, almost nonexistant).

The main problem is in the TX housekeeping task, where the budgeted
cycle of descriptor and skb freeing cannot keep up with xmit function.
With a simple computation (I hope it is correct :-D ):

1Gbps / (1500*8 bits) = ~83k, the number of packets which needs to be
freed (it will be more descriptors)

one run cannot free more than budgeted packets (32), so the housekeeping
task would had to be called:

83k / 32 => one every 400 microseconds

That's probably nearly impossible. With 1000Hz system the tx
housekeeping seemed to be called once about every 3 miliseconds.

If the housekeeping gets called after longer time the ring buffer will
get actually stuck (it is transmitted, but not yet cleaned) and the
queue is stopped until next tx housekeeping is called.

I've hacked the housekeeping to ignore budget, so whole possible (=
completed and not owned by DMA) ring buffer is freed.

I've added dma_unmap_single for tx housekeeping and frags mapping fail
path. Interestingly the nonpresence in the original driver was OK for
the kernel.


Additionally I've changed TX DMA interrupts from an end-of-descriptor to
end-of-packet events.

The DMA patch tries to change some DMA settings, namely DMA_POLL. I
don't have a lantiq technical datasheet (it would be appreciated though
:-D), but I assume it is how often does the controller check RAM for
DMA_OWN flag. On 0x10 (instead of 0x4) it seems to slighty increase the
speed (it is probably using less RAM bus bandwidth). BTW it seems CPOLL
register is not dependent on channel settings, so it doesn't have to be
on for loop (as in patch). The burst size is set to 8 words (which match
32B alignment in the ethernet driver).

P.S. the xrx200 network speed on localhost is only up to 500Mbit/s.

Petr
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0904-backport-vanilla-eth-driver.patch
Type: text/x-patch
Size: 32916 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190214/017dc810/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0906-increase-dma-burst-size.patch
Type: text/x-patch
Size: 2875 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190214/017dc810/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: everything_interrupts.log
Type: text/x-log
Size: 1134 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190214/017dc810/attachment-0002.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: final_single_queue_everything.log
Type: text/x-log
Size: 27204 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190214/017dc810/attachment-0003.bin>
-------------- next part --------------
+ : ':::::::[' configuration vanilla ']:::::::' :
+ iperf3 -c 10.0.0.80
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51814 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  21.2 MBytes   178 Mbits/sec   27   72.1 KBytes       
[  4]   1.00-2.00   sec  20.6 MBytes   173 Mbits/sec   29   70.7 KBytes       
[  4]   2.00-3.00   sec  20.8 MBytes   174 Mbits/sec   35   60.8 KBytes       
[  4]   3.00-4.00   sec  20.8 MBytes   174 Mbits/sec   29   73.5 KBytes       
[  4]   4.00-5.00   sec  20.8 MBytes   174 Mbits/sec   32   70.7 KBytes       
[  4]   5.00-6.00   sec  20.7 MBytes   174 Mbits/sec   35   69.3 KBytes       
[  4]   6.00-7.00   sec  20.8 MBytes   174 Mbits/sec   36   60.8 KBytes       
[  4]   7.00-8.00   sec  20.8 MBytes   175 Mbits/sec   29   59.4 KBytes       
[  4]   8.00-9.00   sec  20.8 MBytes   175 Mbits/sec   41   46.7 KBytes       
[  4]   9.00-10.00  sec  20.8 MBytes   175 Mbits/sec   28   50.9 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec  321             sender
[  4]   0.00-10.00  sec   208 MBytes   174 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 51862 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  9.63 MBytes  80.7 Mbits/sec                  
[  4]   1.00-2.00   sec  9.65 MBytes  81.0 Mbits/sec                  
[  4]   2.00-3.00   sec  9.52 MBytes  79.9 Mbits/sec                  
[  4]   3.00-4.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   4.00-5.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   5.00-6.00   sec  9.66 MBytes  81.0 Mbits/sec                  
[  4]   6.00-7.00   sec  9.68 MBytes  81.2 Mbits/sec                  
[  4]   7.00-8.00   sec  9.70 MBytes  81.4 Mbits/sec                  
[  4]   8.00-9.00   sec  9.69 MBytes  81.3 Mbits/sec                  
[  4]   9.00-10.00  sec  9.79 MBytes  82.1 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  97.0 MBytes  81.4 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 51957 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  16.4 MBytes   138 Mbits/sec  2101  
[  4]   1.00-2.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   2.00-3.00   sec  17.9 MBytes   150 Mbits/sec  2285  
[  4]   3.00-4.00   sec  17.9 MBytes   150 Mbits/sec  2292  
[  4]   4.00-5.00   sec  17.9 MBytes   150 Mbits/sec  2287  
[  4]   5.00-6.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   6.00-7.00   sec  17.9 MBytes   150 Mbits/sec  2288  
[  4]   7.00-8.00   sec  17.9 MBytes   150 Mbits/sec  2291  
[  4]   8.00-9.00   sec  17.8 MBytes   150 Mbits/sec  2282  
[  4]   9.00-10.00  sec  17.9 MBytes   150 Mbits/sec  2292  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   177 MBytes   149 Mbits/sec  136434.385 ms  1349/1417 (95%)  
[  4] Sent 1417 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 150M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 46317 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.7 MBytes   124 Mbits/sec  0.077 ms  0/1885 (0%)  
[  4]   1.00-2.00   sec  15.2 MBytes   127 Mbits/sec  0.072 ms  0/1942 (0%)  
[  4]   2.00-3.00   sec  15.0 MBytes   126 Mbits/sec  0.074 ms  0/1924 (0%)  
[  4]   3.00-4.00   sec  14.3 MBytes   120 Mbits/sec  0.080 ms  0/1825 (0%)  
[  4]   4.00-5.00   sec  14.4 MBytes   120 Mbits/sec  0.079 ms  0/1837 (0%)  
[  4]   5.00-6.00   sec  14.8 MBytes   124 Mbits/sec  0.065 ms  0/1888 (0%)  
[  4]   6.00-7.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1956 (0%)  
[  4]   7.00-8.00   sec  15.2 MBytes   128 Mbits/sec  0.095 ms  0/1948 (0%)  
[  4]   8.00-9.00   sec  15.1 MBytes   127 Mbits/sec  0.092 ms  0/1932 (0%)  
[  4]   9.00-10.00  sec  15.1 MBytes   127 Mbits/sec  0.095 ms  0/1938 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   149 MBytes   125 Mbits/sec  0.085 ms  0/19082 (0%)  
[  4] Sent 19082 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 48172 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  58.5 MBytes   491 Mbits/sec  7494  
[  4]   1.00-2.00   sec  60.6 MBytes   508 Mbits/sec  7756  
[  4]   2.00-3.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   3.00-4.00   sec  60.2 MBytes   505 Mbits/sec  7710  
[  4]   4.00-5.00   sec  59.0 MBytes   495 Mbits/sec  7556  
[  4]   5.00-6.00   sec  60.5 MBytes   508 Mbits/sec  7744  
[  4]   6.00-7.00   sec  58.7 MBytes   492 Mbits/sec  7508  
[  4]   7.00-8.00   sec  59.1 MBytes   496 Mbits/sec  7565  
[  4]   8.00-9.00   sec  60.4 MBytes   507 Mbits/sec  7730  
[  4]   9.00-10.00  sec  59.9 MBytes   502 Mbits/sec  7664  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  2051749.337 ms  64268/64294 (1e+02%)  
[  4] Sent 64294 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 500M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 35361 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.097 ms  0/1830 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.101 ms  0/1830 (0%)  
[  4]   2.00-3.00   sec  14.3 MBytes   120 Mbits/sec  0.072 ms  0/1827 (0%)  
[  4]   3.00-4.00   sec  14.2 MBytes   119 Mbits/sec  0.081 ms  0/1819 (0%)  
[  4]   4.00-5.00   sec  14.3 MBytes   120 Mbits/sec  0.070 ms  0/1834 (0%)  
[  4]   5.00-6.00   sec  14.3 MBytes   120 Mbits/sec  0.085 ms  0/1833 (0%)  
[  4]   6.00-7.00   sec  14.3 MBytes   120 Mbits/sec  0.082 ms  0/1835 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.109 ms  0/1836 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.080 ms  0/1822 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.090 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   143 MBytes   120 Mbits/sec  0.104 ms  0/18298 (0%)  
[  4] Sent 18298 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 53231 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   1.00-2.00   sec   107 MBytes   896 Mbits/sec  13675  
[  4]   2.00-3.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   3.00-4.00   sec   107 MBytes   898 Mbits/sec  13700  
[  4]   4.00-5.00   sec   107 MBytes   902 Mbits/sec  13759  
[  4]   5.00-6.00   sec   108 MBytes   902 Mbits/sec  13762  
[  4]   6.00-7.00   sec   107 MBytes   899 Mbits/sec  13719  
[  4]   7.00-8.00   sec   108 MBytes   902 Mbits/sec  13760  
[  4]   8.00-9.00   sec   107 MBytes   901 Mbits/sec  13753  
[  4]   9.00-10.00  sec   107 MBytes   902 Mbits/sec  13756  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  1.05 GBytes   900 Mbits/sec  5762140.265 ms  210/220 (95%)  
[  4] Sent 220 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -u -b 1000M -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 34296 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  14.3 MBytes   120 Mbits/sec  0.084 ms  0/1835 (0%)  
[  4]   1.00-2.00   sec  14.3 MBytes   120 Mbits/sec  0.075 ms  0/1835 (0%)  
[  4]   2.00-3.00   sec  14.5 MBytes   122 Mbits/sec  0.062 ms  0/1858 (0%)  
[  4]   3.00-4.00   sec  15.1 MBytes   127 Mbits/sec  0.060 ms  0/1935 (0%)  
[  4]   4.00-5.00   sec  15.3 MBytes   128 Mbits/sec  0.076 ms  0/1958 (0%)  
[  4]   5.00-6.00   sec  14.5 MBytes   122 Mbits/sec  0.078 ms  0/1861 (0%)  
[  4]   6.00-7.00   sec  14.4 MBytes   120 Mbits/sec  0.100 ms  0/1837 (0%)  
[  4]   7.00-8.00   sec  14.3 MBytes   120 Mbits/sec  0.098 ms  0/1835 (0%)  
[  4]   8.00-9.00   sec  14.2 MBytes   119 Mbits/sec  0.085 ms  0/1821 (0%)  
[  4]   9.00-10.00  sec  14.3 MBytes   120 Mbits/sec  0.110 ms  0/1825 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   145 MBytes   122 Mbits/sec  0.101 ms  0/18606 (0%)  
[  4] Sent 18606 datagrams

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 52130 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52132 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52134 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  7.47 MBytes  62.6 Mbits/sec   73   17.0 KBytes       
[  6]   0.00-1.00   sec  7.21 MBytes  60.5 Mbits/sec   78   19.8 KBytes       
[  9]   0.00-1.00   sec  7.14 MBytes  59.9 Mbits/sec   76   31.1 KBytes       
[SUM]   0.00-1.00   sec  21.8 MBytes   183 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  7.95 MBytes  66.7 Mbits/sec   61   12.7 KBytes       
[  6]   1.00-2.00   sec  5.84 MBytes  49.0 Mbits/sec   99   35.4 KBytes       
[  9]   1.00-2.00   sec  7.08 MBytes  59.4 Mbits/sec   78   32.5 KBytes       
[SUM]   1.00-2.00   sec  20.9 MBytes   175 Mbits/sec  238             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   73   31.1 KBytes       
[  6]   2.00-3.00   sec  8.95 MBytes  75.1 Mbits/sec   64   22.6 KBytes       
[  9]   2.00-3.00   sec  6.09 MBytes  51.1 Mbits/sec   81   18.4 KBytes       
[SUM]   2.00-3.00   sec  21.1 MBytes   177 Mbits/sec  218             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  6.71 MBytes  56.3 Mbits/sec   80   11.3 KBytes       
[  6]   3.00-4.00   sec  8.26 MBytes  69.3 Mbits/sec   76   17.0 KBytes       
[  9]   3.00-4.00   sec  6.28 MBytes  52.7 Mbits/sec   77   42.4 KBytes       
[SUM]   3.00-4.00   sec  21.3 MBytes   178 Mbits/sec  233             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  6.59 MBytes  55.3 Mbits/sec   94   12.7 KBytes       
[  6]   4.00-5.00   sec  7.58 MBytes  63.6 Mbits/sec   63   28.3 KBytes       
[  9]   4.00-5.00   sec  6.84 MBytes  57.3 Mbits/sec   62   11.3 KBytes       
[SUM]   4.00-5.00   sec  21.0 MBytes   176 Mbits/sec  219             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  8.76 MBytes  73.5 Mbits/sec   57   22.6 KBytes       
[  6]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   80   38.2 KBytes       
[  9]   5.00-6.00   sec  6.28 MBytes  52.6 Mbits/sec   90   7.07 KBytes       
[SUM]   5.00-6.00   sec  21.3 MBytes   179 Mbits/sec  227             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  7.33 MBytes  61.5 Mbits/sec   72   18.4 KBytes       
[  6]   6.00-7.00   sec  7.02 MBytes  58.9 Mbits/sec   66   35.4 KBytes       
[  9]   6.00-7.00   sec  6.77 MBytes  56.8 Mbits/sec   67   17.0 KBytes       
[SUM]   6.00-7.00   sec  21.1 MBytes   177 Mbits/sec  205             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  8.45 MBytes  70.9 Mbits/sec   72   25.5 KBytes       
[  6]   7.00-8.00   sec  6.71 MBytes  56.3 Mbits/sec   82   35.4 KBytes       
[  9]   7.00-8.00   sec  5.90 MBytes  49.5 Mbits/sec   74   17.0 KBytes       
[SUM]   7.00-8.00   sec  21.1 MBytes   177 Mbits/sec  228             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  6.46 MBytes  54.2 Mbits/sec   77   36.8 KBytes       
[  6]   8.00-9.00   sec  6.90 MBytes  57.9 Mbits/sec   78   11.3 KBytes       
[  9]   8.00-9.00   sec  7.89 MBytes  66.2 Mbits/sec   68   11.3 KBytes       
[SUM]   8.00-9.00   sec  21.3 MBytes   178 Mbits/sec  223             
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  6.59 MBytes  55.3 Mbits/sec   79   38.2 KBytes       
[  6]   9.00-10.00  sec  8.76 MBytes  73.5 Mbits/sec   58   24.0 KBytes       
[  9]   9.00-10.00  sec  5.72 MBytes  48.0 Mbits/sec   77   7.07 KBytes       
[SUM]   9.00-10.00  sec  21.1 MBytes   177 Mbits/sec  214             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  72.4 MBytes  60.7 Mbits/sec  738             sender
[  4]   0.00-10.00  sec  72.0 MBytes  60.4 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  73.5 MBytes  61.7 Mbits/sec  744             sender
[  6]   0.00-10.00  sec  73.2 MBytes  61.4 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  66.0 MBytes  55.4 Mbits/sec  750             sender
[  9]   0.00-10.00  sec  65.6 MBytes  55.1 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec   212 MBytes   178 Mbits/sec  2232             sender
[SUM]   0.00-10.00  sec   211 MBytes   177 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 52178 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 52180 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 52182 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec  4.03 MBytes  33.8 Mbits/sec                  
[  6]   0.00-1.00   sec  2.81 MBytes  23.6 Mbits/sec                  
[  9]   0.00-1.00   sec  2.79 MBytes  23.4 Mbits/sec                  
[SUM]   0.00-1.00   sec  9.63 MBytes  80.8 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   1.00-2.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   1.00-2.00   sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   1.00-2.00   sec  9.72 MBytes  81.5 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   2.00-3.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   2.00-3.00   sec  3.30 MBytes  27.6 Mbits/sec                  
[SUM]   2.00-3.00   sec  9.80 MBytes  82.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   3.00-4.00   sec  3.12 MBytes  26.2 Mbits/sec                  
[  9]   3.00-4.00   sec  3.19 MBytes  26.8 Mbits/sec                  
[SUM]   3.00-4.00   sec  9.57 MBytes  80.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  2.22 MBytes  18.6 Mbits/sec                  
[  6]   4.00-5.00   sec  2.38 MBytes  19.9 Mbits/sec                  
[  9]   4.00-5.00   sec  2.28 MBytes  19.2 Mbits/sec                  
[SUM]   4.00-5.00   sec  6.88 MBytes  57.7 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  3.30 MBytes  27.7 Mbits/sec                  
[  6]   5.00-6.00   sec  3.37 MBytes  28.3 Mbits/sec                  
[  9]   5.00-6.00   sec  3.18 MBytes  26.7 Mbits/sec                  
[SUM]   5.00-6.00   sec  9.85 MBytes  82.6 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  2.99 MBytes  25.1 Mbits/sec                  
[  6]   6.00-7.00   sec  2.88 MBytes  24.1 Mbits/sec                  
[  9]   6.00-7.00   sec  3.00 MBytes  25.2 Mbits/sec                  
[SUM]   6.00-7.00   sec  8.87 MBytes  74.4 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  3.14 MBytes  26.3 Mbits/sec                  
[  6]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   7.00-8.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[SUM]   7.00-8.00   sec  9.64 MBytes  80.9 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  3.25 MBytes  27.2 Mbits/sec                  
[  6]   8.00-9.00   sec  3.25 MBytes  27.3 Mbits/sec                  
[  9]   8.00-9.00   sec  3.16 MBytes  26.5 Mbits/sec                  
[SUM]   8.00-9.00   sec  9.65 MBytes  81.0 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  3.25 MBytes  27.3 Mbits/sec                  
[  6]   9.00-10.00  sec  3.21 MBytes  26.9 Mbits/sec                  
[  9]   9.00-10.00  sec  3.22 MBytes  27.0 Mbits/sec                  
[SUM]   9.00-10.00  sec  9.68 MBytes  81.2 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec    0             sender
[  4]   0.00-10.00  sec  32.2 MBytes  27.0 Mbits/sec                  receiver
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec    0             sender
[  6]   0.00-10.00  sec  31.1 MBytes  26.1 Mbits/sec                  receiver
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec    0             sender
[  9]   0.00-10.00  sec  30.9 MBytes  25.9 Mbits/sec                  receiver
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec    0             sender
[SUM]   0.00-10.00  sec  94.2 MBytes  79.0 Mbits/sec                  receiver

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -u -b 800M
Connecting to host 10.0.0.80, port 5201
[  4] local 10.0.0.1 port 36791 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 51969 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 39473 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Total Datagrams
[  4]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  6]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[  9]   0.00-1.00   sec  38.1 MBytes   319 Mbits/sec  4871  
[SUM]   0.00-1.00   sec   114 MBytes   958 Mbits/sec  14613  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   1.00-2.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   1.00-2.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   2.00-3.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   2.00-3.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   3.00-4.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   3.00-4.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  6]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[  9]   4.00-5.00   sec  38.0 MBytes   319 Mbits/sec  4864  
[SUM]   4.00-5.00   sec   114 MBytes   956 Mbits/sec  14592  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  6]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[  9]   5.00-6.00   sec  38.1 MBytes   319 Mbits/sec  4875  
[SUM]   5.00-6.00   sec   114 MBytes   958 Mbits/sec  14625  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  6]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[  9]   6.00-7.00   sec  38.1 MBytes   319 Mbits/sec  4873  
[SUM]   6.00-7.00   sec   114 MBytes   958 Mbits/sec  14619  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  6]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[  9]   7.00-8.00   sec  38.1 MBytes   319 Mbits/sec  4876  
[SUM]   7.00-8.00   sec   114 MBytes   958 Mbits/sec  14628  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  6]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[  9]   8.00-9.00   sec  38.1 MBytes   319 Mbits/sec  4874  
[SUM]   8.00-9.00   sec   114 MBytes   958 Mbits/sec  14622  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  6]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[  9]   9.00-10.00  sec  37.9 MBytes   318 Mbits/sec  4856  
[SUM]   9.00-10.00  sec   114 MBytes   955 Mbits/sec  14568  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.391 ms  0/3 (0%)  
[  4] Sent 3 datagrams
[  6]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.281 ms  0/3 (0%)  
[  6] Sent 3 datagrams
[  9]   0.00-10.00  sec   381 MBytes   319 Mbits/sec  9052841.181 ms  0/3 (0%)  
[  9] Sent 3 datagrams
[SUM]   0.00-10.00  sec  1.11 GBytes   958 Mbits/sec  9052841.285 ms  0/9 (0%)  

iperf Done.
+ sleep 10
+ iperf3 -c 10.0.0.80 -P3 -R -u -b 800M
Connecting to host 10.0.0.80, port 5201
Reverse mode, remote host 10.0.0.80 is sending
[  4] local 10.0.0.1 port 43263 connected to 10.0.0.80 port 5201
[  6] local 10.0.0.1 port 49331 connected to 10.0.0.80 port 5201
[  9] local 10.0.0.1 port 60542 connected to 10.0.0.80 port 5201
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.156 ms  0/630 (0%)  
[  6]   0.00-1.00   sec  4.92 MBytes  41.3 Mbits/sec  0.170 ms  0/630 (0%)  
[  9]   0.00-1.00   sec  4.91 MBytes  41.2 Mbits/sec  0.237 ms  0/629 (0%)  
[SUM]   0.00-1.00   sec  14.8 MBytes   124 Mbits/sec  0.188 ms  0/1889 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   1.00-2.00   sec  4.92 MBytes  41.3 Mbits/sec  0.173 ms  0/630 (0%)  
[  6]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.191 ms  0/629 (0%)  
[  9]   1.00-2.00   sec  4.91 MBytes  41.2 Mbits/sec  0.192 ms  0/629 (0%)  
[SUM]   1.00-2.00   sec  14.8 MBytes   124 Mbits/sec  0.185 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   2.00-3.00   sec  4.96 MBytes  41.6 Mbits/sec  0.246 ms  0/635 (0%)  
[  6]   2.00-3.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[  9]   2.00-3.00   sec  4.95 MBytes  41.5 Mbits/sec  0.232 ms  0/634 (0%)  
[SUM]   2.00-3.00   sec  14.9 MBytes   125 Mbits/sec  0.215 ms  0/1905 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.189 ms  0/636 (0%)  
[  6]   3.00-4.00   sec  4.96 MBytes  41.6 Mbits/sec  0.121 ms  0/635 (0%)  
[  9]   3.00-4.00   sec  4.97 MBytes  41.7 Mbits/sec  0.195 ms  0/636 (0%)  
[SUM]   3.00-4.00   sec  14.9 MBytes   125 Mbits/sec  0.168 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.180 ms  0/636 (0%)  
[  6]   4.00-5.00   sec  4.97 MBytes  41.7 Mbits/sec  0.185 ms  0/636 (0%)  
[  9]   4.00-5.00   sec  4.96 MBytes  41.6 Mbits/sec  0.132 ms  0/635 (0%)  
[SUM]   4.00-5.00   sec  14.9 MBytes   125 Mbits/sec  0.166 ms  0/1907 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.178 ms  0/636 (0%)  
[  6]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.209 ms  0/636 (0%)  
[  9]   5.00-6.00   sec  4.97 MBytes  41.7 Mbits/sec  0.167 ms  0/636 (0%)  
[SUM]   5.00-6.00   sec  14.9 MBytes   125 Mbits/sec  0.185 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.141 ms  0/628 (0%)  
[  6]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.211 ms  0/628 (0%)  
[  9]   6.00-7.00   sec  4.91 MBytes  41.2 Mbits/sec  0.152 ms  0/629 (0%)  
[SUM]   6.00-7.00   sec  14.7 MBytes   124 Mbits/sec  0.168 ms  0/1885 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   7.00-8.00   sec  4.92 MBytes  41.3 Mbits/sec  0.290 ms  0/630 (0%)  
[  6]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.167 ms  0/629 (0%)  
[  9]   7.00-8.00   sec  4.91 MBytes  41.2 Mbits/sec  0.367 ms  0/629 (0%)  
[SUM]   7.00-8.00   sec  14.8 MBytes   124 Mbits/sec  0.275 ms  0/1888 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   8.00-9.00   sec  4.93 MBytes  41.4 Mbits/sec  0.147 ms  0/631 (0%)  
[  6]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.170 ms  0/628 (0%)  
[  9]   8.00-9.00   sec  4.91 MBytes  41.2 Mbits/sec  0.137 ms  0/628 (0%)  
[SUM]   8.00-9.00   sec  14.7 MBytes   124 Mbits/sec  0.151 ms  0/1887 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  4]   9.00-10.00  sec  4.97 MBytes  41.7 Mbits/sec  0.215 ms  0/636 (0%)  
[  6]   9.00-10.00  sec  4.98 MBytes  41.7 Mbits/sec  0.150 ms  0/637 (0%)  
[  9]   9.00-10.00  sec  4.96 MBytes  41.6 Mbits/sec  0.272 ms  0/635 (0%)  
[SUM]   9.00-10.00  sec  14.9 MBytes   125 Mbits/sec  0.212 ms  0/1908 (0%)  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Jitter    Lost/Total Datagrams
[  4]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.227 ms  0/6335 (0%)  
[  4] Sent 6335 datagrams
[  6]   0.00-10.00  sec  49.5 MBytes  41.5 Mbits/sec  0.183 ms  0/6331 (0%)  
[  6] Sent 6331 datagrams
[  9]   0.00-10.00  sec  49.4 MBytes  41.5 Mbits/sec  0.261 ms  0/6327 (0%)  
[  9] Sent 6327 datagrams
[SUM]   0.00-10.00  sec   148 MBytes   124 Mbits/sec  0.224 ms  0/18993 (0%)  

iperf Done.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: run.sh
Type: application/x-shellscript
Size: 726 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190214/017dc810/attachment-0004.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0905-increase-dma-descriptors.patch
Type: text/x-patch
Size: 614 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190214/017dc810/attachment-0005.bin>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From daniel.engberg.lists at pyret.net  Wed Feb 13 19:10:36 2019
From: daniel.engberg.lists at pyret.net (Daniel Engberg)
Date: Thu, 14 Feb 2019 01:10:36 +0100
Subject: [OpenWrt-Devel] [PATCH] build: Activate ASLR PIE by default
Message-ID: <b1ddace10c87b9ee2f2cc07ce43ce656@pyret.net>

Hi,

PIE adds overhead (it can be quite a bit) both to binary size and
performance during execution. There are usually discussions about
kilobytes and this is well beyond that and space is still quite
precious on 8/16Mbyte flash devices. Most target platforms are
"slow" and have limited space to begin with, ASLR and PIE won't help.
https://nebelwelt.net/publications/files/12TRpie.pdf

Far from all supported platforms have NX-bit or equvalent which makes it
as I understand it less effective?
https://www.vusec.net/projects/anc/

Effectiveness using vanilla Linux kernel seems to be questionable?
https://wiki.archlinux.org/index.php/security#Userspace_ASLR_comparison
https://en.wikipedia.org/wiki/Grsecurity#PaX

Interesting discussion about ASLR PIE in general here:
http://lists.dragonflybsd.org/pipermail/users/2017-April/335158.html

Debian seems to cherrypick applications
https://wiki.debian.org/Hardening

Perhaps the best solution wout be to provide two images, one with ASLR 
and one without?

Best regards,
Daniel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From feinerer at logic.at  Thu Feb 14 02:15:13 2019
From: feinerer at logic.at (Ingo Feinerer)
Date: Thu, 14 Feb 2019 08:15:13 +0100
Subject: [OpenWrt-Devel] umbim: registration set support
Message-ID: <20190214071513.GA50628@t450.aithon.duckdns.org>

Hi,

anyone willing to review/commit this diff?

http://lists.infradead.org/pipermail/openwrt-devel/2019-January/015445.html
http://lists.infradead.org/pipermail/openwrt-devel/2019-January/015444.html

Thank you.

Best regards,
Ingo

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From bjorn at mork.no  Thu Feb 14 04:36:50 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Thu, 14 Feb 2019 10:36:50 +0100
Subject: [OpenWrt-Devel] umbim: registration set support
In-Reply-To: <20190214071513.GA50628@t450.aithon.duckdns.org> (Ingo Feinerer's
 message of "Thu, 14 Feb 2019 08:15:13 +0100")
References: <20190110145800.63138-2-feinerer@logic.at>
 <20190214071513.GA50628@t450.aithon.duckdns.org>
Message-ID: <87mumyyaml.fsf@miraculix.mork.no>

Ingo Feinerer <feinerer at logic.at> writes:

> anyone willing to review/commit this diff?
>
> http://lists.infradead.org/pipermail/openwrt-devel/2019-January/015445.html
> http://lists.infradead.org/pipermail/openwrt-devel/2019-January/015444.html


I assume John is very busy based on currently observed activity.  So you
may have to be patient...

The patch is registered in patchwork, so it's safely queued and will not
be lost: http://patchwork.ozlabs.org/patch/1022983/

FWIW, your patch looks good to me.  It could probably be improved with
actual argument parsing, maybe allowing setting MBIM_REGISTER_ACTION_MANUAL too.
But I see no reason why that can't be added in a later followup if/when
someone actually needs it.

My test modem (EM7455) defaults to auto, so there isn't much difference
in the result with and without your patch.  But just to display the SET
vs QUERY:


bjorn at miraculix:~$ umbim -v -d /dev/cdc-wdm0 -n -t 42 registration auto
sending (64): 03 00 00 00 40 00 00 00 2a 00 00 00 01 00 00 00 00 00 00 00 a2 89 cc 33 bc bb 8b 4f b6 b0 13 3e c2 aa e6 df 09 00 00 00 01 00 00 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
  header_type: 0003
  header_length: 0040
  header_transaction: 002A
reading (124): 03 00 00 80 7c 00 00 00 2a 00 00 00 01 00 00 00 00 00 00 00 a2 89 cc 33 bc bb 8b 4f b6 b0 13 3e c2 aa e6 df 09 00 00 00 00 00 00 00 4c 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 20 00 00 00 01 00 00 00 30 00 00 00 0a 00 00 00 3c 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 32 00 34 00 32 00 30 00 31 00 00 00 54 00 45 00 4c 00 45 00 4e 00 4f 00 52 00 00 00 
  header_type: 80000003
  header_length: 007C
  header_transaction: 002A
  command_id: 0009
  status_code: 0000
  nwerror: 0000 - unknown
  registerstate: 0003 - home
  registermode: 0001 - automatic
  availabledataclasses: 0020 - lte
  currentcellularclass: 0001 - gsm
  provider_id: 24201
  provider_name: TELENOR
  roamingtext: (null)

bjorn at miraculix:~$ umbim -v -d /dev/cdc-wdm0 -n -t 42 registration
sending (48): 03 00 00 00 30 00 00 00 2a 00 00 00 01 00 00 00 00 00 00 00 a2 89 cc 33 bc bb 8b 4f b6 b0 13 3e c2 aa e6 df 09 00 00 00 00 00 00 00 00 00 00 00 
  header_type: 0003
  header_length: 0030
  header_transaction: 002A
reading (124): 03 00 00 80 7c 00 00 00 2a 00 00 00 01 00 00 00 00 00 00 00 a2 89 cc 33 bc bb 8b 4f b6 b0 13 3e c2 aa e6 df 09 00 00 00 00 00 00 00 4c 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 20 00 00 00 01 00 00 00 30 00 00 00 0a 00 00 00 3c 00 00 00 0e 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 32 00 34 00 32 00 30 00 31 00 00 00 54 00 45 00 4c 00 45 00 4e 00 4f 00 52 00 00 00 
  header_type: 80000003
  header_length: 007C
  header_transaction: 002A
  command_id: 0009
  status_code: 0000
  nwerror: 0000 - unknown
  registerstate: 0003 - home
  registermode: 0001 - automatic
  availabledataclasses: 0020 - lte
  currentcellularclass: 0001 - gsm
  provider_id: 24201
  provider_name: TELENOR
  roamingtext: (null)


Don't know if the OpenWrt patchworks collects these, but in case it does:

Reviewed-by: Bj?rn Mork <bjorn at mork.no>



Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 05:24:26 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:26 +0100
Subject: [OpenWrt-Devel] [PATCH 00/10] Stable material from OpenWrt
Message-ID: <20190214102436.5092-1-linus.walleij@linaro.org>

This is a series of patches used in OpenWrt's v4.9 backports
that seem to be of generic interest to v4.9.y

As a bunch of commits hit networking I CC DaveM and
here so the can nod/object to these, I think
the want a bit of control over what goes into networking
stable.

I avoided two patch sets dealing with IPv6 tunneling
and netfilter that seem to still be fixed and I feel generally
incompetent about.

For the remaining patches I cherry-picked the upstream
commits except for (8/10)
"netfilter: nf_tables: fix mismatch in big-endian system"
where I used OpenWrt's backport.

The list of upstream commits in patch order:
6db6f0eae6052b70885562e1733896647ec1d807
"bridge: multicast to unicast"
e9156cd26a495a18706e796f02a81fee41ec14f4
"smsc95xx: Use skb_cow_head to deal with cloned skbs"
6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40
"ch9200: use skb_cow_head() to deal with cloned skbs"
39fba7835aacda65284a86e611774cbba71dac20
"kaweth: use skb_cow_head() to deal with cloned skbs"
854826c9d526fd81077742c3b000e3f7fcaef3ce
"ubifs: Drop softlimit and delta fields from struct ubifs_wbuf"
1b7fc2c0069f3864a3dda15430b7aded31c0bfcc
"ubifs: Use dirty_writeback_interval value for wbuf timer"
cd4b1e34655d46950c065d9284b596cd8d7b28cd
"usb: dwc2: Remove unnecessary kfree"
10596608c4d62cb8c1c2b806debcbd32fe657e7
"netfilter: nf_tables: fix mismatch in big-endian system"
65cab850f0eeaa9180bd2e10a231964f33743edf
"net: Allow class-e address assignment via ifconfig ioctl"
6926e041a8920c8ec27e4e155efa760aa01551fd
"uapi/if_ether.h: prevent redefinition of struct ethhdr"

Dave Taht (1):
  net: Allow class-e address assignment via ifconfig ioctl

Eric Dumazet (2):
  ch9200: use skb_cow_head() to deal with cloned skbs
  kaweth: use skb_cow_head() to deal with cloned skbs

Felix Fietkau (1):
  bridge: multicast to unicast

Hauke Mehrtens (1):
  uapi/if_ether.h: prevent redefinition of struct ethhdr

James Hughes (1):
  smsc95xx: Use skb_cow_head to deal with cloned skbs

John Youn (1):
  usb: dwc2: Remove unnecessary kfree

Liping Zhang (1):
  netfilter: nf_tables: fix mismatch in big-endian system

Rafa? Mi?ecki (2):
  ubifs: Drop softlimit and delta fields from struct ubifs_wbuf
  ubifs: Use dirty_writeback_interval value for wbuf timer

 drivers/net/usb/ch9200.c            |  9 +--
 drivers/net/usb/kaweth.c            | 18 ++----
 drivers/net/usb/smsc95xx.c          | 12 ++--
 drivers/usb/dwc2/hcd.c              |  1 -
 fs/ubifs/io.c                       | 18 +++---
 fs/ubifs/ubifs.h                    |  9 ---
 include/linux/if_bridge.h           |  1 +
 include/net/netfilter/nf_tables.h   | 29 ++++++++++
 include/uapi/linux/if_ether.h       |  3 +
 include/uapi/linux/if_link.h        |  1 +
 include/uapi/linux/in.h             | 10 +++-
 include/uapi/linux/libc-compat.h    |  6 ++
 net/bridge/br_forward.c             | 39 ++++++++++++-
 net/bridge/br_mdb.c                 |  2 +-
 net/bridge/br_multicast.c           | 90 +++++++++++++++++++++--------
 net/bridge/br_netlink.c             |  5 ++
 net/bridge/br_private.h             |  3 +-
 net/bridge/br_sysfs_if.c            |  2 +
 net/ipv4/devinet.c                  |  5 +-
 net/ipv4/ipconfig.c                 |  2 +
 net/ipv4/netfilter/nft_masq_ipv4.c  |  8 +--
 net/ipv4/netfilter/nft_redir_ipv4.c |  8 +--
 net/ipv6/netfilter/nft_masq_ipv6.c  |  8 +--
 net/ipv6/netfilter/nft_redir_ipv6.c |  8 +--
 net/netfilter/nft_ct.c              | 10 ++--
 net/netfilter/nft_meta.c            | 42 +++++++-------
 net/netfilter/nft_nat.c             |  8 +--
 27 files changed, 235 insertions(+), 122 deletions(-)

-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 05:24:27 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:27 +0100
Subject: [OpenWrt-Devel] [PATCH 01/10] bridge: multicast to unicast
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-2-linus.walleij@linaro.org>

From: Felix Fietkau <nbd at nbd.name>

Implements an optional, per bridge port flag and feature to deliver
multicast packets to any host on the according port via unicast
individually. This is done by copying the packet per host and
changing the multicast destination MAC to a unicast one accordingly.

multicast-to-unicast works on top of the multicast snooping feature of
the bridge. Which means unicast copies are only delivered to hosts which
are interested in it and signalized this via IGMP/MLD reports
previously.

This feature is intended for interface types which have a more reliable
and/or efficient way to deliver unicast packets than broadcast ones
(e.g. wifi).

However, it should only be enabled on interfaces where no IGMPv2/MLDv1
report suppression takes place. This feature is disabled by default.

The initial patch and idea is from Felix Fietkau.

Signed-off-by: Felix Fietkau <nbd at nbd.name>
[linus.luessing at c0d3.blue: various bug + style fixes, commit message]
Signed-off-by: Linus L?ssing <linus.luessing at c0d3.blue>
Reviewed-by: Nikolay Aleksandrov <nikolay at cumulusnetworks.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
 include/linux/if_bridge.h    |  1 +
 include/uapi/linux/if_link.h |  1 +
 net/bridge/br_forward.c      | 39 +++++++++++++++-
 net/bridge/br_mdb.c          |  2 +-
 net/bridge/br_multicast.c    | 90 ++++++++++++++++++++++++++----------
 net/bridge/br_netlink.c      |  5 ++
 net/bridge/br_private.h      |  3 +-
 net/bridge/br_sysfs_if.c     |  2 +
 8 files changed, 114 insertions(+), 29 deletions(-)

diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
index c6587c01d951..debc9d5904e5 100644
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -46,6 +46,7 @@ struct br_ip_list {
 #define BR_LEARNING_SYNC	BIT(9)
 #define BR_PROXYARP_WIFI	BIT(10)
 #define BR_MCAST_FLOOD		BIT(11)
+#define BR_MULTICAST_TO_UNICAST	BIT(12)
 
 #define BR_DEFAULT_AGEING_TIME	(300 * HZ)
 
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index b4fba662cd32..ee4d632d089d 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -319,6 +319,7 @@ enum {
 	IFLA_BRPORT_MULTICAST_ROUTER,
 	IFLA_BRPORT_PAD,
 	IFLA_BRPORT_MCAST_FLOOD,
+	IFLA_BRPORT_MCAST_TO_UCAST,
 	__IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 5b675695c661..30afa130287e 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -173,6 +173,31 @@ static struct net_bridge_port *maybe_deliver(
 	return p;
 }
 
+static void maybe_deliver_addr(struct net_bridge_port *p, struct sk_buff *skb,
+			       const unsigned char *addr, bool local_orig)
+{
+	struct net_device *dev = BR_INPUT_SKB_CB(skb)->brdev;
+	const unsigned char *src = eth_hdr(skb)->h_source;
+
+	if (!should_deliver(p, skb))
+		return;
+
+	/* Even with hairpin, no soliloquies - prevent breaking IPv6 DAD */
+	if (skb->dev == p->dev && ether_addr_equal(src, addr))
+		return;
+
+	skb = skb_copy(skb, GFP_ATOMIC);
+	if (!skb) {
+		dev->stats.tx_dropped++;
+		return;
+	}
+
+	if (!is_broadcast_ether_addr(addr))
+		memcpy(eth_hdr(skb)->h_dest, addr, ETH_ALEN);
+
+	__br_forward(p, skb, local_orig);
+}
+
 /* called under rcu_read_lock */
 void br_flood(struct net_bridge *br, struct sk_buff *skb,
 	      enum br_pkt_type pkt_type, bool local_rcv, bool local_orig)
@@ -241,10 +266,20 @@ void br_multicast_flood(struct net_bridge_mdb_entry *mdst,
 		rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
 			     NULL;
 
-		port = (unsigned long)lport > (unsigned long)rport ?
-		       lport : rport;
+		if ((unsigned long)lport > (unsigned long)rport) {
+			port = lport;
+
+			if (port->flags & BR_MULTICAST_TO_UNICAST) {
+				maybe_deliver_addr(lport, skb, p->eth_addr,
+						   local_orig);
+				goto delivered;
+			}
+		} else {
+			port = rport;
+		}
 
 		prev = maybe_deliver(prev, port, skb, local_orig);
+delivered:
 		if (IS_ERR(prev))
 			goto out;
 		if (prev == port)
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c
index 6406010e155b..57e94a1b57e1 100644
--- a/net/bridge/br_mdb.c
+++ b/net/bridge/br_mdb.c
@@ -532,7 +532,7 @@ static int br_mdb_add_group(struct net_bridge *br, struct net_bridge_port *port,
 			break;
 	}
 
-	p = br_multicast_new_port_group(port, group, *pp, state);
+	p = br_multicast_new_port_group(port, group, *pp, state, NULL);
 	if (unlikely(!p))
 		return -ENOMEM;
 	rcu_assign_pointer(*pp, p);
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 4bd57507b9a4..1183c5fcd9d2 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -42,12 +42,14 @@ static void br_multicast_add_router(struct net_bridge *br,
 static void br_ip4_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 __be32 group,
-					 __u16 vid);
+					 __u16 vid,
+					 const unsigned char *src);
+
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 const struct in6_addr *group,
-					 __u16 vid);
+					 __u16 vid, const unsigned char *src);
 #endif
 unsigned int br_mdb_rehash_seq;
 
@@ -658,7 +660,8 @@ struct net_bridge_port_group *br_multicast_new_port_group(
 			struct net_bridge_port *port,
 			struct br_ip *group,
 			struct net_bridge_port_group __rcu *next,
-			unsigned char flags)
+			unsigned char flags,
+			const unsigned char *src)
 {
 	struct net_bridge_port_group *p;
 
@@ -673,12 +676,32 @@ struct net_bridge_port_group *br_multicast_new_port_group(
 	hlist_add_head(&p->mglist, &port->mglist);
 	setup_timer(&p->timer, br_multicast_port_group_expired,
 		    (unsigned long)p);
+
+	if (src)
+		memcpy(p->eth_addr, src, ETH_ALEN);
+	else
+		memset(p->eth_addr, 0xff, ETH_ALEN);
+
 	return p;
 }
 
+static bool br_port_group_equal(struct net_bridge_port_group *p,
+				struct net_bridge_port *port,
+				const unsigned char *src)
+{
+	if (p->port != port)
+		return false;
+
+	if (!(port->flags & BR_MULTICAST_TO_UNICAST))
+		return true;
+
+	return ether_addr_equal(src, p->eth_addr);
+}
+
 static int br_multicast_add_group(struct net_bridge *br,
 				  struct net_bridge_port *port,
-				  struct br_ip *group)
+				  struct br_ip *group,
+				  const unsigned char *src)
 {
 	struct net_bridge_mdb_entry *mp;
 	struct net_bridge_port_group *p;
@@ -705,13 +728,13 @@ static int br_multicast_add_group(struct net_bridge *br,
 	for (pp = &mp->ports;
 	     (p = mlock_dereference(*pp, br)) != NULL;
 	     pp = &p->next) {
-		if (p->port == port)
+		if (br_port_group_equal(p, port, src))
 			goto found;
 		if ((unsigned long)p->port < (unsigned long)port)
 			break;
 	}
 
-	p = br_multicast_new_port_group(port, group, *pp, 0);
+	p = br_multicast_new_port_group(port, group, *pp, 0, src);
 	if (unlikely(!p))
 		goto err;
 	rcu_assign_pointer(*pp, p);
@@ -730,7 +753,8 @@ static int br_multicast_add_group(struct net_bridge *br,
 static int br_ip4_multicast_add_group(struct net_bridge *br,
 				      struct net_bridge_port *port,
 				      __be32 group,
-				      __u16 vid)
+				      __u16 vid,
+				      const unsigned char *src)
 {
 	struct br_ip br_group;
 
@@ -741,14 +765,15 @@ static int br_ip4_multicast_add_group(struct net_bridge *br,
 	br_group.proto = htons(ETH_P_IP);
 	br_group.vid = vid;
 
-	return br_multicast_add_group(br, port, &br_group);
+	return br_multicast_add_group(br, port, &br_group, src);
 }
 
 #if IS_ENABLED(CONFIG_IPV6)
 static int br_ip6_multicast_add_group(struct net_bridge *br,
 				      struct net_bridge_port *port,
 				      const struct in6_addr *group,
-				      __u16 vid)
+				      __u16 vid,
+				      const unsigned char *src)
 {
 	struct br_ip br_group;
 
@@ -759,7 +784,7 @@ static int br_ip6_multicast_add_group(struct net_bridge *br,
 	br_group.proto = htons(ETH_P_IPV6);
 	br_group.vid = vid;
 
-	return br_multicast_add_group(br, port, &br_group);
+	return br_multicast_add_group(br, port, &br_group, src);
 }
 #endif
 
@@ -1028,6 +1053,7 @@ static int br_ip4_multicast_igmp3_report(struct net_bridge *br,
 					 struct sk_buff *skb,
 					 u16 vid)
 {
+	const unsigned char *src;
 	struct igmpv3_report *ih;
 	struct igmpv3_grec *grec;
 	int i;
@@ -1068,12 +1094,14 @@ static int br_ip4_multicast_igmp3_report(struct net_bridge *br,
 			continue;
 		}
 
+		src = eth_hdr(skb)->h_source;
 		if ((type == IGMPV3_CHANGE_TO_INCLUDE ||
 		     type == IGMPV3_MODE_IS_INCLUDE) &&
 		    ntohs(grec->grec_nsrcs) == 0) {
-			br_ip4_multicast_leave_group(br, port, group, vid);
+			br_ip4_multicast_leave_group(br, port, group, vid, src);
 		} else {
-			err = br_ip4_multicast_add_group(br, port, group, vid);
+			err = br_ip4_multicast_add_group(br, port, group, vid,
+							 src);
 			if (err)
 				break;
 		}
@@ -1088,6 +1116,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 					struct sk_buff *skb,
 					u16 vid)
 {
+	const unsigned char *src;
 	struct icmp6hdr *icmp6h;
 	struct mld2_grec *grec;
 	int i;
@@ -1135,14 +1164,16 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 			continue;
 		}
 
+		src = eth_hdr(skb)->h_source;
 		if ((grec->grec_type == MLD2_CHANGE_TO_INCLUDE ||
 		     grec->grec_type == MLD2_MODE_IS_INCLUDE) &&
 		    ntohs(*nsrcs) == 0) {
 			br_ip6_multicast_leave_group(br, port, &grec->grec_mca,
-						     vid);
+						     vid, src);
 		} else {
 			err = br_ip6_multicast_add_group(br, port,
-							 &grec->grec_mca, vid);
+							 &grec->grec_mca, vid,
+							 src);
 			if (err)
 				break;
 		}
@@ -1465,7 +1496,8 @@ br_multicast_leave_group(struct net_bridge *br,
 			 struct net_bridge_port *port,
 			 struct br_ip *group,
 			 struct bridge_mcast_other_query *other_query,
-			 struct bridge_mcast_own_query *own_query)
+			 struct bridge_mcast_own_query *own_query,
+			 const unsigned char *src)
 {
 	struct net_bridge_mdb_htable *mdb;
 	struct net_bridge_mdb_entry *mp;
@@ -1489,7 +1521,7 @@ br_multicast_leave_group(struct net_bridge *br,
 		for (pp = &mp->ports;
 		     (p = mlock_dereference(*pp, br)) != NULL;
 		     pp = &p->next) {
-			if (p->port != port)
+			if (!br_port_group_equal(p, port, src))
 				continue;
 
 			rcu_assign_pointer(*pp, p->next);
@@ -1520,7 +1552,7 @@ br_multicast_leave_group(struct net_bridge *br,
 		for (p = mlock_dereference(mp->ports, br);
 		     p != NULL;
 		     p = mlock_dereference(p->next, br)) {
-			if (p->port != port)
+			if (!br_port_group_equal(p, port, src))
 				continue;
 
 			if (!hlist_unhashed(&p->mglist) &&
@@ -1571,7 +1603,8 @@ br_multicast_leave_group(struct net_bridge *br,
 static void br_ip4_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 __be32 group,
-					 __u16 vid)
+					 __u16 vid,
+					 const unsigned char *src)
 {
 	struct br_ip br_group;
 	struct bridge_mcast_own_query *own_query;
@@ -1586,14 +1619,15 @@ static void br_ip4_multicast_leave_group(struct net_bridge *br,
 	br_group.vid = vid;
 
 	br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
-				 own_query);
+				 own_query, src);
 }
 
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 const struct in6_addr *group,
-					 __u16 vid)
+					 __u16 vid,
+					 const unsigned char *src)
 {
 	struct br_ip br_group;
 	struct bridge_mcast_own_query *own_query;
@@ -1608,7 +1642,7 @@ static void br_ip6_multicast_leave_group(struct net_bridge *br,
 	br_group.vid = vid;
 
 	br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
-				 own_query);
+				 own_query, src);
 }
 #endif
 
@@ -1651,6 +1685,7 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 				 u16 vid)
 {
 	struct sk_buff *skb_trimmed = NULL;
+	const unsigned char *src;
 	struct igmphdr *ih;
 	int err;
 
@@ -1666,13 +1701,14 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 	}
 
 	ih = igmp_hdr(skb);
+	src = eth_hdr(skb)->h_source;
 	BR_INPUT_SKB_CB(skb)->igmp = ih->type;
 
 	switch (ih->type) {
 	case IGMP_HOST_MEMBERSHIP_REPORT:
 	case IGMPV2_HOST_MEMBERSHIP_REPORT:
 		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
-		err = br_ip4_multicast_add_group(br, port, ih->group, vid);
+		err = br_ip4_multicast_add_group(br, port, ih->group, vid, src);
 		break;
 	case IGMPV3_HOST_MEMBERSHIP_REPORT:
 		err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
@@ -1681,7 +1717,7 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 		err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
 		break;
 	case IGMP_HOST_LEAVE_MESSAGE:
-		br_ip4_multicast_leave_group(br, port, ih->group, vid);
+		br_ip4_multicast_leave_group(br, port, ih->group, vid, src);
 		break;
 	}
 
@@ -1701,6 +1737,7 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 				 u16 vid)
 {
 	struct sk_buff *skb_trimmed = NULL;
+	const unsigned char *src;
 	struct mld_msg *mld;
 	int err;
 
@@ -1720,8 +1757,10 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 
 	switch (mld->mld_type) {
 	case ICMPV6_MGM_REPORT:
+		src = eth_hdr(skb)->h_source;
 		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
-		err = br_ip6_multicast_add_group(br, port, &mld->mld_mca, vid);
+		err = br_ip6_multicast_add_group(br, port, &mld->mld_mca, vid,
+						 src);
 		break;
 	case ICMPV6_MLD2_REPORT:
 		err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
@@ -1730,7 +1769,8 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 		err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
 		break;
 	case ICMPV6_MGM_REDUCTION:
-		br_ip6_multicast_leave_group(br, port, &mld->mld_mca, vid);
+		src = eth_hdr(skb)->h_source;
+		br_ip6_multicast_leave_group(br, port, &mld->mld_mca, vid, src);
 		break;
 	}
 
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
index 4f831225d34f..a62deecd471b 100644
--- a/net/bridge/br_netlink.c
+++ b/net/bridge/br_netlink.c
@@ -123,6 +123,7 @@ static inline size_t br_port_info_size(void)
 		+ nla_total_size(1)	/* IFLA_BRPORT_GUARD */
 		+ nla_total_size(1)	/* IFLA_BRPORT_PROTECT */
 		+ nla_total_size(1)	/* IFLA_BRPORT_FAST_LEAVE */
+		+ nla_total_size(1)	/* IFLA_BRPORT_MCAST_TO_UCAST */
 		+ nla_total_size(1)	/* IFLA_BRPORT_LEARNING */
 		+ nla_total_size(1)	/* IFLA_BRPORT_UNICAST_FLOOD */
 		+ nla_total_size(1)	/* IFLA_BRPORT_PROXYARP */
@@ -173,6 +174,8 @@ static int br_port_fill_attrs(struct sk_buff *skb,
 		       !!(p->flags & BR_ROOT_BLOCK)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_FAST_LEAVE,
 		       !!(p->flags & BR_MULTICAST_FAST_LEAVE)) ||
+	    nla_put_u8(skb, IFLA_BRPORT_MCAST_TO_UCAST,
+		       !!(p->flags & BR_MULTICAST_TO_UNICAST)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_LEARNING, !!(p->flags & BR_LEARNING)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_UNICAST_FLOOD,
 		       !!(p->flags & BR_FLOOD)) ||
@@ -586,6 +589,7 @@ static const struct nla_policy br_port_policy[IFLA_BRPORT_MAX + 1] = {
 	[IFLA_BRPORT_PROXYARP]	= { .type = NLA_U8 },
 	[IFLA_BRPORT_PROXYARP_WIFI] = { .type = NLA_U8 },
 	[IFLA_BRPORT_MULTICAST_ROUTER] = { .type = NLA_U8 },
+	[IFLA_BRPORT_MCAST_TO_UCAST] = { .type = NLA_U8 },
 };
 
 /* Change the state of the port and notify spanning tree */
@@ -636,6 +640,7 @@ static int br_setport(struct net_bridge_port *p, struct nlattr *tb[])
 	br_set_port_flag(p, tb, IFLA_BRPORT_LEARNING, BR_LEARNING);
 	br_set_port_flag(p, tb, IFLA_BRPORT_UNICAST_FLOOD, BR_FLOOD);
 	br_set_port_flag(p, tb, IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD);
+	br_set_port_flag(p, tb, IFLA_BRPORT_MCAST_TO_UCAST, BR_MULTICAST_TO_UNICAST);
 	br_set_port_flag(p, tb, IFLA_BRPORT_PROXYARP, BR_PROXYARP);
 	br_set_port_flag(p, tb, IFLA_BRPORT_PROXYARP_WIFI, BR_PROXYARP_WIFI);
 
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 1b63177e0ccd..f038cfdc8d98 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -177,6 +177,7 @@ struct net_bridge_port_group {
 	struct timer_list		timer;
 	struct br_ip			addr;
 	unsigned char			flags;
+	unsigned char			eth_addr[ETH_ALEN];
 };
 
 struct net_bridge_mdb_entry
@@ -591,7 +592,7 @@ void br_multicast_free_pg(struct rcu_head *head);
 struct net_bridge_port_group *
 br_multicast_new_port_group(struct net_bridge_port *port, struct br_ip *group,
 			    struct net_bridge_port_group __rcu *next,
-			    unsigned char flags);
+			    unsigned char flags, const unsigned char *src);
 void br_mdb_init(void);
 void br_mdb_uninit(void);
 void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port,
diff --git a/net/bridge/br_sysfs_if.c b/net/bridge/br_sysfs_if.c
index abf711112418..228ebcd4fa51 100644
--- a/net/bridge/br_sysfs_if.c
+++ b/net/bridge/br_sysfs_if.c
@@ -188,6 +188,7 @@ static BRPORT_ATTR(multicast_router, S_IRUGO | S_IWUSR, show_multicast_router,
 		   store_multicast_router);
 
 BRPORT_ATTR_FLAG(multicast_fast_leave, BR_MULTICAST_FAST_LEAVE);
+BRPORT_ATTR_FLAG(multicast_to_unicast, BR_MULTICAST_TO_UNICAST);
 #endif
 
 static const struct brport_attribute *brport_attrs[] = {
@@ -214,6 +215,7 @@ static const struct brport_attribute *brport_attrs[] = {
 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
 	&brport_attr_multicast_router,
 	&brport_attr_multicast_fast_leave,
+	&brport_attr_multicast_to_unicast,
 #endif
 	&brport_attr_proxyarp,
 	&brport_attr_proxyarp_wifi,
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 05:24:28 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:28 +0100
Subject: [OpenWrt-Devel] [PATCH 02/10] smsc95xx: Use skb_cow_head to deal
 with cloned skbs
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-3-linus.walleij@linaro.org>

From: James Hughes <james.hughes at raspberrypi.org>

The driver was failing to check that the SKB wasn't cloned
before adding checksum data.
Replace existing handling to extend/copy the header buffer
with skb_cow_head.

Signed-off-by: James Hughes <james.hughes at raspberrypi.org>
Acked-by: Eric Dumazet <edumazet at google.com>
Acked-by: Woojung Huh <Woojung.Huh at microchip.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
 drivers/net/usb/smsc95xx.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index e29f4c0767eb..e719ecd69d01 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -2011,13 +2011,13 @@ static struct sk_buff *smsc95xx_tx_fixup(struct usbnet *dev,
 	/* We do not advertise SG, so skbs should be already linearized */
 	BUG_ON(skb_shinfo(skb)->nr_frags);
 
-	if (skb_headroom(skb) < overhead) {
-		struct sk_buff *skb2 = skb_copy_expand(skb,
-			overhead, 0, flags);
+	/* Make writable and expand header space by overhead if required */
+	if (skb_cow_head(skb, overhead)) {
+		/* Must deallocate here as returning NULL to indicate error
+		 * means the skb won't be deallocated in the caller.
+		 */
 		dev_kfree_skb_any(skb);
-		skb = skb2;
-		if (!skb)
-			return NULL;
+		return NULL;
 	}
 
 	if (csum) {
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 05:24:29 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:29 +0100
Subject: [OpenWrt-Devel] [PATCH 03/10] ch9200: use skb_cow_head() to deal
 with cloned skbs
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-4-linus.walleij@linaro.org>

From: Eric Dumazet <edumazet at google.com>

We need to ensure there is enough headroom to push extra header,
but we also need to check if we are allowed to change headers.

skb_cow_head() is the proper helper to deal with this.

Fixes: 4a476bd6d1d9 ("usbnet: New driver for QinHeng CH9200 devices")
Signed-off-by: Eric Dumazet <edumazet at google.com>
Cc: James Hughes <james.hughes at raspberrypi.org>
Cc: Matthew Garrett <mjg59 at srcf.ucam.org>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
 drivers/net/usb/ch9200.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/net/usb/ch9200.c b/drivers/net/usb/ch9200.c
index 8a40202c0a17..c4f1c363e24b 100644
--- a/drivers/net/usb/ch9200.c
+++ b/drivers/net/usb/ch9200.c
@@ -254,14 +254,9 @@ static struct sk_buff *ch9200_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
 	tx_overhead = 0x40;
 
 	len = skb->len;
-	if (skb_headroom(skb) < tx_overhead) {
-		struct sk_buff *skb2;
-
-		skb2 = skb_copy_expand(skb, tx_overhead, 0, flags);
+	if (skb_cow_head(skb, tx_overhead)) {
 		dev_kfree_skb_any(skb);
-		skb = skb2;
-		if (!skb)
-			return NULL;
+		return NULL;
 	}
 
 	__skb_push(skb, tx_overhead);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 05:24:30 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:30 +0100
Subject: [OpenWrt-Devel] [PATCH 04/10] kaweth: use skb_cow_head() to deal
 with cloned skbs
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-5-linus.walleij@linaro.org>

From: Eric Dumazet <edumazet at google.com>

We can use skb_cow_head() to properly deal with clones,
especially the ones coming from TCP stack that allow their head being
modified. This avoids a copy.

Signed-off-by: Eric Dumazet <edumazet at google.com>
Cc: James Hughes <james.hughes at raspberrypi.org>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
 drivers/net/usb/kaweth.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/net/usb/kaweth.c b/drivers/net/usb/kaweth.c
index 66b34ddbe216..72d9e7954b0a 100644
--- a/drivers/net/usb/kaweth.c
+++ b/drivers/net/usb/kaweth.c
@@ -803,18 +803,12 @@ static netdev_tx_t kaweth_start_xmit(struct sk_buff *skb,
 	}
 
 	/* We now decide whether we can put our special header into the sk_buff */
-	if (skb_cloned(skb) || skb_headroom(skb) < 2) {
-		/* no such luck - we make our own */
-		struct sk_buff *copied_skb;
-		copied_skb = skb_copy_expand(skb, 2, 0, GFP_ATOMIC);
-		dev_kfree_skb_irq(skb);
-		skb = copied_skb;
-		if (!copied_skb) {
-			kaweth->stats.tx_errors++;
-			netif_start_queue(net);
-			spin_unlock_irq(&kaweth->device_lock);
-			return NETDEV_TX_OK;
-		}
+	if (skb_cow_head(skb, 2)) {
+		kaweth->stats.tx_errors++;
+		netif_start_queue(net);
+		spin_unlock_irq(&kaweth->device_lock);
+		dev_kfree_skb_any(skb);
+		return NETDEV_TX_OK;
 	}
 
 	private_header = (__le16 *)__skb_push(skb, 2);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 05:24:31 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:31 +0100
Subject: [OpenWrt-Devel] [PATCH 05/10] ubifs: Drop softlimit and delta
 fields from struct ubifs_wbuf
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-6-linus.walleij@linaro.org>

From: Rafa? Mi?ecki <rafal at milecki.pl>

Values of these fields are set during init and never modified. They are
used (read) in a single function only. There isn't really any reason to
keep them in a struct. It only makes struct just a bit bigger without
any visible gain.

Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
Signed-off-by: Richard Weinberger <richard at nod.at>
---
 fs/ubifs/io.c    | 18 ++++++++++--------
 fs/ubifs/ubifs.h |  5 -----
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
index 97be41215332..4d6ce4a2a4b6 100644
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
@@ -452,16 +452,22 @@ static enum hrtimer_restart wbuf_timer_callback_nolock(struct hrtimer *timer)
  */
 static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
 {
+	ktime_t softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
+	unsigned long long delta;
+
+	delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
+	delta *= 1000000000ULL;
+
 	ubifs_assert(!hrtimer_active(&wbuf->timer));
+	ubifs_assert(delta <= ULONG_MAX);
 
 	if (wbuf->no_timer)
 		return;
 	dbg_io("set timer for jhead %s, %llu-%llu millisecs",
 	       dbg_jhead(wbuf->jhead),
-	       div_u64(ktime_to_ns(wbuf->softlimit), USEC_PER_SEC),
-	       div_u64(ktime_to_ns(wbuf->softlimit) + wbuf->delta,
-		       USEC_PER_SEC));
-	hrtimer_start_range_ns(&wbuf->timer, wbuf->softlimit, wbuf->delta,
+	       div_u64(ktime_to_ns(softlimit), USEC_PER_SEC),
+	       div_u64(ktime_to_ns(softlimit) + delta, USEC_PER_SEC));
+	hrtimer_start_range_ns(&wbuf->timer, softlimit, delta,
 			       HRTIMER_MODE_REL);
 }
 
@@ -1059,10 +1065,6 @@ int ubifs_wbuf_init(struct ubifs_info *c, struct ubifs_wbuf *wbuf)
 
 	hrtimer_init(&wbuf->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	wbuf->timer.function = wbuf_timer_callback_nolock;
-	wbuf->softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
-	wbuf->delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
-	wbuf->delta *= 1000000000ULL;
-	ubifs_assert(wbuf->delta <= ULONG_MAX);
 	return 0;
 }
 
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index 096035eb29d0..ade4b3137a1d 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -645,9 +645,6 @@ typedef int (*ubifs_lpt_scan_callback)(struct ubifs_info *c,
  * @io_mutex: serializes write-buffer I/O
  * @lock: serializes @buf, @lnum, @offs, @avail, @used, @next_ino and @inodes
  *        fields
- * @softlimit: soft write-buffer timeout interval
- * @delta: hard and soft timeouts delta (the timer expire interval is @softlimit
- *         and @softlimit + @delta)
  * @timer: write-buffer timer
  * @no_timer: non-zero if this write-buffer does not have a timer
  * @need_sync: non-zero if the timer expired and the wbuf needs sync'ing
@@ -676,8 +673,6 @@ struct ubifs_wbuf {
 	int (*sync_callback)(struct ubifs_info *c, int lnum, int free, int pad);
 	struct mutex io_mutex;
 	spinlock_t lock;
-	ktime_t softlimit;
-	unsigned long long delta;
 	struct hrtimer timer;
 	unsigned int no_timer:1;
 	unsigned int need_sync:1;
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 05:24:32 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:32 +0100
Subject: [OpenWrt-Devel] [PATCH 06/10] ubifs: Use dirty_writeback_interval
 value for wbuf timer
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-7-linus.walleij@linaro.org>

From: Rafa? Mi?ecki <rafal at milecki.pl>

Right now wbuf timer has hardcoded timeouts and there is no place for
manual adjustments. Some projects / cases many need that though. Few
file systems allow doing that by respecting dirty_writeback_interval
that can be set using sysctl (dirty_writeback_centisecs).

Lowering dirty_writeback_interval could be some way of dealing with user
space apps lacking proper fsyncs. This is definitely *not* a perfect
solution but we don't have ideal (user space) world. There were already
advanced discussions on this matter, mostly when ext4 was introduced and
it wasn't behaving as ext3. Anyway, the final decision was to add some
hacks to the ext4, as trying to fix whole user space or adding new API
was pointless.

We can't (and shouldn't?) just follow ext4. We can't e.g. sync on close
as this would cause too many commits and flash wearing. On the other
hand we still should allow some trade-off between -o sync and default
wbuf timeout. Respecting dirty_writeback_interval should allow some sane
cutomizations if used warily.

Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
Signed-off-by: Richard Weinberger <richard at nod.at>
---
 fs/ubifs/io.c    | 8 ++++----
 fs/ubifs/ubifs.h | 4 ----
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
index 4d6ce4a2a4b6..3be28900bf37 100644
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
@@ -452,11 +452,11 @@ static enum hrtimer_restart wbuf_timer_callback_nolock(struct hrtimer *timer)
  */
 static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
 {
-	ktime_t softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
-	unsigned long long delta;
+	ktime_t softlimit = ms_to_ktime(dirty_writeback_interval * 10);
+	unsigned long long delta = dirty_writeback_interval;
 
-	delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
-	delta *= 1000000000ULL;
+	/* centi to milli, milli to nano, then 10% */
+	delta *= 10ULL * NSEC_PER_MSEC / 10ULL;
 
 	ubifs_assert(!hrtimer_active(&wbuf->timer));
 	ubifs_assert(delta <= ULONG_MAX);
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index ade4b3137a1d..b8b18d446a49 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -83,10 +83,6 @@
  */
 #define BGT_NAME_PATTERN "ubifs_bgt%d_%d"
 
-/* Write-buffer synchronization timeout interval in seconds */
-#define WBUF_TIMEOUT_SOFTLIMIT 3
-#define WBUF_TIMEOUT_HARDLIMIT 5
-
 /* Maximum possible inode number (only 32-bit inodes are supported now) */
 #define MAX_INUM 0xFFFFFFFF
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 05:24:33 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:33 +0100
Subject: [OpenWrt-Devel] [PATCH 07/10] usb: dwc2: Remove unnecessary kfree
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-8-linus.walleij@linaro.org>

From: John Youn <johnyoun at synopsys.com>

This shouldn't be freed by the HCD as it is owned by the core and
allocated with devm_kzalloc.

Signed-off-by: John Youn <johnyoun at synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi at linux.intel.com>
---
 drivers/usb/dwc2/hcd.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
index 984d6aae7529..0e5435330c07 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -5202,7 +5202,6 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq)
 error2:
 	usb_put_hcd(hcd);
 error1:
-	kfree(hsotg->core_params);
 
 #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
 	kfree(hsotg->last_frame_num_array);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 05:24:34 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:34 +0100
Subject: [OpenWrt-Devel] [PATCH 08/10] netfilter: nf_tables: fix mismatch in
 big-endian system
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-9-linus.walleij@linaro.org>

From: Liping Zhang <zlpnobody at gmail.com>

Currently, there are two different methods to store an u16 integer to
the u32 data register. For example:
  u32 *dest = &regs->data[priv->dreg];
  1. *dest = 0; *(u16 *) dest = val_u16;
  2. *dest = val_u16;

For method 1, the u16 value will be stored like this, either in
big-endian or little-endian system:
  0          15           31
  +-+-+-+-+-+-+-+-+-+-+-+-+
  |   Value   |     0     |
  +-+-+-+-+-+-+-+-+-+-+-+-+

For method 2, in little-endian system, the u16 value will be the same
as listed above. But in big-endian system, the u16 value will be stored
like this:
  0          15           31
  +-+-+-+-+-+-+-+-+-+-+-+-+
  |     0     |   Value   |
  +-+-+-+-+-+-+-+-+-+-+-+-+

So later we use "memcmp(&regs->data[priv->sreg], data, 2);" to do
compare in nft_cmp, nft_lookup expr ..., method 2 will get the wrong
result in big-endian system, as 0~15 bits will always be zero.

For the similar reason, when loading an u16 value from the u32 data
register, we should use "*(u16 *) sreg;" instead of "(u16)*sreg;",
the 2nd method will get the wrong value in the big-endian system.

So introduce some wrapper functions to store/load an u8 or u16
integer to/from the u32 data register, and use them in the right
place.

This is OpenWrts backport of upstream commit
10596608c4d62cb8c1c2b806debcbd32fe657e71
"netfilter: nf_tables: fix mismatch in big-endian system",
the upstream commit does not work right off.

Signed-off-by: Liping Zhang <zlpnobody at gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
---
 include/net/netfilter/nf_tables.h   | 29 ++++++++++++++++++++
 net/ipv4/netfilter/nft_masq_ipv4.c  |  8 +++---
 net/ipv4/netfilter/nft_redir_ipv4.c |  8 +++---
 net/ipv6/netfilter/nft_masq_ipv6.c  |  8 +++---
 net/ipv6/netfilter/nft_redir_ipv6.c |  8 +++---
 net/netfilter/nft_ct.c              | 10 +++----
 net/netfilter/nft_meta.c            | 42 +++++++++++++++--------------
 net/netfilter/nft_nat.c             |  8 +++---
 8 files changed, 76 insertions(+), 45 deletions(-)

diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index b02af0bf5777..66f6b84df287 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -87,6 +87,35 @@ struct nft_regs {
 	};
 };
 
+/* Store/load an u16 or u8 integer to/from the u32 data register.
+ *
+ * Note, when using concatenations, register allocation happens at 32-bit
+ * level. So for store instruction, pad the rest part with zero to avoid
+ * garbage values.
+ */
+
+static inline void nft_reg_store16(u32 *dreg, u16 val)
+{
+	*dreg = 0;
+	*(u16 *)dreg = val;
+}
+
+static inline void nft_reg_store8(u32 *dreg, u8 val)
+{
+	*dreg = 0;
+	*(u8 *)dreg = val;
+}
+
+static inline u16 nft_reg_load16(u32 *sreg)
+{
+	return *(u16 *)sreg;
+}
+
+static inline u8 nft_reg_load8(u32 *sreg)
+{
+	return *(u8 *)sreg;
+}
+
 static inline void nft_data_copy(u32 *dst, const struct nft_data *src,
 				 unsigned int len)
 {
diff --git a/net/ipv4/netfilter/nft_masq_ipv4.c b/net/ipv4/netfilter/nft_masq_ipv4.c
index 51ced81b616c..dc3628a396ec 100644
--- a/net/ipv4/netfilter/nft_masq_ipv4.c
+++ b/net/ipv4/netfilter/nft_masq_ipv4.c
@@ -26,10 +26,10 @@ static void nft_masq_ipv4_eval(const struct nft_expr *expr,
 	memset(&range, 0, sizeof(range));
 	range.flags = priv->flags;
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 	}
 	regs->verdict.code = nf_nat_masquerade_ipv4(pkt->skb, pkt->hook,
 						    &range, pkt->out);
diff --git a/net/ipv4/netfilter/nft_redir_ipv4.c b/net/ipv4/netfilter/nft_redir_ipv4.c
index c09d4381427e..f760524e1353 100644
--- a/net/ipv4/netfilter/nft_redir_ipv4.c
+++ b/net/ipv4/netfilter/nft_redir_ipv4.c
@@ -26,10 +26,10 @@ static void nft_redir_ipv4_eval(const struct nft_expr *expr,
 
 	memset(&mr, 0, sizeof(mr));
 	if (priv->sreg_proto_min) {
-		mr.range[0].min.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		mr.range[0].max.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		mr.range[0].min.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		mr.range[0].max.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		mr.range[0].flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
diff --git a/net/ipv6/netfilter/nft_masq_ipv6.c b/net/ipv6/netfilter/nft_masq_ipv6.c
index 9597ffb74077..b74a420050c4 100644
--- a/net/ipv6/netfilter/nft_masq_ipv6.c
+++ b/net/ipv6/netfilter/nft_masq_ipv6.c
@@ -27,10 +27,10 @@ static void nft_masq_ipv6_eval(const struct nft_expr *expr,
 	memset(&range, 0, sizeof(range));
 	range.flags = priv->flags;
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 	}
 	regs->verdict.code = nf_nat_masquerade_ipv6(pkt->skb, &range, pkt->out);
 }
diff --git a/net/ipv6/netfilter/nft_redir_ipv6.c b/net/ipv6/netfilter/nft_redir_ipv6.c
index aca44e89a881..7ef58e493fca 100644
--- a/net/ipv6/netfilter/nft_redir_ipv6.c
+++ b/net/ipv6/netfilter/nft_redir_ipv6.c
@@ -26,10 +26,10 @@ static void nft_redir_ipv6_eval(const struct nft_expr *expr,
 
 	memset(&range, 0, sizeof(range));
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min],
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max],
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		range.flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
diff --git a/net/netfilter/nft_ct.c b/net/netfilter/nft_ct.c
index d7b0d171172a..2b9fda71fa8b 100644
--- a/net/netfilter/nft_ct.c
+++ b/net/netfilter/nft_ct.c
@@ -77,7 +77,7 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 
 	switch (priv->key) {
 	case NFT_CT_DIRECTION:
-		*dest = CTINFO2DIR(ctinfo);
+		nft_reg_store8(dest, CTINFO2DIR(ctinfo));
 		return;
 	case NFT_CT_STATUS:
 		*dest = ct->status;
@@ -129,10 +129,10 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 		return;
 	}
 	case NFT_CT_L3PROTOCOL:
-		*dest = nf_ct_l3num(ct);
+		nft_reg_store8(dest, nf_ct_l3num(ct));
 		return;
 	case NFT_CT_PROTOCOL:
-		*dest = nf_ct_protonum(ct);
+		nft_reg_store8(dest, nf_ct_protonum(ct));
 		return;
 	default:
 		break;
@@ -149,10 +149,10 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 		       nf_ct_l3num(ct) == NFPROTO_IPV4 ? 4 : 16);
 		return;
 	case NFT_CT_PROTO_SRC:
-		*dest = (__force __u16)tuple->src.u.all;
+		nft_reg_store16(dest, (__force u16)tuple->src.u.all);
 		return;
 	case NFT_CT_PROTO_DST:
-		*dest = (__force __u16)tuple->dst.u.all;
+		nft_reg_store16(dest, (__force u16)tuple->dst.u.all);
 		return;
 	default:
 		break;
diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c
index 7c3395513ff0..cec8dc0e5e6f 100644
--- a/net/netfilter/nft_meta.c
+++ b/net/netfilter/nft_meta.c
@@ -45,16 +45,15 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 		*dest = skb->len;
 		break;
 	case NFT_META_PROTOCOL:
-		*dest = 0;
-		*(__be16 *)dest = skb->protocol;
+		nft_reg_store16(dest, (__force u16)skb->protocol);
 		break;
 	case NFT_META_NFPROTO:
-		*dest = pkt->pf;
+		nft_reg_store8(dest, pkt->pf);
 		break;
 	case NFT_META_L4PROTO:
 		if (!pkt->tprot_set)
 			goto err;
-		*dest = pkt->tprot;
+		nft_reg_store8(dest, pkt->tprot);
 		break;
 	case NFT_META_PRIORITY:
 		*dest = skb->priority;
@@ -85,14 +84,12 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 	case NFT_META_IIFTYPE:
 		if (in == NULL)
 			goto err;
-		*dest = 0;
-		*(u16 *)dest = in->type;
+		nft_reg_store16(dest, in->type);
 		break;
 	case NFT_META_OIFTYPE:
 		if (out == NULL)
 			goto err;
-		*dest = 0;
-		*(u16 *)dest = out->type;
+		nft_reg_store16(dest, out->type);
 		break;
 	case NFT_META_SKUID:
 		sk = skb_to_full_sk(skb);
@@ -142,22 +139,22 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 #endif
 	case NFT_META_PKTTYPE:
 		if (skb->pkt_type != PACKET_LOOPBACK) {
-			*dest = skb->pkt_type;
+			nft_reg_store8(dest, skb->pkt_type);
 			break;
 		}
 
 		switch (pkt->pf) {
 		case NFPROTO_IPV4:
 			if (ipv4_is_multicast(ip_hdr(skb)->daddr))
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 			else
-				*dest = PACKET_BROADCAST;
+				nft_reg_store8(dest, PACKET_BROADCAST);
 			break;
 		case NFPROTO_IPV6:
 			if (ipv6_hdr(skb)->daddr.s6_addr[0] == 0xFF)
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 			else
-				*dest = PACKET_BROADCAST;
+				nft_reg_store8(dest, PACKET_BROADCAST);
 			break;
 		case NFPROTO_NETDEV:
 			switch (skb->protocol) {
@@ -171,14 +168,14 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 					goto err;
 
 				if (ipv4_is_multicast(iph->daddr))
-					*dest = PACKET_MULTICAST;
+					nft_reg_store8(dest, PACKET_MULTICAST);
 				else
-					*dest = PACKET_BROADCAST;
+					nft_reg_store8(dest, PACKET_BROADCAST);
 
 				break;
 			}
 			case htons(ETH_P_IPV6):
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 				break;
 			default:
 				WARN_ON_ONCE(1);
@@ -233,7 +230,9 @@ void nft_meta_set_eval(const struct nft_expr *expr,
 {
 	const struct nft_meta *meta = nft_expr_priv(expr);
 	struct sk_buff *skb = pkt->skb;
-	u32 value = regs->data[meta->sreg];
+	u32 *sreg = &regs->data[meta->sreg];
+	u32 value = *sreg;
+	u8 pkt_type;
 
 	switch (meta->key) {
 	case NFT_META_MARK:
@@ -243,9 +242,12 @@ void nft_meta_set_eval(const struct nft_expr *expr,
 		skb->priority = value;
 		break;
 	case NFT_META_PKTTYPE:
-		if (skb->pkt_type != value &&
-		    skb_pkt_type_ok(value) && skb_pkt_type_ok(skb->pkt_type))
-			skb->pkt_type = value;
+		pkt_type = nft_reg_load8(sreg);
+
+		if (skb->pkt_type != pkt_type &&
+		    skb_pkt_type_ok(pkt_type) &&
+		    skb_pkt_type_ok(skb->pkt_type))
+			skb->pkt_type = pkt_type;
 		break;
 	case NFT_META_NFTRACE:
 		skb->nf_trace = !!value;
diff --git a/net/netfilter/nft_nat.c b/net/netfilter/nft_nat.c
index ee2d71753746..4c48e9bb21e2 100644
--- a/net/netfilter/nft_nat.c
+++ b/net/netfilter/nft_nat.c
@@ -65,10 +65,10 @@ static void nft_nat_eval(const struct nft_expr *expr,
 	}
 
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		range.flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 05:24:35 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:35 +0100
Subject: [OpenWrt-Devel] [PATCH 09/10] net: Allow class-e address assignment
 via ifconfig ioctl
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-10-linus.walleij@linaro.org>

From: Dave Taht <dave.taht at gmail.com>

While most distributions long ago switched to the iproute2 suite
of utilities, which allow class-e (240.0.0.0/4) address assignment,
distributions relying on busybox, toybox and other forms of
ifconfig cannot assign class-e addresses without this kernel patch.

While CIDR has been obsolete for 2 decades, and a survey of all the
open source code in the world shows the IN_whatever macros are also
obsolete... rather than obsolete CIDR from this ioctl entirely, this
patch merely enables class-e assignment, sanely.

Signed-off-by: Dave Taht <dave.taht at gmail.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
 include/uapi/linux/in.h | 10 +++++++---
 net/ipv4/devinet.c      |  5 +++--
 net/ipv4/ipconfig.c     |  2 ++
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/include/uapi/linux/in.h b/include/uapi/linux/in.h
index eaf94919291a..550b234be4a1 100644
--- a/include/uapi/linux/in.h
+++ b/include/uapi/linux/in.h
@@ -264,10 +264,14 @@ struct sockaddr_in {
 
 #define	IN_CLASSD(a)		((((long int) (a)) & 0xf0000000) == 0xe0000000)
 #define	IN_MULTICAST(a)		IN_CLASSD(a)
-#define IN_MULTICAST_NET	0xF0000000
+#define	IN_MULTICAST_NET	0xe0000000
 
-#define	IN_EXPERIMENTAL(a)	((((long int) (a)) & 0xf0000000) == 0xf0000000)
-#define	IN_BADCLASS(a)		IN_EXPERIMENTAL((a))
+#define	IN_BADCLASS(a)		((((long int) (a) ) == 0xffffffff)
+#define	IN_EXPERIMENTAL(a)	IN_BADCLASS((a))
+
+#define	IN_CLASSE(a)		((((long int) (a)) & 0xf0000000) == 0xf0000000)
+#define	IN_CLASSE_NET		0xffffffff
+#define	IN_CLASSE_NSHIFT	0
 
 /* Address to accept any incoming messages. */
 #define	INADDR_ANY		((unsigned long int) 0x00000000)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index f08f984ebc56..32335ed0e9fe 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -898,17 +898,18 @@ static int inet_abc_len(__be32 addr)
 {
 	int rc = -1;	/* Something else, probably a multicast. */
 
-	if (ipv4_is_zeronet(addr))
+	if (ipv4_is_zeronet(addr) || ipv4_is_lbcast(addr))
 		rc = 0;
 	else {
 		__u32 haddr = ntohl(addr);
-
 		if (IN_CLASSA(haddr))
 			rc = 8;
 		else if (IN_CLASSB(haddr))
 			rc = 16;
 		else if (IN_CLASSC(haddr))
 			rc = 24;
+		else if (IN_CLASSE(haddr))
+			rc = 32;
 	}
 
 	return rc;
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index d278b06459ac..ecf19f7ab5fd 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -455,6 +455,8 @@ static int __init ic_defaults(void)
 			ic_netmask = htonl(IN_CLASSB_NET);
 		else if (IN_CLASSC(ntohl(ic_myaddr)))
 			ic_netmask = htonl(IN_CLASSC_NET);
+		else if (IN_CLASSE(ntohl(ic_myaddr)))
+			ic_netmask = htonl(IN_CLASSE_NET);
 		else {
 			pr_err("IP-Config: Unable to guess netmask for address %pI4\n",
 			       &ic_myaddr);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 05:24:36 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 11:24:36 +0100
Subject: [OpenWrt-Devel] [PATCH 10/10] uapi/if_ether.h: prevent redefinition
 of struct ethhdr
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214102436.5092-11-linus.walleij@linaro.org>

From: Hauke Mehrtens <hauke at hauke-m.de>

Musl provides its own ethhdr struct definition. Add a guard to prevent
its definition of the appropriate musl header has already been included.

glibc does not implement this header, but when glibc will implement this
they can just define __UAPI_DEF_ETHHDR 0 to make it work with the
kernel.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
 include/uapi/linux/if_ether.h    | 3 +++
 include/uapi/linux/libc-compat.h | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
index 659b1634de61..b31e2f836317 100644
--- a/include/uapi/linux/if_ether.h
+++ b/include/uapi/linux/if_ether.h
@@ -22,6 +22,7 @@
 #define _UAPI_LINUX_IF_ETHER_H
 
 #include <linux/types.h>
+#include <linux/libc-compat.h>
 
 /*
  *	IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
@@ -139,11 +140,13 @@
  *	This is an Ethernet frame header.
  */
 
+#if __UAPI_DEF_ETHHDR
 struct ethhdr {
 	unsigned char	h_dest[ETH_ALEN];	/* destination eth addr	*/
 	unsigned char	h_source[ETH_ALEN];	/* source ether addr	*/
 	__be16		h_proto;		/* packet type ID field	*/
 } __attribute__((packed));
+#endif
 
 
 #endif /* _UAPI_LINUX_IF_ETHER_H */
diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
index 774cb2db1b89..7c098d68d5e5 100644
--- a/include/uapi/linux/libc-compat.h
+++ b/include/uapi/linux/libc-compat.h
@@ -263,4 +263,10 @@
 
 #endif /* __GLIBC__ */
 
+/* Definitions for if_ether.h */
+/* allow libcs like musl to deactivate this, glibc does not implement this. */
+#ifndef __UAPI_DEF_ETHHDR
+#define __UAPI_DEF_ETHHDR		1
+#endif
+
 #endif /* _UAPI_LIBC_COMPAT_H */
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From gregkh at linuxfoundation.org  Thu Feb 14 05:38:28 2019
From: gregkh at linuxfoundation.org (Greg Kroah-Hartman)
Date: Thu, 14 Feb 2019 11:38:28 +0100
Subject: [OpenWrt-Devel] [PATCH 01/10] bridge: multicast to unicast
In-Reply-To: <20190214102436.5092-2-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
 <20190214102436.5092-2-linus.walleij@linaro.org>
Message-ID: <20190214103828.GA7273@kroah.com>

On Thu, Feb 14, 2019 at 11:24:27AM +0100, Linus Walleij wrote:
> From: Felix Fietkau <nbd at nbd.name>
> 
> Implements an optional, per bridge port flag and feature to deliver
> multicast packets to any host on the according port via unicast
> individually. This is done by copying the packet per host and
> changing the multicast destination MAC to a unicast one accordingly.
> 
> multicast-to-unicast works on top of the multicast snooping feature of
> the bridge. Which means unicast copies are only delivered to hosts which
> are interested in it and signalized this via IGMP/MLD reports
> previously.
> 
> This feature is intended for interface types which have a more reliable
> and/or efficient way to deliver unicast packets than broadcast ones
> (e.g. wifi).
> 
> However, it should only be enabled on interfaces where no IGMPv2/MLDv1
> report suppression takes place. This feature is disabled by default.
> 
> The initial patch and idea is from Felix Fietkau.
> 
> Signed-off-by: Felix Fietkau <nbd at nbd.name>
> [linus.luessing at c0d3.blue: various bug + style fixes, commit message]
> Signed-off-by: Linus L?ssing <linus.luessing at c0d3.blue>
> Reviewed-by: Nikolay Aleksandrov <nikolay at cumulusnetworks.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> ---
>  include/linux/if_bridge.h    |  1 +
>  include/uapi/linux/if_link.h |  1 +
>  net/bridge/br_forward.c      | 39 +++++++++++++++-
>  net/bridge/br_mdb.c          |  2 +-
>  net/bridge/br_multicast.c    | 90 ++++++++++++++++++++++++++----------
>  net/bridge/br_netlink.c      |  5 ++
>  net/bridge/br_private.h      |  3 +-
>  net/bridge/br_sysfs_if.c     |  2 +
>  8 files changed, 114 insertions(+), 29 deletions(-)

What is the git commit id of this patch upstream?  I need that on the
patches themselves.

thanks,

greg k-h

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From gregkh at linuxfoundation.org  Thu Feb 14 05:42:06 2019
From: gregkh at linuxfoundation.org (Greg Kroah-Hartman)
Date: Thu, 14 Feb 2019 11:42:06 +0100
Subject: [OpenWrt-Devel] [PATCH 00/10] Stable material from OpenWrt
In-Reply-To: <20190214102436.5092-1-linus.walleij@linaro.org>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
Message-ID: <20190214104206.GB7273@kroah.com>

On Thu, Feb 14, 2019 at 11:24:26AM +0100, Linus Walleij wrote:
> This is a series of patches used in OpenWrt's v4.9 backports
> that seem to be of generic interest to v4.9.y
> 
> As a bunch of commits hit networking I CC DaveM and
> here so the can nod/object to these, I think
> the want a bit of control over what goes into networking
> stable.
> 
> I avoided two patch sets dealing with IPv6 tunneling
> and netfilter that seem to still be fixed and I feel generally
> incompetent about.
> 
> For the remaining patches I cherry-picked the upstream
> commits except for (8/10)
> "netfilter: nf_tables: fix mismatch in big-endian system"
> where I used OpenWrt's backport.
> 
> The list of upstream commits in patch order:
> 6db6f0eae6052b70885562e1733896647ec1d807
> "bridge: multicast to unicast"
> e9156cd26a495a18706e796f02a81fee41ec14f4
> "smsc95xx: Use skb_cow_head to deal with cloned skbs"
> 6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40
> "ch9200: use skb_cow_head() to deal with cloned skbs"
> 39fba7835aacda65284a86e611774cbba71dac20
> "kaweth: use skb_cow_head() to deal with cloned skbs"
> 854826c9d526fd81077742c3b000e3f7fcaef3ce
> "ubifs: Drop softlimit and delta fields from struct ubifs_wbuf"
> 1b7fc2c0069f3864a3dda15430b7aded31c0bfcc
> "ubifs: Use dirty_writeback_interval value for wbuf timer"
> cd4b1e34655d46950c065d9284b596cd8d7b28cd
> "usb: dwc2: Remove unnecessary kfree"
> 10596608c4d62cb8c1c2b806debcbd32fe657e7
> "netfilter: nf_tables: fix mismatch in big-endian system"
> 65cab850f0eeaa9180bd2e10a231964f33743edf
> "net: Allow class-e address assignment via ifconfig ioctl"
> 6926e041a8920c8ec27e4e155efa760aa01551fd
> "uapi/if_ether.h: prevent redefinition of struct ethhdr"

Ick that's hard to read.  Going with a bit longer line is better:

6db6f0eae6052b70885562e1733896647ec1d807 "bridge: multicast to unicast"
e9156cd26a495a18706e796f02a81fee41ec14f4 "smsc95xx: Use skb_cow_head to deal with cloned skbs"
6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 "ch9200: use skb_cow_head() to deal with cloned skbs"
39fba7835aacda65284a86e611774cbba71dac20 "kaweth: use skb_cow_head() to deal with cloned skbs"
854826c9d526fd81077742c3b000e3f7fcaef3ce "ubifs: Drop softlimit and delta fields from struct ubifs_wbuf"
1b7fc2c0069f3864a3dda15430b7aded31c0bfcc "ubifs: Use dirty_writeback_interval value for wbuf timer"
cd4b1e34655d46950c065d9284b596cd8d7b28cd "usb: dwc2: Remove unnecessary kfree"
10596608c4d62cb8c1c2b806debcbd32fe657e7 "netfilter: nf_tables: fix mismatch in big-endian system"
65cab850f0eeaa9180bd2e10a231964f33743edf "net: Allow class-e address assignment via ifconfig ioctl"
6926e041a8920c8ec27e4e155efa760aa01551fd "uapi/if_ether.h: prevent redefinition of struct ethhdr"

Or better yet, use the "standard" way we reference ids in the kernel:
6db6f0eae605 ("bridge: multicast to unicast")
e9156cd26a49 ("smsc95xx: Use skb_cow_head to deal with cloned skbs")
...

Anyway, I need those ids in the patches themselves, as we do for all
stable patches (look at how they look in the stable trees for examples).

Also, some of these are in kernels newer than 4.14, so if I were to
apply them to 4.9 only, someone moving to a newer kernel would have a
regression, which isn't ok.

65cab850f0ee ("net: Allow class-e address assignment via ifconfig
ioctl") is one such example of that type of patch.

So I can't take these as-is, sorry.

greg k-h

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 06:58:31 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 12:58:31 +0100
Subject: [OpenWrt-Devel] [PATCH 00/10] Stable material from OpenWrt
In-Reply-To: <20190214104206.GB7273@kroah.com>
References: <20190214102436.5092-1-linus.walleij@linaro.org>
 <20190214104206.GB7273@kroah.com>
Message-ID: <CACRpkdY_Ce4cnCB41xckZmhJT9Wp1Ru0C6FTv2PTmYf+8vQ87A@mail.gmail.com>

On Thu, Feb 14, 2019 at 11:42 AM Greg Kroah-Hartman
<gregkh at linuxfoundation.org> wrote:

> Also, some of these are in kernels newer than 4.14, so if I were to
> apply them to 4.9 only, someone moving to a newer kernel would have a
> regression, which isn't ok.
>
> 65cab850f0ee ("net: Allow class-e address assignment via ifconfig
> ioctl") is one such example of that type of patch.
>
> So I can't take these as-is, sorry.

OK I will look closer for each of them and try to mention which stable
each of them should go to, I thought they would all be for v4.9
but I was wrong. I'll update and respin, NP.

Yours,
Linus Walleij

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Thu Feb 14 07:14:55 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Thu, 14 Feb 2019 12:14:55 +0000
Subject: [OpenWrt-Devel] [PATCH 1/2] dnsmasq: allow using dnsmasq as the
 sole resolver
Message-ID: <20190214121456.4784-1-yszhou4tech@gmail.com>

Currently it seems impossible to configure /etc/config/dhcp to achieve
the following use case

 - run dnsmasq with no-resolv
 - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"

Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
to achive the 2nd effect above, but setting resolvfile requires noresolv
being false.

A new boolean option "localuse" is added to indicate that we intend to
use dnsmasq as the local dns resolver.  It's false by default and to
align with old behaviour it will be true automatically if resolvfile is
set to /tmp/resolv.conf.auto

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 package/network/services/dnsmasq/Makefile     |  2 +-
 .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index 03114e7d92..d51f23e48b 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.80
-PKG_RELEASE:=7
+PKG_RELEASE:=8
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 9c922eec6c..05c555bd8c 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -731,7 +731,9 @@ dhcp_relay_add() {
 
 dnsmasq_start()
 {
-	local cfg="$1" disabled resolvfile user_dhcpscript
+	local cfg="$1"
+	local disabled user_dhcpscript
+	local resolvfile localuse
 
 	config_get_bool disabled "$cfg" disabled 0
 	[ "$disabled" -gt 0 ] && return 0
@@ -881,14 +883,14 @@ dnsmasq_start()
 	config_get_bool cachelocal "$cfg" cachelocal 1
 
 	config_get_bool noresolv "$cfg" noresolv 0
+	config_get_bool localuse "$cfg" localuse 0
 	if [ "$noresolv" != "1" ]; then
-		config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
-		# So jail doesn't complain if file missing
-		[ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
+		config_get resolvfile "$cfg" resolvfile
+		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
+		xappend "--resolv-file=$resolvfile"
+		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
 	fi
 
-	[ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
-
 	config_get hostsfile "$cfg" dhcphostsfile
 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
 
@@ -1010,7 +1012,7 @@ dnsmasq_start()
 	mv -f $CONFIGFILE_TMP $CONFIGFILE
 	mv -f $HOSTFILE_TMP $HOSTFILE
 
-	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
+	[ "$localuse" -gt 0 ] && {
 		rm -f /tmp/resolv.conf
 		[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
 			echo "search $DOMAIN" >> /tmp/resolv.conf
@@ -1036,17 +1038,15 @@ dnsmasq_start()
 
 dnsmasq_stop()
 {
-	local cfg="$1" resolvfile
+	local cfg="$1"
+	local noresolv resolvfile localuse
 
+	config_get_bool noresolv "$cfg" noresolv 0
+	config_get_bool localuse "$cfg" localuse 0
 	config_get resolvfile "$cfg" "resolvfile"
 
-	#relink /tmp/resolve.conf only for main instance
-	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
-		[ -f /tmp/resolv.conf ] && {
-			rm -f /tmp/resolv.conf
-			ln -s "$resolvfile" /tmp/resolv.conf
-		}
-	}
+	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
+	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
 
 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
 }

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Thu Feb 14 07:14:56 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Thu, 14 Feb 2019 12:14:56 +0000
Subject: [OpenWrt-Devel] [PATCH 2/2] dnsmasq: decouple /tmp/resolv.conf from
 value of option resolvfile
In-Reply-To: <20190214121456.4784-1-yszhou4tech@gmail.com>
References: <20190214121456.4784-1-yszhou4tech@gmail.com>
Message-ID: <20190214121456.4784-2-yszhou4tech@gmail.com>

Option resolvfile should now affect only how dnsmasq itself will run.
The implicit effect of its specific value on other parts of the system
makes the code unnecessarily hard to follow

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 package/network/services/dnsmasq/Makefile           | 2 +-
 package/network/services/dnsmasq/files/dnsmasq.init | 7 +------
 2 files changed, 2 insertions(+), 7 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index d51f23e48b..5e83b4f8e5 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.80
-PKG_RELEASE:=8
+PKG_RELEASE:=9
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 05c555bd8c..22471c11aa 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -888,7 +888,6 @@ dnsmasq_start()
 		config_get resolvfile "$cfg" resolvfile
 		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
 		xappend "--resolv-file=$resolvfile"
-		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
 	fi
 
 	config_get hostsfile "$cfg" dhcphostsfile
@@ -1039,13 +1038,9 @@ dnsmasq_start()
 dnsmasq_stop()
 {
 	local cfg="$1"
-	local noresolv resolvfile localuse
+	local localuse
 
-	config_get_bool noresolv "$cfg" noresolv 0
 	config_get_bool localuse "$cfg" localuse 0
-	config_get resolvfile "$cfg" "resolvfile"
-
-	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
 	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
 
 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From seckelmann at datto.com  Thu Feb 14 07:22:15 2019
From: seckelmann at datto.com (Sven Eckelmann)
Date: Thu, 14 Feb 2019 13:22:15 +0100
Subject: [OpenWrt-Devel] OM2P ImageBuilder
In-Reply-To: <LYftiBE--3-1@keemail.me>
References: <LYftiBE--3-1@keemail.me>
Message-ID: <1747051.8s8MdL6kJh@bentobox>

On Thursday, 14 February 2019 13:07:42 CET Conca Ten wrote:
[...]
> regarding your exchange at 
> [OpenWrt-Devel] ar71xx: OM2P ImageBuilder no firmware when BIN_DIR used
> 
> I've tried to use https://chef.aparcar.org <https://chef.aparcar.org> to generate a flashable firmware with added packages for Netgear WNDR3700v4 and encountered the same problem.

Please install the fix from https://github.com/openwrt/openwrt/pull/1815 and 
then create the image again.

> Is there an easy way to combine the created/resulting files to a flashable systemupgrade.tar?
> The resulting files available:
>     openwrt-18.06.2-b94158c9fb50ef9-ar71xx-nand-device-wndr3700v4.manifest
>     openwrt-18.06.2-b94158c9fb50ef9-ar71xx-nand-root.squashfs
>     openwrt-18.06.2-b94158c9fb50ef9-ar71xx-nand-uImage-lzma.bin
>     openwrt-18.06.2-b94158c9fb50ef9-ar71xx-nand-vmlinux-lzma.elf
>     openwrt-18.06.2-b94158c9fb50ef9-ar71xx-nand-vmlinux.bin
>     openwrt-18.06.2-b94158c9fb50ef9-ar71xx-nand-vmlinux.elf
>     openwrt-18.06.2-b94158c9fb50ef9-ar71xx-nand-vmlinux.lzma
>     sha256sums

Nothing which I would recommend. But the instructions can be found in 
target/linux/ar71xx/image/legacy.mk [1]. But it is most likely a lot
easier to fix the imagebuilder.

Kind regards,
	Sven

https://git.openwrt.org/?p=openwrt/openwrt.git;a=blob;f=target/linux/ar71xx/image/legacy.mk;h=363e0956c79968d14f1fbd31a502a9b940db1648;hb=880f8e6d32871ade7d2bb2ec541eea113183e9a9#l1019
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190214/68531f5d/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 07:22:44 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:22:44 +0100
Subject: [OpenWrt-Devel] [PATCH] net: Allow class-e address assignment via
 ifconfig ioctl
Message-ID: <20190214122244.25796-1-linus.walleij@linaro.org>

From: Dave Taht <dave.taht at gmail.com>

commit 65cab850f0eeaa9180bd2e10a231964f33743edf upstream.

While most distributions long ago switched to the iproute2 suite
of utilities, which allow class-e (240.0.0.0/4) address assignment,
distributions relying on busybox, toybox and other forms of
ifconfig cannot assign class-e addresses without this kernel patch.

While CIDR has been obsolete for 2 decades, and a survey of all the
open source code in the world shows the IN_whatever macros are also
obsolete... rather than obsolete CIDR from this ioctl entirely, this
patch merely enables class-e assignment, sanely.

Signed-off-by: Dave Taht <dave.taht at gmail.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
- This commit is upstream in v4.20
- This should ve applied for stable v4.19.y, v4.14.y and v4.9.y
---
 include/uapi/linux/in.h | 10 +++++++---
 net/ipv4/devinet.c      |  5 +++--
 net/ipv4/ipconfig.c     |  2 ++
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/include/uapi/linux/in.h b/include/uapi/linux/in.h
index 48e8a225b985..f6052e70bf40 100644
--- a/include/uapi/linux/in.h
+++ b/include/uapi/linux/in.h
@@ -266,10 +266,14 @@ struct sockaddr_in {
 
 #define	IN_CLASSD(a)		((((long int) (a)) & 0xf0000000) == 0xe0000000)
 #define	IN_MULTICAST(a)		IN_CLASSD(a)
-#define IN_MULTICAST_NET	0xF0000000
+#define	IN_MULTICAST_NET	0xe0000000
 
-#define	IN_EXPERIMENTAL(a)	((((long int) (a)) & 0xf0000000) == 0xf0000000)
-#define	IN_BADCLASS(a)		IN_EXPERIMENTAL((a))
+#define	IN_BADCLASS(a)		((((long int) (a) ) == 0xffffffff)
+#define	IN_EXPERIMENTAL(a)	IN_BADCLASS((a))
+
+#define	IN_CLASSE(a)		((((long int) (a)) & 0xf0000000) == 0xf0000000)
+#define	IN_CLASSE_NET		0xffffffff
+#define	IN_CLASSE_NSHIFT	0
 
 /* Address to accept any incoming messages. */
 #define	INADDR_ANY		((unsigned long int) 0x00000000)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index ea4bd8a52422..e38042933a27 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -941,17 +941,18 @@ static int inet_abc_len(__be32 addr)
 {
 	int rc = -1;	/* Something else, probably a multicast. */
 
-	if (ipv4_is_zeronet(addr))
+	if (ipv4_is_zeronet(addr) || ipv4_is_lbcast(addr))
 		rc = 0;
 	else {
 		__u32 haddr = ntohl(addr);
-
 		if (IN_CLASSA(haddr))
 			rc = 8;
 		else if (IN_CLASSB(haddr))
 			rc = 16;
 		else if (IN_CLASSC(haddr))
 			rc = 24;
+		else if (IN_CLASSE(haddr))
+			rc = 32;
 	}
 
 	return rc;
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 88212615bf4c..2393e5c106bf 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -429,6 +429,8 @@ static int __init ic_defaults(void)
 			ic_netmask = htonl(IN_CLASSB_NET);
 		else if (IN_CLASSC(ntohl(ic_myaddr)))
 			ic_netmask = htonl(IN_CLASSC_NET);
+		else if (IN_CLASSE(ntohl(ic_myaddr)))
+			ic_netmask = htonl(IN_CLASSE_NET);
 		else {
 			pr_err("IP-Config: Unable to guess netmask for address %pI4\n",
 			       &ic_myaddr);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 07:27:20 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:27:20 +0100
Subject: [OpenWrt-Devel] [PATCH] uapi/if_ether.h: prevent redefinition of
 struct ethhdr
Message-ID: <20190214122720.27172-1-linus.walleij@linaro.org>

From: Hauke Mehrtens <hauke at hauke-m.de>

commit 6926e041a8920c8ec27e4e155efa760aa01551fd upstream.

Musl provides its own ethhdr struct definition. Add a guard to prevent
its definition of the appropriate musl header has already been included.

glibc does not implement this header, but when glibc will implement this
they can just define __UAPI_DEF_ETHHDR 0 to make it work with the
kernel.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
- This is upstream in v4.15
- This should be applied for stable v4.14.y and v4.9.y
---
 include/uapi/linux/if_ether.h    | 3 +++
 include/uapi/linux/libc-compat.h | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
index 244e3213ecb0..60ec9114e28f 100644
--- a/include/uapi/linux/if_ether.h
+++ b/include/uapi/linux/if_ether.h
@@ -23,6 +23,7 @@
 #define _UAPI_LINUX_IF_ETHER_H
 
 #include <linux/types.h>
+#include <linux/libc-compat.h>
 
 /*
  *	IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
@@ -150,11 +151,13 @@
  *	This is an Ethernet frame header.
  */
 
+#if __UAPI_DEF_ETHHDR
 struct ethhdr {
 	unsigned char	h_dest[ETH_ALEN];	/* destination eth addr	*/
 	unsigned char	h_source[ETH_ALEN];	/* source ether addr	*/
 	__be16		h_proto;		/* packet type ID field	*/
 } __attribute__((packed));
+#endif
 
 
 #endif /* _UAPI_LINUX_IF_ETHER_H */
diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
index 8254c937c9f4..fc29efaa918c 100644
--- a/include/uapi/linux/libc-compat.h
+++ b/include/uapi/linux/libc-compat.h
@@ -264,4 +264,10 @@
 
 #endif /* __GLIBC__ */
 
+/* Definitions for if_ether.h */
+/* allow libcs like musl to deactivate this, glibc does not implement this. */
+#ifndef __UAPI_DEF_ETHHDR
+#define __UAPI_DEF_ETHHDR		1
+#endif
+
 #endif /* _UAPI_LIBC_COMPAT_H */
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From gregkh at linuxfoundation.org  Thu Feb 14 07:45:01 2019
From: gregkh at linuxfoundation.org (Greg Kroah-Hartman)
Date: Thu, 14 Feb 2019 13:45:01 +0100
Subject: [OpenWrt-Devel] [PATCH] uapi/if_ether.h: prevent redefinition
 of struct ethhdr
In-Reply-To: <20190214122720.27172-1-linus.walleij@linaro.org>
References: <20190214122720.27172-1-linus.walleij@linaro.org>
Message-ID: <20190214124501.GD17978@kroah.com>

On Thu, Feb 14, 2019 at 01:27:20PM +0100, Linus Walleij wrote:
> From: Hauke Mehrtens <hauke at hauke-m.de>
> 
> commit 6926e041a8920c8ec27e4e155efa760aa01551fd upstream.
> 
> Musl provides its own ethhdr struct definition. Add a guard to prevent
> its definition of the appropriate musl header has already been included.
> 
> glibc does not implement this header, but when glibc will implement this
> they can just define __UAPI_DEF_ETHHDR 0 to make it work with the
> kernel.
> 
> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> ---
> - This is upstream in v4.15
> - This should be applied for stable v4.14.y and v4.9.y

Sounds good, but do you also want to sign off on it?  :)

thanks,

greg k-h

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 07:49:02 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:02 +0100
Subject: [OpenWrt-Devel] [PATCH 0/8 v2] Stable material from OpenWrt for
 v4.9.y
Message-ID: <20190214124910.1753-1-linus.walleij@linaro.org>

This is a series of patches used in OpenWrt's v4.9 backports
that seem to be of generic interest to v4.9.y

For the remaining patches I cherry-picked the upstream
commits except for (8/8)
"netfilter: nf_tables: fix mismatch in big-endian system"
where I used OpenWrt's backport.

ChangeLog v1->v2:

- I have dropped two patches from the series: one was to be
  applied also to v4.14.y and one was to be applied also to
  v4.14.y and v4.19.y. The rest are for v4.9.y as they have
  been merged upstream between v4.9 and v4.14.

- The two dropped patches have been sent out separately.

- I have added the "commit nnnnn upstream." message on the
  first line of each commit message to fit stable standards.

Upstream commits:

The list of upstream commits in patch order:
6db6f0eae6052b70885562e1733896647ec1d807 ("bridge: multicast to unicast")
e9156cd26a495a18706e796f02a81fee41ec14f4 ("smsc95xx: Use skb_cow_head to deal with cloned skbs")
6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 ("ch9200: use skb_cow_head() to deal with cloned skbs")
39fba7835aacda65284a86e611774cbba71dac20 ("kaweth: use skb_cow_head() to deal with cloned skbs")
854826c9d526fd81077742c3b000e3f7fcaef3ce ("ubifs: Drop softlimit and delta fields from struct ubifs_wbuf")
1b7fc2c0069f3864a3dda15430b7aded31c0bfcc ("ubifs: Use dirty_writeback_interval value for wbuf timer")
cd4b1e34655d46950c065d9284b596cd8d7b28cd ("usb: dwc2: Remove unnecessary kfree")
10596608c4d62cb8c1c2b806debcbd32fe657e71 ("netfilter: nf_tables: fix mismatch in big-endian system")

Eric Dumazet (2):
  ch9200: use skb_cow_head() to deal with cloned skbs
  kaweth: use skb_cow_head() to deal with cloned skbs

Felix Fietkau (1):
  bridge: multicast to unicast

James Hughes (1):
  smsc95xx: Use skb_cow_head to deal with cloned skbs

John Youn (1):
  usb: dwc2: Remove unnecessary kfree

Liping Zhang (1):
  netfilter: nf_tables: fix mismatch in big-endian system

Rafa? Mi?ecki (2):
  ubifs: Drop softlimit and delta fields from struct ubifs_wbuf
  ubifs: Use dirty_writeback_interval value for wbuf timer

 drivers/net/usb/ch9200.c            |  9 +--
 drivers/net/usb/kaweth.c            | 18 ++----
 drivers/net/usb/smsc95xx.c          | 12 ++--
 drivers/usb/dwc2/hcd.c              |  1 -
 fs/ubifs/io.c                       | 18 +++---
 fs/ubifs/ubifs.h                    |  9 ---
 include/linux/if_bridge.h           |  1 +
 include/net/netfilter/nf_tables.h   | 29 ++++++++++
 include/uapi/linux/if_link.h        |  1 +
 net/bridge/br_forward.c             | 39 ++++++++++++-
 net/bridge/br_mdb.c                 |  2 +-
 net/bridge/br_multicast.c           | 90 +++++++++++++++++++++--------
 net/bridge/br_netlink.c             |  5 ++
 net/bridge/br_private.h             |  3 +-
 net/bridge/br_sysfs_if.c            |  2 +
 net/ipv4/netfilter/nft_masq_ipv4.c  |  8 +--
 net/ipv4/netfilter/nft_redir_ipv4.c |  8 +--
 net/ipv6/netfilter/nft_masq_ipv6.c  |  8 +--
 net/ipv6/netfilter/nft_redir_ipv6.c |  8 +--
 net/netfilter/nft_ct.c              | 10 ++--
 net/netfilter/nft_meta.c            | 42 +++++++-------
 net/netfilter/nft_nat.c             |  8 +--
 22 files changed, 214 insertions(+), 117 deletions(-)

-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 07:49:03 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:03 +0100
Subject: [OpenWrt-Devel] [PATCH 1/8 v2] bridge: multicast to unicast
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-2-linus.walleij@linaro.org>

From: Felix Fietkau <nbd at nbd.name>

commit 6db6f0eae6052b70885562e1733896647ec1d807 upstream.

Implements an optional, per bridge port flag and feature to deliver
multicast packets to any host on the according port via unicast
individually. This is done by copying the packet per host and
changing the multicast destination MAC to a unicast one accordingly.

multicast-to-unicast works on top of the multicast snooping feature of
the bridge. Which means unicast copies are only delivered to hosts which
are interested in it and signalized this via IGMP/MLD reports
previously.

This feature is intended for interface types which have a more reliable
and/or efficient way to deliver unicast packets than broadcast ones
(e.g. wifi).

However, it should only be enabled on interfaces where no IGMPv2/MLDv1
report suppression takes place. This feature is disabled by default.

The initial patch and idea is from Felix Fietkau.

Signed-off-by: Felix Fietkau <nbd at nbd.name>
[linus.luessing at c0d3.blue: various bug + style fixes, commit message]
Signed-off-by: Linus L?ssing <linus.luessing at c0d3.blue>
Reviewed-by: Nikolay Aleksandrov <nikolay at cumulusnetworks.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 include/linux/if_bridge.h    |  1 +
 include/uapi/linux/if_link.h |  1 +
 net/bridge/br_forward.c      | 39 +++++++++++++++-
 net/bridge/br_mdb.c          |  2 +-
 net/bridge/br_multicast.c    | 90 ++++++++++++++++++++++++++----------
 net/bridge/br_netlink.c      |  5 ++
 net/bridge/br_private.h      |  3 +-
 net/bridge/br_sysfs_if.c     |  2 +
 8 files changed, 114 insertions(+), 29 deletions(-)

diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
index c6587c01d951..debc9d5904e5 100644
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -46,6 +46,7 @@ struct br_ip_list {
 #define BR_LEARNING_SYNC	BIT(9)
 #define BR_PROXYARP_WIFI	BIT(10)
 #define BR_MCAST_FLOOD		BIT(11)
+#define BR_MULTICAST_TO_UNICAST	BIT(12)
 
 #define BR_DEFAULT_AGEING_TIME	(300 * HZ)
 
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index b4fba662cd32..ee4d632d089d 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -319,6 +319,7 @@ enum {
 	IFLA_BRPORT_MULTICAST_ROUTER,
 	IFLA_BRPORT_PAD,
 	IFLA_BRPORT_MCAST_FLOOD,
+	IFLA_BRPORT_MCAST_TO_UCAST,
 	__IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 5b675695c661..30afa130287e 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -173,6 +173,31 @@ static struct net_bridge_port *maybe_deliver(
 	return p;
 }
 
+static void maybe_deliver_addr(struct net_bridge_port *p, struct sk_buff *skb,
+			       const unsigned char *addr, bool local_orig)
+{
+	struct net_device *dev = BR_INPUT_SKB_CB(skb)->brdev;
+	const unsigned char *src = eth_hdr(skb)->h_source;
+
+	if (!should_deliver(p, skb))
+		return;
+
+	/* Even with hairpin, no soliloquies - prevent breaking IPv6 DAD */
+	if (skb->dev == p->dev && ether_addr_equal(src, addr))
+		return;
+
+	skb = skb_copy(skb, GFP_ATOMIC);
+	if (!skb) {
+		dev->stats.tx_dropped++;
+		return;
+	}
+
+	if (!is_broadcast_ether_addr(addr))
+		memcpy(eth_hdr(skb)->h_dest, addr, ETH_ALEN);
+
+	__br_forward(p, skb, local_orig);
+}
+
 /* called under rcu_read_lock */
 void br_flood(struct net_bridge *br, struct sk_buff *skb,
 	      enum br_pkt_type pkt_type, bool local_rcv, bool local_orig)
@@ -241,10 +266,20 @@ void br_multicast_flood(struct net_bridge_mdb_entry *mdst,
 		rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
 			     NULL;
 
-		port = (unsigned long)lport > (unsigned long)rport ?
-		       lport : rport;
+		if ((unsigned long)lport > (unsigned long)rport) {
+			port = lport;
+
+			if (port->flags & BR_MULTICAST_TO_UNICAST) {
+				maybe_deliver_addr(lport, skb, p->eth_addr,
+						   local_orig);
+				goto delivered;
+			}
+		} else {
+			port = rport;
+		}
 
 		prev = maybe_deliver(prev, port, skb, local_orig);
+delivered:
 		if (IS_ERR(prev))
 			goto out;
 		if (prev == port)
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c
index 6406010e155b..57e94a1b57e1 100644
--- a/net/bridge/br_mdb.c
+++ b/net/bridge/br_mdb.c
@@ -532,7 +532,7 @@ static int br_mdb_add_group(struct net_bridge *br, struct net_bridge_port *port,
 			break;
 	}
 
-	p = br_multicast_new_port_group(port, group, *pp, state);
+	p = br_multicast_new_port_group(port, group, *pp, state, NULL);
 	if (unlikely(!p))
 		return -ENOMEM;
 	rcu_assign_pointer(*pp, p);
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 4bd57507b9a4..1183c5fcd9d2 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -42,12 +42,14 @@ static void br_multicast_add_router(struct net_bridge *br,
 static void br_ip4_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 __be32 group,
-					 __u16 vid);
+					 __u16 vid,
+					 const unsigned char *src);
+
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 const struct in6_addr *group,
-					 __u16 vid);
+					 __u16 vid, const unsigned char *src);
 #endif
 unsigned int br_mdb_rehash_seq;
 
@@ -658,7 +660,8 @@ struct net_bridge_port_group *br_multicast_new_port_group(
 			struct net_bridge_port *port,
 			struct br_ip *group,
 			struct net_bridge_port_group __rcu *next,
-			unsigned char flags)
+			unsigned char flags,
+			const unsigned char *src)
 {
 	struct net_bridge_port_group *p;
 
@@ -673,12 +676,32 @@ struct net_bridge_port_group *br_multicast_new_port_group(
 	hlist_add_head(&p->mglist, &port->mglist);
 	setup_timer(&p->timer, br_multicast_port_group_expired,
 		    (unsigned long)p);
+
+	if (src)
+		memcpy(p->eth_addr, src, ETH_ALEN);
+	else
+		memset(p->eth_addr, 0xff, ETH_ALEN);
+
 	return p;
 }
 
+static bool br_port_group_equal(struct net_bridge_port_group *p,
+				struct net_bridge_port *port,
+				const unsigned char *src)
+{
+	if (p->port != port)
+		return false;
+
+	if (!(port->flags & BR_MULTICAST_TO_UNICAST))
+		return true;
+
+	return ether_addr_equal(src, p->eth_addr);
+}
+
 static int br_multicast_add_group(struct net_bridge *br,
 				  struct net_bridge_port *port,
-				  struct br_ip *group)
+				  struct br_ip *group,
+				  const unsigned char *src)
 {
 	struct net_bridge_mdb_entry *mp;
 	struct net_bridge_port_group *p;
@@ -705,13 +728,13 @@ static int br_multicast_add_group(struct net_bridge *br,
 	for (pp = &mp->ports;
 	     (p = mlock_dereference(*pp, br)) != NULL;
 	     pp = &p->next) {
-		if (p->port == port)
+		if (br_port_group_equal(p, port, src))
 			goto found;
 		if ((unsigned long)p->port < (unsigned long)port)
 			break;
 	}
 
-	p = br_multicast_new_port_group(port, group, *pp, 0);
+	p = br_multicast_new_port_group(port, group, *pp, 0, src);
 	if (unlikely(!p))
 		goto err;
 	rcu_assign_pointer(*pp, p);
@@ -730,7 +753,8 @@ static int br_multicast_add_group(struct net_bridge *br,
 static int br_ip4_multicast_add_group(struct net_bridge *br,
 				      struct net_bridge_port *port,
 				      __be32 group,
-				      __u16 vid)
+				      __u16 vid,
+				      const unsigned char *src)
 {
 	struct br_ip br_group;
 
@@ -741,14 +765,15 @@ static int br_ip4_multicast_add_group(struct net_bridge *br,
 	br_group.proto = htons(ETH_P_IP);
 	br_group.vid = vid;
 
-	return br_multicast_add_group(br, port, &br_group);
+	return br_multicast_add_group(br, port, &br_group, src);
 }
 
 #if IS_ENABLED(CONFIG_IPV6)
 static int br_ip6_multicast_add_group(struct net_bridge *br,
 				      struct net_bridge_port *port,
 				      const struct in6_addr *group,
-				      __u16 vid)
+				      __u16 vid,
+				      const unsigned char *src)
 {
 	struct br_ip br_group;
 
@@ -759,7 +784,7 @@ static int br_ip6_multicast_add_group(struct net_bridge *br,
 	br_group.proto = htons(ETH_P_IPV6);
 	br_group.vid = vid;
 
-	return br_multicast_add_group(br, port, &br_group);
+	return br_multicast_add_group(br, port, &br_group, src);
 }
 #endif
 
@@ -1028,6 +1053,7 @@ static int br_ip4_multicast_igmp3_report(struct net_bridge *br,
 					 struct sk_buff *skb,
 					 u16 vid)
 {
+	const unsigned char *src;
 	struct igmpv3_report *ih;
 	struct igmpv3_grec *grec;
 	int i;
@@ -1068,12 +1094,14 @@ static int br_ip4_multicast_igmp3_report(struct net_bridge *br,
 			continue;
 		}
 
+		src = eth_hdr(skb)->h_source;
 		if ((type == IGMPV3_CHANGE_TO_INCLUDE ||
 		     type == IGMPV3_MODE_IS_INCLUDE) &&
 		    ntohs(grec->grec_nsrcs) == 0) {
-			br_ip4_multicast_leave_group(br, port, group, vid);
+			br_ip4_multicast_leave_group(br, port, group, vid, src);
 		} else {
-			err = br_ip4_multicast_add_group(br, port, group, vid);
+			err = br_ip4_multicast_add_group(br, port, group, vid,
+							 src);
 			if (err)
 				break;
 		}
@@ -1088,6 +1116,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 					struct sk_buff *skb,
 					u16 vid)
 {
+	const unsigned char *src;
 	struct icmp6hdr *icmp6h;
 	struct mld2_grec *grec;
 	int i;
@@ -1135,14 +1164,16 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 			continue;
 		}
 
+		src = eth_hdr(skb)->h_source;
 		if ((grec->grec_type == MLD2_CHANGE_TO_INCLUDE ||
 		     grec->grec_type == MLD2_MODE_IS_INCLUDE) &&
 		    ntohs(*nsrcs) == 0) {
 			br_ip6_multicast_leave_group(br, port, &grec->grec_mca,
-						     vid);
+						     vid, src);
 		} else {
 			err = br_ip6_multicast_add_group(br, port,
-							 &grec->grec_mca, vid);
+							 &grec->grec_mca, vid,
+							 src);
 			if (err)
 				break;
 		}
@@ -1465,7 +1496,8 @@ br_multicast_leave_group(struct net_bridge *br,
 			 struct net_bridge_port *port,
 			 struct br_ip *group,
 			 struct bridge_mcast_other_query *other_query,
-			 struct bridge_mcast_own_query *own_query)
+			 struct bridge_mcast_own_query *own_query,
+			 const unsigned char *src)
 {
 	struct net_bridge_mdb_htable *mdb;
 	struct net_bridge_mdb_entry *mp;
@@ -1489,7 +1521,7 @@ br_multicast_leave_group(struct net_bridge *br,
 		for (pp = &mp->ports;
 		     (p = mlock_dereference(*pp, br)) != NULL;
 		     pp = &p->next) {
-			if (p->port != port)
+			if (!br_port_group_equal(p, port, src))
 				continue;
 
 			rcu_assign_pointer(*pp, p->next);
@@ -1520,7 +1552,7 @@ br_multicast_leave_group(struct net_bridge *br,
 		for (p = mlock_dereference(mp->ports, br);
 		     p != NULL;
 		     p = mlock_dereference(p->next, br)) {
-			if (p->port != port)
+			if (!br_port_group_equal(p, port, src))
 				continue;
 
 			if (!hlist_unhashed(&p->mglist) &&
@@ -1571,7 +1603,8 @@ br_multicast_leave_group(struct net_bridge *br,
 static void br_ip4_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 __be32 group,
-					 __u16 vid)
+					 __u16 vid,
+					 const unsigned char *src)
 {
 	struct br_ip br_group;
 	struct bridge_mcast_own_query *own_query;
@@ -1586,14 +1619,15 @@ static void br_ip4_multicast_leave_group(struct net_bridge *br,
 	br_group.vid = vid;
 
 	br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
-				 own_query);
+				 own_query, src);
 }
 
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 const struct in6_addr *group,
-					 __u16 vid)
+					 __u16 vid,
+					 const unsigned char *src)
 {
 	struct br_ip br_group;
 	struct bridge_mcast_own_query *own_query;
@@ -1608,7 +1642,7 @@ static void br_ip6_multicast_leave_group(struct net_bridge *br,
 	br_group.vid = vid;
 
 	br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
-				 own_query);
+				 own_query, src);
 }
 #endif
 
@@ -1651,6 +1685,7 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 				 u16 vid)
 {
 	struct sk_buff *skb_trimmed = NULL;
+	const unsigned char *src;
 	struct igmphdr *ih;
 	int err;
 
@@ -1666,13 +1701,14 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 	}
 
 	ih = igmp_hdr(skb);
+	src = eth_hdr(skb)->h_source;
 	BR_INPUT_SKB_CB(skb)->igmp = ih->type;
 
 	switch (ih->type) {
 	case IGMP_HOST_MEMBERSHIP_REPORT:
 	case IGMPV2_HOST_MEMBERSHIP_REPORT:
 		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
-		err = br_ip4_multicast_add_group(br, port, ih->group, vid);
+		err = br_ip4_multicast_add_group(br, port, ih->group, vid, src);
 		break;
 	case IGMPV3_HOST_MEMBERSHIP_REPORT:
 		err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
@@ -1681,7 +1717,7 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 		err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
 		break;
 	case IGMP_HOST_LEAVE_MESSAGE:
-		br_ip4_multicast_leave_group(br, port, ih->group, vid);
+		br_ip4_multicast_leave_group(br, port, ih->group, vid, src);
 		break;
 	}
 
@@ -1701,6 +1737,7 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 				 u16 vid)
 {
 	struct sk_buff *skb_trimmed = NULL;
+	const unsigned char *src;
 	struct mld_msg *mld;
 	int err;
 
@@ -1720,8 +1757,10 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 
 	switch (mld->mld_type) {
 	case ICMPV6_MGM_REPORT:
+		src = eth_hdr(skb)->h_source;
 		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
-		err = br_ip6_multicast_add_group(br, port, &mld->mld_mca, vid);
+		err = br_ip6_multicast_add_group(br, port, &mld->mld_mca, vid,
+						 src);
 		break;
 	case ICMPV6_MLD2_REPORT:
 		err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
@@ -1730,7 +1769,8 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 		err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
 		break;
 	case ICMPV6_MGM_REDUCTION:
-		br_ip6_multicast_leave_group(br, port, &mld->mld_mca, vid);
+		src = eth_hdr(skb)->h_source;
+		br_ip6_multicast_leave_group(br, port, &mld->mld_mca, vid, src);
 		break;
 	}
 
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
index 4f831225d34f..a62deecd471b 100644
--- a/net/bridge/br_netlink.c
+++ b/net/bridge/br_netlink.c
@@ -123,6 +123,7 @@ static inline size_t br_port_info_size(void)
 		+ nla_total_size(1)	/* IFLA_BRPORT_GUARD */
 		+ nla_total_size(1)	/* IFLA_BRPORT_PROTECT */
 		+ nla_total_size(1)	/* IFLA_BRPORT_FAST_LEAVE */
+		+ nla_total_size(1)	/* IFLA_BRPORT_MCAST_TO_UCAST */
 		+ nla_total_size(1)	/* IFLA_BRPORT_LEARNING */
 		+ nla_total_size(1)	/* IFLA_BRPORT_UNICAST_FLOOD */
 		+ nla_total_size(1)	/* IFLA_BRPORT_PROXYARP */
@@ -173,6 +174,8 @@ static int br_port_fill_attrs(struct sk_buff *skb,
 		       !!(p->flags & BR_ROOT_BLOCK)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_FAST_LEAVE,
 		       !!(p->flags & BR_MULTICAST_FAST_LEAVE)) ||
+	    nla_put_u8(skb, IFLA_BRPORT_MCAST_TO_UCAST,
+		       !!(p->flags & BR_MULTICAST_TO_UNICAST)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_LEARNING, !!(p->flags & BR_LEARNING)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_UNICAST_FLOOD,
 		       !!(p->flags & BR_FLOOD)) ||
@@ -586,6 +589,7 @@ static const struct nla_policy br_port_policy[IFLA_BRPORT_MAX + 1] = {
 	[IFLA_BRPORT_PROXYARP]	= { .type = NLA_U8 },
 	[IFLA_BRPORT_PROXYARP_WIFI] = { .type = NLA_U8 },
 	[IFLA_BRPORT_MULTICAST_ROUTER] = { .type = NLA_U8 },
+	[IFLA_BRPORT_MCAST_TO_UCAST] = { .type = NLA_U8 },
 };
 
 /* Change the state of the port and notify spanning tree */
@@ -636,6 +640,7 @@ static int br_setport(struct net_bridge_port *p, struct nlattr *tb[])
 	br_set_port_flag(p, tb, IFLA_BRPORT_LEARNING, BR_LEARNING);
 	br_set_port_flag(p, tb, IFLA_BRPORT_UNICAST_FLOOD, BR_FLOOD);
 	br_set_port_flag(p, tb, IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD);
+	br_set_port_flag(p, tb, IFLA_BRPORT_MCAST_TO_UCAST, BR_MULTICAST_TO_UNICAST);
 	br_set_port_flag(p, tb, IFLA_BRPORT_PROXYARP, BR_PROXYARP);
 	br_set_port_flag(p, tb, IFLA_BRPORT_PROXYARP_WIFI, BR_PROXYARP_WIFI);
 
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 1b63177e0ccd..f038cfdc8d98 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -177,6 +177,7 @@ struct net_bridge_port_group {
 	struct timer_list		timer;
 	struct br_ip			addr;
 	unsigned char			flags;
+	unsigned char			eth_addr[ETH_ALEN];
 };
 
 struct net_bridge_mdb_entry
@@ -591,7 +592,7 @@ void br_multicast_free_pg(struct rcu_head *head);
 struct net_bridge_port_group *
 br_multicast_new_port_group(struct net_bridge_port *port, struct br_ip *group,
 			    struct net_bridge_port_group __rcu *next,
-			    unsigned char flags);
+			    unsigned char flags, const unsigned char *src);
 void br_mdb_init(void);
 void br_mdb_uninit(void);
 void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port,
diff --git a/net/bridge/br_sysfs_if.c b/net/bridge/br_sysfs_if.c
index abf711112418..228ebcd4fa51 100644
--- a/net/bridge/br_sysfs_if.c
+++ b/net/bridge/br_sysfs_if.c
@@ -188,6 +188,7 @@ static BRPORT_ATTR(multicast_router, S_IRUGO | S_IWUSR, show_multicast_router,
 		   store_multicast_router);
 
 BRPORT_ATTR_FLAG(multicast_fast_leave, BR_MULTICAST_FAST_LEAVE);
+BRPORT_ATTR_FLAG(multicast_to_unicast, BR_MULTICAST_TO_UNICAST);
 #endif
 
 static const struct brport_attribute *brport_attrs[] = {
@@ -214,6 +215,7 @@ static const struct brport_attribute *brport_attrs[] = {
 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
 	&brport_attr_multicast_router,
 	&brport_attr_multicast_fast_leave,
+	&brport_attr_multicast_to_unicast,
 #endif
 	&brport_attr_proxyarp,
 	&brport_attr_proxyarp_wifi,
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 07:49:04 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:04 +0100
Subject: [OpenWrt-Devel] [PATCH 2/8 v2] smsc95xx: Use skb_cow_head to deal
 with cloned skbs
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-3-linus.walleij@linaro.org>

From: James Hughes <james.hughes at raspberrypi.org>

commit e9156cd26a495a18706e796f02a81fee41ec14f4 upstream.

The driver was failing to check that the SKB wasn't cloned
before adding checksum data.
Replace existing handling to extend/copy the header buffer
with skb_cow_head.

Signed-off-by: James Hughes <james.hughes at raspberrypi.org>
Acked-by: Eric Dumazet <edumazet at google.com>
Acked-by: Woojung Huh <Woojung.Huh at microchip.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 drivers/net/usb/smsc95xx.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index e29f4c0767eb..e719ecd69d01 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -2011,13 +2011,13 @@ static struct sk_buff *smsc95xx_tx_fixup(struct usbnet *dev,
 	/* We do not advertise SG, so skbs should be already linearized */
 	BUG_ON(skb_shinfo(skb)->nr_frags);
 
-	if (skb_headroom(skb) < overhead) {
-		struct sk_buff *skb2 = skb_copy_expand(skb,
-			overhead, 0, flags);
+	/* Make writable and expand header space by overhead if required */
+	if (skb_cow_head(skb, overhead)) {
+		/* Must deallocate here as returning NULL to indicate error
+		 * means the skb won't be deallocated in the caller.
+		 */
 		dev_kfree_skb_any(skb);
-		skb = skb2;
-		if (!skb)
-			return NULL;
+		return NULL;
 	}
 
 	if (csum) {
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 07:49:05 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:05 +0100
Subject: [OpenWrt-Devel] [PATCH 3/8 v2] ch9200: use skb_cow_head() to deal
 with cloned skbs
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-4-linus.walleij@linaro.org>

From: Eric Dumazet <edumazet at google.com>

commit 6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 upstream.

We need to ensure there is enough headroom to push extra header,
but we also need to check if we are allowed to change headers.

skb_cow_head() is the proper helper to deal with this.

Fixes: 4a476bd6d1d9 ("usbnet: New driver for QinHeng CH9200 devices")
Signed-off-by: Eric Dumazet <edumazet at google.com>
Cc: James Hughes <james.hughes at raspberrypi.org>
Cc: Matthew Garrett <mjg59 at srcf.ucam.org>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 drivers/net/usb/ch9200.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/net/usb/ch9200.c b/drivers/net/usb/ch9200.c
index 8a40202c0a17..c4f1c363e24b 100644
--- a/drivers/net/usb/ch9200.c
+++ b/drivers/net/usb/ch9200.c
@@ -254,14 +254,9 @@ static struct sk_buff *ch9200_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
 	tx_overhead = 0x40;
 
 	len = skb->len;
-	if (skb_headroom(skb) < tx_overhead) {
-		struct sk_buff *skb2;
-
-		skb2 = skb_copy_expand(skb, tx_overhead, 0, flags);
+	if (skb_cow_head(skb, tx_overhead)) {
 		dev_kfree_skb_any(skb);
-		skb = skb2;
-		if (!skb)
-			return NULL;
+		return NULL;
 	}
 
 	__skb_push(skb, tx_overhead);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 07:49:06 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:06 +0100
Subject: [OpenWrt-Devel] [PATCH 4/8 v2] kaweth: use skb_cow_head() to deal
 with cloned skbs
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-5-linus.walleij@linaro.org>

From: Eric Dumazet <edumazet at google.com>

commit 39fba7835aacda65284a86e611774cbba71dac20 upstream.

We can use skb_cow_head() to properly deal with clones,
especially the ones coming from TCP stack that allow their head being
modified. This avoids a copy.

Signed-off-by: Eric Dumazet <edumazet at google.com>
Cc: James Hughes <james.hughes at raspberrypi.org>
Signed-off-by: David S. Miller <davem at davemloft.net>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 drivers/net/usb/kaweth.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/net/usb/kaweth.c b/drivers/net/usb/kaweth.c
index 66b34ddbe216..72d9e7954b0a 100644
--- a/drivers/net/usb/kaweth.c
+++ b/drivers/net/usb/kaweth.c
@@ -803,18 +803,12 @@ static netdev_tx_t kaweth_start_xmit(struct sk_buff *skb,
 	}
 
 	/* We now decide whether we can put our special header into the sk_buff */
-	if (skb_cloned(skb) || skb_headroom(skb) < 2) {
-		/* no such luck - we make our own */
-		struct sk_buff *copied_skb;
-		copied_skb = skb_copy_expand(skb, 2, 0, GFP_ATOMIC);
-		dev_kfree_skb_irq(skb);
-		skb = copied_skb;
-		if (!copied_skb) {
-			kaweth->stats.tx_errors++;
-			netif_start_queue(net);
-			spin_unlock_irq(&kaweth->device_lock);
-			return NETDEV_TX_OK;
-		}
+	if (skb_cow_head(skb, 2)) {
+		kaweth->stats.tx_errors++;
+		netif_start_queue(net);
+		spin_unlock_irq(&kaweth->device_lock);
+		dev_kfree_skb_any(skb);
+		return NETDEV_TX_OK;
 	}
 
 	private_header = (__le16 *)__skb_push(skb, 2);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 07:49:07 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:07 +0100
Subject: [OpenWrt-Devel] [PATCH 5/8 v2] ubifs: Drop softlimit and delta
 fields from struct ubifs_wbuf
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-6-linus.walleij@linaro.org>

From: Rafa? Mi?ecki <rafal at milecki.pl>

commit 854826c9d526fd81077742c3b000e3f7fcaef3ce upstream.

Values of these fields are set during init and never modified. They are
used (read) in a single function only. There isn't really any reason to
keep them in a struct. It only makes struct just a bit bigger without
any visible gain.

Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
Signed-off-by: Richard Weinberger <richard at nod.at>
---
- This was applied upstream in v4.10
- Should be applied to stable v4.9.y
---
 fs/ubifs/io.c    | 18 ++++++++++--------
 fs/ubifs/ubifs.h |  5 -----
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
index 97be41215332..4d6ce4a2a4b6 100644
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
@@ -452,16 +452,22 @@ static enum hrtimer_restart wbuf_timer_callback_nolock(struct hrtimer *timer)
  */
 static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
 {
+	ktime_t softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
+	unsigned long long delta;
+
+	delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
+	delta *= 1000000000ULL;
+
 	ubifs_assert(!hrtimer_active(&wbuf->timer));
+	ubifs_assert(delta <= ULONG_MAX);
 
 	if (wbuf->no_timer)
 		return;
 	dbg_io("set timer for jhead %s, %llu-%llu millisecs",
 	       dbg_jhead(wbuf->jhead),
-	       div_u64(ktime_to_ns(wbuf->softlimit), USEC_PER_SEC),
-	       div_u64(ktime_to_ns(wbuf->softlimit) + wbuf->delta,
-		       USEC_PER_SEC));
-	hrtimer_start_range_ns(&wbuf->timer, wbuf->softlimit, wbuf->delta,
+	       div_u64(ktime_to_ns(softlimit), USEC_PER_SEC),
+	       div_u64(ktime_to_ns(softlimit) + delta, USEC_PER_SEC));
+	hrtimer_start_range_ns(&wbuf->timer, softlimit, delta,
 			       HRTIMER_MODE_REL);
 }
 
@@ -1059,10 +1065,6 @@ int ubifs_wbuf_init(struct ubifs_info *c, struct ubifs_wbuf *wbuf)
 
 	hrtimer_init(&wbuf->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	wbuf->timer.function = wbuf_timer_callback_nolock;
-	wbuf->softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
-	wbuf->delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
-	wbuf->delta *= 1000000000ULL;
-	ubifs_assert(wbuf->delta <= ULONG_MAX);
 	return 0;
 }
 
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index 096035eb29d0..ade4b3137a1d 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -645,9 +645,6 @@ typedef int (*ubifs_lpt_scan_callback)(struct ubifs_info *c,
  * @io_mutex: serializes write-buffer I/O
  * @lock: serializes @buf, @lnum, @offs, @avail, @used, @next_ino and @inodes
  *        fields
- * @softlimit: soft write-buffer timeout interval
- * @delta: hard and soft timeouts delta (the timer expire interval is @softlimit
- *         and @softlimit + @delta)
  * @timer: write-buffer timer
  * @no_timer: non-zero if this write-buffer does not have a timer
  * @need_sync: non-zero if the timer expired and the wbuf needs sync'ing
@@ -676,8 +673,6 @@ struct ubifs_wbuf {
 	int (*sync_callback)(struct ubifs_info *c, int lnum, int free, int pad);
 	struct mutex io_mutex;
 	spinlock_t lock;
-	ktime_t softlimit;
-	unsigned long long delta;
 	struct hrtimer timer;
 	unsigned int no_timer:1;
 	unsigned int need_sync:1;
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 07:49:08 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:08 +0100
Subject: [OpenWrt-Devel] [PATCH 6/8 v2] ubifs: Use dirty_writeback_interval
 value for wbuf timer
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-7-linus.walleij@linaro.org>

From: Rafa? Mi?ecki <rafal at milecki.pl>

commit 1b7fc2c0069f3864a3dda15430b7aded31c0bfcc upstream.

Right now wbuf timer has hardcoded timeouts and there is no place for
manual adjustments. Some projects / cases many need that though. Few
file systems allow doing that by respecting dirty_writeback_interval
that can be set using sysctl (dirty_writeback_centisecs).

Lowering dirty_writeback_interval could be some way of dealing with user
space apps lacking proper fsyncs. This is definitely *not* a perfect
solution but we don't have ideal (user space) world. There were already
advanced discussions on this matter, mostly when ext4 was introduced and
it wasn't behaving as ext3. Anyway, the final decision was to add some
hacks to the ext4, as trying to fix whole user space or adding new API
was pointless.

We can't (and shouldn't?) just follow ext4. We can't e.g. sync on close
as this would cause too many commits and flash wearing. On the other
hand we still should allow some trade-off between -o sync and default
wbuf timeout. Respecting dirty_writeback_interval should allow some sane
cutomizations if used warily.

Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
Signed-off-by: Richard Weinberger <richard at nod.at>
---
- This was applied upstream in v4.10
- Should be applied to stable v4.9.y
---
 fs/ubifs/io.c    | 8 ++++----
 fs/ubifs/ubifs.h | 4 ----
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
index 4d6ce4a2a4b6..3be28900bf37 100644
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
@@ -452,11 +452,11 @@ static enum hrtimer_restart wbuf_timer_callback_nolock(struct hrtimer *timer)
  */
 static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
 {
-	ktime_t softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
-	unsigned long long delta;
+	ktime_t softlimit = ms_to_ktime(dirty_writeback_interval * 10);
+	unsigned long long delta = dirty_writeback_interval;
 
-	delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
-	delta *= 1000000000ULL;
+	/* centi to milli, milli to nano, then 10% */
+	delta *= 10ULL * NSEC_PER_MSEC / 10ULL;
 
 	ubifs_assert(!hrtimer_active(&wbuf->timer));
 	ubifs_assert(delta <= ULONG_MAX);
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index ade4b3137a1d..b8b18d446a49 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -83,10 +83,6 @@
  */
 #define BGT_NAME_PATTERN "ubifs_bgt%d_%d"
 
-/* Write-buffer synchronization timeout interval in seconds */
-#define WBUF_TIMEOUT_SOFTLIMIT 3
-#define WBUF_TIMEOUT_HARDLIMIT 5
-
 /* Maximum possible inode number (only 32-bit inodes are supported now) */
 #define MAX_INUM 0xFFFFFFFF
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 07:49:09 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:09 +0100
Subject: [OpenWrt-Devel] [PATCH 7/8 v2] usb: dwc2: Remove unnecessary kfree
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-8-linus.walleij@linaro.org>

From: John Youn <johnyoun at synopsys.com>

commit cd4b1e34655d46950c065d9284b596cd8d7b28cd upstream.

This shouldn't be freed by the HCD as it is owned by the core and
allocated with devm_kzalloc.

Signed-off-by: John Youn <johnyoun at synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi at linux.intel.com>
---
- This was applied upstream in v4.10
- Should be applied to stable v4.9.y
---
 drivers/usb/dwc2/hcd.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
index 984d6aae7529..0e5435330c07 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -5202,7 +5202,6 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq)
 error2:
 	usb_put_hcd(hcd);
 error1:
-	kfree(hsotg->core_params);
 
 #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
 	kfree(hsotg->last_frame_num_array);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 07:49:10 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 13:49:10 +0100
Subject: [OpenWrt-Devel] [PATCH 8/8 v2] netfilter: nf_tables: fix mismatch
 in big-endian system
In-Reply-To: <20190214124910.1753-1-linus.walleij@linaro.org>
References: <20190214124910.1753-1-linus.walleij@linaro.org>
Message-ID: <20190214124910.1753-9-linus.walleij@linaro.org>

From: Liping Zhang <zlpnobody at gmail.com>

commit 10596608c4d62cb8c1c2b806debcbd32fe657e71 upstream.

Currently, there are two different methods to store an u16 integer to
the u32 data register. For example:
  u32 *dest = &regs->data[priv->dreg];
  1. *dest = 0; *(u16 *) dest = val_u16;
  2. *dest = val_u16;

For method 1, the u16 value will be stored like this, either in
big-endian or little-endian system:
  0          15           31
  +-+-+-+-+-+-+-+-+-+-+-+-+
  |   Value   |     0     |
  +-+-+-+-+-+-+-+-+-+-+-+-+

For method 2, in little-endian system, the u16 value will be the same
as listed above. But in big-endian system, the u16 value will be stored
like this:
  0          15           31
  +-+-+-+-+-+-+-+-+-+-+-+-+
  |     0     |   Value   |
  +-+-+-+-+-+-+-+-+-+-+-+-+

So later we use "memcmp(&regs->data[priv->sreg], data, 2);" to do
compare in nft_cmp, nft_lookup expr ..., method 2 will get the wrong
result in big-endian system, as 0~15 bits will always be zero.

For the similar reason, when loading an u16 value from the u32 data
register, we should use "*(u16 *) sreg;" instead of "(u16)*sreg;",
the 2nd method will get the wrong value in the big-endian system.

So introduce some wrapper functions to store/load an u8 or u16
integer to/from the u32 data register, and use them in the right
place.

Signed-off-by: Liping Zhang <zlpnobody at gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 include/net/netfilter/nf_tables.h   | 29 ++++++++++++++++++++
 net/ipv4/netfilter/nft_masq_ipv4.c  |  8 +++---
 net/ipv4/netfilter/nft_redir_ipv4.c |  8 +++---
 net/ipv6/netfilter/nft_masq_ipv6.c  |  8 +++---
 net/ipv6/netfilter/nft_redir_ipv6.c |  8 +++---
 net/netfilter/nft_ct.c              | 10 +++----
 net/netfilter/nft_meta.c            | 42 +++++++++++++++--------------
 net/netfilter/nft_nat.c             |  8 +++---
 8 files changed, 76 insertions(+), 45 deletions(-)

diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index b02af0bf5777..66f6b84df287 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -87,6 +87,35 @@ struct nft_regs {
 	};
 };
 
+/* Store/load an u16 or u8 integer to/from the u32 data register.
+ *
+ * Note, when using concatenations, register allocation happens at 32-bit
+ * level. So for store instruction, pad the rest part with zero to avoid
+ * garbage values.
+ */
+
+static inline void nft_reg_store16(u32 *dreg, u16 val)
+{
+	*dreg = 0;
+	*(u16 *)dreg = val;
+}
+
+static inline void nft_reg_store8(u32 *dreg, u8 val)
+{
+	*dreg = 0;
+	*(u8 *)dreg = val;
+}
+
+static inline u16 nft_reg_load16(u32 *sreg)
+{
+	return *(u16 *)sreg;
+}
+
+static inline u8 nft_reg_load8(u32 *sreg)
+{
+	return *(u8 *)sreg;
+}
+
 static inline void nft_data_copy(u32 *dst, const struct nft_data *src,
 				 unsigned int len)
 {
diff --git a/net/ipv4/netfilter/nft_masq_ipv4.c b/net/ipv4/netfilter/nft_masq_ipv4.c
index 51ced81b616c..dc3628a396ec 100644
--- a/net/ipv4/netfilter/nft_masq_ipv4.c
+++ b/net/ipv4/netfilter/nft_masq_ipv4.c
@@ -26,10 +26,10 @@ static void nft_masq_ipv4_eval(const struct nft_expr *expr,
 	memset(&range, 0, sizeof(range));
 	range.flags = priv->flags;
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 	}
 	regs->verdict.code = nf_nat_masquerade_ipv4(pkt->skb, pkt->hook,
 						    &range, pkt->out);
diff --git a/net/ipv4/netfilter/nft_redir_ipv4.c b/net/ipv4/netfilter/nft_redir_ipv4.c
index c09d4381427e..f760524e1353 100644
--- a/net/ipv4/netfilter/nft_redir_ipv4.c
+++ b/net/ipv4/netfilter/nft_redir_ipv4.c
@@ -26,10 +26,10 @@ static void nft_redir_ipv4_eval(const struct nft_expr *expr,
 
 	memset(&mr, 0, sizeof(mr));
 	if (priv->sreg_proto_min) {
-		mr.range[0].min.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		mr.range[0].max.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		mr.range[0].min.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		mr.range[0].max.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		mr.range[0].flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
diff --git a/net/ipv6/netfilter/nft_masq_ipv6.c b/net/ipv6/netfilter/nft_masq_ipv6.c
index 9597ffb74077..b74a420050c4 100644
--- a/net/ipv6/netfilter/nft_masq_ipv6.c
+++ b/net/ipv6/netfilter/nft_masq_ipv6.c
@@ -27,10 +27,10 @@ static void nft_masq_ipv6_eval(const struct nft_expr *expr,
 	memset(&range, 0, sizeof(range));
 	range.flags = priv->flags;
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 	}
 	regs->verdict.code = nf_nat_masquerade_ipv6(pkt->skb, &range, pkt->out);
 }
diff --git a/net/ipv6/netfilter/nft_redir_ipv6.c b/net/ipv6/netfilter/nft_redir_ipv6.c
index aca44e89a881..7ef58e493fca 100644
--- a/net/ipv6/netfilter/nft_redir_ipv6.c
+++ b/net/ipv6/netfilter/nft_redir_ipv6.c
@@ -26,10 +26,10 @@ static void nft_redir_ipv6_eval(const struct nft_expr *expr,
 
 	memset(&range, 0, sizeof(range));
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min],
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max],
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		range.flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
diff --git a/net/netfilter/nft_ct.c b/net/netfilter/nft_ct.c
index d7b0d171172a..2b9fda71fa8b 100644
--- a/net/netfilter/nft_ct.c
+++ b/net/netfilter/nft_ct.c
@@ -77,7 +77,7 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 
 	switch (priv->key) {
 	case NFT_CT_DIRECTION:
-		*dest = CTINFO2DIR(ctinfo);
+		nft_reg_store8(dest, CTINFO2DIR(ctinfo));
 		return;
 	case NFT_CT_STATUS:
 		*dest = ct->status;
@@ -129,10 +129,10 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 		return;
 	}
 	case NFT_CT_L3PROTOCOL:
-		*dest = nf_ct_l3num(ct);
+		nft_reg_store8(dest, nf_ct_l3num(ct));
 		return;
 	case NFT_CT_PROTOCOL:
-		*dest = nf_ct_protonum(ct);
+		nft_reg_store8(dest, nf_ct_protonum(ct));
 		return;
 	default:
 		break;
@@ -149,10 +149,10 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 		       nf_ct_l3num(ct) == NFPROTO_IPV4 ? 4 : 16);
 		return;
 	case NFT_CT_PROTO_SRC:
-		*dest = (__force __u16)tuple->src.u.all;
+		nft_reg_store16(dest, (__force u16)tuple->src.u.all);
 		return;
 	case NFT_CT_PROTO_DST:
-		*dest = (__force __u16)tuple->dst.u.all;
+		nft_reg_store16(dest, (__force u16)tuple->dst.u.all);
 		return;
 	default:
 		break;
diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c
index 7c3395513ff0..cec8dc0e5e6f 100644
--- a/net/netfilter/nft_meta.c
+++ b/net/netfilter/nft_meta.c
@@ -45,16 +45,15 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 		*dest = skb->len;
 		break;
 	case NFT_META_PROTOCOL:
-		*dest = 0;
-		*(__be16 *)dest = skb->protocol;
+		nft_reg_store16(dest, (__force u16)skb->protocol);
 		break;
 	case NFT_META_NFPROTO:
-		*dest = pkt->pf;
+		nft_reg_store8(dest, pkt->pf);
 		break;
 	case NFT_META_L4PROTO:
 		if (!pkt->tprot_set)
 			goto err;
-		*dest = pkt->tprot;
+		nft_reg_store8(dest, pkt->tprot);
 		break;
 	case NFT_META_PRIORITY:
 		*dest = skb->priority;
@@ -85,14 +84,12 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 	case NFT_META_IIFTYPE:
 		if (in == NULL)
 			goto err;
-		*dest = 0;
-		*(u16 *)dest = in->type;
+		nft_reg_store16(dest, in->type);
 		break;
 	case NFT_META_OIFTYPE:
 		if (out == NULL)
 			goto err;
-		*dest = 0;
-		*(u16 *)dest = out->type;
+		nft_reg_store16(dest, out->type);
 		break;
 	case NFT_META_SKUID:
 		sk = skb_to_full_sk(skb);
@@ -142,22 +139,22 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 #endif
 	case NFT_META_PKTTYPE:
 		if (skb->pkt_type != PACKET_LOOPBACK) {
-			*dest = skb->pkt_type;
+			nft_reg_store8(dest, skb->pkt_type);
 			break;
 		}
 
 		switch (pkt->pf) {
 		case NFPROTO_IPV4:
 			if (ipv4_is_multicast(ip_hdr(skb)->daddr))
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 			else
-				*dest = PACKET_BROADCAST;
+				nft_reg_store8(dest, PACKET_BROADCAST);
 			break;
 		case NFPROTO_IPV6:
 			if (ipv6_hdr(skb)->daddr.s6_addr[0] == 0xFF)
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 			else
-				*dest = PACKET_BROADCAST;
+				nft_reg_store8(dest, PACKET_BROADCAST);
 			break;
 		case NFPROTO_NETDEV:
 			switch (skb->protocol) {
@@ -171,14 +168,14 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 					goto err;
 
 				if (ipv4_is_multicast(iph->daddr))
-					*dest = PACKET_MULTICAST;
+					nft_reg_store8(dest, PACKET_MULTICAST);
 				else
-					*dest = PACKET_BROADCAST;
+					nft_reg_store8(dest, PACKET_BROADCAST);
 
 				break;
 			}
 			case htons(ETH_P_IPV6):
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 				break;
 			default:
 				WARN_ON_ONCE(1);
@@ -233,7 +230,9 @@ void nft_meta_set_eval(const struct nft_expr *expr,
 {
 	const struct nft_meta *meta = nft_expr_priv(expr);
 	struct sk_buff *skb = pkt->skb;
-	u32 value = regs->data[meta->sreg];
+	u32 *sreg = &regs->data[meta->sreg];
+	u32 value = *sreg;
+	u8 pkt_type;
 
 	switch (meta->key) {
 	case NFT_META_MARK:
@@ -243,9 +242,12 @@ void nft_meta_set_eval(const struct nft_expr *expr,
 		skb->priority = value;
 		break;
 	case NFT_META_PKTTYPE:
-		if (skb->pkt_type != value &&
-		    skb_pkt_type_ok(value) && skb_pkt_type_ok(skb->pkt_type))
-			skb->pkt_type = value;
+		pkt_type = nft_reg_load8(sreg);
+
+		if (skb->pkt_type != pkt_type &&
+		    skb_pkt_type_ok(pkt_type) &&
+		    skb_pkt_type_ok(skb->pkt_type))
+			skb->pkt_type = pkt_type;
 		break;
 	case NFT_META_NFTRACE:
 		skb->nf_trace = !!value;
diff --git a/net/netfilter/nft_nat.c b/net/netfilter/nft_nat.c
index ee2d71753746..4c48e9bb21e2 100644
--- a/net/netfilter/nft_nat.c
+++ b/net/netfilter/nft_nat.c
@@ -65,10 +65,10 @@ static void nft_nat_eval(const struct nft_expr *expr,
 	}
 
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		range.flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:13:52 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:13:52 +0100
Subject: [OpenWrt-Devel] [PATCH] uapi/if_ether.h: prevent redefinition
 of struct ethhdr
In-Reply-To: <20190214124501.GD17978@kroah.com>
References: <20190214122720.27172-1-linus.walleij@linaro.org>
 <20190214124501.GD17978@kroah.com>
Message-ID: <CACRpkda1yaE92GScsD6C3X3TL4VDYYSwe=M9C=+zH7U7QPRYcA@mail.gmail.com>

On Thu, Feb 14, 2019 at 1:45 PM Greg Kroah-Hartman
<gregkh at linuxfoundation.org> wrote:
> On Thu, Feb 14, 2019 at 01:27:20PM +0100, Linus Walleij wrote:
> > From: Hauke Mehrtens <hauke at hauke-m.de>
> >
> > commit 6926e041a8920c8ec27e4e155efa760aa01551fd upstream.
> >
> > Musl provides its own ethhdr struct definition. Add a guard to prevent
> > its definition of the appropriate musl header has already been included.
> >
> > glibc does not implement this header, but when glibc will implement this
> > they can just define __UAPI_DEF_ETHHDR 0 to make it work with the
> > kernel.
> >
> > Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> > Signed-off-by: David S. Miller <davem at davemloft.net>
> > ---
> > - This is upstream in v4.15
> > - This should be applied for stable v4.14.y and v4.9.y
>
> Sounds good, but do you also want to sign off on it?  :)

Oh deliver path, yeah, so many details :D

OK I respin the whole lot with signed-off-by's.

Yours,
Linus Walleij

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:16:04 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:16:04 +0100
Subject: [OpenWrt-Devel] [PATCH v2] net: Allow class-e address assignment
 via ifconfig ioctl
Message-ID: <20190214131604.8107-1-linus.walleij@linaro.org>

From: Dave Taht <dave.taht at gmail.com>

commit 65cab850f0eeaa9180bd2e10a231964f33743edf upstream.

While most distributions long ago switched to the iproute2 suite
of utilities, which allow class-e (240.0.0.0/4) address assignment,
distributions relying on busybox, toybox and other forms of
ifconfig cannot assign class-e addresses without this kernel patch.

While CIDR has been obsolete for 2 decades, and a survey of all the
open source code in the world shows the IN_whatever macros are also
obsolete... rather than obsolete CIDR from this ioctl entirely, this
patch merely enables class-e assignment, sanely.

Signed-off-by: Dave Taht <dave.taht at gmail.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
ChangeLog v1->v2:
- Add SoB-line

- This commit is upstream in v4.20
- This should ve applied for stable v4.19.y, v4.14.y and v4.9.y
---
 include/uapi/linux/in.h | 10 +++++++---
 net/ipv4/devinet.c      |  5 +++--
 net/ipv4/ipconfig.c     |  2 ++
 3 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/include/uapi/linux/in.h b/include/uapi/linux/in.h
index 48e8a225b985..f6052e70bf40 100644
--- a/include/uapi/linux/in.h
+++ b/include/uapi/linux/in.h
@@ -266,10 +266,14 @@ struct sockaddr_in {
 
 #define	IN_CLASSD(a)		((((long int) (a)) & 0xf0000000) == 0xe0000000)
 #define	IN_MULTICAST(a)		IN_CLASSD(a)
-#define IN_MULTICAST_NET	0xF0000000
+#define	IN_MULTICAST_NET	0xe0000000
 
-#define	IN_EXPERIMENTAL(a)	((((long int) (a)) & 0xf0000000) == 0xf0000000)
-#define	IN_BADCLASS(a)		IN_EXPERIMENTAL((a))
+#define	IN_BADCLASS(a)		((((long int) (a) ) == 0xffffffff)
+#define	IN_EXPERIMENTAL(a)	IN_BADCLASS((a))
+
+#define	IN_CLASSE(a)		((((long int) (a)) & 0xf0000000) == 0xf0000000)
+#define	IN_CLASSE_NET		0xffffffff
+#define	IN_CLASSE_NSHIFT	0
 
 /* Address to accept any incoming messages. */
 #define	INADDR_ANY		((unsigned long int) 0x00000000)
diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
index ea4bd8a52422..e38042933a27 100644
--- a/net/ipv4/devinet.c
+++ b/net/ipv4/devinet.c
@@ -941,17 +941,18 @@ static int inet_abc_len(__be32 addr)
 {
 	int rc = -1;	/* Something else, probably a multicast. */
 
-	if (ipv4_is_zeronet(addr))
+	if (ipv4_is_zeronet(addr) || ipv4_is_lbcast(addr))
 		rc = 0;
 	else {
 		__u32 haddr = ntohl(addr);
-
 		if (IN_CLASSA(haddr))
 			rc = 8;
 		else if (IN_CLASSB(haddr))
 			rc = 16;
 		else if (IN_CLASSC(haddr))
 			rc = 24;
+		else if (IN_CLASSE(haddr))
+			rc = 32;
 	}
 
 	return rc;
diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
index 88212615bf4c..2393e5c106bf 100644
--- a/net/ipv4/ipconfig.c
+++ b/net/ipv4/ipconfig.c
@@ -429,6 +429,8 @@ static int __init ic_defaults(void)
 			ic_netmask = htonl(IN_CLASSB_NET);
 		else if (IN_CLASSC(ntohl(ic_myaddr)))
 			ic_netmask = htonl(IN_CLASSC_NET);
+		else if (IN_CLASSE(ntohl(ic_myaddr)))
+			ic_netmask = htonl(IN_CLASSE_NET);
 		else {
 			pr_err("IP-Config: Unable to guess netmask for address %pI4\n",
 			       &ic_myaddr);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:18:00 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:18:00 +0100
Subject: [OpenWrt-Devel] [PATCH v2] uapi/if_ether.h: prevent redefinition of
 struct ethhdr
Message-ID: <20190214131800.8760-1-linus.walleij@linaro.org>

From: Hauke Mehrtens <hauke at hauke-m.de>

commit 6926e041a8920c8ec27e4e155efa760aa01551fd upstream.

Musl provides its own ethhdr struct definition. Add a guard to prevent
its definition of the appropriate musl header has already been included.

glibc does not implement this header, but when glibc will implement this
they can just define __UAPI_DEF_ETHHDR 0 to make it work with the
kernel.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
Signed-off-by: David S. Miller <davem at davemloft.net>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
ChangeLog v1->v2:
- Add SoB line

- This is upstream in v4.15
- This should be applied for stable v4.14.y and v4.9.y
---
 include/uapi/linux/if_ether.h    | 3 +++
 include/uapi/linux/libc-compat.h | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/include/uapi/linux/if_ether.h b/include/uapi/linux/if_ether.h
index 244e3213ecb0..60ec9114e28f 100644
--- a/include/uapi/linux/if_ether.h
+++ b/include/uapi/linux/if_ether.h
@@ -23,6 +23,7 @@
 #define _UAPI_LINUX_IF_ETHER_H
 
 #include <linux/types.h>
+#include <linux/libc-compat.h>
 
 /*
  *	IEEE 802.3 Ethernet magic constants.  The frame sizes omit the preamble
@@ -150,11 +151,13 @@
  *	This is an Ethernet frame header.
  */
 
+#if __UAPI_DEF_ETHHDR
 struct ethhdr {
 	unsigned char	h_dest[ETH_ALEN];	/* destination eth addr	*/
 	unsigned char	h_source[ETH_ALEN];	/* source ether addr	*/
 	__be16		h_proto;		/* packet type ID field	*/
 } __attribute__((packed));
+#endif
 
 
 #endif /* _UAPI_LINUX_IF_ETHER_H */
diff --git a/include/uapi/linux/libc-compat.h b/include/uapi/linux/libc-compat.h
index 8254c937c9f4..fc29efaa918c 100644
--- a/include/uapi/linux/libc-compat.h
+++ b/include/uapi/linux/libc-compat.h
@@ -264,4 +264,10 @@
 
 #endif /* __GLIBC__ */
 
+/* Definitions for if_ether.h */
+/* allow libcs like musl to deactivate this, glibc does not implement this. */
+#ifndef __UAPI_DEF_ETHHDR
+#define __UAPI_DEF_ETHHDR		1
+#endif
+
 #endif /* _UAPI_LIBC_COMPAT_H */
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:23:55 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:23:55 +0100
Subject: [OpenWrt-Devel] [PATCH 0/8 v3] Stable material from OpenWrt for
 v4.9.y
Message-ID: <20190214132403.10687-1-linus.walleij@linaro.org>

This is a series of patches used in OpenWrt's v4.9 backports
that seem to be of generic interest to v4.9.y

For the remaining patches I cherry-picked the upstream
commits except for (8/8)
"netfilter: nf_tables: fix mismatch in big-endian system"
where I used OpenWrt's backport.

ChangeLog v2->v3:
- Add Signed-off-by to all patches to reflect delivery
  path.

ChangeLog v1->v2:

- I have dropped two patches from the series: one was to be
  applied also to v4.14.y and one was to be applied also to
  v4.14.y and v4.19.y. The rest are for v4.9.y as they have
  been merged upstream between v4.9 and v4.14.

- The two dropped patches have been sent out separately.

- I have added the "commit nnnnn upstream." message on the
  first line of each commit message to fit stable standards.

Upstream commits:

The list of upstream commits in patch order:
6db6f0eae6052b70885562e1733896647ec1d807 ("bridge: multicast to unicast")
e9156cd26a495a18706e796f02a81fee41ec14f4 ("smsc95xx: Use skb_cow_head to deal with cloned skbs")
6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 ("ch9200: use skb_cow_head() to deal with cloned skbs")
39fba7835aacda65284a86e611774cbba71dac20 ("kaweth: use skb_cow_head() to deal with cloned skbs")
854826c9d526fd81077742c3b000e3f7fcaef3ce ("ubifs: Drop softlimit and delta fields from struct ubifs_wbuf")
1b7fc2c0069f3864a3dda15430b7aded31c0bfcc ("ubifs: Use dirty_writeback_interval value for wbuf timer")
cd4b1e34655d46950c065d9284b596cd8d7b28cd ("usb: dwc2: Remove unnecessary kfree")
10596608c4d62cb8c1c2b806debcbd32fe657e71 ("netfilter: nf_tables: fix mismatch in big-endian system")

Eric Dumazet (2):
  ch9200: use skb_cow_head() to deal with cloned skbs
  kaweth: use skb_cow_head() to deal with cloned skbs

Felix Fietkau (1):
  bridge: multicast to unicast

James Hughes (1):
  smsc95xx: Use skb_cow_head to deal with cloned skbs

John Youn (1):
  usb: dwc2: Remove unnecessary kfree

Liping Zhang (1):
  netfilter: nf_tables: fix mismatch in big-endian system

Rafa? Mi?ecki (2):
  ubifs: Drop softlimit and delta fields from struct ubifs_wbuf
  ubifs: Use dirty_writeback_interval value for wbuf timer

 drivers/net/usb/ch9200.c            |  9 +--
 drivers/net/usb/kaweth.c            | 18 ++----
 drivers/net/usb/smsc95xx.c          | 12 ++--
 drivers/usb/dwc2/hcd.c              |  1 -
 fs/ubifs/io.c                       | 18 +++---
 fs/ubifs/ubifs.h                    |  9 ---
 include/linux/if_bridge.h           |  1 +
 include/net/netfilter/nf_tables.h   | 29 ++++++++++
 include/uapi/linux/if_link.h        |  1 +
 net/bridge/br_forward.c             | 39 ++++++++++++-
 net/bridge/br_mdb.c                 |  2 +-
 net/bridge/br_multicast.c           | 90 +++++++++++++++++++++--------
 net/bridge/br_netlink.c             |  5 ++
 net/bridge/br_private.h             |  3 +-
 net/bridge/br_sysfs_if.c            |  2 +
 net/ipv4/netfilter/nft_masq_ipv4.c  |  8 +--
 net/ipv4/netfilter/nft_redir_ipv4.c |  8 +--
 net/ipv6/netfilter/nft_masq_ipv6.c  |  8 +--
 net/ipv6/netfilter/nft_redir_ipv6.c |  8 +--
 net/netfilter/nft_ct.c              | 10 ++--
 net/netfilter/nft_meta.c            | 42 +++++++-------
 net/netfilter/nft_nat.c             |  8 +--
 22 files changed, 214 insertions(+), 117 deletions(-)

-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 08:23:56 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:23:56 +0100
Subject: [OpenWrt-Devel] [PATCH 1/8 v3] bridge: multicast to unicast
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-2-linus.walleij@linaro.org>

From: Felix Fietkau <nbd at nbd.name>

commit 6db6f0eae6052b70885562e1733896647ec1d807 upstream.

Implements an optional, per bridge port flag and feature to deliver
multicast packets to any host on the according port via unicast
individually. This is done by copying the packet per host and
changing the multicast destination MAC to a unicast one accordingly.

multicast-to-unicast works on top of the multicast snooping feature of
the bridge. Which means unicast copies are only delivered to hosts which
are interested in it and signalized this via IGMP/MLD reports
previously.

This feature is intended for interface types which have a more reliable
and/or efficient way to deliver unicast packets than broadcast ones
(e.g. wifi).

However, it should only be enabled on interfaces where no IGMPv2/MLDv1
report suppression takes place. This feature is disabled by default.

The initial patch and idea is from Felix Fietkau.

Signed-off-by: Felix Fietkau <nbd at nbd.name>
[linus.luessing at c0d3.blue: various bug + style fixes, commit message]
Signed-off-by: Linus L?ssing <linus.luessing at c0d3.blue>
Reviewed-by: Nikolay Aleksandrov <nikolay at cumulusnetworks.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 include/linux/if_bridge.h    |  1 +
 include/uapi/linux/if_link.h |  1 +
 net/bridge/br_forward.c      | 39 +++++++++++++++-
 net/bridge/br_mdb.c          |  2 +-
 net/bridge/br_multicast.c    | 90 ++++++++++++++++++++++++++----------
 net/bridge/br_netlink.c      |  5 ++
 net/bridge/br_private.h      |  3 +-
 net/bridge/br_sysfs_if.c     |  2 +
 8 files changed, 114 insertions(+), 29 deletions(-)

diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
index c6587c01d951..debc9d5904e5 100644
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -46,6 +46,7 @@ struct br_ip_list {
 #define BR_LEARNING_SYNC	BIT(9)
 #define BR_PROXYARP_WIFI	BIT(10)
 #define BR_MCAST_FLOOD		BIT(11)
+#define BR_MULTICAST_TO_UNICAST	BIT(12)
 
 #define BR_DEFAULT_AGEING_TIME	(300 * HZ)
 
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index b4fba662cd32..ee4d632d089d 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -319,6 +319,7 @@ enum {
 	IFLA_BRPORT_MULTICAST_ROUTER,
 	IFLA_BRPORT_PAD,
 	IFLA_BRPORT_MCAST_FLOOD,
+	IFLA_BRPORT_MCAST_TO_UCAST,
 	__IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
diff --git a/net/bridge/br_forward.c b/net/bridge/br_forward.c
index 5b675695c661..30afa130287e 100644
--- a/net/bridge/br_forward.c
+++ b/net/bridge/br_forward.c
@@ -173,6 +173,31 @@ static struct net_bridge_port *maybe_deliver(
 	return p;
 }
 
+static void maybe_deliver_addr(struct net_bridge_port *p, struct sk_buff *skb,
+			       const unsigned char *addr, bool local_orig)
+{
+	struct net_device *dev = BR_INPUT_SKB_CB(skb)->brdev;
+	const unsigned char *src = eth_hdr(skb)->h_source;
+
+	if (!should_deliver(p, skb))
+		return;
+
+	/* Even with hairpin, no soliloquies - prevent breaking IPv6 DAD */
+	if (skb->dev == p->dev && ether_addr_equal(src, addr))
+		return;
+
+	skb = skb_copy(skb, GFP_ATOMIC);
+	if (!skb) {
+		dev->stats.tx_dropped++;
+		return;
+	}
+
+	if (!is_broadcast_ether_addr(addr))
+		memcpy(eth_hdr(skb)->h_dest, addr, ETH_ALEN);
+
+	__br_forward(p, skb, local_orig);
+}
+
 /* called under rcu_read_lock */
 void br_flood(struct net_bridge *br, struct sk_buff *skb,
 	      enum br_pkt_type pkt_type, bool local_rcv, bool local_orig)
@@ -241,10 +266,20 @@ void br_multicast_flood(struct net_bridge_mdb_entry *mdst,
 		rport = rp ? hlist_entry(rp, struct net_bridge_port, rlist) :
 			     NULL;
 
-		port = (unsigned long)lport > (unsigned long)rport ?
-		       lport : rport;
+		if ((unsigned long)lport > (unsigned long)rport) {
+			port = lport;
+
+			if (port->flags & BR_MULTICAST_TO_UNICAST) {
+				maybe_deliver_addr(lport, skb, p->eth_addr,
+						   local_orig);
+				goto delivered;
+			}
+		} else {
+			port = rport;
+		}
 
 		prev = maybe_deliver(prev, port, skb, local_orig);
+delivered:
 		if (IS_ERR(prev))
 			goto out;
 		if (prev == port)
diff --git a/net/bridge/br_mdb.c b/net/bridge/br_mdb.c
index 6406010e155b..57e94a1b57e1 100644
--- a/net/bridge/br_mdb.c
+++ b/net/bridge/br_mdb.c
@@ -532,7 +532,7 @@ static int br_mdb_add_group(struct net_bridge *br, struct net_bridge_port *port,
 			break;
 	}
 
-	p = br_multicast_new_port_group(port, group, *pp, state);
+	p = br_multicast_new_port_group(port, group, *pp, state, NULL);
 	if (unlikely(!p))
 		return -ENOMEM;
 	rcu_assign_pointer(*pp, p);
diff --git a/net/bridge/br_multicast.c b/net/bridge/br_multicast.c
index 4bd57507b9a4..1183c5fcd9d2 100644
--- a/net/bridge/br_multicast.c
+++ b/net/bridge/br_multicast.c
@@ -42,12 +42,14 @@ static void br_multicast_add_router(struct net_bridge *br,
 static void br_ip4_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 __be32 group,
-					 __u16 vid);
+					 __u16 vid,
+					 const unsigned char *src);
+
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 const struct in6_addr *group,
-					 __u16 vid);
+					 __u16 vid, const unsigned char *src);
 #endif
 unsigned int br_mdb_rehash_seq;
 
@@ -658,7 +660,8 @@ struct net_bridge_port_group *br_multicast_new_port_group(
 			struct net_bridge_port *port,
 			struct br_ip *group,
 			struct net_bridge_port_group __rcu *next,
-			unsigned char flags)
+			unsigned char flags,
+			const unsigned char *src)
 {
 	struct net_bridge_port_group *p;
 
@@ -673,12 +676,32 @@ struct net_bridge_port_group *br_multicast_new_port_group(
 	hlist_add_head(&p->mglist, &port->mglist);
 	setup_timer(&p->timer, br_multicast_port_group_expired,
 		    (unsigned long)p);
+
+	if (src)
+		memcpy(p->eth_addr, src, ETH_ALEN);
+	else
+		memset(p->eth_addr, 0xff, ETH_ALEN);
+
 	return p;
 }
 
+static bool br_port_group_equal(struct net_bridge_port_group *p,
+				struct net_bridge_port *port,
+				const unsigned char *src)
+{
+	if (p->port != port)
+		return false;
+
+	if (!(port->flags & BR_MULTICAST_TO_UNICAST))
+		return true;
+
+	return ether_addr_equal(src, p->eth_addr);
+}
+
 static int br_multicast_add_group(struct net_bridge *br,
 				  struct net_bridge_port *port,
-				  struct br_ip *group)
+				  struct br_ip *group,
+				  const unsigned char *src)
 {
 	struct net_bridge_mdb_entry *mp;
 	struct net_bridge_port_group *p;
@@ -705,13 +728,13 @@ static int br_multicast_add_group(struct net_bridge *br,
 	for (pp = &mp->ports;
 	     (p = mlock_dereference(*pp, br)) != NULL;
 	     pp = &p->next) {
-		if (p->port == port)
+		if (br_port_group_equal(p, port, src))
 			goto found;
 		if ((unsigned long)p->port < (unsigned long)port)
 			break;
 	}
 
-	p = br_multicast_new_port_group(port, group, *pp, 0);
+	p = br_multicast_new_port_group(port, group, *pp, 0, src);
 	if (unlikely(!p))
 		goto err;
 	rcu_assign_pointer(*pp, p);
@@ -730,7 +753,8 @@ static int br_multicast_add_group(struct net_bridge *br,
 static int br_ip4_multicast_add_group(struct net_bridge *br,
 				      struct net_bridge_port *port,
 				      __be32 group,
-				      __u16 vid)
+				      __u16 vid,
+				      const unsigned char *src)
 {
 	struct br_ip br_group;
 
@@ -741,14 +765,15 @@ static int br_ip4_multicast_add_group(struct net_bridge *br,
 	br_group.proto = htons(ETH_P_IP);
 	br_group.vid = vid;
 
-	return br_multicast_add_group(br, port, &br_group);
+	return br_multicast_add_group(br, port, &br_group, src);
 }
 
 #if IS_ENABLED(CONFIG_IPV6)
 static int br_ip6_multicast_add_group(struct net_bridge *br,
 				      struct net_bridge_port *port,
 				      const struct in6_addr *group,
-				      __u16 vid)
+				      __u16 vid,
+				      const unsigned char *src)
 {
 	struct br_ip br_group;
 
@@ -759,7 +784,7 @@ static int br_ip6_multicast_add_group(struct net_bridge *br,
 	br_group.proto = htons(ETH_P_IPV6);
 	br_group.vid = vid;
 
-	return br_multicast_add_group(br, port, &br_group);
+	return br_multicast_add_group(br, port, &br_group, src);
 }
 #endif
 
@@ -1028,6 +1053,7 @@ static int br_ip4_multicast_igmp3_report(struct net_bridge *br,
 					 struct sk_buff *skb,
 					 u16 vid)
 {
+	const unsigned char *src;
 	struct igmpv3_report *ih;
 	struct igmpv3_grec *grec;
 	int i;
@@ -1068,12 +1094,14 @@ static int br_ip4_multicast_igmp3_report(struct net_bridge *br,
 			continue;
 		}
 
+		src = eth_hdr(skb)->h_source;
 		if ((type == IGMPV3_CHANGE_TO_INCLUDE ||
 		     type == IGMPV3_MODE_IS_INCLUDE) &&
 		    ntohs(grec->grec_nsrcs) == 0) {
-			br_ip4_multicast_leave_group(br, port, group, vid);
+			br_ip4_multicast_leave_group(br, port, group, vid, src);
 		} else {
-			err = br_ip4_multicast_add_group(br, port, group, vid);
+			err = br_ip4_multicast_add_group(br, port, group, vid,
+							 src);
 			if (err)
 				break;
 		}
@@ -1088,6 +1116,7 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 					struct sk_buff *skb,
 					u16 vid)
 {
+	const unsigned char *src;
 	struct icmp6hdr *icmp6h;
 	struct mld2_grec *grec;
 	int i;
@@ -1135,14 +1164,16 @@ static int br_ip6_multicast_mld2_report(struct net_bridge *br,
 			continue;
 		}
 
+		src = eth_hdr(skb)->h_source;
 		if ((grec->grec_type == MLD2_CHANGE_TO_INCLUDE ||
 		     grec->grec_type == MLD2_MODE_IS_INCLUDE) &&
 		    ntohs(*nsrcs) == 0) {
 			br_ip6_multicast_leave_group(br, port, &grec->grec_mca,
-						     vid);
+						     vid, src);
 		} else {
 			err = br_ip6_multicast_add_group(br, port,
-							 &grec->grec_mca, vid);
+							 &grec->grec_mca, vid,
+							 src);
 			if (err)
 				break;
 		}
@@ -1465,7 +1496,8 @@ br_multicast_leave_group(struct net_bridge *br,
 			 struct net_bridge_port *port,
 			 struct br_ip *group,
 			 struct bridge_mcast_other_query *other_query,
-			 struct bridge_mcast_own_query *own_query)
+			 struct bridge_mcast_own_query *own_query,
+			 const unsigned char *src)
 {
 	struct net_bridge_mdb_htable *mdb;
 	struct net_bridge_mdb_entry *mp;
@@ -1489,7 +1521,7 @@ br_multicast_leave_group(struct net_bridge *br,
 		for (pp = &mp->ports;
 		     (p = mlock_dereference(*pp, br)) != NULL;
 		     pp = &p->next) {
-			if (p->port != port)
+			if (!br_port_group_equal(p, port, src))
 				continue;
 
 			rcu_assign_pointer(*pp, p->next);
@@ -1520,7 +1552,7 @@ br_multicast_leave_group(struct net_bridge *br,
 		for (p = mlock_dereference(mp->ports, br);
 		     p != NULL;
 		     p = mlock_dereference(p->next, br)) {
-			if (p->port != port)
+			if (!br_port_group_equal(p, port, src))
 				continue;
 
 			if (!hlist_unhashed(&p->mglist) &&
@@ -1571,7 +1603,8 @@ br_multicast_leave_group(struct net_bridge *br,
 static void br_ip4_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 __be32 group,
-					 __u16 vid)
+					 __u16 vid,
+					 const unsigned char *src)
 {
 	struct br_ip br_group;
 	struct bridge_mcast_own_query *own_query;
@@ -1586,14 +1619,15 @@ static void br_ip4_multicast_leave_group(struct net_bridge *br,
 	br_group.vid = vid;
 
 	br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
-				 own_query);
+				 own_query, src);
 }
 
 #if IS_ENABLED(CONFIG_IPV6)
 static void br_ip6_multicast_leave_group(struct net_bridge *br,
 					 struct net_bridge_port *port,
 					 const struct in6_addr *group,
-					 __u16 vid)
+					 __u16 vid,
+					 const unsigned char *src)
 {
 	struct br_ip br_group;
 	struct bridge_mcast_own_query *own_query;
@@ -1608,7 +1642,7 @@ static void br_ip6_multicast_leave_group(struct net_bridge *br,
 	br_group.vid = vid;
 
 	br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
-				 own_query);
+				 own_query, src);
 }
 #endif
 
@@ -1651,6 +1685,7 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 				 u16 vid)
 {
 	struct sk_buff *skb_trimmed = NULL;
+	const unsigned char *src;
 	struct igmphdr *ih;
 	int err;
 
@@ -1666,13 +1701,14 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 	}
 
 	ih = igmp_hdr(skb);
+	src = eth_hdr(skb)->h_source;
 	BR_INPUT_SKB_CB(skb)->igmp = ih->type;
 
 	switch (ih->type) {
 	case IGMP_HOST_MEMBERSHIP_REPORT:
 	case IGMPV2_HOST_MEMBERSHIP_REPORT:
 		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
-		err = br_ip4_multicast_add_group(br, port, ih->group, vid);
+		err = br_ip4_multicast_add_group(br, port, ih->group, vid, src);
 		break;
 	case IGMPV3_HOST_MEMBERSHIP_REPORT:
 		err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
@@ -1681,7 +1717,7 @@ static int br_multicast_ipv4_rcv(struct net_bridge *br,
 		err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
 		break;
 	case IGMP_HOST_LEAVE_MESSAGE:
-		br_ip4_multicast_leave_group(br, port, ih->group, vid);
+		br_ip4_multicast_leave_group(br, port, ih->group, vid, src);
 		break;
 	}
 
@@ -1701,6 +1737,7 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 				 u16 vid)
 {
 	struct sk_buff *skb_trimmed = NULL;
+	const unsigned char *src;
 	struct mld_msg *mld;
 	int err;
 
@@ -1720,8 +1757,10 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 
 	switch (mld->mld_type) {
 	case ICMPV6_MGM_REPORT:
+		src = eth_hdr(skb)->h_source;
 		BR_INPUT_SKB_CB(skb)->mrouters_only = 1;
-		err = br_ip6_multicast_add_group(br, port, &mld->mld_mca, vid);
+		err = br_ip6_multicast_add_group(br, port, &mld->mld_mca, vid,
+						 src);
 		break;
 	case ICMPV6_MLD2_REPORT:
 		err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
@@ -1730,7 +1769,8 @@ static int br_multicast_ipv6_rcv(struct net_bridge *br,
 		err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
 		break;
 	case ICMPV6_MGM_REDUCTION:
-		br_ip6_multicast_leave_group(br, port, &mld->mld_mca, vid);
+		src = eth_hdr(skb)->h_source;
+		br_ip6_multicast_leave_group(br, port, &mld->mld_mca, vid, src);
 		break;
 	}
 
diff --git a/net/bridge/br_netlink.c b/net/bridge/br_netlink.c
index 4f831225d34f..a62deecd471b 100644
--- a/net/bridge/br_netlink.c
+++ b/net/bridge/br_netlink.c
@@ -123,6 +123,7 @@ static inline size_t br_port_info_size(void)
 		+ nla_total_size(1)	/* IFLA_BRPORT_GUARD */
 		+ nla_total_size(1)	/* IFLA_BRPORT_PROTECT */
 		+ nla_total_size(1)	/* IFLA_BRPORT_FAST_LEAVE */
+		+ nla_total_size(1)	/* IFLA_BRPORT_MCAST_TO_UCAST */
 		+ nla_total_size(1)	/* IFLA_BRPORT_LEARNING */
 		+ nla_total_size(1)	/* IFLA_BRPORT_UNICAST_FLOOD */
 		+ nla_total_size(1)	/* IFLA_BRPORT_PROXYARP */
@@ -173,6 +174,8 @@ static int br_port_fill_attrs(struct sk_buff *skb,
 		       !!(p->flags & BR_ROOT_BLOCK)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_FAST_LEAVE,
 		       !!(p->flags & BR_MULTICAST_FAST_LEAVE)) ||
+	    nla_put_u8(skb, IFLA_BRPORT_MCAST_TO_UCAST,
+		       !!(p->flags & BR_MULTICAST_TO_UNICAST)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_LEARNING, !!(p->flags & BR_LEARNING)) ||
 	    nla_put_u8(skb, IFLA_BRPORT_UNICAST_FLOOD,
 		       !!(p->flags & BR_FLOOD)) ||
@@ -586,6 +589,7 @@ static const struct nla_policy br_port_policy[IFLA_BRPORT_MAX + 1] = {
 	[IFLA_BRPORT_PROXYARP]	= { .type = NLA_U8 },
 	[IFLA_BRPORT_PROXYARP_WIFI] = { .type = NLA_U8 },
 	[IFLA_BRPORT_MULTICAST_ROUTER] = { .type = NLA_U8 },
+	[IFLA_BRPORT_MCAST_TO_UCAST] = { .type = NLA_U8 },
 };
 
 /* Change the state of the port and notify spanning tree */
@@ -636,6 +640,7 @@ static int br_setport(struct net_bridge_port *p, struct nlattr *tb[])
 	br_set_port_flag(p, tb, IFLA_BRPORT_LEARNING, BR_LEARNING);
 	br_set_port_flag(p, tb, IFLA_BRPORT_UNICAST_FLOOD, BR_FLOOD);
 	br_set_port_flag(p, tb, IFLA_BRPORT_MCAST_FLOOD, BR_MCAST_FLOOD);
+	br_set_port_flag(p, tb, IFLA_BRPORT_MCAST_TO_UCAST, BR_MULTICAST_TO_UNICAST);
 	br_set_port_flag(p, tb, IFLA_BRPORT_PROXYARP, BR_PROXYARP);
 	br_set_port_flag(p, tb, IFLA_BRPORT_PROXYARP_WIFI, BR_PROXYARP_WIFI);
 
diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
index 1b63177e0ccd..f038cfdc8d98 100644
--- a/net/bridge/br_private.h
+++ b/net/bridge/br_private.h
@@ -177,6 +177,7 @@ struct net_bridge_port_group {
 	struct timer_list		timer;
 	struct br_ip			addr;
 	unsigned char			flags;
+	unsigned char			eth_addr[ETH_ALEN];
 };
 
 struct net_bridge_mdb_entry
@@ -591,7 +592,7 @@ void br_multicast_free_pg(struct rcu_head *head);
 struct net_bridge_port_group *
 br_multicast_new_port_group(struct net_bridge_port *port, struct br_ip *group,
 			    struct net_bridge_port_group __rcu *next,
-			    unsigned char flags);
+			    unsigned char flags, const unsigned char *src);
 void br_mdb_init(void);
 void br_mdb_uninit(void);
 void br_mdb_notify(struct net_device *dev, struct net_bridge_port *port,
diff --git a/net/bridge/br_sysfs_if.c b/net/bridge/br_sysfs_if.c
index abf711112418..228ebcd4fa51 100644
--- a/net/bridge/br_sysfs_if.c
+++ b/net/bridge/br_sysfs_if.c
@@ -188,6 +188,7 @@ static BRPORT_ATTR(multicast_router, S_IRUGO | S_IWUSR, show_multicast_router,
 		   store_multicast_router);
 
 BRPORT_ATTR_FLAG(multicast_fast_leave, BR_MULTICAST_FAST_LEAVE);
+BRPORT_ATTR_FLAG(multicast_to_unicast, BR_MULTICAST_TO_UNICAST);
 #endif
 
 static const struct brport_attribute *brport_attrs[] = {
@@ -214,6 +215,7 @@ static const struct brport_attribute *brport_attrs[] = {
 #ifdef CONFIG_BRIDGE_IGMP_SNOOPING
 	&brport_attr_multicast_router,
 	&brport_attr_multicast_fast_leave,
+	&brport_attr_multicast_to_unicast,
 #endif
 	&brport_attr_proxyarp,
 	&brport_attr_proxyarp_wifi,
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 08:23:57 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:23:57 +0100
Subject: [OpenWrt-Devel] [PATCH 2/8 v3] smsc95xx: Use skb_cow_head to deal
 with cloned skbs
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-3-linus.walleij@linaro.org>

From: James Hughes <james.hughes at raspberrypi.org>

commit e9156cd26a495a18706e796f02a81fee41ec14f4 upstream.

The driver was failing to check that the SKB wasn't cloned
before adding checksum data.
Replace existing handling to extend/copy the header buffer
with skb_cow_head.

Signed-off-by: James Hughes <james.hughes at raspberrypi.org>
Acked-by: Eric Dumazet <edumazet at google.com>
Acked-by: Woojung Huh <Woojung.Huh at microchip.com>
Signed-off-by: David S. Miller <davem at davemloft.net>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 drivers/net/usb/smsc95xx.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c
index e29f4c0767eb..e719ecd69d01 100644
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
@@ -2011,13 +2011,13 @@ static struct sk_buff *smsc95xx_tx_fixup(struct usbnet *dev,
 	/* We do not advertise SG, so skbs should be already linearized */
 	BUG_ON(skb_shinfo(skb)->nr_frags);
 
-	if (skb_headroom(skb) < overhead) {
-		struct sk_buff *skb2 = skb_copy_expand(skb,
-			overhead, 0, flags);
+	/* Make writable and expand header space by overhead if required */
+	if (skb_cow_head(skb, overhead)) {
+		/* Must deallocate here as returning NULL to indicate error
+		 * means the skb won't be deallocated in the caller.
+		 */
 		dev_kfree_skb_any(skb);
-		skb = skb2;
-		if (!skb)
-			return NULL;
+		return NULL;
 	}
 
 	if (csum) {
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:23:58 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:23:58 +0100
Subject: [OpenWrt-Devel] [PATCH 3/8 v3] ch9200: use skb_cow_head() to deal
 with cloned skbs
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-4-linus.walleij@linaro.org>

From: Eric Dumazet <edumazet at google.com>

commit 6bc6895bdd6744e0136eaa4a11fbdb20a7db4e40 upstream.

We need to ensure there is enough headroom to push extra header,
but we also need to check if we are allowed to change headers.

skb_cow_head() is the proper helper to deal with this.

Fixes: 4a476bd6d1d9 ("usbnet: New driver for QinHeng CH9200 devices")
Signed-off-by: Eric Dumazet <edumazet at google.com>
Cc: James Hughes <james.hughes at raspberrypi.org>
Cc: Matthew Garrett <mjg59 at srcf.ucam.org>
Signed-off-by: David S. Miller <davem at davemloft.net>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 drivers/net/usb/ch9200.c | 9 ++-------
 1 file changed, 2 insertions(+), 7 deletions(-)

diff --git a/drivers/net/usb/ch9200.c b/drivers/net/usb/ch9200.c
index 8a40202c0a17..c4f1c363e24b 100644
--- a/drivers/net/usb/ch9200.c
+++ b/drivers/net/usb/ch9200.c
@@ -254,14 +254,9 @@ static struct sk_buff *ch9200_tx_fixup(struct usbnet *dev, struct sk_buff *skb,
 	tx_overhead = 0x40;
 
 	len = skb->len;
-	if (skb_headroom(skb) < tx_overhead) {
-		struct sk_buff *skb2;
-
-		skb2 = skb_copy_expand(skb, tx_overhead, 0, flags);
+	if (skb_cow_head(skb, tx_overhead)) {
 		dev_kfree_skb_any(skb);
-		skb = skb2;
-		if (!skb)
-			return NULL;
+		return NULL;
 	}
 
 	__skb_push(skb, tx_overhead);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:23:59 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:23:59 +0100
Subject: [OpenWrt-Devel] [PATCH 4/8 v3] kaweth: use skb_cow_head() to deal
 with cloned skbs
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-5-linus.walleij@linaro.org>

From: Eric Dumazet <edumazet at google.com>

commit 39fba7835aacda65284a86e611774cbba71dac20 upstream.

We can use skb_cow_head() to properly deal with clones,
especially the ones coming from TCP stack that allow their head being
modified. This avoids a copy.

Signed-off-by: Eric Dumazet <edumazet at google.com>
Cc: James Hughes <james.hughes at raspberrypi.org>
Signed-off-by: David S. Miller <davem at davemloft.net>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 drivers/net/usb/kaweth.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)

diff --git a/drivers/net/usb/kaweth.c b/drivers/net/usb/kaweth.c
index 66b34ddbe216..72d9e7954b0a 100644
--- a/drivers/net/usb/kaweth.c
+++ b/drivers/net/usb/kaweth.c
@@ -803,18 +803,12 @@ static netdev_tx_t kaweth_start_xmit(struct sk_buff *skb,
 	}
 
 	/* We now decide whether we can put our special header into the sk_buff */
-	if (skb_cloned(skb) || skb_headroom(skb) < 2) {
-		/* no such luck - we make our own */
-		struct sk_buff *copied_skb;
-		copied_skb = skb_copy_expand(skb, 2, 0, GFP_ATOMIC);
-		dev_kfree_skb_irq(skb);
-		skb = copied_skb;
-		if (!copied_skb) {
-			kaweth->stats.tx_errors++;
-			netif_start_queue(net);
-			spin_unlock_irq(&kaweth->device_lock);
-			return NETDEV_TX_OK;
-		}
+	if (skb_cow_head(skb, 2)) {
+		kaweth->stats.tx_errors++;
+		netif_start_queue(net);
+		spin_unlock_irq(&kaweth->device_lock);
+		dev_kfree_skb_any(skb);
+		return NETDEV_TX_OK;
 	}
 
 	private_header = (__le16 *)__skb_push(skb, 2);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:24:00 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:24:00 +0100
Subject: [OpenWrt-Devel] [PATCH 5/8 v3] ubifs: Drop softlimit and delta
 fields from struct ubifs_wbuf
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-6-linus.walleij@linaro.org>

From: Rafa? Mi?ecki <rafal at milecki.pl>

commit 854826c9d526fd81077742c3b000e3f7fcaef3ce upstream.

Values of these fields are set during init and never modified. They are
used (read) in a single function only. There isn't really any reason to
keep them in a struct. It only makes struct just a bit bigger without
any visible gain.

Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
Signed-off-by: Richard Weinberger <richard at nod.at>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.10
- Should be applied to stable v4.9.y
---
 fs/ubifs/io.c    | 18 ++++++++++--------
 fs/ubifs/ubifs.h |  5 -----
 2 files changed, 10 insertions(+), 13 deletions(-)

diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
index 97be41215332..4d6ce4a2a4b6 100644
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
@@ -452,16 +452,22 @@ static enum hrtimer_restart wbuf_timer_callback_nolock(struct hrtimer *timer)
  */
 static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
 {
+	ktime_t softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
+	unsigned long long delta;
+
+	delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
+	delta *= 1000000000ULL;
+
 	ubifs_assert(!hrtimer_active(&wbuf->timer));
+	ubifs_assert(delta <= ULONG_MAX);
 
 	if (wbuf->no_timer)
 		return;
 	dbg_io("set timer for jhead %s, %llu-%llu millisecs",
 	       dbg_jhead(wbuf->jhead),
-	       div_u64(ktime_to_ns(wbuf->softlimit), USEC_PER_SEC),
-	       div_u64(ktime_to_ns(wbuf->softlimit) + wbuf->delta,
-		       USEC_PER_SEC));
-	hrtimer_start_range_ns(&wbuf->timer, wbuf->softlimit, wbuf->delta,
+	       div_u64(ktime_to_ns(softlimit), USEC_PER_SEC),
+	       div_u64(ktime_to_ns(softlimit) + delta, USEC_PER_SEC));
+	hrtimer_start_range_ns(&wbuf->timer, softlimit, delta,
 			       HRTIMER_MODE_REL);
 }
 
@@ -1059,10 +1065,6 @@ int ubifs_wbuf_init(struct ubifs_info *c, struct ubifs_wbuf *wbuf)
 
 	hrtimer_init(&wbuf->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL);
 	wbuf->timer.function = wbuf_timer_callback_nolock;
-	wbuf->softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
-	wbuf->delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
-	wbuf->delta *= 1000000000ULL;
-	ubifs_assert(wbuf->delta <= ULONG_MAX);
 	return 0;
 }
 
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index 096035eb29d0..ade4b3137a1d 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -645,9 +645,6 @@ typedef int (*ubifs_lpt_scan_callback)(struct ubifs_info *c,
  * @io_mutex: serializes write-buffer I/O
  * @lock: serializes @buf, @lnum, @offs, @avail, @used, @next_ino and @inodes
  *        fields
- * @softlimit: soft write-buffer timeout interval
- * @delta: hard and soft timeouts delta (the timer expire interval is @softlimit
- *         and @softlimit + @delta)
  * @timer: write-buffer timer
  * @no_timer: non-zero if this write-buffer does not have a timer
  * @need_sync: non-zero if the timer expired and the wbuf needs sync'ing
@@ -676,8 +673,6 @@ struct ubifs_wbuf {
 	int (*sync_callback)(struct ubifs_info *c, int lnum, int free, int pad);
 	struct mutex io_mutex;
 	spinlock_t lock;
-	ktime_t softlimit;
-	unsigned long long delta;
 	struct hrtimer timer;
 	unsigned int no_timer:1;
 	unsigned int need_sync:1;
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 08:24:01 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:24:01 +0100
Subject: [OpenWrt-Devel] [PATCH 6/8 v3] ubifs: Use dirty_writeback_interval
 value for wbuf timer
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-7-linus.walleij@linaro.org>

From: Rafa? Mi?ecki <rafal at milecki.pl>

commit 1b7fc2c0069f3864a3dda15430b7aded31c0bfcc upstream.

Right now wbuf timer has hardcoded timeouts and there is no place for
manual adjustments. Some projects / cases many need that though. Few
file systems allow doing that by respecting dirty_writeback_interval
that can be set using sysctl (dirty_writeback_centisecs).

Lowering dirty_writeback_interval could be some way of dealing with user
space apps lacking proper fsyncs. This is definitely *not* a perfect
solution but we don't have ideal (user space) world. There were already
advanced discussions on this matter, mostly when ext4 was introduced and
it wasn't behaving as ext3. Anyway, the final decision was to add some
hacks to the ext4, as trying to fix whole user space or adding new API
was pointless.

We can't (and shouldn't?) just follow ext4. We can't e.g. sync on close
as this would cause too many commits and flash wearing. On the other
hand we still should allow some trade-off between -o sync and default
wbuf timeout. Respecting dirty_writeback_interval should allow some sane
cutomizations if used warily.

Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
Signed-off-by: Richard Weinberger <richard at nod.at>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.10
- Should be applied to stable v4.9.y
---
 fs/ubifs/io.c    | 8 ++++----
 fs/ubifs/ubifs.h | 4 ----
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/fs/ubifs/io.c b/fs/ubifs/io.c
index 4d6ce4a2a4b6..3be28900bf37 100644
--- a/fs/ubifs/io.c
+++ b/fs/ubifs/io.c
@@ -452,11 +452,11 @@ static enum hrtimer_restart wbuf_timer_callback_nolock(struct hrtimer *timer)
  */
 static void new_wbuf_timer_nolock(struct ubifs_wbuf *wbuf)
 {
-	ktime_t softlimit = ktime_set(WBUF_TIMEOUT_SOFTLIMIT, 0);
-	unsigned long long delta;
+	ktime_t softlimit = ms_to_ktime(dirty_writeback_interval * 10);
+	unsigned long long delta = dirty_writeback_interval;
 
-	delta = WBUF_TIMEOUT_HARDLIMIT - WBUF_TIMEOUT_SOFTLIMIT;
-	delta *= 1000000000ULL;
+	/* centi to milli, milli to nano, then 10% */
+	delta *= 10ULL * NSEC_PER_MSEC / 10ULL;
 
 	ubifs_assert(!hrtimer_active(&wbuf->timer));
 	ubifs_assert(delta <= ULONG_MAX);
diff --git a/fs/ubifs/ubifs.h b/fs/ubifs/ubifs.h
index ade4b3137a1d..b8b18d446a49 100644
--- a/fs/ubifs/ubifs.h
+++ b/fs/ubifs/ubifs.h
@@ -83,10 +83,6 @@
  */
 #define BGT_NAME_PATTERN "ubifs_bgt%d_%d"
 
-/* Write-buffer synchronization timeout interval in seconds */
-#define WBUF_TIMEOUT_SOFTLIMIT 3
-#define WBUF_TIMEOUT_HARDLIMIT 5
-
 /* Maximum possible inode number (only 32-bit inodes are supported now) */
 #define MAX_INUM 0xFFFFFFFF
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Thu Feb 14 08:24:02 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:24:02 +0100
Subject: [OpenWrt-Devel] [PATCH 7/8 v3] usb: dwc2: Remove unnecessary kfree
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-8-linus.walleij@linaro.org>

From: John Youn <johnyoun at synopsys.com>

commit cd4b1e34655d46950c065d9284b596cd8d7b28cd upstream.

This shouldn't be freed by the HCD as it is owned by the core and
allocated with devm_kzalloc.

Signed-off-by: John Youn <johnyoun at synopsys.com>
Signed-off-by: Felipe Balbi <felipe.balbi at linux.intel.com>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.10
- Should be applied to stable v4.9.y
---
 drivers/usb/dwc2/hcd.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/usb/dwc2/hcd.c b/drivers/usb/dwc2/hcd.c
index 984d6aae7529..0e5435330c07 100644
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -5202,7 +5202,6 @@ int dwc2_hcd_init(struct dwc2_hsotg *hsotg, int irq)
 error2:
 	usb_put_hcd(hcd);
 error1:
-	kfree(hsotg->core_params);
 
 #ifdef CONFIG_USB_DWC2_TRACK_MISSED_SOFS
 	kfree(hsotg->last_frame_num_array);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Thu Feb 14 08:24:03 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Thu, 14 Feb 2019 14:24:03 +0100
Subject: [OpenWrt-Devel] [PATCH 8/8 v3] netfilter: nf_tables: fix mismatch
 in big-endian system
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190214132403.10687-9-linus.walleij@linaro.org>

From: Liping Zhang <zlpnobody at gmail.com>

commit 10596608c4d62cb8c1c2b806debcbd32fe657e71 upstream.

Currently, there are two different methods to store an u16 integer to
the u32 data register. For example:
  u32 *dest = &regs->data[priv->dreg];
  1. *dest = 0; *(u16 *) dest = val_u16;
  2. *dest = val_u16;

For method 1, the u16 value will be stored like this, either in
big-endian or little-endian system:
  0          15           31
  +-+-+-+-+-+-+-+-+-+-+-+-+
  |   Value   |     0     |
  +-+-+-+-+-+-+-+-+-+-+-+-+

For method 2, in little-endian system, the u16 value will be the same
as listed above. But in big-endian system, the u16 value will be stored
like this:
  0          15           31
  +-+-+-+-+-+-+-+-+-+-+-+-+
  |     0     |   Value   |
  +-+-+-+-+-+-+-+-+-+-+-+-+

So later we use "memcmp(&regs->data[priv->sreg], data, 2);" to do
compare in nft_cmp, nft_lookup expr ..., method 2 will get the wrong
result in big-endian system, as 0~15 bits will always be zero.

For the similar reason, when loading an u16 value from the u32 data
register, we should use "*(u16 *) sreg;" instead of "(u16)*sreg;",
the 2nd method will get the wrong value in the big-endian system.

So introduce some wrapper functions to store/load an u8 or u16
integer to/from the u32 data register, and use them in the right
place.

Signed-off-by: Liping Zhang <zlpnobody at gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo at netfilter.org>
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
- This was applied upstream in v4.11
- Should be applied to stable v4.9.y
---
 include/net/netfilter/nf_tables.h   | 29 ++++++++++++++++++++
 net/ipv4/netfilter/nft_masq_ipv4.c  |  8 +++---
 net/ipv4/netfilter/nft_redir_ipv4.c |  8 +++---
 net/ipv6/netfilter/nft_masq_ipv6.c  |  8 +++---
 net/ipv6/netfilter/nft_redir_ipv6.c |  8 +++---
 net/netfilter/nft_ct.c              | 10 +++----
 net/netfilter/nft_meta.c            | 42 +++++++++++++++--------------
 net/netfilter/nft_nat.c             |  8 +++---
 8 files changed, 76 insertions(+), 45 deletions(-)

diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index b02af0bf5777..66f6b84df287 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -87,6 +87,35 @@ struct nft_regs {
 	};
 };
 
+/* Store/load an u16 or u8 integer to/from the u32 data register.
+ *
+ * Note, when using concatenations, register allocation happens at 32-bit
+ * level. So for store instruction, pad the rest part with zero to avoid
+ * garbage values.
+ */
+
+static inline void nft_reg_store16(u32 *dreg, u16 val)
+{
+	*dreg = 0;
+	*(u16 *)dreg = val;
+}
+
+static inline void nft_reg_store8(u32 *dreg, u8 val)
+{
+	*dreg = 0;
+	*(u8 *)dreg = val;
+}
+
+static inline u16 nft_reg_load16(u32 *sreg)
+{
+	return *(u16 *)sreg;
+}
+
+static inline u8 nft_reg_load8(u32 *sreg)
+{
+	return *(u8 *)sreg;
+}
+
 static inline void nft_data_copy(u32 *dst, const struct nft_data *src,
 				 unsigned int len)
 {
diff --git a/net/ipv4/netfilter/nft_masq_ipv4.c b/net/ipv4/netfilter/nft_masq_ipv4.c
index 51ced81b616c..dc3628a396ec 100644
--- a/net/ipv4/netfilter/nft_masq_ipv4.c
+++ b/net/ipv4/netfilter/nft_masq_ipv4.c
@@ -26,10 +26,10 @@ static void nft_masq_ipv4_eval(const struct nft_expr *expr,
 	memset(&range, 0, sizeof(range));
 	range.flags = priv->flags;
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 	}
 	regs->verdict.code = nf_nat_masquerade_ipv4(pkt->skb, pkt->hook,
 						    &range, pkt->out);
diff --git a/net/ipv4/netfilter/nft_redir_ipv4.c b/net/ipv4/netfilter/nft_redir_ipv4.c
index c09d4381427e..f760524e1353 100644
--- a/net/ipv4/netfilter/nft_redir_ipv4.c
+++ b/net/ipv4/netfilter/nft_redir_ipv4.c
@@ -26,10 +26,10 @@ static void nft_redir_ipv4_eval(const struct nft_expr *expr,
 
 	memset(&mr, 0, sizeof(mr));
 	if (priv->sreg_proto_min) {
-		mr.range[0].min.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		mr.range[0].max.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		mr.range[0].min.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		mr.range[0].max.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		mr.range[0].flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
diff --git a/net/ipv6/netfilter/nft_masq_ipv6.c b/net/ipv6/netfilter/nft_masq_ipv6.c
index 9597ffb74077..b74a420050c4 100644
--- a/net/ipv6/netfilter/nft_masq_ipv6.c
+++ b/net/ipv6/netfilter/nft_masq_ipv6.c
@@ -27,10 +27,10 @@ static void nft_masq_ipv6_eval(const struct nft_expr *expr,
 	memset(&range, 0, sizeof(range));
 	range.flags = priv->flags;
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 	}
 	regs->verdict.code = nf_nat_masquerade_ipv6(pkt->skb, &range, pkt->out);
 }
diff --git a/net/ipv6/netfilter/nft_redir_ipv6.c b/net/ipv6/netfilter/nft_redir_ipv6.c
index aca44e89a881..7ef58e493fca 100644
--- a/net/ipv6/netfilter/nft_redir_ipv6.c
+++ b/net/ipv6/netfilter/nft_redir_ipv6.c
@@ -26,10 +26,10 @@ static void nft_redir_ipv6_eval(const struct nft_expr *expr,
 
 	memset(&range, 0, sizeof(range));
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min],
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max],
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		range.flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
diff --git a/net/netfilter/nft_ct.c b/net/netfilter/nft_ct.c
index d7b0d171172a..2b9fda71fa8b 100644
--- a/net/netfilter/nft_ct.c
+++ b/net/netfilter/nft_ct.c
@@ -77,7 +77,7 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 
 	switch (priv->key) {
 	case NFT_CT_DIRECTION:
-		*dest = CTINFO2DIR(ctinfo);
+		nft_reg_store8(dest, CTINFO2DIR(ctinfo));
 		return;
 	case NFT_CT_STATUS:
 		*dest = ct->status;
@@ -129,10 +129,10 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 		return;
 	}
 	case NFT_CT_L3PROTOCOL:
-		*dest = nf_ct_l3num(ct);
+		nft_reg_store8(dest, nf_ct_l3num(ct));
 		return;
 	case NFT_CT_PROTOCOL:
-		*dest = nf_ct_protonum(ct);
+		nft_reg_store8(dest, nf_ct_protonum(ct));
 		return;
 	default:
 		break;
@@ -149,10 +149,10 @@ static void nft_ct_get_eval(const struct nft_expr *expr,
 		       nf_ct_l3num(ct) == NFPROTO_IPV4 ? 4 : 16);
 		return;
 	case NFT_CT_PROTO_SRC:
-		*dest = (__force __u16)tuple->src.u.all;
+		nft_reg_store16(dest, (__force u16)tuple->src.u.all);
 		return;
 	case NFT_CT_PROTO_DST:
-		*dest = (__force __u16)tuple->dst.u.all;
+		nft_reg_store16(dest, (__force u16)tuple->dst.u.all);
 		return;
 	default:
 		break;
diff --git a/net/netfilter/nft_meta.c b/net/netfilter/nft_meta.c
index 7c3395513ff0..cec8dc0e5e6f 100644
--- a/net/netfilter/nft_meta.c
+++ b/net/netfilter/nft_meta.c
@@ -45,16 +45,15 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 		*dest = skb->len;
 		break;
 	case NFT_META_PROTOCOL:
-		*dest = 0;
-		*(__be16 *)dest = skb->protocol;
+		nft_reg_store16(dest, (__force u16)skb->protocol);
 		break;
 	case NFT_META_NFPROTO:
-		*dest = pkt->pf;
+		nft_reg_store8(dest, pkt->pf);
 		break;
 	case NFT_META_L4PROTO:
 		if (!pkt->tprot_set)
 			goto err;
-		*dest = pkt->tprot;
+		nft_reg_store8(dest, pkt->tprot);
 		break;
 	case NFT_META_PRIORITY:
 		*dest = skb->priority;
@@ -85,14 +84,12 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 	case NFT_META_IIFTYPE:
 		if (in == NULL)
 			goto err;
-		*dest = 0;
-		*(u16 *)dest = in->type;
+		nft_reg_store16(dest, in->type);
 		break;
 	case NFT_META_OIFTYPE:
 		if (out == NULL)
 			goto err;
-		*dest = 0;
-		*(u16 *)dest = out->type;
+		nft_reg_store16(dest, out->type);
 		break;
 	case NFT_META_SKUID:
 		sk = skb_to_full_sk(skb);
@@ -142,22 +139,22 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 #endif
 	case NFT_META_PKTTYPE:
 		if (skb->pkt_type != PACKET_LOOPBACK) {
-			*dest = skb->pkt_type;
+			nft_reg_store8(dest, skb->pkt_type);
 			break;
 		}
 
 		switch (pkt->pf) {
 		case NFPROTO_IPV4:
 			if (ipv4_is_multicast(ip_hdr(skb)->daddr))
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 			else
-				*dest = PACKET_BROADCAST;
+				nft_reg_store8(dest, PACKET_BROADCAST);
 			break;
 		case NFPROTO_IPV6:
 			if (ipv6_hdr(skb)->daddr.s6_addr[0] == 0xFF)
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 			else
-				*dest = PACKET_BROADCAST;
+				nft_reg_store8(dest, PACKET_BROADCAST);
 			break;
 		case NFPROTO_NETDEV:
 			switch (skb->protocol) {
@@ -171,14 +168,14 @@ void nft_meta_get_eval(const struct nft_expr *expr,
 					goto err;
 
 				if (ipv4_is_multicast(iph->daddr))
-					*dest = PACKET_MULTICAST;
+					nft_reg_store8(dest, PACKET_MULTICAST);
 				else
-					*dest = PACKET_BROADCAST;
+					nft_reg_store8(dest, PACKET_BROADCAST);
 
 				break;
 			}
 			case htons(ETH_P_IPV6):
-				*dest = PACKET_MULTICAST;
+				nft_reg_store8(dest, PACKET_MULTICAST);
 				break;
 			default:
 				WARN_ON_ONCE(1);
@@ -233,7 +230,9 @@ void nft_meta_set_eval(const struct nft_expr *expr,
 {
 	const struct nft_meta *meta = nft_expr_priv(expr);
 	struct sk_buff *skb = pkt->skb;
-	u32 value = regs->data[meta->sreg];
+	u32 *sreg = &regs->data[meta->sreg];
+	u32 value = *sreg;
+	u8 pkt_type;
 
 	switch (meta->key) {
 	case NFT_META_MARK:
@@ -243,9 +242,12 @@ void nft_meta_set_eval(const struct nft_expr *expr,
 		skb->priority = value;
 		break;
 	case NFT_META_PKTTYPE:
-		if (skb->pkt_type != value &&
-		    skb_pkt_type_ok(value) && skb_pkt_type_ok(skb->pkt_type))
-			skb->pkt_type = value;
+		pkt_type = nft_reg_load8(sreg);
+
+		if (skb->pkt_type != pkt_type &&
+		    skb_pkt_type_ok(pkt_type) &&
+		    skb_pkt_type_ok(skb->pkt_type))
+			skb->pkt_type = pkt_type;
 		break;
 	case NFT_META_NFTRACE:
 		skb->nf_trace = !!value;
diff --git a/net/netfilter/nft_nat.c b/net/netfilter/nft_nat.c
index ee2d71753746..4c48e9bb21e2 100644
--- a/net/netfilter/nft_nat.c
+++ b/net/netfilter/nft_nat.c
@@ -65,10 +65,10 @@ static void nft_nat_eval(const struct nft_expr *expr,
 	}
 
 	if (priv->sreg_proto_min) {
-		range.min_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_min];
-		range.max_proto.all =
-			*(__be16 *)&regs->data[priv->sreg_proto_max];
+		range.min_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_min]);
+		range.max_proto.all = (__force __be16)nft_reg_load16(
+			&regs->data[priv->sreg_proto_max]);
 		range.flags |= NF_NAT_RANGE_PROTO_SPECIFIED;
 	}
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ldir at darbyshire-bryant.me.uk  Thu Feb 14 10:12:04 2019
From: ldir at darbyshire-bryant.me.uk (Kevin 'ldir' Darbyshire-Bryant)
Date: Thu, 14 Feb 2019 15:12:04 +0000
Subject: [OpenWrt-Devel] [PATCH] net: Allow class-e address assignment
 via ifconfig ioctl
In-Reply-To: <20190214122244.25796-1-linus.walleij@linaro.org>
References: <20190214122244.25796-1-linus.walleij@linaro.org>
Message-ID: <F82AFC9D-68DB-4D63-A73A-858A3DA60E08@darbyshire-bryant.me.uk>

Hi Linus,

FYI this was backported to the Openwrt patch tree by yours truly in https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=2574c86ce66c4032e5905d46601106ccc0c69676

and the follow up fix in https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=1fdb4a7907e0290c7fe5ca3346d40782002dec7b

I await the opportunity to remove the patches for 4.9/4.14/4.19 courtesy delivery from upstream :-)

Cheers,

Kevin

> On 14 Feb 2019, at 12:22, Linus Walleij <linus.walleij at linaro.org> wrote:
> 
> From: Dave Taht <dave.taht at gmail.com>
> 
> commit 65cab850f0eeaa9180bd2e10a231964f33743edf upstream.
> 
> While most distributions long ago switched to the iproute2 suite
> of utilities, which allow class-e (240.0.0.0/4) address assignment,
> distributions relying on busybox, toybox and other forms of
> ifconfig cannot assign class-e addresses without this kernel patch.
> 
> While CIDR has been obsolete for 2 decades, and a survey of all the
> open source code in the world shows the IN_whatever macros are also
> obsolete... rather than obsolete CIDR from this ioctl entirely, this
> patch merely enables class-e assignment, sanely.
> 
> Signed-off-by: Dave Taht <dave.taht at gmail.com>
> Signed-off-by: David S. Miller <davem at davemloft.net>
> ---
> - This commit is upstream in v4.20
> - This should ve applied for stable v4.19.y, v4.14.y and v4.9.y
> ---
> include/uapi/linux/in.h | 10 +++++++---
> net/ipv4/devinet.c      |  5 +++--
> net/ipv4/ipconfig.c     |  2 ++
> 3 files changed, 12 insertions(+), 5 deletions(-)
> 
> diff --git a/include/uapi/linux/in.h b/include/uapi/linux/in.h
> index 48e8a225b985..f6052e70bf40 100644
> --- a/include/uapi/linux/in.h
> +++ b/include/uapi/linux/in.h
> @@ -266,10 +266,14 @@ struct sockaddr_in {
> 
> #define	IN_CLASSD(a)		((((long int) (a)) & 0xf0000000) == 0xe0000000)
> #define	IN_MULTICAST(a)		IN_CLASSD(a)
> -#define IN_MULTICAST_NET	0xF0000000
> +#define	IN_MULTICAST_NET	0xe0000000
> 
> -#define	IN_EXPERIMENTAL(a)	((((long int) (a)) & 0xf0000000) == 0xf0000000)
> -#define	IN_BADCLASS(a)		IN_EXPERIMENTAL((a))
> +#define	IN_BADCLASS(a)		((((long int) (a) ) == 0xffffffff)
> +#define	IN_EXPERIMENTAL(a)	IN_BADCLASS((a))
> +
> +#define	IN_CLASSE(a)		((((long int) (a)) & 0xf0000000) == 0xf0000000)
> +#define	IN_CLASSE_NET		0xffffffff
> +#define	IN_CLASSE_NSHIFT	0
> 
> /* Address to accept any incoming messages. */
> #define	INADDR_ANY		((unsigned long int) 0x00000000)
> diff --git a/net/ipv4/devinet.c b/net/ipv4/devinet.c
> index ea4bd8a52422..e38042933a27 100644
> --- a/net/ipv4/devinet.c
> +++ b/net/ipv4/devinet.c
> @@ -941,17 +941,18 @@ static int inet_abc_len(__be32 addr)
> {
> 	int rc = -1;	/* Something else, probably a multicast. */
> 
> -	if (ipv4_is_zeronet(addr))
> +	if (ipv4_is_zeronet(addr) || ipv4_is_lbcast(addr))
> 		rc = 0;
> 	else {
> 		__u32 haddr = ntohl(addr);
> -
> 		if (IN_CLASSA(haddr))
> 			rc = 8;
> 		else if (IN_CLASSB(haddr))
> 			rc = 16;
> 		else if (IN_CLASSC(haddr))
> 			rc = 24;
> +		else if (IN_CLASSE(haddr))
> +			rc = 32;
> 	}
> 
> 	return rc;
> diff --git a/net/ipv4/ipconfig.c b/net/ipv4/ipconfig.c
> index 88212615bf4c..2393e5c106bf 100644
> --- a/net/ipv4/ipconfig.c
> +++ b/net/ipv4/ipconfig.c
> @@ -429,6 +429,8 @@ static int __init ic_defaults(void)
> 			ic_netmask = htonl(IN_CLASSB_NET);
> 		else if (IN_CLASSC(ntohl(ic_myaddr)))
> 			ic_netmask = htonl(IN_CLASSC_NET);
> +		else if (IN_CLASSE(ntohl(ic_myaddr)))
> +			ic_netmask = htonl(IN_CLASSE_NET);
> 		else {
> 			pr_err("IP-Config: Unable to guess netmask for address %pI4\n",
> 			       &ic_myaddr);
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Cheers,

Kevin D-B

012C ACB2 28C6 C53E 9775  9123 B3A2 389B 9DE2 334A


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From e9hack at gmail.com  Thu Feb 14 12:43:26 2019
From: e9hack at gmail.com (e9hack)
Date: Thu, 14 Feb 2019 18:43:26 +0100
Subject: [OpenWrt-Devel] 5GHz wifi is broken
Message-ID: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>

Hi,

a change somewhere between 8.Feb and 10.Feb breaks the usage of the 5GHz WiFi on my Archer C7 router. I get the
following entries in the log file:

Thu Feb 14 18:27:01 2019 daemon.err hostapd: Failed to set beacon parameters
Thu Feb 14 18:27:01 2019 daemon.err hostapd: Interface initialization failed
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DFS->DISABLED
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DISABLED->DISABLED
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: AP-DISABLED
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: CTRL-EVENT-TERMINATING
Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-2 wasn't started
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: AP-DISABLED
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: CTRL-EVENT-TERMINATING
Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-1 wasn't started
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: CTRL-EVENT-TERMINATING
Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0 wasn't started
Thu Feb 14 18:27:01 2019 daemon.notice hostapd: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
Thu Feb 14 18:27:01 2019 kern.info kernel: [  162.919267] device wlan0 left promiscuous mode
Thu Feb 14 18:27:01 2019 kern.info kernel: [  162.923985] br-lan: port 2(wlan0) entered disabled state
Thu Feb 14 18:27:02 2019 daemon.notice hostapd: ELOOP: remaining socket: sock=23 eloop_data=0x77f9cc40 user_data=0
handler=0x556a2d91
Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): cat: can't open '/var/run/wifi-phy0.pid': No such file or
directory
Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): WARNING (wireless_add_process): executable path
/usr/sbin/hostapd does not match process  path (/proc/exe)
Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): Command failed: Invalid argument
Thu Feb 14 18:27:03 2019 kern.warn kernel: [  164.791404] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16  peers: 127
tid: 256
Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.808256] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.814618] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424  sw-crypt:
0 ct-sta: 0'
Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.822797] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24616 iram: 26584'
Thu Feb 14 18:27:03 2019 kern.warn kernel: [  164.900521] ath10k_pci 0000:00:00.0: pdev param 0 not supported by firmware
Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.925384] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-1"
Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Interface 1 setup failed: IFUP_ERROR
Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-2"
Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Interface 2 setup failed: IFUP_ERROR
Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.183839] br-lan: port 2(wlan0) entered blocking state
Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.189311] br-lan: port 2(wlan0) entered disabled state
Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.195048] device wlan0 entered promiscuous mode

Regards,
Hartmut

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Thu Feb 14 16:07:58 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Thu, 14 Feb 2019 13:07:58 -0800
Subject: [OpenWrt-Devel] [PATCH] mdadm: Update to 4.1
Message-ID: <20190214210758.6072-1-rosenp@gmail.com>

Tested on GnuBee PC1.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 package/utils/mdadm/Makefile                              | 6 +++---
 package/utils/mdadm/patches/100-cross_compile.patch       | 6 +++---
 .../101-mdadm.h-Undefine-dprintf-before-redefining.patch  | 2 +-
 package/utils/mdadm/patches/200-reduce_size.patch         | 8 ++++----
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/package/utils/mdadm/Makefile b/package/utils/mdadm/Makefile
index 3fabc8a292..18026bbed2 100644
--- a/package/utils/mdadm/Makefile
+++ b/package/utils/mdadm/Makefile
@@ -8,12 +8,12 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mdadm
-PKG_VERSION:=4.0
-PKG_RELEASE:=5
+PKG_VERSION:=4.1
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/utils/raid/mdadm
-PKG_HASH:=1d6ae7f24ced3a0fa7b5613b32f4a589bb4881e3946a5a2c3724056254ada3a9
+PKG_HASH:=ab7688842908d3583a704d491956f31324c3a5fc9f6a04653cb75d19f1934f4a
 
 PKG_MAINTAINER:=Felix Fietkau <nbd at nbd.name>
 PKG_CPE_ID:=cpe:/a:mdadm_project:mdadm
diff --git a/package/utils/mdadm/patches/100-cross_compile.patch b/package/utils/mdadm/patches/100-cross_compile.patch
index 62bf693455..3576364d6f 100644
--- a/package/utils/mdadm/patches/100-cross_compile.patch
+++ b/package/utils/mdadm/patches/100-cross_compile.patch
@@ -1,11 +1,11 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -86,7 +86,7 @@ DLM:=$(shell [ -f /usr/include/libdlm.h
+@@ -97,7 +97,7 @@ DLM:=$(shell [ -f /usr/include/libdlm.h ] || echo -DNO_DLM)
  DIRFLAGS = -DMAP_DIR=\"$(MAP_DIR)\" -DMAP_FILE=\"$(MAP_FILE)\"
  DIRFLAGS += -DMDMON_DIR=\"$(MDMON_DIR)\"
  DIRFLAGS += -DFAILED_SLOTS_DIR=\"$(FAILED_SLOTS_DIR)\"
 -CFLAGS = $(CWFLAGS) $(CXFLAGS) -DSendmail=\""$(MAILCMD)"\" $(CONFFILEFLAGS) $(DIRFLAGS) $(COROSYNC) $(DLM)
-+# CFLAGS = $(CWFLAGS) $(CXFLAGS) -DSendmail=\""$(MAILCMD)"\" $(CONFFILEFLAGS) $(DIRFLAGS) $(COROSYNC) $(DLM)
++#CFLAGS = $(CWFLAGS) $(CXFLAGS) -DSendmail=\""$(MAILCMD)"\" $(CONFFILEFLAGS) $(DIRFLAGS) $(COROSYNC) $(DLM)
  
  VERSION = $(shell [ -d .git ] && git describe HEAD | sed 's/mdadm-//')
- VERS_DATE = $(shell [ -d .git ] && date --date="`git log -n1 --format=format:%cd --date=short`" '+%0dth %B %Y' | sed -e 's/1th/1st/' -e 's/2th/2nd/' -e 's/11st/11th/' -e 's/12nd/12th/')
+ VERS_DATE = $(shell [ -d .git ] && date --iso-8601 --date="`git log -n1 --format=format:%cd --date=iso --date=short`")
diff --git a/package/utils/mdadm/patches/101-mdadm.h-Undefine-dprintf-before-redefining.patch b/package/utils/mdadm/patches/101-mdadm.h-Undefine-dprintf-before-redefining.patch
index bcff20d75f..356d0deec8 100644
--- a/package/utils/mdadm/patches/101-mdadm.h-Undefine-dprintf-before-redefining.patch
+++ b/package/utils/mdadm/patches/101-mdadm.h-Undefine-dprintf-before-redefining.patch
@@ -22,7 +22,7 @@ Upstream-Status: Pending
 
 --- a/mdadm.h
 +++ b/mdadm.h
-@@ -1595,11 +1595,13 @@ static inline char *to_subarray(struct m
+@@ -1649,11 +1649,13 @@ static inline char *to_subarray(struct m
  }
  
  #ifdef DEBUG
diff --git a/package/utils/mdadm/patches/200-reduce_size.patch b/package/utils/mdadm/patches/200-reduce_size.patch
index ae8204ccd9..098fa1e1ec 100644
--- a/package/utils/mdadm/patches/200-reduce_size.patch
+++ b/package/utils/mdadm/patches/200-reduce_size.patch
@@ -1,6 +1,6 @@
 --- a/Incremental.c
 +++ b/Incremental.c
-@@ -1642,6 +1642,10 @@ static int Incremental_container(struct
+@@ -1619,6 +1619,10 @@ static int Incremental_container(struct supertype *st, char *devname,
  	if (ra_all == ra_blocked)
  		return 0;
  
@@ -13,7 +13,7 @@
  	memcpy(suuid, uuid_zero, sizeof(int[4]));
 --- a/util.c
 +++ b/util.c
-@@ -1151,7 +1151,9 @@ void wait_for(char *dev, int fd)
+@@ -1220,7 +1220,9 @@ void wait_for(char *dev, int fd)
  struct superswitch *superlist[] =
  {
  	&super0, &super1,
@@ -21,5 +21,5 @@
  	&super_ddf, &super_imsm,
 +#endif
  	&mbr, &gpt,
- 	NULL };
- 
+ 	NULL
+ };
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Thu Feb 14 16:15:29 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Thu, 14 Feb 2019 13:15:29 -0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC1 SPI frequency to
 80MHz
Message-ID: <20190214211530.7301-1-rosenp@gmail.com>

The specific flash chip used (W25Q256FVEM) accepts 50MHz for read requests
and higher for others. 104MHz for fast reads. ramips seems to be limited
to 80MHz based on testing with higher values (no speedup).

Based on upstream commit: 97738374a310b9116f9c33832737e517226d3722

time dd if=/dev/mtdblock3 of=/dev/null bs=64k from

42.96s to 7.01s (with newer SPI driver).

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 target/linux/ramips/dts/GB-PC1.dts | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/target/linux/ramips/dts/GB-PC1.dts b/target/linux/ramips/dts/GB-PC1.dts
index 9c85a1e44d..e09e9f75a9 100644
--- a/target/linux/ramips/dts/GB-PC1.dts
+++ b/target/linux/ramips/dts/GB-PC1.dts
@@ -71,7 +71,8 @@
 	m25p80 at 0 {
 		compatible = "jedec,spi-nor";
 		reg = <0>;
-		spi-max-frequency = <10000000>;
+		spi-max-frequency = <80000000>;
+		m25p,fast-read;
 
 		partitions {
 			compatible = "fixed-partitions";
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Thu Feb 14 16:15:30 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Thu, 14 Feb 2019 13:15:30 -0800
Subject: [OpenWrt-Devel] [PATCH] ramips: Increase GB-PC2 SPI frequency to
 80MHz
In-Reply-To: <20190214211530.7301-1-rosenp@gmail.com>
References: <20190214211530.7301-1-rosenp@gmail.com>
Message-ID: <20190214211530.7301-2-rosenp@gmail.com>

The flash chip on the board (Spansion S25FL256SAIF00) is rated to support
at least 50MHz for normal read requests according to the datasheet. 133MHz
for fast reads. However, ramips seems to be limited to 80MHz.


From daniel at dd-wrt.com  Thu Feb 14 16:51:19 2019
From: daniel at dd-wrt.com (Daniel Danzberger)
Date: Thu, 14 Feb 2019 22:51:19 +0100
Subject: [OpenWrt-Devel] [PATCH] config-kernel: export kernels blkio cgroup
 configs.
Message-ID: <20190214215119.26049-1-daniel@dd-wrt.com>

These options can enable the blkio.weight + blkio.throttle cgroups.

Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
---
 config/Config-kernel.in | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/config/Config-kernel.in b/config/Config-kernel.in
index f38cc792dd..c89e1f9f2e 100644
--- a/config/Config-kernel.in
+++ b/config/Config-kernel.in
@@ -519,6 +519,18 @@ if KERNEL_CGROUPS
 		  CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
 		  CONFIG_BLK_DEV_THROTTLING=y.
 
+	config KERNEL_CFQ_GROUP_IOSCHED
+		bool "Block IO controller cgroup blkio.weigtht"
+		default n
+
+	config KERNEL_BLK_DEV_THROTTLING
+		bool "Block IO controller cgroup blkio.throttle"
+		default n
+
+	config KERNEL_BLK_DEV_THROTTLING_LOW
+		bool "Block IO controller cgroup blkio.throttle low limit interface support"
+		default n
+
 	config KERNEL_DEBUG_BLK_CGROUP
 		bool "Enable Block IO controller debugging"
 		default n
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From bjorn at mork.no  Fri Feb 15 08:24:57 2019
From: bjorn at mork.no (=?UTF-8?q?Bj=C3=B8rn=20Mork?=)
Date: Fri, 15 Feb 2019 14:24:57 +0100
Subject: [OpenWrt-Devel] [PATCH] mbim-proxy support
Message-ID: <20190215132457.13625-1-bjorn@mork.no>

This adds support for the libmbim-glib "mbim-proxy", allowing umbim to access
a device under ModemManager control. The feature is mostly useful for debugging
and development purposes, and is therefore disabled by default.

Signed-off-by: Bj?rn Mork <bjorn at mork.no>
---
Probably not very useful for most users, but it's a feature I've been
missing every time I have been testing or developing umbim.  I often
use the built-in modem in my laptop for quick MBIM testing. But this
modem is normally under ModemManager control and connected.  Disconnecting
and stopping ModemManager is unnecessary hassle just to send a few simple
MBIM requests using umbim.

The patch makes it possible for umbim to co-exist peacefully with
ModemManager, mixing and matching mmcli, mbimcli and umbim requests:

root at miraculix:/tmp# mmcli -b 3
  --------------------------------
  General            |  dbus path: /org/freedesktop/ModemManager1/Bearer/3
                     |       type: default
  --------------------------------
  Status             |  connected: yes
                     |  suspended: no
                     |  interface: wwan0
                     | ip timeout: 20
  --------------------------------
  Properties         |        apn: telenor.smart
                     |    roaming: allowed
                     |    ip type: ipv4v6
  --------------------------------
  IPv4 configuration |     method: static
                     |    address: 10.180.17.174
                     |     prefix: 30
                     |    gateway: 10.180.17.173
                     |        dns: 193.213.112.4, 130.67.15.198
                     |        mtu: 1500
  --------------------------------
  IPv6 configuration |     method: static
                     |    address: 2a02:2121:2c1:c222:4d24:9fd0:a5d8:9f8
                     |     prefix: 64
                     |    gateway: 2a02:2121:2c1:c222:2070:97f2:61dc:914f
                     |        dns: 2001:4600:4:fff::52, 2001:4600:4:1fff::52
                     |        mtu: 1500
  --------------------------------
  Statistics         |   duration: 18270


root at miraculix:/tmp# umbim -p -d /dev/cdc-wdm0 config
  ipv4address: 10.180.17.174/30
  ipv4gateway: 10.180.17.173
  ipv4mtu: 1500
  ipv4dnsserver: 193.213.112.4
  ipv4dnsserver: 130.67.15.198
  ipv6address: 2a02:2121:2c1:c222:65c0:d142:7f38:1546/64
  ipv6gateway: 2a02:2121:2c1:c222:2070:97f2:61dc:914f
  ipv6mtu: 1500
  ipv6dnsserver: 2001:4600:4:fff:0:0:0:52
  ipv6dnsserver: 2001:4600:4:1fff:0:0:0:52


root at miraculix:/tmp# mbimcli -p -d /dev/cdc-wdm0 --query-ip-configuration

[/dev/cdc-wdm0] IPv4 configuration available: 'address, gateway, dns, mtu'
     IP [0]: '10.180.17.174/30'
    Gateway: '10.180.17.173'
    DNS [0]: '193.213.112.4'
    DNS [1]: '130.67.15.198'
        MTU: '1500'

[/dev/cdc-wdm0] IPv6 configuration available: 'address, gateway, dns, mtu'
     IP [0]: '2a02:2121:2c1:c222:fc7e:3717:fb01:98e3/64'
    Gateway: '2a02:2121:2c1:c222:2070:97f2:61dc:914f'
    DNS [0]: '2001:4600:4:fff::52'
    DNS [1]: '2001:4600:4:1fff::52'
        MTU: '1500'


 CMakeLists.txt                    |  7 ++++++
 cli.c                             | 18 +++++++++++++-
 data/mbim-service-proxy-control.h |  5 ++++
 mbim-dev.c                        | 49 +++++++++++++++++++++++++++++++++++++++
 mbim-dev.h                        |  3 +++
 5 files changed, 81 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c210d6f828fb..bc18c1f6d0d7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,9 @@
 cmake_minimum_required(VERSION 2.6)
 
 PROJECT(umbim C)
+
+OPTION(PROXY OFF)
+
 ADD_DEFINITIONS(-Os -ggdb -Wall -Werror --std=gnu99 -Wmissing-declarations)
 
 SET(CMAKE_SHARED_LIBRARY_LINK_C_FLAGS "")
@@ -13,6 +16,10 @@ IF(DEBUG)
   ADD_DEFINITIONS(-DDEBUG -g3)
 ENDIF()
 
+IF(PROXY)
+  ADD_DEFINITIONS(-DLIBQMI_MBIM_PROXY)
+ENDIF()
+
 ADD_EXECUTABLE(umbim ${SOURCES})
 
 TARGET_LINK_LIBRARIES(umbim ${LIBS})
diff --git a/cli.c b/cli.c
index 1dd6330b8113..44c063513cfd 100644
--- a/cli.c
+++ b/cli.c
@@ -484,6 +484,9 @@ usage(void)
 {
 	fprintf(stderr, "Usage: umbim <caps|pinstate|unlock|registration|subscriber|attach|detach|connect|disconnect|config|radio> [options]\n"
 		"Options:\n"
+#ifdef LIBQMI_MBIM_PROXY
+		"    -p			use mbim-proxy\n"
+#endif
 		"    -d <device>	the device (/dev/cdc-wdmX)\n"
 		"    -t <transaction>	the transaction id\n"
 		"    -n 		no close\n\n"
@@ -496,8 +499,11 @@ main(int argc, char **argv)
 {
 	char *cmd, *device = NULL;
 	int no_open = 0, ch, i;
+#ifdef LIBQMI_MBIM_PROXY
+	int proxy = 0;
+#endif
 
-	while ((ch = getopt(argc, argv, "nvd:t:")) != -1) {
+	while ((ch = getopt(argc, argv, "pnvd:t:")) != -1) {
 		switch (ch) {
 		case 'v':
 			verbose = 1;
@@ -512,6 +518,11 @@ main(int argc, char **argv)
 			no_open = 1;
 			transaction_id = atoi(optarg);
 			break;
+#ifdef LIBQMI_MBIM_PROXY
+		case 'p':
+			proxy = 1;
+			break;
+#endif
 		default:
 			return usage();
 		}
@@ -535,6 +546,11 @@ main(int argc, char **argv)
 
 	uloop_init();
 
+#ifdef LIBQMI_MBIM_PROXY
+	if (proxy)
+		mbim_proxy_open(device);
+	else
+#endif
 	mbim_open(device);
 	if (!no_open)
 		mbim_send_open_msg();
diff --git a/data/mbim-service-proxy-control.h b/data/mbim-service-proxy-control.h
index 7d81e7d2daf6..227b6253a512 100644
--- a/data/mbim-service-proxy-control.h
+++ b/data/mbim-service-proxy-control.h
@@ -5,3 +5,8 @@
 
 #define MBIM_CMD_PROXY_CONTROL_CONFIGURATION	1
 
+struct mbim_proxy_control_configuration_s {
+	struct mbim_string devicepath;
+	uint32_t timeout;
+} __attribute__((packed));
+
diff --git a/mbim-dev.c b/mbim-dev.c
index dd1110daeb52..170de2dde198 100644
--- a/mbim-dev.c
+++ b/mbim-dev.c
@@ -27,6 +27,15 @@
 
 #include "mbim.h"
 
+
+#ifdef LIBQMI_MBIM_PROXY
+#include <sys/socket.h>
+#include <sys/un.h>
+#include "data/mbim-service-proxy-control.h"
+
+uint8_t proxy_control[16] = { 0x83, 0x8c, 0xf7, 0xfb, 0x8d, 0x0d, 0x4d, 0x7f, 0x87, 0x1e, 0xd7, 0x1d, 0xbe, 0xfb, 0xb3, 0x9b };
+#endif
+
 size_t mbim_bufsize = 0;
 uint8_t *mbim_buffer = NULL;
 static struct uloop_fd mbim_fd;
@@ -114,6 +123,10 @@ mbim_recv(struct uloop_fd *u, unsigned int events)
 		}
 		if (msg->status_code && !msg->buffer_length)
 			return_code = -le32toh(msg->status_code);
+#ifdef LIBQMI_MBIM_PROXY
+		else if (le32toh(msg->command_id) == MBIM_CMD_PROXY_CONTROL_CONFIGURATION && !memcmp(msg->service_id, proxy_control, 16))
+			break;
+#endif
 		else
 			return_code = current_handler->response(msg->buffer, le32toh(msg->buffer_length));
 		if (return_code < 0)
@@ -152,6 +165,42 @@ mbim_open(const char *path)
 	uloop_fd_add(&mbim_fd, ULOOP_READ);
 }
 
+#ifdef LIBQMI_MBIM_PROXY
+static int
+mbim_send_proxy_msg(const char *path)
+{
+	struct mbim_proxy_control_configuration_s *p =
+		(struct mbim_proxy_control_configuration_s *) mbim_setup_command_msg(proxy_control,
+			MBIM_MESSAGE_COMMAND_TYPE_SET, MBIM_CMD_PROXY_CONTROL_CONFIGURATION,
+			sizeof(struct mbim_proxy_control_configuration_s));
+	mbim_encode_string(&p->devicepath, (char *)path);
+	p->timeout = htole32(30); // FIXME: hard coded timeout
+	return mbim_send_command_msg();
+}
+
+void
+mbim_proxy_open(const char *path)
+{
+	struct sockaddr_un addr = { .sun_family = AF_UNIX, .sun_path = "\0mbim-proxy" };
+
+	mbim_fd.cb = mbim_recv;
+	mbim_fd.fd = socket(PF_UNIX, SOCK_STREAM, 0);
+	if (mbim_fd.fd < 1) {
+		perror("socket failed: ");
+		exit(-1);
+	}
+	if (connect(mbim_fd.fd, (struct sockaddr *)&addr, 13)) {
+		perror("failed to connect to mbim-proxy: ");
+		exit(-1);
+	}
+	mbim_bufsize = 512; // FIXME
+	mbim_buffer = malloc(mbim_bufsize);
+	uloop_fd_add(&mbim_fd, ULOOP_READ);
+	no_close = 1;
+	mbim_send_proxy_msg(path);
+}
+#endif
+
 void
 mbim_end(void)
 {
diff --git a/mbim-dev.h b/mbim-dev.h
index b7a253ca0bef..501bbf2b32d7 100644
--- a/mbim-dev.h
+++ b/mbim-dev.h
@@ -21,6 +21,9 @@ extern int no_close;
 
 int mbim_send(void);
 void mbim_open(const char *path);
+#ifdef LIBQMI_MBIM_PROXY
+void mbim_proxy_open(const char *path);
+#endif
 void mbim_end(void);
 
 #endif
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Fri Feb 15 11:02:14 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Fri, 15 Feb 2019 17:02:14 +0100
Subject: [OpenWrt-Devel] [PATCH 1/2] firmware-tools/ptgen: Allow generation
 0 size partitions
Message-ID: <20190215160214.19680-1-linus.walleij@linaro.org>

The firmware on the D-Link DNS-313 NAS require two blank
partitions before the boot partition. Support this if
explicitly requested with a "-n" flag.

Tested on the D-Link DNS-313.

Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
[Broken out from original patch]
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 tools/firmware-utils/src/ptgen.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/tools/firmware-utils/src/ptgen.c b/tools/firmware-utils/src/ptgen.c
index 13e0eda6222a..0192bb65e514 100644
--- a/tools/firmware-utils/src/ptgen.c
+++ b/tools/firmware-utils/src/ptgen.c
@@ -27,6 +27,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdint.h>
+#include <stdbool.h>
 #include <ctype.h>
 #include <fcntl.h>
 #include <stdint.h>
@@ -59,6 +60,7 @@ int active = 1;
 int heads = -1;
 int sectors = -1;
 int kb_align = 0;
+bool ignore_null_sized_partition = false;
 struct partinfo parts[4];
 char *filename = NULL;
 
@@ -140,6 +142,8 @@ static int gen_ptable(uint32_t signature, int nr)
 	memset(pte, 0, sizeof(struct pte) * 4);
 	for (i = 0; i < nr; i++) {
 		if (!parts[i].size) {
+			if (ignore_null_sized_partition)
+				continue;
 			fprintf(stderr, "Invalid size in partition %d!\n", i);
 			return -1;
 		}
@@ -196,7 +200,7 @@ fail:
 
 static void usage(char *prog)
 {
-	fprintf(stderr, "Usage: %s [-v] -h <heads> -s <sectors> -o <outputfile> [-a 0..4] [-l <align kB>] [[-t <type>] -p <size>...] \n", prog);
+	fprintf(stderr, "Usage: %s [-v] [-n] -h <heads> -s <sectors> -o <outputfile> [-a 0..4] [-l <align kB>] [[-t <type>] -p <size>...] \n", prog);
 	exit(EXIT_FAILURE);
 }
 
@@ -207,7 +211,7 @@ int main (int argc, char **argv)
 	int part = 0;
 	uint32_t signature = 0x5452574F; /* 'OWRT' */
 
-	while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vl:S:")) != -1) {
+	while ((ch = getopt(argc, argv, "h:s:p:a:t:o:vnl:S:")) != -1) {
 		switch (ch) {
 		case 'o':
 			filename = optarg;
@@ -215,6 +219,9 @@ int main (int argc, char **argv)
 		case 'v':
 			verbose++;
 			break;
+		case 'n':
+			ignore_null_sized_partition = true;
+			break;
 		case 'h':
 			heads = (int)strtoul(optarg, NULL, 0);
 			break;
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Fri Feb 15 11:02:23 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Fri, 15 Feb 2019 17:02:23 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] gemini: Generate harddisk image for
 DNS-313
Message-ID: <20190215160223.19734-1-linus.walleij@linaro.org>

This makes OpenWrt build an Ext2+Ext4 partitioned image
for the D-Link DNS-313 with two blank partitions, a boot
partition on /dev/sda3 and a rootfs partition on
/dev/sda4.

This uses the methods already used in apm821xx including
the tricks to convert the generated Ext2 filesystem
partition to version 1 so that the firmware bootloader
will properly recognize it.

We patch a bit around the build files to make sure we
get the rootfs size set and that genext2fs is properly
built.

Tested on the D-Link DNS-313.

Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
[Fixing and tricksing]
Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
---
 config/Config-images.in                       |  2 +-
 target/linux/gemini/Makefile                  |  2 +-
 target/linux/gemini/image/Makefile            | 27 ++++++++++++++----
 .../linux/gemini/image/dns313_gen_hdd_img.sh  | 28 +++++++++++++++++++
 tools/Makefile                                |  2 +-
 5 files changed, 52 insertions(+), 9 deletions(-)
 create mode 100755 target/linux/gemini/image/dns313_gen_hdd_img.sh

diff --git a/config/Config-images.in b/config/Config-images.in
index bdd24ef6178c..b9cc929f0f95 100644
--- a/config/Config-images.in
+++ b/config/Config-images.in
@@ -275,7 +275,7 @@ menu "Target Images"
 
 	config TARGET_ROOTFS_PARTSIZE
 		int "Root filesystem partition size (in MB)"
-		depends on GRUB_IMAGES || USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_mvebu || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml
+		depends on GRUB_IMAGES || USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_mvebu || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml || TARGET_gemini
 		default 256
 		help
 		  Select the root filesystem partition size.
diff --git a/target/linux/gemini/Makefile b/target/linux/gemini/Makefile
index 7c573c7c6d09..e232937bb9eb 100644
--- a/target/linux/gemini/Makefile
+++ b/target/linux/gemini/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 ARCH:=arm
 BOARD:=gemini
 BOARDNAME:=Cortina Systems CS351x
-FEATURES:=squashfs pci rtc usb dt gpio display
+FEATURES:=squashfs pci rtc usb dt gpio display ext4 root-part boot-part
 CPU_TYPE:=fa526
 MAINTAINER:=Roman Yeryomin <roman at advem.lv>
 
diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
index a612cf706d63..493f14cbf416 100644
--- a/target/linux/gemini/image/Makefile
+++ b/target/linux/gemini/image/Makefile
@@ -28,6 +28,7 @@ endef
 # the only real content.
 define Build/dns313-images
 	mkdir -p $@.tmp/.boot
+	chmod 755 $@.tmp/.boot
 
 	echo "dummy" > $@.tmp/dummyfile
 
@@ -38,9 +39,20 @@ define Build/dns313-images
 	dns313-header $(IMAGE_KERNEL) \
 		$@.tmp/.boot/zImage
 
-	tar --sort=name --owner=0 --group=0 --numeric-owner -czf $@ \
-		-C $@.tmp .boot \
-		$(if $(SOURCE_DATE_EPOCH),--mtime="@$(SOURCE_DATE_EPOCH)")
+	rm $@.tmp/dummyfile
+
+	genext2fs --block-size $(BLOCKSIZE:%k=%Ki) \
+		--size-in-blocks $$((1024 * $(CONFIG_TARGET_KERNEL_PARTSIZE))) \
+		--squash-uids \
+		--root $@.tmp $@.tmp-boot
+
+	# The device firmware needs revision 1 of EXT2
+	$(STAGING_DIR_HOST)/bin/tune2fs -O filetype $@.tmp-boot
+	$(STAGING_DIR_HOST)/bin/e2fsck -pDf $@.tmp-boot > /dev/null
+
+	./dns313_gen_hdd_img.sh $@ $@.tmp-boot $(IMAGE_ROOTFS) \
+		$(CONFIG_TARGET_KERNEL_PARTSIZE) \
+		$(CONFIG_TARGET_ROOTFS_PARTSIZE)
 
 	rm -rf $@.tmp
 endef
@@ -106,7 +118,8 @@ GEMINI_NAS_PACKAGES:=kmod-md-mod kmod-md-linear kmod-md-multipath \
 		kmod-fs-btrfs kmod-fs-cifs kmod-fs-nfs \
 		kmod-fs-nfsd kmod-fs-ntfs kmod-fs-reiserfs kmod-fs-vfat \
 		kmod-nls-utf8 kmod-usb-storage-extras \
-		samba36-server mdadm cfdisk fdisk e2fsprogs badblocks
+		samba36-server mdadm cfdisk fdisk e2fsprogs badblocks \
+		partx-utils
 
 define Device/dlink_dir-685
 	DEVICE_TITLE := D-Link DIR-685 Xtreme N Storage Router
@@ -123,8 +136,10 @@ define Device/dlink_dns-313
 	DEVICE_TITLE := D-Link DNS-313 1-Bay Network Storage Enclosure
 	DEVICE_DTS := gemini-dlink-dns-313
 	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
-	IMAGES := bootpart.tar.gz
-	IMAGE/bootpart.tar.gz := dns313-images
+	BLOCKSIZE := 1k
+	FILESYSTEMS := ext4 squashfs
+	IMAGES := factory.bin.gz
+	IMAGE/factory.bin.gz := dns313-images | gzip
 endef
 TARGET_DEVICES += dlink_dns-313
 
diff --git a/target/linux/gemini/image/dns313_gen_hdd_img.sh b/target/linux/gemini/image/dns313_gen_hdd_img.sh
new file mode 100755
index 000000000000..1eb2c7c57599
--- /dev/null
+++ b/target/linux/gemini/image/dns313_gen_hdd_img.sh
@@ -0,0 +1,28 @@
+#!/usr/bin/env bash
+
+set -x
+[ $# -eq 5 ] || {
+	echo "SYNTAX: $0 <file> <bootfs image> <rootfs image> <bootfs size> <rootfs size>"
+	exit 1
+}
+
+OUTPUT="$1"
+BOOTFS="$2"
+ROOTFS="$3"
+BOOTFSSIZE="$4"
+ROOTFSSIZE="$5"
+
+head=4
+sect=63
+
+# Create two empty partitions followed by the boot partition with
+# the ./boot/zImage and then the rootfs partition.
+set `ptgen -o $OUTPUT -h $head -s $sect -t 83 -n -p 0 -p 0 -p ${BOOTFSSIZE}M -p ${ROOTFSSIZE}M`
+
+BOOTOFFSET="$(($1 / 512))"
+BOOTSIZE="$(($2 / 512))"
+ROOTFSOFFSET="$(($3 / 512))"
+ROOTFSSIZE="$(($4 / 512))"
+
+dd bs=512 if="$BOOTFS" of="$OUTPUT" seek="$BOOTOFFSET" conv=notrunc
+dd bs=512 if="$ROOTFS" of="$OUTPUT" seek="$ROOTFSOFFSET" conv=notrunc
diff --git a/tools/Makefile b/tools/Makefile
index cacba5bcb467..0123a759c826 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -37,7 +37,7 @@ tools-y += lzma squashfs4 zip
 tools-$(BUILD_B43_TOOLS) += b43-tools
 tools-$(BUILD_ISL) += isl
 tools-$(CONFIG_USE_SPARSE) += sparse
-tools-$(CONFIG_TARGET_apm821xx) += genext2fs
+tools-$(CONFIG_TARGET_apm821xx)$(CONFIG_TARGET_gemini) += genext2fs
 
 # builddir dependencies
 $(curdir)/bison/compile := $(curdir)/flex/compile
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Fri Feb 15 15:38:47 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Fri, 15 Feb 2019 21:38:47 +0100
Subject: [OpenWrt-Devel] [PATCH] mac80211: update to version 4.19.23-1
Message-ID: <20190215203847.18350-1-hauke@hauke-m.de>

This updates mac80211 to backports version 4.19.23-1 which includes all
the stable fixes from kernel 4.19.23.
The removed patches are included in this version.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/mac80211/Makefile              |   8 +-
 ...fix-tx99-with-monitor-mode-interface.patch |   2 +-
 ...upport-for-using-active-monitor-inte.patch |   2 +-
 ...-authentication-messages-for-late-ac.patch |  27 ----
 ...ve-debug-log-after-buffer-increments.patch |  14 +-
 ...ck-da-enabled-first-in-sampling-rout.patch |  33 -----
 ...k-dynack-make-ewma-estimation-faster.patch | 139 ------------------
 ...21-ath10k_init_devices_synchronously.patch |   2 +-
 ...rolling-support-for-various-chipsets.patch |   6 +-
 ...fix-decoding-channel-info-for-160-MH.patch |  41 ------
 ...-of-bounds-memory-access-during-fw-l.patch | 110 --------------
 ...frameburst-mode-in-default-firmware-.patch |   2 +-
 ...c-handle-compressed-tx-status-signal.patch |  36 ++---
 ...0001-brcmfmac-fix-roamoff-1-modparam.patch |  68 ---------
 .../patches/build/060-no_local_ssb_bcma.patch |   4 +-
 .../602-rt2x00-introduce-rt2x00eeprom.patch   |   2 +-
 ...-rt2x00-add-rf-self-txdc-calibration.patch |   2 +-
 .../rt2x00/983-rt2x00-add-r-calibration.patch |   2 +-
 .../984-rt2x00-add-rxdcoc-calibration.patch   |   2 +-
 .../985-rt2x00-add-rxiq-calibration.patch     |   2 +-
 .../986-rt2x00-add-TX-LOFT-calibration.patch  |   2 +-
 .../subsys/140-tweak-TSQ-setting.patch        |   2 +-
 .../subsys/150-disable_addr_notifier.patch    |   4 +-
 ...-skb-fraglist-before-freeing-the-skb.patch |  31 ----
 ...0211-add-hdrlen-to-ieee80211_tx_data.patch |   4 +-
 ...80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch |  14 +-
 ...l-merge-with-minstrel_ht-always-enab.patch |   4 +-
 ...ory-accounting-with-A-MSDU-aggregati.patch |   6 +-
 ...tx-status-for-PS-stations-in-ieee802.patch |  26 ----
 ...rdering-of-buffered-broadcast-packet.patch |  28 ----
 ...ernel-panic-when-TXing-after-TXQ-tea.patch |  60 --------
 ...ry-leak-if-validate_pae_over_nl80211.patch |  29 ----
 ...l_ht-add-flag-to-indicate-missing-in.patch |   4 +-
 ...that-management-tx-skbs-have-encrypt.patch |  48 ------
 34 files changed, 64 insertions(+), 702 deletions(-)
 delete mode 100644 package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch
 delete mode 100644 package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch
 delete mode 100644 package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch
 delete mode 100644 package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch
 delete mode 100644 package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch
 delete mode 100644 package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch
 delete mode 100644 package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch
 delete mode 100644 package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch
 delete mode 100644 package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch
 delete mode 100644 package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch
 delete mode 100644 package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch
 delete mode 100644 package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch

diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index 48ec5f1c49..a13ef41193 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=4.19.7-1
-PKG_RELEASE:=2
-PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.7/
-PKG_HASH:=86650a02f36b0d39059be343d4bad3be14adece699723713a69c94cc64d456ef
+PKG_VERSION:=4.19.23-1
+PKG_RELEASE:=1
+PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.23/
+PKG_HASH:=703e940b542eb56067fcd847a7c69398dcc9829f34472647eea4211cb2ab3b83
 
 PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
diff --git a/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch b/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch
index 777b73417f..d5c37825fd 100644
--- a/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch
+++ b/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch
@@ -81,7 +81,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		rate->flags |= IEEE80211_TX_RC_MCS;
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -2973,7 +2973,7 @@ int ath9k_tx99_send(struct ath_softc *sc
+@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc
  		return -EINVAL;
  	}
  
diff --git a/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch b/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch
index abd0fdc210..7f30de9862 100644
--- a/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch
+++ b/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch
@@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		rate->flags |= IEEE80211_TX_RC_MCS;
 --- a/drivers/net/wireless/ath/ath9k/xmit.c
 +++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -2973,7 +2973,7 @@ int ath9k_tx99_send(struct ath_softc *sc
+@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc
  		return -EINVAL;
  	}
  
diff --git a/package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch b/package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch
deleted file mode 100644
index 831c534762..0000000000
--- a/package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
-Date: Fri, 2 Nov 2018 21:49:55 +0100
-Subject: [PATCH] ath9k: dynack: use authentication messages for 'late' ack
-
-In order to properly support dynack in ad-hoc mode running
-wpa_supplicant, take into account authentication frames for
-'late ack' detection. This patch has been tested on devices
-mounted on offshore high-voltage stations connected through
-~24Km link
-
-Reported-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
-Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
----
-
---- a/drivers/net/wireless/ath/ath9k/dynack.c
-+++ b/drivers/net/wireless/ath/ath9k/dynack.c
-@@ -187,7 +187,8 @@ void ath_dynack_sample_tx_ts(struct ath_
- 	/* late ACK */
- 	if (ts->ts_status & ATH9K_TXERR_XRETRY) {
- 		if (ieee80211_is_assoc_req(hdr->frame_control) ||
--		    ieee80211_is_assoc_resp(hdr->frame_control)) {
-+		    ieee80211_is_assoc_resp(hdr->frame_control) ||
-+		    ieee80211_is_auth(hdr->frame_control)) {
- 			ath_dbg(common, DYNACK, "late ack\n");
- 			ath9k_hw_setslottime(ah, (LATEACK_TO - 3) / 2);
- 			ath9k_hw_set_ack_timeout(ah, LATEACK_TO);
diff --git a/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch b/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch
index a1d612660b..607722cc3d 100644
--- a/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch
+++ b/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch
@@ -12,9 +12,9 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
 
 --- a/drivers/net/wireless/ath/ath9k/dynack.c
 +++ b/drivers/net/wireless/ath/ath9k/dynack.c
-@@ -171,11 +171,12 @@ static void ath_dynack_compute_to(struct
- void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb,
- 			     struct ath_tx_status *ts)
+@@ -178,11 +178,12 @@ void ath_dynack_sample_tx_ts(struct ath_
+ 			     struct ath_tx_status *ts,
+ 			     struct ieee80211_sta *sta)
  {
 -	u8 ridx;
  	struct ieee80211_hdr *hdr;
@@ -24,9 +24,9 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
 +	u32 dur = ts->duration;
 +	u8 ridx;
  
- 	if ((info->flags & IEEE80211_TX_CTL_NO_ACK) || !da->enabled)
+ 	if (!da->enabled || (info->flags & IEEE80211_TX_CTL_NO_ACK))
  		return;
-@@ -203,14 +204,13 @@ void ath_dynack_sample_tx_ts(struct ath_
+@@ -217,14 +218,13 @@ void ath_dynack_sample_tx_ts(struct ath_
  	ridx = ts->ts_rateindex;
  
  	da->st_rbf.ts[da->st_rbf.t_rb].tstamp = ts->ts_tstamp;
@@ -42,7 +42,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
  
  		rate = &common->sbands[info->band].bitrates[rates[ridx].idx];
  		if (info->band == NL80211_BAND_2GHZ &&
-@@ -219,19 +219,18 @@ void ath_dynack_sample_tx_ts(struct ath_
+@@ -233,19 +233,18 @@ void ath_dynack_sample_tx_ts(struct ath_
  		else
  			phy = WLAN_RC_PHY_OFDM;
  
@@ -68,7 +68,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
  	ath_dynack_compute_to(ah);
  
  	spin_unlock_bh(&da->qlock);
-@@ -258,14 +257,13 @@ void ath_dynack_sample_ack_ts(struct ath
+@@ -272,14 +271,13 @@ void ath_dynack_sample_ack_ts(struct ath
  	spin_lock_bh(&da->qlock);
  	da->ack_rbf.tstamp[da->ack_rbf.t_rb] = ts;
  
diff --git a/package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch b/package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch
deleted file mode 100644
index cc5cdf9233..0000000000
--- a/package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
-Date: Fri, 2 Nov 2018 21:49:57 +0100
-Subject: [PATCH] ath9k: dynack: check da->enabled first in sampling
- routines
-
-Check da->enabled flag first in ath_dynack_sample_tx_ts and
-ath_dynack_sample_ack_ts routines in order to avoid useless
-processing
-
-Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
----
-
---- a/drivers/net/wireless/ath/ath9k/dynack.c
-+++ b/drivers/net/wireless/ath/ath9k/dynack.c
-@@ -178,7 +178,7 @@ void ath_dynack_sample_tx_ts(struct ath_
- 	u32 dur = ts->duration;
- 	u8 ridx;
- 
--	if ((info->flags & IEEE80211_TX_CTL_NO_ACK) || !da->enabled)
-+	if (!da->enabled || (info->flags & IEEE80211_TX_CTL_NO_ACK))
- 		return;
- 
- 	spin_lock_bh(&da->qlock);
-@@ -251,7 +251,7 @@ void ath_dynack_sample_ack_ts(struct ath
- 	struct ath_common *common = ath9k_hw_common(ah);
- 	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
- 
--	if (!ath_dynack_bssidmask(ah, hdr->addr1) || !da->enabled)
-+	if (!da->enabled || !ath_dynack_bssidmask(ah, hdr->addr1))
- 		return;
- 
- 	spin_lock_bh(&da->qlock);
diff --git a/package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch b/package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch
deleted file mode 100644
index aaae8babcc..0000000000
--- a/package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch
+++ /dev/null
@@ -1,139 +0,0 @@
-From: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
-Date: Fri, 2 Nov 2018 21:49:58 +0100
-Subject: [PATCH] ath9k: dynack: make ewma estimation faster
-
-In order to make propagation time estimation faster,
-use current sample as ewma output value during 'late ack'
-tracking
-
-Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
-Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
----
-
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -274,7 +274,7 @@ struct ath_node {
- #endif
- 	u8 key_idx[4];
- 
--	u32 ackto;
-+	int ackto;
- 	struct list_head list;
- };
- 
---- a/drivers/net/wireless/ath/ath9k/dynack.c
-+++ b/drivers/net/wireless/ath/ath9k/dynack.c
-@@ -29,9 +29,13 @@
-  * ath_dynack_ewma - EWMA (Exponentially Weighted Moving Average) calculation
-  *
-  */
--static inline u32 ath_dynack_ewma(u32 old, u32 new)
-+static inline int ath_dynack_ewma(int old, int new)
- {
--	return (new * (EWMA_DIV - EWMA_LEVEL) + old * EWMA_LEVEL) / EWMA_DIV;
-+	if (old > 0)
-+		return (new * (EWMA_DIV - EWMA_LEVEL) +
-+			old * EWMA_LEVEL) / EWMA_DIV;
-+	else
-+		return new;
- }
- 
- /**
-@@ -82,10 +86,10 @@ static inline bool ath_dynack_bssidmask(
-  */
- static void ath_dynack_compute_ackto(struct ath_hw *ah)
- {
--	struct ath_node *an;
--	u32 to = 0;
--	struct ath_dynack *da = &ah->dynack;
- 	struct ath_common *common = ath9k_hw_common(ah);
-+	struct ath_dynack *da = &ah->dynack;
-+	struct ath_node *an;
-+	int to = 0;
- 
- 	list_for_each_entry(an, &da->nodes, list)
- 		if (an->ackto > to)
-@@ -144,7 +148,8 @@ static void ath_dynack_compute_to(struct
- 					an->ackto = ath_dynack_ewma(an->ackto,
- 								    ackto);
- 					ath_dbg(ath9k_hw_common(ah), DYNACK,
--						"%pM to %u\n", dst, an->ackto);
-+						"%pM to %d [%u]\n", dst,
-+						an->ackto, ackto);
- 					if (time_is_before_jiffies(da->lto)) {
- 						ath_dynack_compute_ackto(ah);
- 						da->lto = jiffies + COMPUTE_TO;
-@@ -166,10 +171,12 @@ static void ath_dynack_compute_to(struct
-  * @ah: ath hw
-  * @skb: socket buffer
-  * @ts: tx status info
-+ * @sta: station pointer
-  *
-  */
- void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb,
--			     struct ath_tx_status *ts)
-+			     struct ath_tx_status *ts,
-+			     struct ieee80211_sta *sta)
- {
- 	struct ieee80211_hdr *hdr;
- 	struct ath_dynack *da = &ah->dynack;
-@@ -191,9 +198,16 @@ void ath_dynack_sample_tx_ts(struct ath_
- 		    ieee80211_is_assoc_resp(hdr->frame_control) ||
- 		    ieee80211_is_auth(hdr->frame_control)) {
- 			ath_dbg(common, DYNACK, "late ack\n");
-+
- 			ath9k_hw_setslottime(ah, (LATEACK_TO - 3) / 2);
- 			ath9k_hw_set_ack_timeout(ah, LATEACK_TO);
- 			ath9k_hw_set_cts_timeout(ah, LATEACK_TO);
-+			if (sta) {
-+				struct ath_node *an;
-+
-+				an = (struct ath_node *)sta->drv_priv;
-+				an->ackto = -1;
-+			}
- 			da->lto = jiffies + LATEACK_DELAY;
- 		}
- 
---- a/drivers/net/wireless/ath/ath9k/dynack.h
-+++ b/drivers/net/wireless/ath/ath9k/dynack.h
-@@ -86,7 +86,8 @@ void ath_dynack_node_deinit(struct ath_h
- void ath_dynack_init(struct ath_hw *ah);
- void ath_dynack_sample_ack_ts(struct ath_hw *ah, struct sk_buff *skb, u32 ts);
- void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb,
--			     struct ath_tx_status *ts);
-+			     struct ath_tx_status *ts,
-+			     struct ieee80211_sta *sta);
- #else
- static inline void ath_dynack_init(struct ath_hw *ah) {}
- static inline void ath_dynack_node_init(struct ath_hw *ah,
-@@ -97,7 +98,8 @@ static inline void ath_dynack_sample_ack
- 					    struct sk_buff *skb, u32 ts) {}
- static inline void ath_dynack_sample_tx_ts(struct ath_hw *ah,
- 					   struct sk_buff *skb,
--					   struct ath_tx_status *ts) {}
-+					   struct ath_tx_status *ts,
-+					   struct ieee80211_sta *sta) {}
- #endif
- 
- #endif /* DYNACK_H */
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -629,7 +629,7 @@ static void ath_tx_complete_aggr(struct
- 				if (bf == bf->bf_lastbf)
- 					ath_dynack_sample_tx_ts(sc->sc_ah,
- 								bf->bf_mpdu,
--								ts);
-+								ts, sta);
- 			}
- 
- 			ath_tx_complete_buf(sc, bf, txq, &bf_head, sta, ts,
-@@ -773,7 +773,8 @@ static void ath_tx_process_buffer(struct
- 			memcpy(info->control.rates, bf->rates,
- 			       sizeof(info->control.rates));
- 			ath_tx_rc_status(sc, bf, ts, 1, txok ? 0 : 1, txok);
--			ath_dynack_sample_tx_ts(sc->sc_ah, bf->bf_mpdu, ts);
-+			ath_dynack_sample_tx_ts(sc->sc_ah, bf->bf_mpdu, ts,
-+						sta);
- 		}
- 		ath_tx_complete_buf(sc, bf, txq, bf_head, sta, ts, txok);
- 	} else
diff --git a/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
index 16f252fdcd..47ecc9c655 100644
--- a/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
+++ b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
@@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven at open-mesh.com>
 
 --- a/drivers/net/wireless/ath/ath10k/core.c
 +++ b/drivers/net/wireless/ath/ath10k/core.c
-@@ -2719,6 +2719,16 @@ int ath10k_core_register(struct ath10k *
+@@ -2720,6 +2720,16 @@ int ath10k_core_register(struct ath10k *
  	ar->chip_id = chip_id;
  	queue_work(ar->workqueue, &ar->register_work);
  
diff --git a/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
index bb29489c0b..50ed63b065 100644
--- a/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
+++ b/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
@@ -172,7 +172,7 @@ v13:
  		.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
  		.uart_pin = 7,
  		.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
-@@ -2440,6 +2446,10 @@ int ath10k_core_start(struct ath10k *ar,
+@@ -2441,6 +2447,10 @@ int ath10k_core_start(struct ath10k *ar,
  	if (status)
  		goto err_hif_stop;
  
@@ -183,7 +183,7 @@ v13:
  	return 0;
  
  err_hif_stop:
-@@ -2694,9 +2704,18 @@ static void ath10k_core_register_work(st
+@@ -2695,9 +2705,18 @@ static void ath10k_core_register_work(st
  		goto err_spectral_destroy;
  	}
  
@@ -202,7 +202,7 @@ v13:
  err_spectral_destroy:
  	ath10k_spectral_destroy(ar);
  err_debug_destroy:
-@@ -2740,6 +2759,8 @@ void ath10k_core_unregister(struct ath10
+@@ -2741,6 +2760,8 @@ void ath10k_core_unregister(struct ath10
  	if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
  		return;
  
diff --git a/package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch b/package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch
deleted file mode 100644
index 154664c854..0000000000
--- a/package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From 3401d42c7ea2d064d15c66698ff8eb96553179ce Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
-Date: Fri, 26 Oct 2018 12:50:39 +0200
-Subject: [PATCH] brcmutil: really fix decoding channel info for 160 MHz
- bandwidth
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Previous commit /adding/ support for 160 MHz chanspecs was incomplete.
-It didn't set bandwidth info and didn't extract control channel info. As
-the result it was also using uninitialized "sb" var.
-
-This change has been tested for two chanspecs found to be reported by
-some devices/firmwares:
-1) 60/160 (0xee32)
-   Before: chnum:50 control_ch_num:36
-    After: chnum:50 control_ch_num:60
-2) 120/160 (0xed72)
-   Before: chnum:114 control_ch_num:100
-    After: chnum:114 control_ch_num:120
-
-Fixes: 330994e8e8ec ("brcmfmac: fix for proper support of 160MHz bandwidth")
-Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
-Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
----
- drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c | 3 +++
- 1 file changed, 3 insertions(+)
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
-@@ -193,6 +193,9 @@ static void brcmu_d11ac_decchspec(struct
- 		}
- 		break;
- 	case BRCMU_CHSPEC_D11AC_BW_160:
-+		ch->bw = BRCMU_CHAN_BW_160;
-+		ch->sb = brcmu_maskget16(ch->chspec, BRCMU_CHSPEC_D11AC_SB_MASK,
-+					 BRCMU_CHSPEC_D11AC_SB_SHIFT);
- 		switch (ch->sb) {
- 		case BRCMU_CHAN_SB_LLL:
- 			ch->control_ch_num -= CH_70MHZ_APART;
diff --git a/package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch b/package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch
deleted file mode 100644
index 0ed148188b..0000000000
--- a/package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch
+++ /dev/null
@@ -1,110 +0,0 @@
-From b72c51a58e6d63ef673ac96b8ab5bc98799c5f7b Mon Sep 17 00:00:00 2001
-From: Lyude Paul <lyude at redhat.com>
-Date: Sat, 24 Nov 2018 17:57:05 -0500
-Subject: [PATCH] brcmfmac: Fix out of bounds memory access during fw load
-
-I ended up tracking down some rather nasty issues with f2fs (and other
-filesystem modules) constantly crashing on my kernel down to a
-combination of out of bounds memory accesses, one of which was coming
-from brcmfmac during module load:
-
-[   30.891382] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4356-sdio for chip BCM4356/2
-[   30.894437] ==================================================================
-[   30.901581] BUG: KASAN: global-out-of-bounds in brcmf_fw_alloc_request+0x42c/0x480 [brcmfmac]
-[   30.909935] Read of size 1 at addr ffff2000024865df by task kworker/6:2/387
-[   30.916805]
-[   30.918261] CPU: 6 PID: 387 Comm: kworker/6:2 Tainted: G           O      4.20.0-rc3Lyude-Test+ #19
-[   30.927251] Hardware name: amlogic khadas-vim2/khadas-vim2, BIOS 2018.07-rc2-armbian 09/11/2018
-[   30.935964] Workqueue: events brcmf_driver_register [brcmfmac]
-[   30.941641] Call trace:
-[   30.944058]  dump_backtrace+0x0/0x3e8
-[   30.947676]  show_stack+0x14/0x20
-[   30.950968]  dump_stack+0x130/0x1c4
-[   30.954406]  print_address_description+0x60/0x25c
-[   30.959066]  kasan_report+0x1b4/0x368
-[   30.962683]  __asan_report_load1_noabort+0x18/0x20
-[   30.967547]  brcmf_fw_alloc_request+0x42c/0x480 [brcmfmac]
-[   30.967639]  brcmf_sdio_probe+0x163c/0x2050 [brcmfmac]
-[   30.978035]  brcmf_ops_sdio_probe+0x598/0xa08 [brcmfmac]
-[   30.983254]  sdio_bus_probe+0x190/0x398
-[   30.983270]  really_probe+0x2a0/0xa70
-[   30.983296]  driver_probe_device+0x1b4/0x2d8
-[   30.994901]  __driver_attach+0x200/0x280
-[   30.994914]  bus_for_each_dev+0x10c/0x1a8
-[   30.994925]  driver_attach+0x38/0x50
-[   30.994935]  bus_add_driver+0x330/0x608
-[   30.994953]  driver_register+0x140/0x388
-[   31.013965]  sdio_register_driver+0x74/0xa0
-[   31.014076]  brcmf_sdio_register+0x14/0x60 [brcmfmac]
-[   31.023177]  brcmf_driver_register+0xc/0x18 [brcmfmac]
-[   31.023209]  process_one_work+0x654/0x1080
-[   31.032266]  worker_thread+0x4f0/0x1308
-[   31.032286]  kthread+0x2a8/0x320
-[   31.039254]  ret_from_fork+0x10/0x1c
-[   31.039269]
-[   31.044226] The buggy address belongs to the variable:
-[   31.044351]  brcmf_firmware_path+0x11f/0xfffffffffffd3b40 [brcmfmac]
-[   31.055601]
-[   31.057031] Memory state around the buggy address:
-[   31.061800]  ffff200002486480: 04 fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
-[   31.068983]  ffff200002486500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-[   31.068993] >ffff200002486580: 00 00 00 00 00 00 00 00 fa fa fa fa 00 00 00 00
-[   31.068999]                                                     ^
-[   31.069017]  ffff200002486600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-[   31.096521]  ffff200002486680: 00 00 00 00 00 00 00 00 00 00 00 00 fa fa fa fa
-[   31.096528] ==================================================================
-[   31.096533] Disabling lock debugging due to kernel taint
-
-It appears that when trying to determine the length of the string in the
-alternate firmware path, we make the mistake of not handling the case
-where the firmware path is empty correctly. Since strlen(mp_path) can
-return 0, we'll end up accessing mp_path[-1] when the firmware_path
-isn't provided through the module arguments.
-
-So, fix this by just setting the end char to '\0' by default, and only
-changing it if we have a non-zero length. Additionally, use strnlen()
-with BRCMF_FW_ALTPATH_LEN instead of strlen() just to be extra safe.
-
-Fixes: 2baa3aaee27f ("brcmfmac: introduce brcmf_fw_alloc_request() function")
-Cc: Hante Meuleman <hante.meuleman at broadcom.com>
-Cc: Pieter-Paul Giesberts <pieter-paul.giesberts at broadcom.com>
-Cc: Franky Lin <franky.lin at broadcom.com>
-Cc: Arend van Spriel <arend.vanspriel at broadcom.com>
-Cc: Kalle Valo <kvalo at codeaurora.org>
-Cc: Arend Van Spriel <arend.vanspriel at broadcom.com>
-Cc: Himanshu Jha <himanshujha199640 at gmail.com>
-Cc: Dan Haab <dhaab at luxul.com>
-Cc: Jia-Shyr Chuang <saint.chuang at cypress.com>
-Cc: Ian Molton <ian at mnementh.co.uk>
-Cc: <stable at vger.kernel.org> # v4.17+
-Signed-off-by: Lyude Paul <lyude at redhat.com>
-Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
----
- .../net/wireless/broadcom/brcm80211/brcmfmac/firmware.c   | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
-@@ -708,8 +708,9 @@ brcmf_fw_alloc_request(u32 chip, u32 chi
- 	struct brcmf_fw_request *fwreq;
- 	char chipname[12];
- 	const char *mp_path;
-+	size_t mp_path_len;
- 	u32 i, j;
--	char end;
-+	char end = '\0';
- 	size_t reqsz;
- 
- 	for (i = 0; i < table_size; i++) {
-@@ -734,7 +735,10 @@ brcmf_fw_alloc_request(u32 chip, u32 chi
- 		   mapping_table[i].fw_base, chipname);
- 
- 	mp_path = brcmf_mp_global.firmware_path;
--	end = mp_path[strlen(mp_path) - 1];
-+	mp_path_len = strnlen(mp_path, BRCMF_FW_ALTPATH_LEN);
-+	if (mp_path_len)
-+		end = mp_path[mp_path_len - 1];
-+
- 	fwreq->n_items = n_fwnames;
- 
- 	for (j = 0; j < n_fwnames; j++) {
diff --git a/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch b/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch
index c73ee93a8d..9602792d4f 100644
--- a/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch
+++ b/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch
@@ -17,7 +17,7 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
 
 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
 +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -6631,6 +6631,12 @@ static s32 brcmf_config_dongle(struct br
+@@ -6638,6 +6638,12 @@ static s32 brcmf_config_dongle(struct br
  
  	brcmf_configure_arp_nd_offload(ifp, true);
  
diff --git a/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch b/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch
index f7e09ecaab..d44c8737ad 100644
--- a/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch
+++ b/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch
@@ -77,6 +77,19 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
 -	entry->transit_count--;
 -	if (entry->suppressed && entry->suppr_transit_count)
 -		entry->suppr_transit_count--;
+-
+-	brcmf_dbg(DATA, "%s flags %d htod %X seq %X\n", entry->name, flags,
+-		  skcb->htod, seq);
+-
+-	/* pick up the implicit credit from this packet */
+-	fifo = brcmf_skb_htod_tag_get_field(skb, FIFO);
+-	if ((fws->fcmode == BRCMF_FWS_FCMODE_IMPLIED_CREDIT) ||
+-	    (brcmf_skb_if_flags_get_field(skb, REQ_CREDIT)) ||
+-	    (flags == BRCMF_FWS_TXSTATUS_HOST_TOSSED)) {
+-		brcmf_fws_return_credits(fws, fifo, 1);
+-		brcmf_fws_schedule_deq(fws);
+-	}
+-	brcmf_fws_macdesc_return_req_credit(skb);
 +		skcb = brcmf_skbcb(skb);
 +		entry = skcb->mac;
 +		if (WARN_ON(!entry)) {
@@ -87,20 +100,13 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
 +		if (entry->suppressed && entry->suppr_transit_count)
 +			entry->suppr_transit_count--;
  
--	brcmf_dbg(DATA, "%s flags %d htod %X seq %X\n", entry->name, flags,
--		  skcb->htod, seq);
+-	ret = brcmf_proto_hdrpull(fws->drvr, false, skb, &ifp);
+-	if (ret) {
+-		brcmu_pkt_buf_free_skb(skb);
+-		return -EINVAL;
 +		brcmf_dbg(DATA, "%s flags %d htod %X seq %X\n", entry->name,
 +			  flags, skcb->htod, seq);
- 
--	/* pick up the implicit credit from this packet */
--	fifo = brcmf_skb_htod_tag_get_field(skb, FIFO);
--	if ((fws->fcmode == BRCMF_FWS_FCMODE_IMPLIED_CREDIT) ||
--	    (brcmf_skb_if_flags_get_field(skb, REQ_CREDIT)) ||
--	    (flags == BRCMF_FWS_TXSTATUS_HOST_TOSSED)) {
--		brcmf_fws_return_credits(fws, fifo, 1);
--		brcmf_fws_schedule_deq(fws);
--	}
--	brcmf_fws_macdesc_return_req_credit(skb);
++
 +		/* pick up the implicit credit from this packet */
 +		fifo = brcmf_skb_htod_tag_get_field(skb, FIFO);
 +		if (fws->fcmode == BRCMF_FWS_FCMODE_IMPLIED_CREDIT ||
@@ -110,11 +116,7 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
 +			brcmf_fws_schedule_deq(fws);
 +		}
 +		brcmf_fws_macdesc_return_req_credit(skb);
- 
--	ret = brcmf_proto_hdrpull(fws->drvr, false, skb, &ifp);
--	if (ret) {
--		brcmu_pkt_buf_free_skb(skb);
--		return -EINVAL;
++
 +		ret = brcmf_proto_hdrpull(fws->drvr, false, skb, &ifp);
 +		if (ret) {
 +			brcmu_pkt_buf_free_skb(skb);
diff --git a/package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch b/package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch
deleted file mode 100644
index 4ddc903418..0000000000
--- a/package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From 8c892df41500469729e0d662816300196e4f463d Mon Sep 17 00:00:00 2001
-From: Stijn Tintel <stijn at linux-ipv6.be>
-Date: Tue, 4 Dec 2018 20:29:05 +0200
-Subject: [PATCH] brcmfmac: fix roamoff=1 modparam
-
-When the update_connect_param callback is set, nl80211 expects the flag
-WIPHY_FLAG_SUPPORTS_FW_ROAM to be set as well. However, this flag is
-only set when modparam roamoff=0, while the callback is set
-unconditionally. Since commit 7f9a3e150ec7 this causes a warning in
-wiphy_register, which breaks brcmfmac.
-
-Disable the update_connect_param callback when roamoff=0 to fix this.
-
-Fixes: 7f9a3e150ec7 ("nl80211: Update ERP info using NL80211_CMD_UPDATE_CONNECT_PARAMS")
-Cc: Stable <stable at vger.kernel.org> # 4.19+
-Signed-off-by: Jonas Gorski <jonas.gorski at gmail.com>
-Signed-off-by: Stijn Tintel <stijn at linux-ipv6.be>
-Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
----
- .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c   | 11 +++++++++--
- .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.h   |  2 +-
- .../net/wireless/broadcom/brcm80211/brcmfmac/core.c   |  2 +-
- 3 files changed, 11 insertions(+), 4 deletions(-)
-
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
-@@ -5188,10 +5188,17 @@ static struct cfg80211_ops brcmf_cfg8021
- 	.del_pmk = brcmf_cfg80211_del_pmk,
- };
- 
--struct cfg80211_ops *brcmf_cfg80211_get_ops(void)
-+struct cfg80211_ops *brcmf_cfg80211_get_ops(struct brcmf_mp_device *settings)
- {
--	return kmemdup(&brcmf_cfg80211_ops, sizeof(brcmf_cfg80211_ops),
-+	struct cfg80211_ops *ops;
-+
-+	ops = kmemdup(&brcmf_cfg80211_ops, sizeof(brcmf_cfg80211_ops),
- 		       GFP_KERNEL);
-+
-+	if (ops && settings->roamoff)
-+		ops->update_connect_params = NULL;
-+
-+	return ops;
- }
- 
- struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
-@@ -404,7 +404,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
- void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg);
- s32 brcmf_cfg80211_up(struct net_device *ndev);
- s32 brcmf_cfg80211_down(struct net_device *ndev);
--struct cfg80211_ops *brcmf_cfg80211_get_ops(void);
-+struct cfg80211_ops *brcmf_cfg80211_get_ops(struct brcmf_mp_device *settings);
- enum nl80211_iftype brcmf_cfg80211_get_iftype(struct brcmf_if *ifp);
- 
- struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
-@@ -1151,7 +1151,7 @@ int brcmf_attach(struct device *dev, str
- 
- 	brcmf_dbg(TRACE, "Enter\n");
- 
--	ops = brcmf_cfg80211_get_ops();
-+	ops = brcmf_cfg80211_get_ops(settings);
- 	if (!ops)
- 		return -ENOMEM;
- 
diff --git a/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch b/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
index 1d4bf12652..06636060f7 100644
--- a/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
+++ b/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
@@ -1,6 +1,6 @@
 --- a/local-symbols
 +++ b/local-symbols
-@@ -395,43 +395,6 @@ USB_IPHETH=
+@@ -396,43 +396,6 @@ USB_IPHETH=
  USB_SIERRA_NET=
  USB_VL600=
  USB_NET_CH9200=
@@ -192,7 +192,7 @@
  	select BRCMUTIL
 --- a/Kconfig.local
 +++ b/Kconfig.local
-@@ -1189,117 +1189,6 @@ config BACKPORTED_USB_VL600
+@@ -1192,117 +1192,6 @@ config BACKPORTED_USB_VL600
  config BACKPORTED_USB_NET_CH9200
  	tristate
  	default USB_NET_CH9200
diff --git a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
index 18a3fb82ea..d238072b9a 100644
--- a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
+++ b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
@@ -1,6 +1,6 @@
 --- a/local-symbols
 +++ b/local-symbols
-@@ -304,6 +304,7 @@ RT2X00_LIB_FIRMWARE=
+@@ -305,6 +305,7 @@ RT2X00_LIB_FIRMWARE=
  RT2X00_LIB_CRYPTO=
  RT2X00_LIB_LEDS=
  RT2X00_LIB_DEBUGFS=
diff --git a/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch b/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch
index 8d202eed91..639cce0886 100644
--- a/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch
+++ b/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch
@@ -59,7 +59,7 @@
  static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
  				       bool set_bw, bool is_ht40)
  {
-@@ -8961,6 +9013,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -8943,6 +8995,7 @@ static void rt2800_init_rfcsr_6352(struc
  	rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
  	rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
  
diff --git a/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch b/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch
index 2f7a4eb948..5bba1f2e0e 100644
--- a/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch
+++ b/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch
@@ -161,7 +161,7 @@
  static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
  				       bool set_bw, bool is_ht40)
  {
-@@ -9013,6 +9167,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -8995,6 +9149,7 @@ static void rt2800_init_rfcsr_6352(struc
  	rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
  	rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
  
diff --git a/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch b/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch
index 585d61b303..6a212c3054 100644
--- a/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch
+++ b/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch
@@ -72,7 +72,7 @@
  static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
  				       bool set_bw, bool is_ht40)
  {
-@@ -9169,6 +9234,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9151,6 +9216,7 @@ static void rt2800_init_rfcsr_6352(struc
  
  	rt2800_r_calibration(rt2x00dev);
  	rt2800_rf_self_txdc_cal(rt2x00dev);
diff --git a/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch b/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch
index c65b24ad96..b93cdab7bb 100644
--- a/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch
+++ b/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch
@@ -387,7 +387,7 @@
  static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
  				       bool set_bw, bool is_ht40)
  {
-@@ -9237,6 +9617,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9219,6 +9599,7 @@ static void rt2800_init_rfcsr_6352(struc
  	rt2800_rxdcoc_calibration(rt2x00dev);
  	rt2800_bw_filter_calibration(rt2x00dev, true);
  	rt2800_bw_filter_calibration(rt2x00dev, false);
diff --git a/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch b/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch
index f685365fb8..cfffd53df8 100644
--- a/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch
+++ b/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch
@@ -958,7 +958,7 @@
  static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
  				       bool set_bw, bool is_ht40)
  {
-@@ -9617,6 +10568,7 @@ static void rt2800_init_rfcsr_6352(struc
+@@ -9599,6 +10550,7 @@ static void rt2800_init_rfcsr_6352(struc
  	rt2800_rxdcoc_calibration(rt2x00dev);
  	rt2800_bw_filter_calibration(rt2x00dev, true);
  	rt2800_bw_filter_calibration(rt2x00dev, false);
diff --git a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
index f7116eb9f7..42a6382209 100644
--- a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
+++ b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
@@ -1,6 +1,6 @@
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
-@@ -3791,6 +3791,12 @@ out:
+@@ -3797,6 +3797,12 @@ out:
  netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
  				       struct net_device *dev)
  {
diff --git a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
index db3c693fd4..1581b3400b 100644
--- a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
+++ b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
@@ -52,7 +52,7 @@
   fail_ifa:
  #endif
  	rtnl_lock();
-@@ -1220,10 +1220,10 @@ void ieee80211_unregister_hw(struct ieee
+@@ -1219,10 +1219,10 @@ void ieee80211_unregister_hw(struct ieee
  	tasklet_kill(&local->tx_pending_tasklet);
  	tasklet_kill(&local->tasklet);
  
@@ -64,4 +64,4 @@
 +#if IS_ENABLED(__disabled__CONFIG_IPV6)
  	unregister_inet6addr_notifier(&local->ifa6_notifier);
  #endif
- 	ieee80211_txq_teardown_flows(local);
+ 
diff --git a/package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch b/package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch
deleted file mode 100644
index dc12290f4f..0000000000
--- a/package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From: Sara Sharon <sara.sharon at intel.com>
-Date: Thu, 11 Oct 2018 14:21:21 +0200
-Subject: [PATCH] mac80211: free skb fraglist before freeing the skb
-
-mac80211 uses the frag list to build AMSDU. When freeing
-the skb, it may not be really freed, since someone is still
-holding a reference to it.
-In that case, when TCP skb is being retransmitted, the
-pointer to the frag list is being reused, while the data
-in there is no longer valid.
-Since we will never get frag list from the network stack,
-as mac80211 doesn't advertise the capability, we can safely
-free and nullify it before releasing the SKB.
-
-Signed-off-by: Sara Sharon <sara.sharon at intel.com>
----
-
---- a/net/mac80211/status.c
-+++ b/net/mac80211/status.c
-@@ -558,6 +558,11 @@ static void ieee80211_report_used_skb(st
- 	}
- 
- 	ieee80211_led_tx(local);
-+
-+	if (skb_has_frag_list(skb)) {
-+		kfree_skb_list(skb_shinfo(skb)->frag_list);
-+		skb_shinfo(skb)->frag_list = NULL;
-+	}
- }
- 
- /*
diff --git a/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch b/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch
index a0221c0d6c..a6bd3eab6e 100644
--- a/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch
+++ b/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch
@@ -48,7 +48,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  	if (likely(sta)) {
  		if (!IS_ERR(sta))
  			tx->sta = sta;
-@@ -3501,6 +3501,7 @@ begin:
+@@ -3507,6 +3507,7 @@ begin:
  	tx.local = local;
  	tx.skb = skb;
  	tx.sdata = vif_to_sdata(info->control.vif);
@@ -56,7 +56,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  
  	if (txq->sta)
  		tx.sta = container_of(txq->sta, struct sta_info, sta);
-@@ -3837,6 +3838,7 @@ ieee80211_build_data_template(struct iee
+@@ -3843,6 +3844,7 @@ ieee80211_build_data_template(struct iee
  	hdr = (void *)skb->data;
  	tx.sta = sta_info_get(sdata, hdr->addr1);
  	tx.skb = skb;
diff --git a/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch b/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch
index 42274cbab1..bc87d0a45b 100644
--- a/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch
+++ b/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch
@@ -147,7 +147,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  
  	if (likely(sta)) {
  		if (!IS_ERR(sta))
-@@ -2209,7 +2208,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
+@@ -2215,7 +2214,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
  		goto fail;
  
  	hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr);
@@ -156,7 +156,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  
  	if (skb->len < len_rthdr + hdrlen)
  		goto fail;
-@@ -2427,7 +2426,7 @@ static struct sk_buff *ieee80211_build_h
+@@ -2433,7 +2432,7 @@ static struct sk_buff *ieee80211_build_h
  	struct ieee80211_chanctx_conf *chanctx_conf;
  	struct ieee80211_sub_if_data *ap_sdata;
  	enum nl80211_band band;
@@ -165,7 +165,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  
  	if (IS_ERR(sta))
  		sta = NULL;
-@@ -2647,6 +2646,9 @@ static struct sk_buff *ieee80211_build_h
+@@ -2653,6 +2652,9 @@ static struct sk_buff *ieee80211_build_h
  		hdrlen += 2;
  	}
  
@@ -175,7 +175,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  	/*
  	 * Drop unicast frames to unauthorised stations unless they are
  	 * EAPOL frames from the local station.
-@@ -2727,6 +2729,7 @@ static struct sk_buff *ieee80211_build_h
+@@ -2733,6 +2735,7 @@ static struct sk_buff *ieee80211_build_h
  
  	skb_pull(skb, skip_header_bytes);
  	head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb);
@@ -183,7 +183,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  
  	/*
  	 * So we need to modify the skb header and hence need a copy of
-@@ -2759,6 +2762,9 @@ static struct sk_buff *ieee80211_build_h
+@@ -2765,6 +2768,9 @@ static struct sk_buff *ieee80211_build_h
  		memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen);
  #endif
  
@@ -193,7 +193,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  	if (ieee80211_is_data_qos(fc)) {
  		__le16 *qos_control;
  
-@@ -2934,6 +2940,9 @@ void ieee80211_check_fast_xmit(struct st
+@@ -2940,6 +2946,9 @@ void ieee80211_check_fast_xmit(struct st
  		fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA);
  	}
  
@@ -203,7 +203,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
  	/* We store the key here so there's no point in using rcu_dereference()
  	 * but that's fine because the code that changes the pointers will call
  	 * this function after doing so. For a single CPU that would be enough,
-@@ -3528,7 +3537,7 @@ begin:
+@@ -3534,7 +3543,7 @@ begin:
  
  		if (tx.key &&
  		    (tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV))
diff --git a/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch b/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch
index 055472206e..6f1239ccab 100644
--- a/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch
+++ b/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  ccflags-y += -DDEBUG
 --- a/net/mac80211/main.c
 +++ b/net/mac80211/main.c
-@@ -1306,18 +1306,12 @@ static int __init ieee80211_init(void)
+@@ -1304,18 +1304,12 @@ static int __init ieee80211_init(void)
  	if (ret)
  		return ret;
  
@@ -86,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	rc80211_minstrel_exit();
  
  	return ret;
-@@ -1325,7 +1319,6 @@ static int __init ieee80211_init(void)
+@@ -1323,7 +1317,6 @@ static int __init ieee80211_init(void)
  
  static void __exit ieee80211_exit(void)
  {
diff --git a/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch b/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch
index fe0b98c3ac..4e83ff1ea0 100644
--- a/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch
+++ b/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch
@@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/mac80211/tx.c
 +++ b/net/mac80211/tx.c
-@@ -3188,6 +3188,7 @@ static bool ieee80211_amsdu_aggregate(st
+@@ -3194,6 +3194,7 @@ static bool ieee80211_amsdu_aggregate(st
  	u8 max_subframes = sta->sta.max_amsdu_subframes;
  	int max_frags = local->hw.max_tx_fragments;
  	int max_amsdu_len = sta->sta.max_amsdu_len;
@@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	__be16 len;
  	void *data;
  	bool ret = false;
-@@ -3219,12 +3220,13 @@ static bool ieee80211_amsdu_aggregate(st
+@@ -3225,12 +3226,13 @@ static bool ieee80211_amsdu_aggregate(st
  	flow = fq_flow_classify(fq, tin, skb, fq_flow_get_default_func);
  	head = skb_peek_tail(&flow->queue);
  	if (!head)
@@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	nfrags = 1 + skb_shinfo(skb)->nr_frags;
  	nfrags += 1 + skb_shinfo(head)->nr_frags;
-@@ -3282,6 +3284,9 @@ out_recalc:
+@@ -3288,6 +3290,9 @@ out_recalc:
  		fq_recalc_backlog(fq, tin, flow);
  	}
  out:
diff --git a/package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch b/package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch
deleted file mode 100644
index ee2059f9c8..0000000000
--- a/package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Tue, 13 Nov 2018 20:29:03 +0100
-Subject: [PATCH] mac80211: ignore tx status for PS stations in
- ieee80211_tx_status_ext
-
-Make it behave like regular ieee80211_tx_status calls, except for the lack of
-filtered frame processing.
-This fixes spurious low-ack triggered disconnections with powersave clients
-connected to an AP.
-
-Fixes: f027c2aca0cf4 ("mac80211: add ieee80211_tx_status_noskb")
-Cc: stable at vger.kernel.org
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/net/mac80211/status.c
-+++ b/net/mac80211/status.c
-@@ -984,6 +984,8 @@ void ieee80211_tx_status_ext(struct ieee
- 			/* Track when last TDLS packet was ACKed */
- 			if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
- 				sta->status_stats.last_tdls_pkt_time = jiffies;
-+		} else if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
-+			return;
- 		} else {
- 			ieee80211_lost_packet(sta, info);
- 		}
diff --git a/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch b/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch
deleted file mode 100644
index 4257365a79..0000000000
--- a/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Wed, 28 Nov 2018 22:36:06 +0100
-Subject: [PATCH] mac80211: fix reordering of buffered broadcast packets
-
-If the buffered broadcast queue contains packets, letting new packets bypass
-that queue can lead to heavy reordering, since the driver is probably throttling
-transmission of buffered multicast packets after beacons.
-
-Keep buffering packets until the buffer has been cleared (and no client
-is in powersave mode).
-
-Cc: stable at vger.kernel.org
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -439,8 +439,8 @@ ieee80211_tx_h_multicast_ps_buf(struct i
- 	if (ieee80211_hw_check(&tx->local->hw, QUEUE_CONTROL))
- 		info->hw_queue = tx->sdata->vif.cab_queue;
- 
--	/* no stations in PS mode */
--	if (!atomic_read(&ps->num_sta_ps))
-+	/* no stations in PS mode and no buffered packets */
-+	if (!atomic_read(&ps->num_sta_ps) && skb_queue_empty(&ps->bc_buf))
- 		return TX_CONTINUE;
- 
- 	info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM;
diff --git a/package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch b/package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch
deleted file mode 100644
index 606897d1fe..0000000000
--- a/package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From a50e5fb8db83c5b57392204c21ea6c5c4ccefde6 Mon Sep 17 00:00:00 2001
-From: Sara Sharon <sara.sharon at intel.com>
-Date: Sat, 15 Dec 2018 11:03:10 +0200
-Subject: [PATCH 1/3] mac80211: fix a kernel panic when TXing after TXQ
- teardown
-
-Recently TXQ teardown was moved earlier in ieee80211_unregister_hw(),
-to avoid a use-after-free of the netdev data. However, interfaces
-aren't fully removed at the point, and cfg80211_shutdown_all_interfaces
-can for example, TX a deauth frame. Move the TXQ teardown to the
-point between cfg80211_shutdown_all_interfaces and the free of
-netdev queues, so we can be sure they are torn down before netdev
-is freed, but after there is no ongoing TX.
-
-Fixes: 77cfaf52eca5 ("mac80211: Run TXQ teardown code before de-registering interfaces")
-Signed-off-by: Sara Sharon <sara.sharon at intel.com>
-Signed-off-by: Luca Coelho <luciano.coelho at intel.com>
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
----
- net/mac80211/iface.c | 3 +++
- net/mac80211/main.c  | 2 --
- 2 files changed, 3 insertions(+), 2 deletions(-)
-
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -7,6 +7,7 @@
-  * Copyright 2008, Johannes Berg <johannes at sipsolutions.net>
-  * Copyright 2013-2014  Intel Mobile Communications GmbH
-  * Copyright (c) 2016        Intel Deutschland GmbH
-+ * Copyright (C) 2018 Intel Corporation
-  *
-  * This program is free software; you can redistribute it and/or modify
-  * it under the terms of the GNU General Public License version 2 as
-@@ -2035,6 +2036,8 @@ void ieee80211_remove_interfaces(struct
- 	WARN(local->open_count, "%s: open count remains %d\n",
- 	     wiphy_name(local->hw.wiphy), local->open_count);
- 
-+	ieee80211_txq_teardown_flows(local);
-+
- 	mutex_lock(&local->iflist_mtx);
- 	list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) {
- 		list_del(&sdata->list);
---- a/net/mac80211/main.c
-+++ b/net/mac80211/main.c
-@@ -1200,7 +1200,6 @@ int ieee80211_register_hw(struct ieee802
- 	rtnl_unlock();
- 	ieee80211_led_exit(local);
- 	ieee80211_wep_free(local);
--	ieee80211_txq_teardown_flows(local);
-  fail_flows:
- 	destroy_workqueue(local->workqueue);
-  fail_workqueue:
-@@ -1226,7 +1225,6 @@ void ieee80211_unregister_hw(struct ieee
- #if IS_ENABLED(__disabled__CONFIG_IPV6)
- 	unregister_inet6addr_notifier(&local->ifa6_notifier);
- #endif
--	ieee80211_txq_teardown_flows(local);
- 
- 	rtnl_lock();
- 
diff --git a/package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch b/package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch
deleted file mode 100644
index d31d45bbdf..0000000000
--- a/package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From d350a0f431189517b1af0dbbb605c273231a8966 Mon Sep 17 00:00:00 2001
-From: Johannes Berg <johannes.berg at intel.com>
-Date: Sat, 15 Dec 2018 11:03:22 +0200
-Subject: [PATCH 2/3] nl80211: fix memory leak if validate_pae_over_nl80211()
- fails
-
-If validate_pae_over_nl80211() were to fail in nl80211_crypto_settings(),
-we might leak the 'connkeys' allocation. Fix this.
-
-Fixes: 64bf3d4bc2b0 ("nl80211: Add CONTROL_PORT_OVER_NL80211 attribute")
-Signed-off-by: Johannes Berg <johannes.berg at intel.com>
----
- net/wireless/nl80211.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
---- a/net/wireless/nl80211.c
-+++ b/net/wireless/nl80211.c
-@@ -9002,8 +9002,10 @@ static int nl80211_join_ibss(struct sk_b
- 	if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) {
- 		int r = validate_pae_over_nl80211(rdev, info);
- 
--		if (r < 0)
-+		if (r < 0) {
-+			kzfree(connkeys);
- 			return r;
-+		}
- 
- 		ibss.control_port_over_nl80211 = true;
- 	}
diff --git a/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch b/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch
index 2c706b101f..2b9ff93db6 100644
--- a/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch
+++ b/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch
@@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/include/net/mac80211.h
 +++ b/include/net/mac80211.h
-@@ -2132,6 +2132,9 @@ struct ieee80211_txq {
+@@ -2130,6 +2130,9 @@ struct ieee80211_txq {
   * @IEEE80211_HW_NEEDS_ALIGNED4_SKBS: Driver need aligned skbs to four-byte.
   *	Padding will be added after ieee80211_hdr, before IV/LLC.
   *
@@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
   * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
   */
  enum ieee80211_hw_flags {
-@@ -2178,6 +2181,7 @@ enum ieee80211_hw_flags {
+@@ -2176,6 +2179,7 @@ enum ieee80211_hw_flags {
  	IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP,
  	IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP,
  	IEEE80211_HW_NEEDS_ALIGNED4_SKBS,
diff --git a/package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch b/package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch
deleted file mode 100644
index 1c1951eadd..0000000000
--- a/package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From: Felix Fietkau <nbd at nbd.name>
-Date: Mon, 28 Jan 2019 13:16:45 +0100
-Subject: [PATCH] mac80211: ensure that management tx skbs have encryption
- tailroom
-
-Some drivers use IEEE80211_KEY_FLAG_SW_MGMT_TX to indicate that management
-frames need to be software encrypted. Since normal data packets are still
-encrypted by the hardware, crypto_tx_tailroom_needed_cnt gets decremented
-after key upload. This can lead to passing skbs to ccmp_encrypt_skb, which
-don't have the needed tailroom for software encryption.
-
-Change the code to add tailroom for encrypted management packets, even if
-crypto_tx_tailroom_needed_cnt is 0.
-
-Cc: stable at vger.kernel.org
-Signed-off-by: Felix Fietkau <nbd at nbd.name>
----
-
---- a/net/mac80211/tx.c
-+++ b/net/mac80211/tx.c
-@@ -1912,9 +1912,16 @@ static int ieee80211_skb_resize(struct i
- 				int head_need, bool may_encrypt)
- {
- 	struct ieee80211_local *local = sdata->local;
-+	struct ieee80211_hdr *hdr;
-+	bool enc_tailroom;
- 	int tail_need = 0;
- 
--	if (may_encrypt && sdata->crypto_tx_tailroom_needed_cnt) {
-+	hdr = (struct ieee80211_hdr *) skb->data;
-+	enc_tailroom = may_encrypt &&
-+		       (sdata->crypto_tx_tailroom_needed_cnt ||
-+			ieee80211_is_mgmt(hdr->frame_control));
-+
-+	if (enc_tailroom) {
- 		tail_need = IEEE80211_ENCRYPT_TAILROOM;
- 		tail_need -= skb_tailroom(skb);
- 		tail_need = max_t(int, tail_need, 0);
-@@ -1922,8 +1929,7 @@ static int ieee80211_skb_resize(struct i
- 
- 	if (skb_cloned(skb) &&
- 	    (!ieee80211_hw_check(&local->hw, SUPPORTS_CLONED_SKBS) ||
--	     !skb_clone_writable(skb, ETH_HLEN) ||
--	     (may_encrypt && sdata->crypto_tx_tailroom_needed_cnt)))
-+	     !skb_clone_writable(skb, ETH_HLEN) || enc_tailroom))
- 		I802_DEBUG_INC(local->tx_expand_skb_head_cloned);
- 	else if (head_need || tail_need)
- 		I802_DEBUG_INC(local->tx_expand_skb_head);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Fri Feb 15 15:50:17 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Fri, 15 Feb 2019 20:50:17 +0000
Subject: [OpenWrt-Devel] [PATCH 0/2] openssl: changes to /dev/crypto support
Message-ID: <mailman.21669.1550263817.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH 0/2] openssl: changes to /dev/crypto support
Date: Fri, 15 Feb 2019 18:49:33 -0200
Size: 6322
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190215/1b848cb7/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Fri Feb 15 17:35:19 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Fri, 15 Feb 2019 22:35:19 +0000
Subject: [OpenWrt-Devel] [PATCH 1/2] openssl: patch to fix devcrypto
 sessions leak
In-Reply-To: <9d3ba48dabfab18f3be4c5d974eab96a375a7e7f>
References: <9d3ba48dabfab18f3be4c5d974eab96a375a7e7f>
Message-ID: <mailman.21677.1550270119.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH 1/2] openssl: patch to fix devcrypto sessions leak
Date: Fri, 15 Feb 2019 20:35:05 -0200
Size: 8910
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190215/f7566dbf/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Fri Feb 15 17:35:40 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Fri, 15 Feb 2019 22:35:40 +0000
Subject: [OpenWrt-Devel] [PATCH 2/2] openssl: backport devcrypto changes
 from master
In-Reply-To: <20190215223506.23244-1-cote2004-github@yahoo.com>
References: <9d3ba48dabfab18f3be4c5d974eab96a375a7e7f>
 <20190215223506.23244-1-cote2004-github@yahoo.com>
Message-ID: <mailman.21680.1550270139.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH 2/2] openssl: backport devcrypto changes from master
Date: Fri, 15 Feb 2019 20:35:06 -0200
Size: 57559
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190215/24f85f9c/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From jmk at wagsky.com  Fri Feb 15 20:44:26 2019
From: jmk at wagsky.com (Jeff Kletsky)
Date: Fri, 15 Feb 2019 17:44:26 -0800
Subject: [OpenWrt-Devel] 5GHz wifi is broken
In-Reply-To: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>
References: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>
Message-ID: <9b7d75cd-deeb-81e0-3a2d-3a10b7a1fe51@wagsky.com>

Are you running "classic" ath10k drivers and firmware, or the default 
ath10k-ct drivers and firmware?

You should have a line similar to

ath10k_pci 0000:00:00.0: firmware ver 10.2.4-1.0-00041 api 5 features 
no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 f43fa422

Which firmware version does it show?

Which version of the Archer C7? ar71xx, or ath79?

Which version of the ath10k-related packages?


On 2/14/19 9:43 AM, e9hack wrote:
> Hi,
>
> a change somewhere between 8.Feb and 10.Feb breaks the usage of the 5GHz WiFi on my Archer C7 router. I get the
> following entries in the log file:

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ikaze at live.com  Fri Feb 15 21:21:47 2019
From: ikaze at live.com (=?gb2312?B?188g6r8=?=)
Date: Sat, 16 Feb 2019 02:21:47 +0000
Subject: [OpenWrt-Devel] ca-certificates: bump to 20190110 and fix compile
 error
Message-ID: <SG2PR04MB281084D0CF56A10CC21DC4F2DF610@SG2PR04MB2810.apcprd04.prod.outlook.com>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190216/7d7838a8/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ca-certificate-bump-up.diff
Type: application/octet-stream
Size: 702 bytes
Desc: ca-certificate-bump-up.diff
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190216/7d7838a8/attachment.obj>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ikaze at live.com  Fri Feb 15 21:23:11 2019
From: ikaze at live.com (=?gb2312?B?188g6r8=?=)
Date: Sat, 16 Feb 2019 02:23:11 +0000
Subject: [OpenWrt-Devel] sqlite3: bump to 3270100
Message-ID: <SG2PR04MB281008D8FB42A668BA03748EDF610@SG2PR04MB2810.apcprd04.prod.outlook.com>


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190216/276b1e3d/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sqlite3-bump-up.diff
Type: application/octet-stream
Size: 559 bytes
Desc: sqlite3-bump-up.diff
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190216/276b1e3d/attachment.obj>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From yszhou4tech at gmail.com  Fri Feb 15 22:33:22 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Sat, 16 Feb 2019 11:33:22 +0800
Subject: [OpenWrt-Devel] ca-certificates: bump to 20190110 and fix
 compile error
In-Reply-To: <SG2PR04MB281084D0CF56A10CC21DC4F2DF610@SG2PR04MB2810.apcprd04.prod.outlook.com>
References: <SG2PR04MB281084D0CF56A10CC21DC4F2DF610@SG2PR04MB2810.apcprd04.prod.outlook.com>
Message-ID: <CAECwjAitJXOv7CO9i9Jzo8EmV-p3OLb8EkBoa+iFwt0GW2G86g@mail.gmail.com>

On Sat, 16 Feb 2019 at 10:21, ? ? <ikaze at live.com> wrote:
>
>

Hi,

Please properly format and send your patches according to guide at
https://openwrt.org/submitting-patches

Please also describe the compilation error you encountered and
consider fixing that in a separate commit before bumping.

Thank you
                yousong

> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From e9hack at gmail.com  Sat Feb 16 03:06:17 2019
From: e9hack at gmail.com (e9hack)
Date: Sat, 16 Feb 2019 09:06:17 +0100
Subject: [OpenWrt-Devel] 5GHz wifi is broken
In-Reply-To: <9b7d75cd-deeb-81e0-3a2d-3a10b7a1fe51@wagsky.com>
References: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>
 <9b7d75cd-deeb-81e0-3a2d-3a10b7a1fe51@wagsky.com>
Message-ID: <a7ed9873-1fde-d85e-ad13-b36b31e2f529@gmail.com>

Am 16.02.2019 um 02:44 schrieb Jeff Kletsky:

> Are you running "classic" ath10k drivers and firmware, or the default ath10k-ct drivers and firmware?
It is the default ath10k-ct

> You should have a line similar to
> 
> ath10k_pci 0000:00:00.0: firmware ver 10.2.4-1.0-00041 api 5 features no-p2p,raw-mode,mfp,allows-mesh-bcast crc32 f43fa422
> 
> Which firmware version does it show?

From sebastian_ml at gmx.net  Sat Feb 16 03:27:23 2019
From: sebastian_ml at gmx.net (Sebastian Kemper)
Date: Sat, 16 Feb 2019 08:27:23 +0000
Subject: [OpenWrt-Devel] sqlite3: bump to 3270100
In-Reply-To: <SG2PR04MB281008D8FB42A668BA03748EDF610@SG2PR04MB2810.apcprd04.prod.outlook.com>
References: <SG2PR04MB281008D8FB42A668BA03748EDF610@SG2PR04MB2810.apcprd04.prod.outlook.com>
Message-ID: <84B20D8F-0CEB-4C90-9F84-D83B6BBC1027@gmx.net>

Hello ? ?,

Can you please send a pull request via github?

Kind regards,
Seb

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hanipouspilot at gmail.com  Sat Feb 16 12:29:16 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Sat, 16 Feb 2019 20:29:16 +0300
Subject: [OpenWrt-Devel] dnscypt-proxy for 18.06.2 is not in packages.gz
Message-ID: <CANoib0E7VwLyqgZBXpQ12Ndy-G5A_=QVhCtYJivJvf_b1MmOfQ@mail.gmail.com>

packages.gz in the repos doesn't contain this package. It can't be
installed by opkg.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From openwrt-devel at lists.openwrt.org  Sat Feb 16 13:14:10 2019
From: openwrt-devel at lists.openwrt.org (R. Diez via openwrt-devel)
Date: Sat, 16 Feb 2019 18:14:10 +0000
Subject: [OpenWrt-Devel] Random PARTUUID on every rebuild
Message-ID: <mailman.21733.1550340849.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: "R. Diez" <rdiezmail-openwrt at yahoo.com>
Subject: Random PARTUUID on every rebuild
Date: Sat, 16 Feb 2019 19:13:59 +0100
Size: 4766
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190216/9f33c396/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From chunkeey at gmail.com  Sat Feb 16 16:36:18 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Sat, 16 Feb 2019 22:36:18 +0100
Subject: [OpenWrt-Devel] 5GHz wifi is broken
In-Reply-To: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>
References: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>
Message-ID: <2963047.YPBBb5UhK6@debian64>

Hello,

On Thursday, February 14, 2019 6:43:26 PM CET e9hack wrote:
> a change somewhere between 8.Feb and 10.Feb breaks the usage of the 5GHz WiFi on my Archer C7 router.
> I get the following entries in the log file:
>
> Firmware is: 
> ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-1bbfa151 api 2 features
> wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT
> crc32 66e0dff7
> 
> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Failed to set beacon parameters
> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Interface initialization failed
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DFS->DISABLED
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DISABLED->DISABLED
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: AP-DISABLED
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: CTRL-EVENT-TERMINATING
> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-2 wasn't started
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: AP-DISABLED
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: CTRL-EVENT-TERMINATING
> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-1 wasn't started
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: CTRL-EVENT-TERMINATING
> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0 wasn't started
> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
> Thu Feb 14 18:27:01 2019 kern.info kernel: [  162.919267] device wlan0 left promiscuous mode
> Thu Feb 14 18:27:01 2019 kern.info kernel: [  162.923985] br-lan: port 2(wlan0) entered disabled state
> Thu Feb 14 18:27:02 2019 daemon.notice hostapd: ELOOP: remaining socket: sock=23 eloop_data=0x77f9cc40 user_data=0
> handler=0x556a2d91
> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): cat: can't open '/var/run/wifi-phy0.pid': No such file or
> directory
> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): WARNING (wireless_add_process): executable path
> /usr/sbin/hostapd does not match process  path (/proc/exe)
> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): Command failed: Invalid argument
> Thu Feb 14 18:27:03 2019 kern.warn kernel: [  164.791404] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16  peers: 127
> tid: 256
> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.808256] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.814618] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424  sw-crypt:
> 0 ct-sta: 0'
> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.822797] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24616 iram: 26584'

> Thu Feb 14 18:27:03 2019 kern.warn kernel: [  164.900521] ath10k_pci 0000:00:00.0: pdev param 0 not supported by firmware
> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.925384] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-1"
> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Interface 1 setup failed: IFUP_ERROR
> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-2"
> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Interface 2 setup failed: IFUP_ERROR
> Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.183839] br-lan: port 2(wlan0) entered blocking state
> Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.189311] br-lan: port 2(wlan0) entered disabled state
> Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.195048] device wlan0 entered promiscuous mode

"between 8.Feb and 10.Feb"

https://github.com/openwrt/openwrt/commits/master/package/kernel/ath10k-ct

so maybe it was: 

https://github.com/openwrt/openwrt/commit/835fc08ae3fb9e27db0f095a10fbff24f87ee1a9
(Although, github says it was commited on the 11th)

Can you please post your /etc/config/wireless and try to revert the patch to test if
this helps with the situation? 

If it is indeed the patch (and not a unsupported configuration):

@Ben can you please take a peek into your wave-1 firmware and check if the 
mgmt_rate WMI (WMI_10X_VDEV_PARAM_MGMT_RATE) is supported, or if there is
a bad interaction somewhere else?

(This "pdev param 0 not supported by firmware" was mentioned in 
https://bugs.openwrt.org/index.php?do=details&task_id=1920 so probably not the problem)

Cheers,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From greearb at candelatech.com  Sat Feb 16 16:42:28 2019
From: greearb at candelatech.com (Ben Greear)
Date: Sat, 16 Feb 2019 13:42:28 -0800
Subject: [OpenWrt-Devel] 5GHz wifi is broken
In-Reply-To: <2963047.YPBBb5UhK6@debian64>
References: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>
 <2963047.YPBBb5UhK6@debian64>
Message-ID: <d9f2f360-ec92-528c-26af-6328452a6699@candelatech.com>



On 02/16/2019 01:36 PM, Christian Lamparter wrote:
> Hello,
>
> On Thursday, February 14, 2019 6:43:26 PM CET e9hack wrote:
>> a change somewhere between 8.Feb and 10.Feb breaks the usage of the 5GHz WiFi on my Archer C7 router.
>> I get the following entries in the log file:
>>
>> Firmware is:
>> ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-1bbfa151 api 2 features
>> wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT
>> crc32 66e0dff7
>>
>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Failed to set beacon parameters
>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Interface initialization failed
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DFS->DISABLED
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DISABLED->DISABLED
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: AP-DISABLED
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: CTRL-EVENT-TERMINATING
>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-2 wasn't started
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: AP-DISABLED
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: CTRL-EVENT-TERMINATING
>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-1 wasn't started
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: CTRL-EVENT-TERMINATING
>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0 wasn't started
>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
>> Thu Feb 14 18:27:01 2019 kern.info kernel: [  162.919267] device wlan0 left promiscuous mode
>> Thu Feb 14 18:27:01 2019 kern.info kernel: [  162.923985] br-lan: port 2(wlan0) entered disabled state
>> Thu Feb 14 18:27:02 2019 daemon.notice hostapd: ELOOP: remaining socket: sock=23 eloop_data=0x77f9cc40 user_data=0
>> handler=0x556a2d91
>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): cat: can't open '/var/run/wifi-phy0.pid': No such file or
>> directory
>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): WARNING (wireless_add_process): executable path
>> /usr/sbin/hostapd does not match process  path (/proc/exe)
>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): Command failed: Invalid argument
>> Thu Feb 14 18:27:03 2019 kern.warn kernel: [  164.791404] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16  peers: 127
>> tid: 256
>> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.808256] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
>> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.814618] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424  sw-crypt:
>> 0 ct-sta: 0'
>> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.822797] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24616 iram: 26584'
>
>> Thu Feb 14 18:27:03 2019 kern.warn kernel: [  164.900521] ath10k_pci 0000:00:00.0: pdev param 0 not supported by firmware
>> Thu Feb 14 18:27:03 2019 kern.info kernel: [  164.925384] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
>> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-1"
>> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Interface 1 setup failed: IFUP_ERROR
>> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-2"
>> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Interface 2 setup failed: IFUP_ERROR
>> Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.183839] br-lan: port 2(wlan0) entered blocking state
>> Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.189311] br-lan: port 2(wlan0) entered disabled state
>> Thu Feb 14 18:27:05 2019 kern.info kernel: [  166.195048] device wlan0 entered promiscuous mode
>
> "between 8.Feb and 10.Feb"
>
> https://github.com/openwrt/openwrt/commits/master/package/kernel/ath10k-ct
>
> so maybe it was:
>
> https://github.com/openwrt/openwrt/commit/835fc08ae3fb9e27db0f095a10fbff24f87ee1a9
> (Although, github says it was commited on the 11th)
>
> Can you please post your /etc/config/wireless and try to revert the patch to test if
> this helps with the situation?
>
> If it is indeed the patch (and not a unsupported configuration):
>
> @Ben can you please take a peek into your wave-1 firmware and check if the
> mgmt_rate WMI (WMI_10X_VDEV_PARAM_MGMT_RATE) is supported, or if there is
> a bad interaction somewhere else?
>
> (This "pdev param 0 not supported by firmware" was mentioned in
> https://bugs.openwrt.org/index.php?do=details&task_id=1920 so probably not the problem)

Hopefully the user can bisect to the exact bad commit, and then I'll be happy to
try to figure out what is the issue.

I have not made many changes to the wave-1 firmware recently.  I have some API
to set the management rates, but not sure it uses the same API as whatever that
patch in question is using.

Thanks,
Ben

>
> Cheers,
> Christian
>
>

-- 
Ben Greear <greearb at candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dev at kresin.me  Sun Feb 17 03:51:34 2019
From: dev at kresin.me (Mathias Kresin)
Date: Sun, 17 Feb 2019 09:51:34 +0100
Subject: [OpenWrt-Devel] [PATCH] apm821xx, ath79, lantiq,
 ramips: move named gpio exports to generic
In-Reply-To: <20190213061418.GA23776@meh.true.cz>
References: <20190212191806.GA4057@makrotopia.org>
 <88050845-4d59-c253-e9f8-1b0661d6f7a5@kresin.me>
 <20190213061418.GA23776@meh.true.cz>
Message-ID: <5375e3a1-7bf8-24e7-5b23-97415cc0968c@kresin.me>

13/02/2019 07:14, Petr ?tetiar:
> Mathias Kresin <dev at kresin.me> [2019-02-12 23:19:24]:
> 
>> 12/02/2019 20:49, Daniel Golle:
>>> The patch was copied to a bunch of platforms and seems to be a quite
>>> useful feature for various things. Move it to generic to avoid code
>>> duplication.
>>
>> Follow up to the discussion in
>> https://github.com/openwrt/openwrt/pull/1814#issuecomment-462942022.
>>
>> We should rather try to get rid of the patch instead of encourage people of
>> using it. Has to be read as soft NAK.
>>
>> The patch was a hack for missing kernel functionality and was rejected
>> upstream a long time ago. The main use case for the patch is pulling reset
>> GPIOs or enable a USB VCC supply. More and more drivers/subsystems are
>> getting support to control reset GPIOs or enable the VCC supply on their
>> own.
>>
>> The upstream answer to gpio-exports are gpio-hogs. It is just that nobody
>> migrated the devicetree source files to GPIO hogs so far. Even if gpio-hogs
>> are still a workaround for drivers not able pull their reset GPIOs/enable
>> VCC supply, it seem to me the cleaner workaround.
> 
> I've sent RFC[1] about userspace replacement as well.
> 
> 1. http://lists.infradead.org/pipermail/openwrt-devel/2019-February/015715.html
> 
> -- ynezz
> 

Hey Petr,

I'm well aware of your mail and I agree that we need to switch to 
libgpiod et al. But I don't feel confident to answer any of the question 
raised.

I still hope, someone - who has a better idea how/where to integrate the 
functionality - picks up your mail.

Mathias

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From dev at kresin.me  Sun Feb 17 03:57:57 2019
From: dev at kresin.me (Mathias Kresin)
Date: Sun, 17 Feb 2019 09:57:57 +0100
Subject: [OpenWrt-Devel] [BUG] lantiq: net: wrong operator
In-Reply-To: <b36ecdbf-6134-9707-45a8-783c3bbbb08a@gmail.com>
References: <b36ecdbf-6134-9707-45a8-783c3bbbb08a@gmail.com>
Message-ID: <b20d3f28-5bf9-1128-5bae-3e1cfd146d65@kresin.me>

08/02/2019 09:23, Petr Cvek:
> Hello,
> 
> There is a wrong code in 0025-NET-MIPS-lantiq-adds-xrx200-net.patch [1], the original code:
> 
> +	link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0010);
> +	link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0020);
> 
> wants to mask the register value and is using a logical AND and not a bitwise AND.
> 
> The fix should be:
> 
> +	link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0010);
> +	link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0020);
> 
> References:
> [1] https://github.com/openwrt/openwrt/blob/master/target/linux/lantiq/patches-4.14/0025-NET-MIPS-lantiq-adds-xrx200-net.patch#L937
> 
>

Hey Petr,

it looks indeed wrong. And looking more closer at the lines, I don't get 
why we need the double negation.

Out of curiosity, do you noticed the typo during some tests or by 
reviewing the code? I'm not able to locale any code which writes the 
XRX200_MAC_CTRL_0_FCON register and would allow to change the flow 
control settings.

Would you mind to send a patch to fix the typo? Maybe we can make this 
part of the code a bit more obvious by changing it to something like:

link->rx_flow = xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & BIT(4);
link->tx_flow = xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & BIT(5);

The autoneg source look suspicious as well. I rather would suspect it is 
something related to flow control rather than the link speed 
autonegotiation. But might be I got the code wrong. In the end it is all 
guessing, since I don't have a datasheet for the switch.

Mathias

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel at dd-wrt.com  Sun Feb 17 07:31:04 2019
From: daniel at dd-wrt.com (Daniel Danzberger)
Date: Sun, 17 Feb 2019 13:31:04 +0100
Subject: [OpenWrt-Devel] [PATCH] mt7621: add kexec smp shutdown patch.
Message-ID: <20190217123104.11376-1-daniel@dd-wrt.com>

This patch shuts down all secondary cpus before executing machine_kexec.
This avoids paging errors and random hangups when doing kexec.

Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
---
 .../120-mt7621-kexec-smp-shutdown.patch       | 65 +++++++++++++++++++
 1 file changed, 65 insertions(+)
 create mode 100644 target/linux/ramips/patches-4.14/120-mt7621-kexec-smp-shutdown.patch

diff --git a/target/linux/ramips/patches-4.14/120-mt7621-kexec-smp-shutdown.patch b/target/linux/ramips/patches-4.14/120-mt7621-kexec-smp-shutdown.patch
new file mode 100644
index 0000000000..a4c0e59521
--- /dev/null
+++ b/target/linux/ramips/patches-4.14/120-mt7621-kexec-smp-shutdown.patch
@@ -0,0 +1,65 @@
+From 17288381dfc3e920d81cfd4e63e33e3630d54a58 Mon Sep 17 00:00:00 2001
+From: Daniel Danzberger <daniel at dd-wrt.com>
+Date: Sat, 22 Dec 2018 22:20:37 +0100
+Subject: [PATCH] mt7621: kexec: shutdown secondary cpus
+
+Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
+---
+ arch/mips/ralink/mt7621.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/arch/mips/ralink/mt7621.c b/arch/mips/ralink/mt7621.c
+index 801edf9..34dced6 100644
+--- a/arch/mips/ralink/mt7621.c
++++ b/arch/mips/ralink/mt7621.c
+@@ -13,6 +13,7 @@
+ #include <linux/clk.h>
+ #include <linux/clkdev.h>
+ #include <linux/clk-provider.h>
++#include <linux/cpu.h>
+ #include <dt-bindings/clock/mt7621-clk.h>
+
+ #include <asm/mipsregs.h>
+@@ -23,6 +24,7 @@
+ #include <asm/mips-boards/launch.h>
+ #include <asm/delay.h>
+ #include <asm/time.h>
++#include <asm/kexec.h>
+
+ #include <pinmux.h>
+
+@@ -271,6 +273,21 @@ static int udelay_recal(void)
+ }
+ device_initcall(udelay_recal);
+
++#ifdef CONFIG_KEXEC
++static void mt7621_kexec_shutdown(void)
++{
++	int reboot_cpu = 0;
++	int cpu;
++
++	for_each_online_cpu(cpu) {
++		if (cpu != reboot_cpu)
++			cpu_down(cpu);
++	}
++	cpu_hotplug_disable();
++}
++#endif
++
++
+ void prom_soc_init(struct ralink_soc_info *soc_info)
+ {
+ 	void __iomem *sysc = (void __iomem *) KSEG1ADDR(MT7621_SYSC_BASE);
+@@ -325,6 +342,9 @@ void prom_soc_init(struct ralink_soc_info *soc_info)
+
+ 	rt2880_pinmux_data = mt7621_pinmux_data;
+
++#ifdef CONFIG_KEXEC
++	_machine_kexec_shutdown = mt7621_kexec_shutdown;
++#endif
+
+ 	if (!register_cps_smp_ops())
+ 		return;
+--
+2.11.0
+
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ldir at darbyshire-bryant.me.uk  Sun Feb 17 09:05:01 2019
From: ldir at darbyshire-bryant.me.uk (Kevin 'ldir' Darbyshire-Bryant)
Date: Sun, 17 Feb 2019 14:05:01 +0000
Subject: [OpenWrt-Devel] [BUG] lantiq: net: wrong operator
In-Reply-To: <b20d3f28-5bf9-1128-5bae-3e1cfd146d65@kresin.me>
References: <b36ecdbf-6134-9707-45a8-783c3bbbb08a@gmail.com>
 <b20d3f28-5bf9-1128-5bae-3e1cfd146d65@kresin.me>
Message-ID: <3BACB804-0B01-45F4-B3E7-588B7433FBF5@darbyshire-bryant.me.uk>



> On 17 Feb 2019, at 08:57, Mathias Kresin <dev at kresin.me> wrote:
> 
> 08/02/2019 09:23, Petr Cvek:
>> Hello,
>> There is a wrong code in 0025-NET-MIPS-lantiq-adds-xrx200-net.patch [1], the original code:
>> +	link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0010);
>> +	link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) && 0x0020);
>> wants to mask the register value and is using a logical AND and not a bitwise AND.
>> The fix should be:
>> +	link->rx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0010);
>> +	link->tx_flow = !!(xrx200sw_read_x(XRX200_MAC_CTRL_0_FCON, port) & 0x0020);
>> References:
>> [1] https://github.com/openwrt/openwrt/blob/master/target/linux/lantiq/patches-4.14/0025-NET-MIPS-lantiq-adds-xrx200-net.patch#L937
>> 
> 
> Hey Petr,
> 
> it looks indeed wrong. And looking more closer at the lines, I don't get why we need the double negation.

Having seen this code structure before, it?s a non-obvious way of turning a masked and hence value based true/false into a binary 0 or 1 result:  Exhibit A moronic demo c programme:

#include <stdio.h>
  
int main()
{

	printf("%d\n", 5 & 4);
	printf("%d\n", (5 & 4));
	printf("%d\n", !(5 & 4));
	printf("%d\n", !!(5 & 4));

}

Results in:

4
4
0
1


Cheers,

Kevin D-B

012C ACB2 28C6 C53E 9775  9123 B3A2 389B 9DE2 334A

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From bjorn at mork.no  Sun Feb 17 09:41:32 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Sun, 17 Feb 2019 15:41:32 +0100
Subject: [OpenWrt-Devel] [BUG] lantiq: net: wrong operator
In-Reply-To: <3BACB804-0B01-45F4-B3E7-588B7433FBF5@darbyshire-bryant.me.uk>
 (Kevin Darbyshire-Bryant's message of "Sun, 17 Feb 2019 14:05:01
 +0000")
References: <b36ecdbf-6134-9707-45a8-783c3bbbb08a@gmail.com>
 <b20d3f28-5bf9-1128-5bae-3e1cfd146d65@kresin.me>
 <3BACB804-0B01-45F4-B3E7-588B7433FBF5@darbyshire-bryant.me.uk>
Message-ID: <877edyv5nn.fsf@miraculix.mork.no>

"Kevin 'ldir' Darbyshire-Bryant" <ldir at darbyshire-bryant.me.uk> writes:

>> it looks indeed wrong. And looking more closer at the lines, I don't
>> get why we need the double negation.
>
> Having seen this code structure before, it?s a non-obvious way of
> turning a masked and hence value based true/false into a binary 0 or 1
> result: Exhibit A moronic demo c programme:

Huh?  The double negation is a pretty standard way to convert an integer
to a boolean. It's used a few times in the kernel for example:

  bjorn at miraculix:/usr/local/src/git/linux$ git grep '!!('|wc -l
  3449


Fix the && => & bug and leave the !!.


Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Sun Feb 17 11:13:04 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Sun, 17 Feb 2019 08:13:04 -0800
Subject: [OpenWrt-Devel] [PATCH 1/2] ath79: Add GL.iNet AR-300M-Lite
In-Reply-To: <0981214D-D2CE-4E94-84E2-212C682FCB04@reboot.ch>
References: <cb3d8a54-8018-affa-4026-49be1de99b00@wagsky.com>
 <2167BAA0-1B59-4FAC-9DF3-CCFA3426952A@reboot.ch>
 <813df3ae-660f-90a5-6c7e-b4205f8a1eaa@wagsky.com>
 <0981214D-D2CE-4E94-84E2-212C682FCB04@reboot.ch>
Message-ID: <d3d0b8ba-c573-0bf2-9569-62d7c30ba0da@wagsky.com>


On 2/16/19 12:03 PM, warp at reboot.ch wrote:
> Hello Jeff,
>
> I did try your suggested change but really not sure to have done that correctly,
> this is what lsusb shows while I have a wifi usb dongle connected (also tried with memory stick):
>>> Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
> No luck to use USB. Did you had a chance to have a look?
>
> Thank you!
> - will


I built an image this morning and my AR300M-Lite recognizes devices and 
attaches drivers as expected

root at OpenWrt:~# lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

(start following log and insert Transcend card reader)

root at OpenWrt:~# logread -f
Sun Feb 17 15:52:01 2019 kern.info kernel: [? 763.408605] usb 1-1: new 
high-speed USB device number 2 using ehci-platform
Sun Feb 17 15:52:01 2019 kern.info kernel: [? 763.613737] usb-storage 
1-1:1.0: USB Mass Storage device detected
Sun Feb 17 15:52:01 2019 kern.info kernel: [? 763.621082] scsi host0: 
usb-storage 1-1:1.0
Sun Feb 17 15:52:02 2019 kern.notice kernel: [? 764.670474] scsi 
0:0:0:0: Direct-Access???? TS-RDF5? SD? Transcend??? TS35 PQ: 0 ANSI: 6
Sun Feb 17 15:52:02 2019 kern.notice kernel: [? 764.685408] sd 0:0:0:0: 
[sda] Attached SCSI removable disk

root at OpenWrt:~# lsusb
Bus 001 Device 002: ID 8564:4000 Transcend Information, Inc. RDF8
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


Do you have the proper USB drivers installed?

Test above performed with

jeff at deb-devel:~/devel/openwrt-ar300m$ ./scripts/diffconfig.sh | fgrep usb
CONFIG_PACKAGE_kmod-usb-storage=y
CONFIG_PACKAGE_kmod-usb-storage-uas=y
CONFIG_PACKAGE_libusb-1.0=y
CONFIG_PACKAGE_usbutils=y


Jeff


>> On 4 Feb 2019, at 21:59, Jeff Kletsky <lede at allycomm.com> wrote:
>>
>> On 2/4/19 4:20 AM, warp at reboot.ch wrote:
>>
>>> Hello Jeff, thanks for adding GL.iNet AR-300M-Lite !
>>>
>>> I can't test it as it's not yet merged into master I think,
>>> I'm currently using GL.iNet AR-300M settings with a GL.iNet AR-300M-Lite box
>>> and USB is not working, lsusb shows nothing.
>>>
>>> Wondering if it's a known issue and if your latest patches fix it.
>>>
>>> Thank you!
>>> - will
>> It will be this evening, GMT+8, until I will be able to check, but it wouldn't surprise me if the change to "gl-ar300m:green:usb" in the DTS will resolve the issue. I can imagine all kinds of problems with a trigger on a USB device-present flipping the USB power!
>>
>> Until then, you can try changing the trigger to "always on" in /etc/config/system or through LuCI.
>>
>> Jeff
>>
>>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From chunkeey at gmail.com  Sun Feb 17 11:22:24 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Sun, 17 Feb 2019 17:22:24 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] gemini: Generate harddisk image for
 DNS-313
In-Reply-To: <20190215160223.19734-1-linus.walleij@linaro.org>
References: <20190215160223.19734-1-linus.walleij@linaro.org>
Message-ID: <2163605.jBeidrCiVr@debian64>

On Friday, February 15, 2019 5:02:23 PM CET Linus Walleij wrote:
> This makes OpenWrt build an Ext2+Ext4 partitioned image
> for the D-Link DNS-313 with two blank partitions, a boot
> partition on /dev/sda3 and a rootfs partition on
> /dev/sda4.
> 
> This uses the methods already used in apm821xx including
> the tricks to convert the generated Ext2 filesystem
> partition to version 1 so that the firmware bootloader
> will properly recognize it.
> 
> We patch a bit around the build files to make sure we
> get the rootfs size set and that genext2fs is properly
> built.
> 
> Tested on the D-Link DNS-313.
> 
> Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
> [Fixing and tricksing]
> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> ---
>  config/Config-images.in                       |  2 +-
>  target/linux/gemini/Makefile                  |  2 +-
>  target/linux/gemini/image/Makefile            | 27 ++++++++++++++----
>  .../linux/gemini/image/dns313_gen_hdd_img.sh  | 28 +++++++++++++++++++
>  tools/Makefile                                |  2 +-
>  5 files changed, 52 insertions(+), 9 deletions(-)
>  create mode 100755 target/linux/gemini/image/dns313_gen_hdd_img.sh
> 
> diff --git a/config/Config-images.in b/config/Config-images.in
> index bdd24ef6178c..b9cc929f0f95 100644
> --- a/config/Config-images.in
> +++ b/config/Config-images.in
> @@ -275,7 +275,7 @@ menu "Target Images"
>  
>  	config TARGET_ROOTFS_PARTSIZE
>  		int "Root filesystem partition size (in MB)"
> -		depends on GRUB_IMAGES || USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_mvebu || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml
> +		depends on GRUB_IMAGES || USES_ROOTFS_PART || TARGET_ROOTFS_EXT4FS || TARGET_mvebu || TARGET_omap || TARGET_rb532 || TARGET_sunxi || TARGET_uml || TARGET_gemini
(see below)
>  		default 256
>  		help
>  		  Select the root filesystem partition size.
> diff --git a/target/linux/gemini/Makefile b/target/linux/gemini/Makefile
> index 7c573c7c6d09..e232937bb9eb 100644
> --- a/target/linux/gemini/Makefile
> +++ b/target/linux/gemini/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>  ARCH:=arm
>  BOARD:=gemini
>  BOARDNAME:=Cortina Systems CS351x
> -FEATURES:=squashfs pci rtc usb dt gpio display
> +FEATURES:=squashfs pci rtc usb dt gpio display ext4 root-part boot-part
Oops, that should have been "rootfs-part". Specifying rootfs-part will select
the USES_ROOTFS_PART symbol, which in turn makes the change (TARGET_gemini) 
in Config-images.in unnecessary.

>  CPU_TYPE:=fa526
>  MAINTAINER:=Roman Yeryomin <roman at advem.lv>
>  
> diff --git a/target/linux/gemini/image/Makefile b/target/linux/gemini/image/Makefile
> index a612cf706d63..493f14cbf416 100644
> --- a/target/linux/gemini/image/Makefile
> +++ b/target/linux/gemini/image/Makefile
> @@ -123,8 +136,10 @@ define Device/dlink_dns-313
>  	DEVICE_TITLE := D-Link DNS-313 1-Bay Network Storage Enclosure
>  	DEVICE_DTS := gemini-dlink-dns-313
>  	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
> -	IMAGES := bootpart.tar.gz
> -	IMAGE/bootpart.tar.gz := dns313-images
> +	BLOCKSIZE := 1k 
> +	FILESYSTEMS := ext4 squashfs
squashfs images would be nice. They are prefered because they support features
like better/safer Failsafe Mode and Factory Reset, which are not available for
the ext4 images as they need the "read-only" property that squashfs provides.

Though, the squashfs images on block-like devices (hdd/ssd/mmc) are trickier, 
because they need f2fs (kernel + userspace) + loopdev support in order to
work properly. (Without these, the squashfs image will boot, but it will
always lose the configuration on reboot because all the volatile files are
just stored on a emergency ramdisk fallback).

That's why I added the changes to the config-4.14 and config-4.19 and added
the f2fs tools. I put them into this separate patch on my staging area:

https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=1626b5ca1d963e70a979fc4e6262149208608d46

if these work out, please let me know.

> +	IMAGES := factory.bin.gz
> +	IMAGE/factory.bin.gz := dns313-images | gzip
>  endef
>  TARGET_DEVICES += dlink_dns-313
>  

Cheers,
Christian




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sashal at kernel.org  Sun Feb 17 13:16:04 2019
From: sashal at kernel.org (Sasha Levin)
Date: Sun, 17 Feb 2019 13:16:04 -0500
Subject: [OpenWrt-Devel] [PATCH 1/8 v3] bridge: multicast to unicast
In-Reply-To: <20190214132403.10687-2-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
 <20190214132403.10687-2-linus.walleij@linaro.org>
Message-ID: <20190217181604.GF10616@sasha-vm>

On Thu, Feb 14, 2019 at 02:23:56PM +0100, Linus Walleij wrote:
>From: Felix Fietkau <nbd at nbd.name>
>
>commit 6db6f0eae6052b70885562e1733896647ec1d807 upstream.
>
>Implements an optional, per bridge port flag and feature to deliver
>multicast packets to any host on the according port via unicast
>individually. This is done by copying the packet per host and
>changing the multicast destination MAC to a unicast one accordingly.
>
>multicast-to-unicast works on top of the multicast snooping feature of
>the bridge. Which means unicast copies are only delivered to hosts which
>are interested in it and signalized this via IGMP/MLD reports
>previously.
>
>This feature is intended for interface types which have a more reliable
>and/or efficient way to deliver unicast packets than broadcast ones
>(e.g. wifi).
>
>However, it should only be enabled on interfaces where no IGMPv2/MLDv1
>report suppression takes place. This feature is disabled by default.
>
>The initial patch and idea is from Felix Fietkau.
>
>Signed-off-by: Felix Fietkau <nbd at nbd.name>
>[linus.luessing at c0d3.blue: various bug + style fixes, commit message]
>Signed-off-by: Linus L?ssing <linus.luessing at c0d3.blue>
>Reviewed-by: Nikolay Aleksandrov <nikolay at cumulusnetworks.com>
>Signed-off-by: David S. Miller <davem at davemloft.net>
>Signed-off-by: Linus Walleij <linus.walleij at linaro.org>

This looks like a new feature rather than a fix, why does it need to go
to -stable?

--
Thanks,
Sasha

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sashal at kernel.org  Sun Feb 17 13:16:46 2019
From: sashal at kernel.org (Sasha Levin)
Date: Sun, 17 Feb 2019 13:16:46 -0500
Subject: [OpenWrt-Devel] [PATCH 5/8 v3] ubifs: Drop softlimit and delta
 fields from struct ubifs_wbuf
In-Reply-To: <20190214132403.10687-6-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
 <20190214132403.10687-6-linus.walleij@linaro.org>
Message-ID: <20190217181646.GG10616@sasha-vm>

On Thu, Feb 14, 2019 at 02:24:00PM +0100, Linus Walleij wrote:
>From: Rafa? Mi?ecki <rafal at milecki.pl>
>
>commit 854826c9d526fd81077742c3b000e3f7fcaef3ce upstream.
>
>Values of these fields are set during init and never modified. They are
>used (read) in a single function only. There isn't really any reason to
>keep them in a struct. It only makes struct just a bit bigger without
>any visible gain.
>
>Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
>Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
>Signed-off-by: Richard Weinberger <richard at nod.at>
>Signed-off-by: Linus Walleij <linus.walleij at linaro.org>

This one is a cleanup, why is it needed in -stable?

--
Thanks,
Sasha

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From sashal at kernel.org  Sun Feb 17 13:18:02 2019
From: sashal at kernel.org (Sasha Levin)
Date: Sun, 17 Feb 2019 13:18:02 -0500
Subject: [OpenWrt-Devel] [PATCH 6/8 v3] ubifs: Use
 dirty_writeback_interval value for wbuf timer
In-Reply-To: <20190214132403.10687-7-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
 <20190214132403.10687-7-linus.walleij@linaro.org>
Message-ID: <20190217181802.GH10616@sasha-vm>

On Thu, Feb 14, 2019 at 02:24:01PM +0100, Linus Walleij wrote:
>From: Rafa? Mi?ecki <rafal at milecki.pl>
>
>commit 1b7fc2c0069f3864a3dda15430b7aded31c0bfcc upstream.
>
>Right now wbuf timer has hardcoded timeouts and there is no place for
>manual adjustments. Some projects / cases many need that though. Few
>file systems allow doing that by respecting dirty_writeback_interval
>that can be set using sysctl (dirty_writeback_centisecs).
>
>Lowering dirty_writeback_interval could be some way of dealing with user
>space apps lacking proper fsyncs. This is definitely *not* a perfect
>solution but we don't have ideal (user space) world. There were already
>advanced discussions on this matter, mostly when ext4 was introduced and
>it wasn't behaving as ext3. Anyway, the final decision was to add some
>hacks to the ext4, as trying to fix whole user space or adding new API
>was pointless.
>
>We can't (and shouldn't?) just follow ext4. We can't e.g. sync on close
>as this would cause too many commits and flash wearing. On the other
>hand we still should allow some trade-off between -o sync and default
>wbuf timeout. Respecting dirty_writeback_interval should allow some sane
>cutomizations if used warily.
>
>Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
>Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
>Signed-off-by: Richard Weinberger <richard at nod.at>
>Signed-off-by: Linus Walleij <linus.walleij at linaro.org>

This one looks like a new feature that will also require changes to
userspace. Is there actual breakage this fixes?

--
Thanks,
Sasha

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From noreply at github.com  Sun Feb 17 13:21:46 2019
From: noreply at github.com (Stephen Walker)
Date: Sun, 17 Feb 2019 10:21:46 -0800
Subject: [OpenWrt-Devel] [sdwalker/sdwalker.github.io] 06e365: This week's
 update
Message-ID: <sdwalker/sdwalker.github.io/push/refs/heads/master/026559-06e365@github.com>

  Branch: refs/heads/master
  Home:   https://github.com/sdwalker/sdwalker.github.io
  Commit: 06e365b348ec39206dbb5d8b73c1daffdbd53dd7
      https://github.com/sdwalker/sdwalker.github.io/commit/06e365b348ec39206dbb5d8b73c1daffdbd53dd7
  Author: Stephen Walker <stephendwalker+github at gmail.com>
  Date:   2019-02-17 (Sun, 17 Feb 2019)

  Changed paths:
    M uscan/index-18.06.html
    M uscan/index.html

  Log Message:
  -----------
  This week's update



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sashal at kernel.org  Sun Feb 17 13:21:50 2019
From: sashal at kernel.org (Sasha Levin)
Date: Sun, 17 Feb 2019 13:21:50 -0500
Subject: [OpenWrt-Devel] [PATCH v2] uapi/if_ether.h: prevent
 redefinition of struct ethhdr
In-Reply-To: <20190214131800.8760-1-linus.walleij@linaro.org>
References: <20190214131800.8760-1-linus.walleij@linaro.org>
Message-ID: <20190217182150.GI10616@sasha-vm>

On Thu, Feb 14, 2019 at 02:18:00PM +0100, Linus Walleij wrote:
>From: Hauke Mehrtens <hauke at hauke-m.de>
>
>commit 6926e041a8920c8ec27e4e155efa760aa01551fd upstream.
>
>Musl provides its own ethhdr struct definition. Add a guard to prevent
>its definition of the appropriate musl header has already been included.
>
>glibc does not implement this header, but when glibc will implement this
>they can just define __UAPI_DEF_ETHHDR 0 to make it work with the
>kernel.
>
>Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>Signed-off-by: David S. Miller <davem at davemloft.net>
>Signed-off-by: Linus Walleij <linus.walleij at linaro.org>

Queued up, thank you.

--
Thanks,
Sasha

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sashal at kernel.org  Sun Feb 17 13:22:41 2019
From: sashal at kernel.org (Sasha Levin)
Date: Sun, 17 Feb 2019 13:22:41 -0500
Subject: [OpenWrt-Devel] [PATCH v2] net: Allow class-e address
 assignment via ifconfig ioctl
In-Reply-To: <20190214131604.8107-1-linus.walleij@linaro.org>
References: <20190214131604.8107-1-linus.walleij@linaro.org>
Message-ID: <20190217182241.GJ10616@sasha-vm>

On Thu, Feb 14, 2019 at 02:16:04PM +0100, Linus Walleij wrote:
>From: Dave Taht <dave.taht at gmail.com>
>
>commit 65cab850f0eeaa9180bd2e10a231964f33743edf upstream.
>
>While most distributions long ago switched to the iproute2 suite
>of utilities, which allow class-e (240.0.0.0/4) address assignment,
>distributions relying on busybox, toybox and other forms of
>ifconfig cannot assign class-e addresses without this kernel patch.
>
>While CIDR has been obsolete for 2 decades, and a survey of all the
>open source code in the world shows the IN_whatever macros are also
>obsolete... rather than obsolete CIDR from this ioctl entirely, this
>patch merely enables class-e assignment, sanely.
>
>Signed-off-by: Dave Taht <dave.taht at gmail.com>
>Signed-off-by: David S. Miller <davem at davemloft.net>
>Signed-off-by: Linus Walleij <linus.walleij at linaro.org>

Is this really a fix? This isn't something that ever worked.

Either way, David Miller will need to sign off on this since he manages
net/ -stable patches.

--
Thanks,
Sasha

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Sun Feb 17 13:32:18 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Sun, 17 Feb 2019 19:32:18 +0100
Subject: [OpenWrt-Devel] [PATCH] Honour NO_COLOR in include/scan.mk
In-Reply-To: <413fed74-df8e-c98c-0611-a867b17f3c9a@yahoo.com>
References: <413fed74-df8e-c98c-0611-a867b17f3c9a@yahoo.com>
Message-ID: <264ebd78-1237-a61d-3fc2-b32d3598370c@hauke-m.de>

On 1/30/19 3:01 PM, R. Diez wrote:
> 
>> Could you please send a V2 with the requested change
>> to print $(1) without ANSII escape sequences?
> 
> Here it goes:
> 
> Honour NO_COLOR in Makefile function 'progress' in include/scan.mk, in
> the same way that include/verbose.mk does.
> 
> 
> Signed-off-by: R. Diez <R. Diez>
> ---
> ?include/scan.mk | 10 ++++++++--
> ?1 file changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/include/scan.mk b/include/scan.mk
> index e6b21b27b0..d9cd4f7e8c 100644
> --- a/include/scan.mk
> +++ b/include/scan.mk
> @@ -19,9 +19,15 @@ else
> ?endif
> 
> ?ifeq ($(IS_TTY),1)
> -? define progress
> +? ifneq ($(strip $(NO_COLOR)),1)
> +??? define progress
> ???? printf "\033[M\r$(1)" >&2;
> -? endef
> +??? endef
> +? else
> +??? define progress
> +??? printf "\r$(1)" >&2;
> +??? endef
> +? endif
> ?else
> ?? define progress
> ???? :;

Hi,

I applied the wrong version of your patch, next time please use a "patch
v2" to mark the second patch.

The original patch was also somehow white space broken, I would suggest
to use "git send-email" for sending patches.

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From daniel at makrotopia.org  Sun Feb 17 13:47:00 2019
From: daniel at makrotopia.org (Daniel Golle)
Date: Sun, 17 Feb 2019 19:47:00 +0100
Subject: [OpenWrt-Devel] [PATCH] mac80211: update to version 4.19.23-1
In-Reply-To: <20190215203847.18350-1-hauke@hauke-m.de>
References: <20190215203847.18350-1-hauke@hauke-m.de>
Message-ID: <20190217182006.GA1109@makrotopia.org>

Thank you! I've tested this today and works great (and was little work
to re-base my clean-up of rt2x00 on top of it, so you got my thumbs up)

On Fri, Feb 15, 2019 at 09:38:47PM +0100, Hauke Mehrtens wrote:
> This updates mac80211 to backports version 4.19.23-1 which includes all
> the stable fixes from kernel 4.19.23.
> The removed patches are included in this version.
> 
> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
> ---
>  package/kernel/mac80211/Makefile              |   8 +-
>  ...fix-tx99-with-monitor-mode-interface.patch |   2 +-
>  ...upport-for-using-active-monitor-inte.patch |   2 +-
>  ...-authentication-messages-for-late-ac.patch |  27 ----
>  ...ve-debug-log-after-buffer-increments.patch |  14 +-
>  ...ck-da-enabled-first-in-sampling-rout.patch |  33 -----
>  ...k-dynack-make-ewma-estimation-faster.patch | 139 ------------------
>  ...21-ath10k_init_devices_synchronously.patch |   2 +-
>  ...rolling-support-for-various-chipsets.patch |   6 +-
>  ...fix-decoding-channel-info-for-160-MH.patch |  41 ------
>  ...-of-bounds-memory-access-during-fw-l.patch | 110 --------------
>  ...frameburst-mode-in-default-firmware-.patch |   2 +-
>  ...c-handle-compressed-tx-status-signal.patch |  36 ++---
>  ...0001-brcmfmac-fix-roamoff-1-modparam.patch |  68 ---------
>  .../patches/build/060-no_local_ssb_bcma.patch |   4 +-
>  .../602-rt2x00-introduce-rt2x00eeprom.patch   |   2 +-
>  ...-rt2x00-add-rf-self-txdc-calibration.patch |   2 +-
>  .../rt2x00/983-rt2x00-add-r-calibration.patch |   2 +-
>  .../984-rt2x00-add-rxdcoc-calibration.patch   |   2 +-
>  .../985-rt2x00-add-rxiq-calibration.patch     |   2 +-
>  .../986-rt2x00-add-TX-LOFT-calibration.patch  |   2 +-
>  .../subsys/140-tweak-TSQ-setting.patch        |   2 +-
>  .../subsys/150-disable_addr_notifier.patch    |   4 +-
>  ...-skb-fraglist-before-freeing-the-skb.patch |  31 ----
>  ...0211-add-hdrlen-to-ieee80211_tx_data.patch |   4 +-
>  ...80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch |  14 +-
>  ...l-merge-with-minstrel_ht-always-enab.patch |   4 +-
>  ...ory-accounting-with-A-MSDU-aggregati.patch |   6 +-
>  ...tx-status-for-PS-stations-in-ieee802.patch |  26 ----
>  ...rdering-of-buffered-broadcast-packet.patch |  28 ----
>  ...ernel-panic-when-TXing-after-TXQ-tea.patch |  60 --------
>  ...ry-leak-if-validate_pae_over_nl80211.patch |  29 ----
>  ...l_ht-add-flag-to-indicate-missing-in.patch |   4 +-
>  ...that-management-tx-skbs-have-encrypt.patch |  48 ------
>  34 files changed, 64 insertions(+), 702 deletions(-)
>  delete mode 100644 package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch
>  delete mode 100644 package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch
>  delete mode 100644 package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch
>  delete mode 100644 package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch
>  delete mode 100644 package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch
>  delete mode 100644 package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch
>  delete mode 100644 package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch
>  delete mode 100644 package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch
>  delete mode 100644 package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch
>  delete mode 100644 package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch
>  delete mode 100644 package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch
>  delete mode 100644 package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch
> 
> diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
> index 48ec5f1c49..a13ef41193 100644
> --- a/package/kernel/mac80211/Makefile
> +++ b/package/kernel/mac80211/Makefile
> @@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
>  
>  PKG_NAME:=mac80211
>  
> -PKG_VERSION:=4.19.7-1
> -PKG_RELEASE:=2
> -PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.7/
> -PKG_HASH:=86650a02f36b0d39059be343d4bad3be14adece699723713a69c94cc64d456ef
> +PKG_VERSION:=4.19.23-1
> +PKG_RELEASE:=1
> +PKG_SOURCE_URL:=@KERNEL/linux/kernel/projects/backports/stable/v4.19.23/
> +PKG_HASH:=703e940b542eb56067fcd847a7c69398dcc9829f34472647eea4211cb2ab3b83
>  
>  PKG_SOURCE:=backports-$(PKG_VERSION).tar.xz
>  PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/backports-$(PKG_VERSION)
> diff --git a/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch b/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch
> index 777b73417f..d5c37825fd 100644
> --- a/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch
> +++ b/package/kernel/mac80211/patches/ath/381-ath9k-fix-tx99-with-monitor-mode-interface.patch
> @@ -81,7 +81,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>   		rate->flags |= IEEE80211_TX_RC_MCS;
>  --- a/drivers/net/wireless/ath/ath9k/xmit.c
>  +++ b/drivers/net/wireless/ath/ath9k/xmit.c
> -@@ -2973,7 +2973,7 @@ int ath9k_tx99_send(struct ath_softc *sc
> +@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc
>   		return -EINVAL;
>   	}
>   
> diff --git a/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch b/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch
> index abd0fdc210..7f30de9862 100644
> --- a/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch
> +++ b/package/kernel/mac80211/patches/ath/395-ath9k-add-back-support-for-using-active-monitor-inte.patch
> @@ -85,7 +85,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>   		rate->flags |= IEEE80211_TX_RC_MCS;
>  --- a/drivers/net/wireless/ath/ath9k/xmit.c
>  +++ b/drivers/net/wireless/ath/ath9k/xmit.c
> -@@ -2973,7 +2973,7 @@ int ath9k_tx99_send(struct ath_softc *sc
> +@@ -2974,7 +2974,7 @@ int ath9k_tx99_send(struct ath_softc *sc
>   		return -EINVAL;
>   	}
>   
> diff --git a/package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch b/package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch
> deleted file mode 100644
> index 831c534762..0000000000
> --- a/package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch
> +++ /dev/null
> @@ -1,27 +0,0 @@
> -From: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> -Date: Fri, 2 Nov 2018 21:49:55 +0100
> -Subject: [PATCH] ath9k: dynack: use authentication messages for 'late' ack
> -
> -In order to properly support dynack in ad-hoc mode running
> -wpa_supplicant, take into account authentication frames for
> -'late ack' detection. This patch has been tested on devices
> -mounted on offshore high-voltage stations connected through
> -~24Km link
> -
> -Reported-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
> -Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
> -Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> ----
> -
> ---- a/drivers/net/wireless/ath/ath9k/dynack.c
> -+++ b/drivers/net/wireless/ath/ath9k/dynack.c
> -@@ -187,7 +187,8 @@ void ath_dynack_sample_tx_ts(struct ath_
> - 	/* late ACK */
> - 	if (ts->ts_status & ATH9K_TXERR_XRETRY) {
> - 		if (ieee80211_is_assoc_req(hdr->frame_control) ||
> --		    ieee80211_is_assoc_resp(hdr->frame_control)) {
> -+		    ieee80211_is_assoc_resp(hdr->frame_control) ||
> -+		    ieee80211_is_auth(hdr->frame_control)) {
> - 			ath_dbg(common, DYNACK, "late ack\n");
> - 			ath9k_hw_setslottime(ah, (LATEACK_TO - 3) / 2);
> - 			ath9k_hw_set_ack_timeout(ah, LATEACK_TO);
> diff --git a/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch b/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch
> index a1d612660b..607722cc3d 100644
> --- a/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch
> +++ b/package/kernel/mac80211/patches/ath/554-ath9k-dynack-move-debug-log-after-buffer-increments.patch
> @@ -12,9 +12,9 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
>  
>  --- a/drivers/net/wireless/ath/ath9k/dynack.c
>  +++ b/drivers/net/wireless/ath/ath9k/dynack.c
> -@@ -171,11 +171,12 @@ static void ath_dynack_compute_to(struct
> - void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb,
> - 			     struct ath_tx_status *ts)
> +@@ -178,11 +178,12 @@ void ath_dynack_sample_tx_ts(struct ath_
> + 			     struct ath_tx_status *ts,
> + 			     struct ieee80211_sta *sta)
>   {
>  -	u8 ridx;
>   	struct ieee80211_hdr *hdr;
> @@ -24,9 +24,9 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
>  +	u32 dur = ts->duration;
>  +	u8 ridx;
>   
> - 	if ((info->flags & IEEE80211_TX_CTL_NO_ACK) || !da->enabled)
> + 	if (!da->enabled || (info->flags & IEEE80211_TX_CTL_NO_ACK))
>   		return;
> -@@ -203,14 +204,13 @@ void ath_dynack_sample_tx_ts(struct ath_
> +@@ -217,14 +218,13 @@ void ath_dynack_sample_tx_ts(struct ath_
>   	ridx = ts->ts_rateindex;
>   
>   	da->st_rbf.ts[da->st_rbf.t_rb].tstamp = ts->ts_tstamp;
> @@ -42,7 +42,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
>   
>   		rate = &common->sbands[info->band].bitrates[rates[ridx].idx];
>   		if (info->band == NL80211_BAND_2GHZ &&
> -@@ -219,19 +219,18 @@ void ath_dynack_sample_tx_ts(struct ath_
> +@@ -233,19 +233,18 @@ void ath_dynack_sample_tx_ts(struct ath_
>   		else
>   			phy = WLAN_RC_PHY_OFDM;
>   
> @@ -68,7 +68,7 @@ Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
>   	ath_dynack_compute_to(ah);
>   
>   	spin_unlock_bh(&da->qlock);
> -@@ -258,14 +257,13 @@ void ath_dynack_sample_ack_ts(struct ath
> +@@ -272,14 +271,13 @@ void ath_dynack_sample_ack_ts(struct ath
>   	spin_lock_bh(&da->qlock);
>   	da->ack_rbf.tstamp[da->ack_rbf.t_rb] = ts;
>   
> diff --git a/package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch b/package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch
> deleted file mode 100644
> index cc5cdf9233..0000000000
> --- a/package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -From: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> -Date: Fri, 2 Nov 2018 21:49:57 +0100
> -Subject: [PATCH] ath9k: dynack: check da->enabled first in sampling
> - routines
> -
> -Check da->enabled flag first in ath_dynack_sample_tx_ts and
> -ath_dynack_sample_ack_ts routines in order to avoid useless
> -processing
> -
> -Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
> -Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> ----
> -
> ---- a/drivers/net/wireless/ath/ath9k/dynack.c
> -+++ b/drivers/net/wireless/ath/ath9k/dynack.c
> -@@ -178,7 +178,7 @@ void ath_dynack_sample_tx_ts(struct ath_
> - 	u32 dur = ts->duration;
> - 	u8 ridx;
> - 
> --	if ((info->flags & IEEE80211_TX_CTL_NO_ACK) || !da->enabled)
> -+	if (!da->enabled || (info->flags & IEEE80211_TX_CTL_NO_ACK))
> - 		return;
> - 
> - 	spin_lock_bh(&da->qlock);
> -@@ -251,7 +251,7 @@ void ath_dynack_sample_ack_ts(struct ath
> - 	struct ath_common *common = ath9k_hw_common(ah);
> - 	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
> - 
> --	if (!ath_dynack_bssidmask(ah, hdr->addr1) || !da->enabled)
> -+	if (!da->enabled || !ath_dynack_bssidmask(ah, hdr->addr1))
> - 		return;
> - 
> - 	spin_lock_bh(&da->qlock);
> diff --git a/package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch b/package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch
> deleted file mode 100644
> index aaae8babcc..0000000000
> --- a/package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch
> +++ /dev/null
> @@ -1,139 +0,0 @@
> -From: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> -Date: Fri, 2 Nov 2018 21:49:58 +0100
> -Subject: [PATCH] ath9k: dynack: make ewma estimation faster
> -
> -In order to make propagation time estimation faster,
> -use current sample as ewma output value during 'late ack'
> -tracking
> -
> -Tested-by: Koen Vandeputte <koen.vandeputte at ncentric.com>
> -Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi at redhat.com>
> ----
> -
> ---- a/drivers/net/wireless/ath/ath9k/ath9k.h
> -+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
> -@@ -274,7 +274,7 @@ struct ath_node {
> - #endif
> - 	u8 key_idx[4];
> - 
> --	u32 ackto;
> -+	int ackto;
> - 	struct list_head list;
> - };
> - 
> ---- a/drivers/net/wireless/ath/ath9k/dynack.c
> -+++ b/drivers/net/wireless/ath/ath9k/dynack.c
> -@@ -29,9 +29,13 @@
> -  * ath_dynack_ewma - EWMA (Exponentially Weighted Moving Average) calculation
> -  *
> -  */
> --static inline u32 ath_dynack_ewma(u32 old, u32 new)
> -+static inline int ath_dynack_ewma(int old, int new)
> - {
> --	return (new * (EWMA_DIV - EWMA_LEVEL) + old * EWMA_LEVEL) / EWMA_DIV;
> -+	if (old > 0)
> -+		return (new * (EWMA_DIV - EWMA_LEVEL) +
> -+			old * EWMA_LEVEL) / EWMA_DIV;
> -+	else
> -+		return new;
> - }
> - 
> - /**
> -@@ -82,10 +86,10 @@ static inline bool ath_dynack_bssidmask(
> -  */
> - static void ath_dynack_compute_ackto(struct ath_hw *ah)
> - {
> --	struct ath_node *an;
> --	u32 to = 0;
> --	struct ath_dynack *da = &ah->dynack;
> - 	struct ath_common *common = ath9k_hw_common(ah);
> -+	struct ath_dynack *da = &ah->dynack;
> -+	struct ath_node *an;
> -+	int to = 0;
> - 
> - 	list_for_each_entry(an, &da->nodes, list)
> - 		if (an->ackto > to)
> -@@ -144,7 +148,8 @@ static void ath_dynack_compute_to(struct
> - 					an->ackto = ath_dynack_ewma(an->ackto,
> - 								    ackto);
> - 					ath_dbg(ath9k_hw_common(ah), DYNACK,
> --						"%pM to %u\n", dst, an->ackto);
> -+						"%pM to %d [%u]\n", dst,
> -+						an->ackto, ackto);
> - 					if (time_is_before_jiffies(da->lto)) {
> - 						ath_dynack_compute_ackto(ah);
> - 						da->lto = jiffies + COMPUTE_TO;
> -@@ -166,10 +171,12 @@ static void ath_dynack_compute_to(struct
> -  * @ah: ath hw
> -  * @skb: socket buffer
> -  * @ts: tx status info
> -+ * @sta: station pointer
> -  *
> -  */
> - void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb,
> --			     struct ath_tx_status *ts)
> -+			     struct ath_tx_status *ts,
> -+			     struct ieee80211_sta *sta)
> - {
> - 	struct ieee80211_hdr *hdr;
> - 	struct ath_dynack *da = &ah->dynack;
> -@@ -191,9 +198,16 @@ void ath_dynack_sample_tx_ts(struct ath_
> - 		    ieee80211_is_assoc_resp(hdr->frame_control) ||
> - 		    ieee80211_is_auth(hdr->frame_control)) {
> - 			ath_dbg(common, DYNACK, "late ack\n");
> -+
> - 			ath9k_hw_setslottime(ah, (LATEACK_TO - 3) / 2);
> - 			ath9k_hw_set_ack_timeout(ah, LATEACK_TO);
> - 			ath9k_hw_set_cts_timeout(ah, LATEACK_TO);
> -+			if (sta) {
> -+				struct ath_node *an;
> -+
> -+				an = (struct ath_node *)sta->drv_priv;
> -+				an->ackto = -1;
> -+			}
> - 			da->lto = jiffies + LATEACK_DELAY;
> - 		}
> - 
> ---- a/drivers/net/wireless/ath/ath9k/dynack.h
> -+++ b/drivers/net/wireless/ath/ath9k/dynack.h
> -@@ -86,7 +86,8 @@ void ath_dynack_node_deinit(struct ath_h
> - void ath_dynack_init(struct ath_hw *ah);
> - void ath_dynack_sample_ack_ts(struct ath_hw *ah, struct sk_buff *skb, u32 ts);
> - void ath_dynack_sample_tx_ts(struct ath_hw *ah, struct sk_buff *skb,
> --			     struct ath_tx_status *ts);
> -+			     struct ath_tx_status *ts,
> -+			     struct ieee80211_sta *sta);
> - #else
> - static inline void ath_dynack_init(struct ath_hw *ah) {}
> - static inline void ath_dynack_node_init(struct ath_hw *ah,
> -@@ -97,7 +98,8 @@ static inline void ath_dynack_sample_ack
> - 					    struct sk_buff *skb, u32 ts) {}
> - static inline void ath_dynack_sample_tx_ts(struct ath_hw *ah,
> - 					   struct sk_buff *skb,
> --					   struct ath_tx_status *ts) {}
> -+					   struct ath_tx_status *ts,
> -+					   struct ieee80211_sta *sta) {}
> - #endif
> - 
> - #endif /* DYNACK_H */
> ---- a/drivers/net/wireless/ath/ath9k/xmit.c
> -+++ b/drivers/net/wireless/ath/ath9k/xmit.c
> -@@ -629,7 +629,7 @@ static void ath_tx_complete_aggr(struct
> - 				if (bf == bf->bf_lastbf)
> - 					ath_dynack_sample_tx_ts(sc->sc_ah,
> - 								bf->bf_mpdu,
> --								ts);
> -+								ts, sta);
> - 			}
> - 
> - 			ath_tx_complete_buf(sc, bf, txq, &bf_head, sta, ts,
> -@@ -773,7 +773,8 @@ static void ath_tx_process_buffer(struct
> - 			memcpy(info->control.rates, bf->rates,
> - 			       sizeof(info->control.rates));
> - 			ath_tx_rc_status(sc, bf, ts, 1, txok ? 0 : 1, txok);
> --			ath_dynack_sample_tx_ts(sc->sc_ah, bf->bf_mpdu, ts);
> -+			ath_dynack_sample_tx_ts(sc->sc_ah, bf->bf_mpdu, ts,
> -+						sta);
> - 		}
> - 		ath_tx_complete_buf(sc, bf, txq, bf_head, sta, ts, txok);
> - 	} else
> diff --git a/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
> index 16f252fdcd..47ecc9c655 100644
> --- a/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
> +++ b/package/kernel/mac80211/patches/ath/921-ath10k_init_devices_synchronously.patch
> @@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven at open-mesh.com>
>  
>  --- a/drivers/net/wireless/ath/ath10k/core.c
>  +++ b/drivers/net/wireless/ath/ath10k/core.c
> -@@ -2719,6 +2719,16 @@ int ath10k_core_register(struct ath10k *
> +@@ -2720,6 +2720,16 @@ int ath10k_core_register(struct ath10k *
>   	ar->chip_id = chip_id;
>   	queue_work(ar->workqueue, &ar->register_work);
>   
> diff --git a/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch b/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
> index bb29489c0b..50ed63b065 100644
> --- a/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
> +++ b/package/kernel/mac80211/patches/ath/974-ath10k_add-LED-and-GPIO-controlling-support-for-various-chipsets.patch
> @@ -172,7 +172,7 @@ v13:
>   		.patch_load_addr = QCA9888_HW_2_0_PATCH_LOAD_ADDR,
>   		.uart_pin = 7,
>   		.cc_wraparound_type = ATH10K_HW_CC_WRAP_SHIFTED_EACH,
> -@@ -2440,6 +2446,10 @@ int ath10k_core_start(struct ath10k *ar,
> +@@ -2441,6 +2447,10 @@ int ath10k_core_start(struct ath10k *ar,
>   	if (status)
>   		goto err_hif_stop;
>   
> @@ -183,7 +183,7 @@ v13:
>   	return 0;
>   
>   err_hif_stop:
> -@@ -2694,9 +2704,18 @@ static void ath10k_core_register_work(st
> +@@ -2695,9 +2705,18 @@ static void ath10k_core_register_work(st
>   		goto err_spectral_destroy;
>   	}
>   
> @@ -202,7 +202,7 @@ v13:
>   err_spectral_destroy:
>   	ath10k_spectral_destroy(ar);
>   err_debug_destroy:
> -@@ -2740,6 +2759,8 @@ void ath10k_core_unregister(struct ath10
> +@@ -2741,6 +2760,8 @@ void ath10k_core_unregister(struct ath10
>   	if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags))
>   		return;
>   
> diff --git a/package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch b/package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch
> deleted file mode 100644
> index 154664c854..0000000000
> --- a/package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -From 3401d42c7ea2d064d15c66698ff8eb96553179ce Mon Sep 17 00:00:00 2001
> -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal at milecki.pl>
> -Date: Fri, 26 Oct 2018 12:50:39 +0200
> -Subject: [PATCH] brcmutil: really fix decoding channel info for 160 MHz
> - bandwidth
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -Previous commit /adding/ support for 160 MHz chanspecs was incomplete.
> -It didn't set bandwidth info and didn't extract control channel info. As
> -the result it was also using uninitialized "sb" var.
> -
> -This change has been tested for two chanspecs found to be reported by
> -some devices/firmwares:
> -1) 60/160 (0xee32)
> -   Before: chnum:50 control_ch_num:36
> -    After: chnum:50 control_ch_num:60
> -2) 120/160 (0xed72)
> -   Before: chnum:114 control_ch_num:100
> -    After: chnum:114 control_ch_num:120
> -
> -Fixes: 330994e8e8ec ("brcmfmac: fix for proper support of 160MHz bandwidth")
> -Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
> -Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
> ----
> - drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c | 3 +++
> - 1 file changed, 3 insertions(+)
> -
> ---- a/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
> -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmutil/d11.c
> -@@ -193,6 +193,9 @@ static void brcmu_d11ac_decchspec(struct
> - 		}
> - 		break;
> - 	case BRCMU_CHSPEC_D11AC_BW_160:
> -+		ch->bw = BRCMU_CHAN_BW_160;
> -+		ch->sb = brcmu_maskget16(ch->chspec, BRCMU_CHSPEC_D11AC_SB_MASK,
> -+					 BRCMU_CHSPEC_D11AC_SB_SHIFT);
> - 		switch (ch->sb) {
> - 		case BRCMU_CHAN_SB_LLL:
> - 			ch->control_ch_num -= CH_70MHZ_APART;
> diff --git a/package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch b/package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch
> deleted file mode 100644
> index 0ed148188b..0000000000
> --- a/package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch
> +++ /dev/null
> @@ -1,110 +0,0 @@
> -From b72c51a58e6d63ef673ac96b8ab5bc98799c5f7b Mon Sep 17 00:00:00 2001
> -From: Lyude Paul <lyude at redhat.com>
> -Date: Sat, 24 Nov 2018 17:57:05 -0500
> -Subject: [PATCH] brcmfmac: Fix out of bounds memory access during fw load
> -
> -I ended up tracking down some rather nasty issues with f2fs (and other
> -filesystem modules) constantly crashing on my kernel down to a
> -combination of out of bounds memory accesses, one of which was coming
> -from brcmfmac during module load:
> -
> -[   30.891382] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac4356-sdio for chip BCM4356/2
> -[   30.894437] ==================================================================
> -[   30.901581] BUG: KASAN: global-out-of-bounds in brcmf_fw_alloc_request+0x42c/0x480 [brcmfmac]
> -[   30.909935] Read of size 1 at addr ffff2000024865df by task kworker/6:2/387
> -[   30.916805]
> -[   30.918261] CPU: 6 PID: 387 Comm: kworker/6:2 Tainted: G           O      4.20.0-rc3Lyude-Test+ #19
> -[   30.927251] Hardware name: amlogic khadas-vim2/khadas-vim2, BIOS 2018.07-rc2-armbian 09/11/2018
> -[   30.935964] Workqueue: events brcmf_driver_register [brcmfmac]
> -[   30.941641] Call trace:
> -[   30.944058]  dump_backtrace+0x0/0x3e8
> -[   30.947676]  show_stack+0x14/0x20
> -[   30.950968]  dump_stack+0x130/0x1c4
> -[   30.954406]  print_address_description+0x60/0x25c
> -[   30.959066]  kasan_report+0x1b4/0x368
> -[   30.962683]  __asan_report_load1_noabort+0x18/0x20
> -[   30.967547]  brcmf_fw_alloc_request+0x42c/0x480 [brcmfmac]
> -[   30.967639]  brcmf_sdio_probe+0x163c/0x2050 [brcmfmac]
> -[   30.978035]  brcmf_ops_sdio_probe+0x598/0xa08 [brcmfmac]
> -[   30.983254]  sdio_bus_probe+0x190/0x398
> -[   30.983270]  really_probe+0x2a0/0xa70
> -[   30.983296]  driver_probe_device+0x1b4/0x2d8
> -[   30.994901]  __driver_attach+0x200/0x280
> -[   30.994914]  bus_for_each_dev+0x10c/0x1a8
> -[   30.994925]  driver_attach+0x38/0x50
> -[   30.994935]  bus_add_driver+0x330/0x608
> -[   30.994953]  driver_register+0x140/0x388
> -[   31.013965]  sdio_register_driver+0x74/0xa0
> -[   31.014076]  brcmf_sdio_register+0x14/0x60 [brcmfmac]
> -[   31.023177]  brcmf_driver_register+0xc/0x18 [brcmfmac]
> -[   31.023209]  process_one_work+0x654/0x1080
> -[   31.032266]  worker_thread+0x4f0/0x1308
> -[   31.032286]  kthread+0x2a8/0x320
> -[   31.039254]  ret_from_fork+0x10/0x1c
> -[   31.039269]
> -[   31.044226] The buggy address belongs to the variable:
> -[   31.044351]  brcmf_firmware_path+0x11f/0xfffffffffffd3b40 [brcmfmac]
> -[   31.055601]
> -[   31.057031] Memory state around the buggy address:
> -[   31.061800]  ffff200002486480: 04 fa fa fa fa fa fa fa 00 00 00 00 00 00 00 00
> -[   31.068983]  ffff200002486500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> -[   31.068993] >ffff200002486580: 00 00 00 00 00 00 00 00 fa fa fa fa 00 00 00 00
> -[   31.068999]                                                     ^
> -[   31.069017]  ffff200002486600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
> -[   31.096521]  ffff200002486680: 00 00 00 00 00 00 00 00 00 00 00 00 fa fa fa fa
> -[   31.096528] ==================================================================
> -[   31.096533] Disabling lock debugging due to kernel taint
> -
> -It appears that when trying to determine the length of the string in the
> -alternate firmware path, we make the mistake of not handling the case
> -where the firmware path is empty correctly. Since strlen(mp_path) can
> -return 0, we'll end up accessing mp_path[-1] when the firmware_path
> -isn't provided through the module arguments.
> -
> -So, fix this by just setting the end char to '\0' by default, and only
> -changing it if we have a non-zero length. Additionally, use strnlen()
> -with BRCMF_FW_ALTPATH_LEN instead of strlen() just to be extra safe.
> -
> -Fixes: 2baa3aaee27f ("brcmfmac: introduce brcmf_fw_alloc_request() function")
> -Cc: Hante Meuleman <hante.meuleman at broadcom.com>
> -Cc: Pieter-Paul Giesberts <pieter-paul.giesberts at broadcom.com>
> -Cc: Franky Lin <franky.lin at broadcom.com>
> -Cc: Arend van Spriel <arend.vanspriel at broadcom.com>
> -Cc: Kalle Valo <kvalo at codeaurora.org>
> -Cc: Arend Van Spriel <arend.vanspriel at broadcom.com>
> -Cc: Himanshu Jha <himanshujha199640 at gmail.com>
> -Cc: Dan Haab <dhaab at luxul.com>
> -Cc: Jia-Shyr Chuang <saint.chuang at cypress.com>
> -Cc: Ian Molton <ian at mnementh.co.uk>
> -Cc: <stable at vger.kernel.org> # v4.17+
> -Signed-off-by: Lyude Paul <lyude at redhat.com>
> -Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
> ----
> - .../net/wireless/broadcom/brcm80211/brcmfmac/firmware.c   | 8 ++++++--
> - 1 file changed, 6 insertions(+), 2 deletions(-)
> -
> ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
> -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
> -@@ -708,8 +708,9 @@ brcmf_fw_alloc_request(u32 chip, u32 chi
> - 	struct brcmf_fw_request *fwreq;
> - 	char chipname[12];
> - 	const char *mp_path;
> -+	size_t mp_path_len;
> - 	u32 i, j;
> --	char end;
> -+	char end = '\0';
> - 	size_t reqsz;
> - 
> - 	for (i = 0; i < table_size; i++) {
> -@@ -734,7 +735,10 @@ brcmf_fw_alloc_request(u32 chip, u32 chi
> - 		   mapping_table[i].fw_base, chipname);
> - 
> - 	mp_path = brcmf_mp_global.firmware_path;
> --	end = mp_path[strlen(mp_path) - 1];
> -+	mp_path_len = strnlen(mp_path, BRCMF_FW_ALTPATH_LEN);
> -+	if (mp_path_len)
> -+		end = mp_path[mp_path_len - 1];
> -+
> - 	fwreq->n_items = n_fwnames;
> - 
> - 	for (j = 0; j < n_fwnames; j++) {
> diff --git a/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch b/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch
> index c73ee93a8d..9602792d4f 100644
> --- a/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch
> +++ b/package/kernel/mac80211/patches/brcm/328-v5.0-0002-brcmfmac-enable-frameburst-mode-in-default-firmware-.patch
> @@ -17,7 +17,7 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
>  
>  --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
>  +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> -@@ -6631,6 +6631,12 @@ static s32 brcmf_config_dongle(struct br
> +@@ -6638,6 +6638,12 @@ static s32 brcmf_config_dongle(struct br
>   
>   	brcmf_configure_arp_nd_offload(ifp, true);
>   
> diff --git a/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch b/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch
> index f7e09ecaab..d44c8737ad 100644
> --- a/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch
> +++ b/package/kernel/mac80211/patches/brcm/328-v5.0-0003-brcmfmac-handle-compressed-tx-status-signal.patch
> @@ -77,6 +77,19 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
>  -	entry->transit_count--;
>  -	if (entry->suppressed && entry->suppr_transit_count)
>  -		entry->suppr_transit_count--;
> +-
> +-	brcmf_dbg(DATA, "%s flags %d htod %X seq %X\n", entry->name, flags,
> +-		  skcb->htod, seq);
> +-
> +-	/* pick up the implicit credit from this packet */
> +-	fifo = brcmf_skb_htod_tag_get_field(skb, FIFO);
> +-	if ((fws->fcmode == BRCMF_FWS_FCMODE_IMPLIED_CREDIT) ||
> +-	    (brcmf_skb_if_flags_get_field(skb, REQ_CREDIT)) ||
> +-	    (flags == BRCMF_FWS_TXSTATUS_HOST_TOSSED)) {
> +-		brcmf_fws_return_credits(fws, fifo, 1);
> +-		brcmf_fws_schedule_deq(fws);
> +-	}
> +-	brcmf_fws_macdesc_return_req_credit(skb);
>  +		skcb = brcmf_skbcb(skb);
>  +		entry = skcb->mac;
>  +		if (WARN_ON(!entry)) {
> @@ -87,20 +100,13 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
>  +		if (entry->suppressed && entry->suppr_transit_count)
>  +			entry->suppr_transit_count--;
>   
> --	brcmf_dbg(DATA, "%s flags %d htod %X seq %X\n", entry->name, flags,
> --		  skcb->htod, seq);
> +-	ret = brcmf_proto_hdrpull(fws->drvr, false, skb, &ifp);
> +-	if (ret) {
> +-		brcmu_pkt_buf_free_skb(skb);
> +-		return -EINVAL;
>  +		brcmf_dbg(DATA, "%s flags %d htod %X seq %X\n", entry->name,
>  +			  flags, skcb->htod, seq);
> - 
> --	/* pick up the implicit credit from this packet */
> --	fifo = brcmf_skb_htod_tag_get_field(skb, FIFO);
> --	if ((fws->fcmode == BRCMF_FWS_FCMODE_IMPLIED_CREDIT) ||
> --	    (brcmf_skb_if_flags_get_field(skb, REQ_CREDIT)) ||
> --	    (flags == BRCMF_FWS_TXSTATUS_HOST_TOSSED)) {
> --		brcmf_fws_return_credits(fws, fifo, 1);
> --		brcmf_fws_schedule_deq(fws);
> --	}
> --	brcmf_fws_macdesc_return_req_credit(skb);
> ++
>  +		/* pick up the implicit credit from this packet */
>  +		fifo = brcmf_skb_htod_tag_get_field(skb, FIFO);
>  +		if (fws->fcmode == BRCMF_FWS_FCMODE_IMPLIED_CREDIT ||
> @@ -110,11 +116,7 @@ Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
>  +			brcmf_fws_schedule_deq(fws);
>  +		}
>  +		brcmf_fws_macdesc_return_req_credit(skb);
> - 
> --	ret = brcmf_proto_hdrpull(fws->drvr, false, skb, &ifp);
> --	if (ret) {
> --		brcmu_pkt_buf_free_skb(skb);
> --		return -EINVAL;
> ++
>  +		ret = brcmf_proto_hdrpull(fws->drvr, false, skb, &ifp);
>  +		if (ret) {
>  +			brcmu_pkt_buf_free_skb(skb);
> diff --git a/package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch b/package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch
> deleted file mode 100644
> index 4ddc903418..0000000000
> --- a/package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch
> +++ /dev/null
> @@ -1,68 +0,0 @@
> -From 8c892df41500469729e0d662816300196e4f463d Mon Sep 17 00:00:00 2001
> -From: Stijn Tintel <stijn at linux-ipv6.be>
> -Date: Tue, 4 Dec 2018 20:29:05 +0200
> -Subject: [PATCH] brcmfmac: fix roamoff=1 modparam
> -
> -When the update_connect_param callback is set, nl80211 expects the flag
> -WIPHY_FLAG_SUPPORTS_FW_ROAM to be set as well. However, this flag is
> -only set when modparam roamoff=0, while the callback is set
> -unconditionally. Since commit 7f9a3e150ec7 this causes a warning in
> -wiphy_register, which breaks brcmfmac.
> -
> -Disable the update_connect_param callback when roamoff=0 to fix this.
> -
> -Fixes: 7f9a3e150ec7 ("nl80211: Update ERP info using NL80211_CMD_UPDATE_CONNECT_PARAMS")
> -Cc: Stable <stable at vger.kernel.org> # 4.19+
> -Signed-off-by: Jonas Gorski <jonas.gorski at gmail.com>
> -Signed-off-by: Stijn Tintel <stijn at linux-ipv6.be>
> -Signed-off-by: Kalle Valo <kvalo at codeaurora.org>
> ----
> - .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c   | 11 +++++++++--
> - .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.h   |  2 +-
> - .../net/wireless/broadcom/brcm80211/brcmfmac/core.c   |  2 +-
> - 3 files changed, 11 insertions(+), 4 deletions(-)
> -
> ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
> -@@ -5188,10 +5188,17 @@ static struct cfg80211_ops brcmf_cfg8021
> - 	.del_pmk = brcmf_cfg80211_del_pmk,
> - };
> - 
> --struct cfg80211_ops *brcmf_cfg80211_get_ops(void)
> -+struct cfg80211_ops *brcmf_cfg80211_get_ops(struct brcmf_mp_device *settings)
> - {
> --	return kmemdup(&brcmf_cfg80211_ops, sizeof(brcmf_cfg80211_ops),
> -+	struct cfg80211_ops *ops;
> -+
> -+	ops = kmemdup(&brcmf_cfg80211_ops, sizeof(brcmf_cfg80211_ops),
> - 		       GFP_KERNEL);
> -+
> -+	if (ops && settings->roamoff)
> -+		ops->update_connect_params = NULL;
> -+
> -+	return ops;
> - }
> - 
> - struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
> ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
> -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.h
> -@@ -404,7 +404,7 @@ struct brcmf_cfg80211_info *brcmf_cfg802
> - void brcmf_cfg80211_detach(struct brcmf_cfg80211_info *cfg);
> - s32 brcmf_cfg80211_up(struct net_device *ndev);
> - s32 brcmf_cfg80211_down(struct net_device *ndev);
> --struct cfg80211_ops *brcmf_cfg80211_get_ops(void);
> -+struct cfg80211_ops *brcmf_cfg80211_get_ops(struct brcmf_mp_device *settings);
> - enum nl80211_iftype brcmf_cfg80211_get_iftype(struct brcmf_if *ifp);
> - 
> - struct brcmf_cfg80211_vif *brcmf_alloc_vif(struct brcmf_cfg80211_info *cfg,
> ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
> -@@ -1151,7 +1151,7 @@ int brcmf_attach(struct device *dev, str
> - 
> - 	brcmf_dbg(TRACE, "Enter\n");
> - 
> --	ops = brcmf_cfg80211_get_ops();
> -+	ops = brcmf_cfg80211_get_ops(settings);
> - 	if (!ops)
> - 		return -ENOMEM;
> - 
> diff --git a/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch b/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
> index 1d4bf12652..06636060f7 100644
> --- a/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
> +++ b/package/kernel/mac80211/patches/build/060-no_local_ssb_bcma.patch
> @@ -1,6 +1,6 @@
>  --- a/local-symbols
>  +++ b/local-symbols
> -@@ -395,43 +395,6 @@ USB_IPHETH=
> +@@ -396,43 +396,6 @@ USB_IPHETH=
>   USB_SIERRA_NET=
>   USB_VL600=
>   USB_NET_CH9200=
> @@ -192,7 +192,7 @@
>   	select BRCMUTIL
>  --- a/Kconfig.local
>  +++ b/Kconfig.local
> -@@ -1189,117 +1189,6 @@ config BACKPORTED_USB_VL600
> +@@ -1192,117 +1192,6 @@ config BACKPORTED_USB_VL600
>   config BACKPORTED_USB_NET_CH9200
>   	tristate
>   	default USB_NET_CH9200
> diff --git a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
> index 18a3fb82ea..d238072b9a 100644
> --- a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
> +++ b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
> @@ -1,6 +1,6 @@
>  --- a/local-symbols
>  +++ b/local-symbols
> -@@ -304,6 +304,7 @@ RT2X00_LIB_FIRMWARE=
> +@@ -305,6 +305,7 @@ RT2X00_LIB_FIRMWARE=
>   RT2X00_LIB_CRYPTO=
>   RT2X00_LIB_LEDS=
>   RT2X00_LIB_DEBUGFS=
> diff --git a/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch b/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch
> index 8d202eed91..639cce0886 100644
> --- a/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch
> +++ b/package/kernel/mac80211/patches/rt2x00/982-rt2x00-add-rf-self-txdc-calibration.patch
> @@ -59,7 +59,7 @@
>   static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
>   				       bool set_bw, bool is_ht40)
>   {
> -@@ -8961,6 +9013,7 @@ static void rt2800_init_rfcsr_6352(struc
> +@@ -8943,6 +8995,7 @@ static void rt2800_init_rfcsr_6352(struc
>   	rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
>   	rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
>   
> diff --git a/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch b/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch
> index 2f7a4eb948..5bba1f2e0e 100644
> --- a/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch
> +++ b/package/kernel/mac80211/patches/rt2x00/983-rt2x00-add-r-calibration.patch
> @@ -161,7 +161,7 @@
>   static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
>   				       bool set_bw, bool is_ht40)
>   {
> -@@ -9013,6 +9167,7 @@ static void rt2800_init_rfcsr_6352(struc
> +@@ -8995,6 +9149,7 @@ static void rt2800_init_rfcsr_6352(struc
>   	rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00);
>   	rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C);
>   
> diff --git a/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch b/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch
> index 585d61b303..6a212c3054 100644
> --- a/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch
> +++ b/package/kernel/mac80211/patches/rt2x00/984-rt2x00-add-rxdcoc-calibration.patch
> @@ -72,7 +72,7 @@
>   static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
>   				       bool set_bw, bool is_ht40)
>   {
> -@@ -9169,6 +9234,7 @@ static void rt2800_init_rfcsr_6352(struc
> +@@ -9151,6 +9216,7 @@ static void rt2800_init_rfcsr_6352(struc
>   
>   	rt2800_r_calibration(rt2x00dev);
>   	rt2800_rf_self_txdc_cal(rt2x00dev);
> diff --git a/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch b/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch
> index c65b24ad96..b93cdab7bb 100644
> --- a/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch
> +++ b/package/kernel/mac80211/patches/rt2x00/985-rt2x00-add-rxiq-calibration.patch
> @@ -387,7 +387,7 @@
>   static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
>   				       bool set_bw, bool is_ht40)
>   {
> -@@ -9237,6 +9617,7 @@ static void rt2800_init_rfcsr_6352(struc
> +@@ -9219,6 +9599,7 @@ static void rt2800_init_rfcsr_6352(struc
>   	rt2800_rxdcoc_calibration(rt2x00dev);
>   	rt2800_bw_filter_calibration(rt2x00dev, true);
>   	rt2800_bw_filter_calibration(rt2x00dev, false);
> diff --git a/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch b/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch
> index f685365fb8..cfffd53df8 100644
> --- a/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch
> +++ b/package/kernel/mac80211/patches/rt2x00/986-rt2x00-add-TX-LOFT-calibration.patch
> @@ -958,7 +958,7 @@
>   static void rt2800_bbp_core_soft_reset(struct rt2x00_dev *rt2x00dev,
>   				       bool set_bw, bool is_ht40)
>   {
> -@@ -9617,6 +10568,7 @@ static void rt2800_init_rfcsr_6352(struc
> +@@ -9599,6 +10550,7 @@ static void rt2800_init_rfcsr_6352(struc
>   	rt2800_rxdcoc_calibration(rt2x00dev);
>   	rt2800_bw_filter_calibration(rt2x00dev, true);
>   	rt2800_bw_filter_calibration(rt2x00dev, false);
> diff --git a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
> index f7116eb9f7..42a6382209 100644
> --- a/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
> +++ b/package/kernel/mac80211/patches/subsys/140-tweak-TSQ-setting.patch
> @@ -1,6 +1,6 @@
>  --- a/net/mac80211/tx.c
>  +++ b/net/mac80211/tx.c
> -@@ -3791,6 +3791,12 @@ out:
> +@@ -3797,6 +3797,12 @@ out:
>   netdev_tx_t ieee80211_subif_start_xmit(struct sk_buff *skb,
>   				       struct net_device *dev)
>   {
> diff --git a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
> index db3c693fd4..1581b3400b 100644
> --- a/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
> +++ b/package/kernel/mac80211/patches/subsys/150-disable_addr_notifier.patch
> @@ -52,7 +52,7 @@
>    fail_ifa:
>   #endif
>   	rtnl_lock();
> -@@ -1220,10 +1220,10 @@ void ieee80211_unregister_hw(struct ieee
> +@@ -1219,10 +1219,10 @@ void ieee80211_unregister_hw(struct ieee
>   	tasklet_kill(&local->tx_pending_tasklet);
>   	tasklet_kill(&local->tasklet);
>   
> @@ -64,4 +64,4 @@
>  +#if IS_ENABLED(__disabled__CONFIG_IPV6)
>   	unregister_inet6addr_notifier(&local->ifa6_notifier);
>   #endif
> - 	ieee80211_txq_teardown_flows(local);
> + 
> diff --git a/package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch b/package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch
> deleted file mode 100644
> index dc12290f4f..0000000000
> --- a/package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -From: Sara Sharon <sara.sharon at intel.com>
> -Date: Thu, 11 Oct 2018 14:21:21 +0200
> -Subject: [PATCH] mac80211: free skb fraglist before freeing the skb
> -
> -mac80211 uses the frag list to build AMSDU. When freeing
> -the skb, it may not be really freed, since someone is still
> -holding a reference to it.
> -In that case, when TCP skb is being retransmitted, the
> -pointer to the frag list is being reused, while the data
> -in there is no longer valid.
> -Since we will never get frag list from the network stack,
> -as mac80211 doesn't advertise the capability, we can safely
> -free and nullify it before releasing the SKB.
> -
> -Signed-off-by: Sara Sharon <sara.sharon at intel.com>
> ----
> -
> ---- a/net/mac80211/status.c
> -+++ b/net/mac80211/status.c
> -@@ -558,6 +558,11 @@ static void ieee80211_report_used_skb(st
> - 	}
> - 
> - 	ieee80211_led_tx(local);
> -+
> -+	if (skb_has_frag_list(skb)) {
> -+		kfree_skb_list(skb_shinfo(skb)->frag_list);
> -+		skb_shinfo(skb)->frag_list = NULL;
> -+	}
> - }
> - 
> - /*
> diff --git a/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch b/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch
> index a0221c0d6c..a6bd3eab6e 100644
> --- a/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch
> +++ b/package/kernel/mac80211/patches/subsys/357-mac80211-add-hdrlen-to-ieee80211_tx_data.patch
> @@ -48,7 +48,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   	if (likely(sta)) {
>   		if (!IS_ERR(sta))
>   			tx->sta = sta;
> -@@ -3501,6 +3501,7 @@ begin:
> +@@ -3507,6 +3507,7 @@ begin:
>   	tx.local = local;
>   	tx.skb = skb;
>   	tx.sdata = vif_to_sdata(info->control.vif);
> @@ -56,7 +56,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   
>   	if (txq->sta)
>   		tx.sta = container_of(txq->sta, struct sta_info, sta);
> -@@ -3837,6 +3838,7 @@ ieee80211_build_data_template(struct iee
> +@@ -3843,6 +3844,7 @@ ieee80211_build_data_template(struct iee
>   	hdr = (void *)skb->data;
>   	tx.sta = sta_info_get(sdata, hdr->addr1);
>   	tx.skb = skb;
> diff --git a/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch b/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch
> index 42274cbab1..bc87d0a45b 100644
> --- a/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch
> +++ b/package/kernel/mac80211/patches/subsys/358-mac80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch
> @@ -147,7 +147,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   
>   	if (likely(sta)) {
>   		if (!IS_ERR(sta))
> -@@ -2209,7 +2208,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
> +@@ -2215,7 +2214,7 @@ netdev_tx_t ieee80211_monitor_start_xmit
>   		goto fail;
>   
>   	hdr = (struct ieee80211_hdr *)(skb->data + len_rthdr);
> @@ -156,7 +156,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   
>   	if (skb->len < len_rthdr + hdrlen)
>   		goto fail;
> -@@ -2427,7 +2426,7 @@ static struct sk_buff *ieee80211_build_h
> +@@ -2433,7 +2432,7 @@ static struct sk_buff *ieee80211_build_h
>   	struct ieee80211_chanctx_conf *chanctx_conf;
>   	struct ieee80211_sub_if_data *ap_sdata;
>   	enum nl80211_band band;
> @@ -165,7 +165,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   
>   	if (IS_ERR(sta))
>   		sta = NULL;
> -@@ -2647,6 +2646,9 @@ static struct sk_buff *ieee80211_build_h
> +@@ -2653,6 +2652,9 @@ static struct sk_buff *ieee80211_build_h
>   		hdrlen += 2;
>   	}
>   
> @@ -175,7 +175,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   	/*
>   	 * Drop unicast frames to unauthorised stations unless they are
>   	 * EAPOL frames from the local station.
> -@@ -2727,6 +2729,7 @@ static struct sk_buff *ieee80211_build_h
> +@@ -2733,6 +2735,7 @@ static struct sk_buff *ieee80211_build_h
>   
>   	skb_pull(skb, skip_header_bytes);
>   	head_need = hdrlen + encaps_len + meshhdrlen - skb_headroom(skb);
> @@ -183,7 +183,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   
>   	/*
>   	 * So we need to modify the skb header and hence need a copy of
> -@@ -2759,6 +2762,9 @@ static struct sk_buff *ieee80211_build_h
> +@@ -2765,6 +2768,9 @@ static struct sk_buff *ieee80211_build_h
>   		memcpy(skb_push(skb, meshhdrlen), &mesh_hdr, meshhdrlen);
>   #endif
>   
> @@ -193,7 +193,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   	if (ieee80211_is_data_qos(fc)) {
>   		__le16 *qos_control;
>   
> -@@ -2934,6 +2940,9 @@ void ieee80211_check_fast_xmit(struct st
> +@@ -2940,6 +2946,9 @@ void ieee80211_check_fast_xmit(struct st
>   		fc |= cpu_to_le16(IEEE80211_STYPE_QOS_DATA);
>   	}
>   
> @@ -203,7 +203,7 @@ Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>   	/* We store the key here so there's no point in using rcu_dereference()
>   	 * but that's fine because the code that changes the pointers will call
>   	 * this function after doing so. For a single CPU that would be enough,
> -@@ -3528,7 +3537,7 @@ begin:
> +@@ -3534,7 +3543,7 @@ begin:
>   
>   		if (tx.key &&
>   		    (tx.key->conf.flags & IEEE80211_KEY_FLAG_GENERATE_IV))
> diff --git a/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch b/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch
> index 055472206e..6f1239ccab 100644
> --- a/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch
> +++ b/package/kernel/mac80211/patches/subsys/371-mac80211-minstrel-merge-with-minstrel_ht-always-enab.patch
> @@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>   ccflags-y += -DDEBUG
>  --- a/net/mac80211/main.c
>  +++ b/net/mac80211/main.c
> -@@ -1306,18 +1306,12 @@ static int __init ieee80211_init(void)
> +@@ -1304,18 +1304,12 @@ static int __init ieee80211_init(void)
>   	if (ret)
>   		return ret;
>   
> @@ -86,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>   	rc80211_minstrel_exit();
>   
>   	return ret;
> -@@ -1325,7 +1319,6 @@ static int __init ieee80211_init(void)
> +@@ -1323,7 +1317,6 @@ static int __init ieee80211_init(void)
>   
>   static void __exit ieee80211_exit(void)
>   {
> diff --git a/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch b/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch
> index fe0b98c3ac..4e83ff1ea0 100644
> --- a/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch
> +++ b/package/kernel/mac80211/patches/subsys/378-mac80211-fix-memory-accounting-with-A-MSDU-aggregati.patch
> @@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>  
>  --- a/net/mac80211/tx.c
>  +++ b/net/mac80211/tx.c
> -@@ -3188,6 +3188,7 @@ static bool ieee80211_amsdu_aggregate(st
> +@@ -3194,6 +3194,7 @@ static bool ieee80211_amsdu_aggregate(st
>   	u8 max_subframes = sta->sta.max_amsdu_subframes;
>   	int max_frags = local->hw.max_tx_fragments;
>   	int max_amsdu_len = sta->sta.max_amsdu_len;
> @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>   	__be16 len;
>   	void *data;
>   	bool ret = false;
> -@@ -3219,12 +3220,13 @@ static bool ieee80211_amsdu_aggregate(st
> +@@ -3225,12 +3226,13 @@ static bool ieee80211_amsdu_aggregate(st
>   	flow = fq_flow_classify(fq, tin, skb, fq_flow_get_default_func);
>   	head = skb_peek_tail(&flow->queue);
>   	if (!head)
> @@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>   
>   	nfrags = 1 + skb_shinfo(skb)->nr_frags;
>   	nfrags += 1 + skb_shinfo(head)->nr_frags;
> -@@ -3282,6 +3284,9 @@ out_recalc:
> +@@ -3288,6 +3290,9 @@ out_recalc:
>   		fq_recalc_backlog(fq, tin, flow);
>   	}
>   out:
> diff --git a/package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch b/package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch
> deleted file mode 100644
> index ee2059f9c8..0000000000
> --- a/package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch
> +++ /dev/null
> @@ -1,26 +0,0 @@
> -From: Felix Fietkau <nbd at nbd.name>
> -Date: Tue, 13 Nov 2018 20:29:03 +0100
> -Subject: [PATCH] mac80211: ignore tx status for PS stations in
> - ieee80211_tx_status_ext
> -
> -Make it behave like regular ieee80211_tx_status calls, except for the lack of
> -filtered frame processing.
> -This fixes spurious low-ack triggered disconnections with powersave clients
> -connected to an AP.
> -
> -Fixes: f027c2aca0cf4 ("mac80211: add ieee80211_tx_status_noskb")
> -Cc: stable at vger.kernel.org
> -Signed-off-by: Felix Fietkau <nbd at nbd.name>
> ----
> -
> ---- a/net/mac80211/status.c
> -+++ b/net/mac80211/status.c
> -@@ -984,6 +984,8 @@ void ieee80211_tx_status_ext(struct ieee
> - 			/* Track when last TDLS packet was ACKed */
> - 			if (test_sta_flag(sta, WLAN_STA_TDLS_PEER_AUTH))
> - 				sta->status_stats.last_tdls_pkt_time = jiffies;
> -+		} else if (test_sta_flag(sta, WLAN_STA_PS_STA)) {
> -+			return;
> - 		} else {
> - 			ieee80211_lost_packet(sta, info);
> - 		}
> diff --git a/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch b/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch
> deleted file mode 100644
> index 4257365a79..0000000000
> --- a/package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -From: Felix Fietkau <nbd at nbd.name>
> -Date: Wed, 28 Nov 2018 22:36:06 +0100
> -Subject: [PATCH] mac80211: fix reordering of buffered broadcast packets
> -
> -If the buffered broadcast queue contains packets, letting new packets bypass
> -that queue can lead to heavy reordering, since the driver is probably throttling
> -transmission of buffered multicast packets after beacons.
> -
> -Keep buffering packets until the buffer has been cleared (and no client
> -is in powersave mode).
> -
> -Cc: stable at vger.kernel.org
> -Signed-off-by: Felix Fietkau <nbd at nbd.name>
> ----
> -
> ---- a/net/mac80211/tx.c
> -+++ b/net/mac80211/tx.c
> -@@ -439,8 +439,8 @@ ieee80211_tx_h_multicast_ps_buf(struct i
> - 	if (ieee80211_hw_check(&tx->local->hw, QUEUE_CONTROL))
> - 		info->hw_queue = tx->sdata->vif.cab_queue;
> - 
> --	/* no stations in PS mode */
> --	if (!atomic_read(&ps->num_sta_ps))
> -+	/* no stations in PS mode and no buffered packets */
> -+	if (!atomic_read(&ps->num_sta_ps) && skb_queue_empty(&ps->bc_buf))
> - 		return TX_CONTINUE;
> - 
> - 	info->flags |= IEEE80211_TX_CTL_SEND_AFTER_DTIM;
> diff --git a/package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch b/package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch
> deleted file mode 100644
> index 606897d1fe..0000000000
> --- a/package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch
> +++ /dev/null
> @@ -1,60 +0,0 @@
> -From a50e5fb8db83c5b57392204c21ea6c5c4ccefde6 Mon Sep 17 00:00:00 2001
> -From: Sara Sharon <sara.sharon at intel.com>
> -Date: Sat, 15 Dec 2018 11:03:10 +0200
> -Subject: [PATCH 1/3] mac80211: fix a kernel panic when TXing after TXQ
> - teardown
> -
> -Recently TXQ teardown was moved earlier in ieee80211_unregister_hw(),
> -to avoid a use-after-free of the netdev data. However, interfaces
> -aren't fully removed at the point, and cfg80211_shutdown_all_interfaces
> -can for example, TX a deauth frame. Move the TXQ teardown to the
> -point between cfg80211_shutdown_all_interfaces and the free of
> -netdev queues, so we can be sure they are torn down before netdev
> -is freed, but after there is no ongoing TX.
> -
> -Fixes: 77cfaf52eca5 ("mac80211: Run TXQ teardown code before de-registering interfaces")
> -Signed-off-by: Sara Sharon <sara.sharon at intel.com>
> -Signed-off-by: Luca Coelho <luciano.coelho at intel.com>
> -Signed-off-by: Johannes Berg <johannes.berg at intel.com>
> ----
> - net/mac80211/iface.c | 3 +++
> - net/mac80211/main.c  | 2 --
> - 2 files changed, 3 insertions(+), 2 deletions(-)
> -
> ---- a/net/mac80211/iface.c
> -+++ b/net/mac80211/iface.c
> -@@ -7,6 +7,7 @@
> -  * Copyright 2008, Johannes Berg <johannes at sipsolutions.net>
> -  * Copyright 2013-2014  Intel Mobile Communications GmbH
> -  * Copyright (c) 2016        Intel Deutschland GmbH
> -+ * Copyright (C) 2018 Intel Corporation
> -  *
> -  * This program is free software; you can redistribute it and/or modify
> -  * it under the terms of the GNU General Public License version 2 as
> -@@ -2035,6 +2036,8 @@ void ieee80211_remove_interfaces(struct
> - 	WARN(local->open_count, "%s: open count remains %d\n",
> - 	     wiphy_name(local->hw.wiphy), local->open_count);
> - 
> -+	ieee80211_txq_teardown_flows(local);
> -+
> - 	mutex_lock(&local->iflist_mtx);
> - 	list_for_each_entry_safe(sdata, tmp, &local->interfaces, list) {
> - 		list_del(&sdata->list);
> ---- a/net/mac80211/main.c
> -+++ b/net/mac80211/main.c
> -@@ -1200,7 +1200,6 @@ int ieee80211_register_hw(struct ieee802
> - 	rtnl_unlock();
> - 	ieee80211_led_exit(local);
> - 	ieee80211_wep_free(local);
> --	ieee80211_txq_teardown_flows(local);
> -  fail_flows:
> - 	destroy_workqueue(local->workqueue);
> -  fail_workqueue:
> -@@ -1226,7 +1225,6 @@ void ieee80211_unregister_hw(struct ieee
> - #if IS_ENABLED(__disabled__CONFIG_IPV6)
> - 	unregister_inet6addr_notifier(&local->ifa6_notifier);
> - #endif
> --	ieee80211_txq_teardown_flows(local);
> - 
> - 	rtnl_lock();
> - 
> diff --git a/package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch b/package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch
> deleted file mode 100644
> index d31d45bbdf..0000000000
> --- a/package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch
> +++ /dev/null
> @@ -1,29 +0,0 @@
> -From d350a0f431189517b1af0dbbb605c273231a8966 Mon Sep 17 00:00:00 2001
> -From: Johannes Berg <johannes.berg at intel.com>
> -Date: Sat, 15 Dec 2018 11:03:22 +0200
> -Subject: [PATCH 2/3] nl80211: fix memory leak if validate_pae_over_nl80211()
> - fails
> -
> -If validate_pae_over_nl80211() were to fail in nl80211_crypto_settings(),
> -we might leak the 'connkeys' allocation. Fix this.
> -
> -Fixes: 64bf3d4bc2b0 ("nl80211: Add CONTROL_PORT_OVER_NL80211 attribute")
> -Signed-off-by: Johannes Berg <johannes.berg at intel.com>
> ----
> - net/wireless/nl80211.c | 4 +++-
> - 1 file changed, 3 insertions(+), 1 deletion(-)
> -
> ---- a/net/wireless/nl80211.c
> -+++ b/net/wireless/nl80211.c
> -@@ -9002,8 +9002,10 @@ static int nl80211_join_ibss(struct sk_b
> - 	if (info->attrs[NL80211_ATTR_CONTROL_PORT_OVER_NL80211]) {
> - 		int r = validate_pae_over_nl80211(rdev, info);
> - 
> --		if (r < 0)
> -+		if (r < 0) {
> -+			kzfree(connkeys);
> - 			return r;
> -+		}
> - 
> - 		ibss.control_port_over_nl80211 = true;
> - 	}
> diff --git a/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch b/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch
> index 2c706b101f..2b9ff93db6 100644
> --- a/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch
> +++ b/package/kernel/mac80211/patches/subsys/383-mac80211-minstrel_ht-add-flag-to-indicate-missing-in.patch
> @@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>  
>  --- a/include/net/mac80211.h
>  +++ b/include/net/mac80211.h
> -@@ -2132,6 +2132,9 @@ struct ieee80211_txq {
> +@@ -2130,6 +2130,9 @@ struct ieee80211_txq {
>    * @IEEE80211_HW_NEEDS_ALIGNED4_SKBS: Driver need aligned skbs to four-byte.
>    *	Padding will be added after ieee80211_hdr, before IV/LLC.
>    *
> @@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
>    * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays
>    */
>   enum ieee80211_hw_flags {
> -@@ -2178,6 +2181,7 @@ enum ieee80211_hw_flags {
> +@@ -2176,6 +2179,7 @@ enum ieee80211_hw_flags {
>   	IEEE80211_HW_DEAUTH_NEED_MGD_TX_PREP,
>   	IEEE80211_HW_DOESNT_SUPPORT_QOS_NDP,
>   	IEEE80211_HW_NEEDS_ALIGNED4_SKBS,
> diff --git a/package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch b/package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch
> deleted file mode 100644
> index 1c1951eadd..0000000000
> --- a/package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -From: Felix Fietkau <nbd at nbd.name>
> -Date: Mon, 28 Jan 2019 13:16:45 +0100
> -Subject: [PATCH] mac80211: ensure that management tx skbs have encryption
> - tailroom
> -
> -Some drivers use IEEE80211_KEY_FLAG_SW_MGMT_TX to indicate that management
> -frames need to be software encrypted. Since normal data packets are still
> -encrypted by the hardware, crypto_tx_tailroom_needed_cnt gets decremented
> -after key upload. This can lead to passing skbs to ccmp_encrypt_skb, which
> -don't have the needed tailroom for software encryption.
> -
> -Change the code to add tailroom for encrypted management packets, even if
> -crypto_tx_tailroom_needed_cnt is 0.
> -
> -Cc: stable at vger.kernel.org
> -Signed-off-by: Felix Fietkau <nbd at nbd.name>
> ----
> -
> ---- a/net/mac80211/tx.c
> -+++ b/net/mac80211/tx.c
> -@@ -1912,9 +1912,16 @@ static int ieee80211_skb_resize(struct i
> - 				int head_need, bool may_encrypt)
> - {
> - 	struct ieee80211_local *local = sdata->local;
> -+	struct ieee80211_hdr *hdr;
> -+	bool enc_tailroom;
> - 	int tail_need = 0;
> - 
> --	if (may_encrypt && sdata->crypto_tx_tailroom_needed_cnt) {
> -+	hdr = (struct ieee80211_hdr *) skb->data;
> -+	enc_tailroom = may_encrypt &&
> -+		       (sdata->crypto_tx_tailroom_needed_cnt ||
> -+			ieee80211_is_mgmt(hdr->frame_control));
> -+
> -+	if (enc_tailroom) {
> - 		tail_need = IEEE80211_ENCRYPT_TAILROOM;
> - 		tail_need -= skb_tailroom(skb);
> - 		tail_need = max_t(int, tail_need, 0);
> -@@ -1922,8 +1929,7 @@ static int ieee80211_skb_resize(struct i
> - 
> - 	if (skb_cloned(skb) &&
> - 	    (!ieee80211_hw_check(&local->hw, SUPPORTS_CLONED_SKBS) ||
> --	     !skb_clone_writable(skb, ETH_HLEN) ||
> --	     (may_encrypt && sdata->crypto_tx_tailroom_needed_cnt)))
> -+	     !skb_clone_writable(skb, ETH_HLEN) || enc_tailroom))
> - 		I802_DEBUG_INC(local->tx_expand_skb_head_cloned);
> - 	else if (head_need || tail_need)
> - 		I802_DEBUG_INC(local->tx_expand_skb_head);
> -- 
> 2.20.1
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From richard at nod.at  Sun Feb 17 13:49:39 2019
From: richard at nod.at (Richard Weinberger)
Date: Sun, 17 Feb 2019 19:49:39 +0100
Subject: [OpenWrt-Devel] [PATCH 6/8 v3] ubifs: Use
 dirty_writeback_interval value for wbuf timer
In-Reply-To: <20190217181802.GH10616@sasha-vm>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
 <20190214132403.10687-7-linus.walleij@linaro.org>
 <20190217181802.GH10616@sasha-vm>
Message-ID: <3972784.GJSNoKju5i@blindfold>

Am Sonntag, 17. Februar 2019, 19:18:02 CET schrieb Sasha Levin:
> On Thu, Feb 14, 2019 at 02:24:01PM +0100, Linus Walleij wrote:
> >From: Rafa? Mi?ecki <rafal at milecki.pl>
> >
> >commit 1b7fc2c0069f3864a3dda15430b7aded31c0bfcc upstream.
> >
> >Right now wbuf timer has hardcoded timeouts and there is no place for
> >manual adjustments. Some projects / cases many need that though. Few
> >file systems allow doing that by respecting dirty_writeback_interval
> >that can be set using sysctl (dirty_writeback_centisecs).
> >
> >Lowering dirty_writeback_interval could be some way of dealing with user
> >space apps lacking proper fsyncs. This is definitely *not* a perfect
> >solution but we don't have ideal (user space) world. There were already
> >advanced discussions on this matter, mostly when ext4 was introduced and
> >it wasn't behaving as ext3. Anyway, the final decision was to add some
> >hacks to the ext4, as trying to fix whole user space or adding new API
> >was pointless.
> >
> >We can't (and shouldn't?) just follow ext4. We can't e.g. sync on close
> >as this would cause too many commits and flash wearing. On the other
> >hand we still should allow some trade-off between -o sync and default
> >wbuf timeout. Respecting dirty_writeback_interval should allow some sane
> >cutomizations if used warily.
> >
> >Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
> >Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
> >Signed-off-by: Richard Weinberger <richard at nod.at>
> >Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> 
> This one looks like a new feature that will also require changes to
> userspace. Is there actual breakage this fixes?

IIRC that's why I never tagged it for -stable.
Maybe there is some other odds it fixes and I'm not aware of. Linus?

Thanks,
//richard




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From dedeckeh at gmail.com  Sun Feb 17 14:59:52 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Sun, 17 Feb 2019 20:59:52 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] dnsmasq: decouple /tmp/resolv.conf
 from value of option resolvfile
In-Reply-To: <20190214121456.4784-2-yszhou4tech@gmail.com>
References: <20190214121456.4784-1-yszhou4tech@gmail.com>
 <20190214121456.4784-2-yszhou4tech@gmail.com>
Message-ID: <CAJLcKsFNN1sdQWiOfePnm3KuABnVS26y35QFjZSKsN6_D8Lrmw@mail.gmail.com>

Hi Yousong,
On Thu, Feb 14, 2019 at 1:15 PM Yousong Zhou <yszhou4tech at gmail.com> wrote:Y
>
> Option resolvfile should now affect only how dnsmasq itself will run.
> The implicit effect of its specific value on other parts of the system
> makes the code unnecessarily hard to follow
>
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> ---
>  package/network/services/dnsmasq/Makefile           | 2 +-
>  package/network/services/dnsmasq/files/dnsmasq.init | 7 +------
>  2 files changed, 2 insertions(+), 7 deletions(-)
>
> diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> index d51f23e48b..5e83b4f8e5 100644
> --- a/package/network/services/dnsmasq/Makefile
> +++ b/package/network/services/dnsmasq/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>
>  PKG_NAME:=dnsmasq
>  PKG_VERSION:=2.80
> -PKG_RELEASE:=8
> +PKG_RELEASE:=9
>
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
>  PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index 05c555bd8c..22471c11aa 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -888,7 +888,6 @@ dnsmasq_start()
>                 config_get resolvfile "$cfg" resolvfile
>                 [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
>                 xappend "--resolv-file=$resolvfile"
> -               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
By removing this line 127.0.0.1 is not added anymore in
/tmp/resolv.conf as localuse is 0 by default;
as a result local resolving is broken.

Hans
>         fi
>
>         config_get hostsfile "$cfg" dhcphostsfile
> @@ -1039,13 +1038,9 @@ dnsmasq_start()
>  dnsmasq_stop()
>  {
>         local cfg="$1"
> -       local noresolv resolvfile localuse
> +       local localuse
>
> -       config_get_bool noresolv "$cfg" noresolv 0
>         config_get_bool localuse "$cfg" localuse 0
> -       config_get resolvfile "$cfg" "resolvfile"
> -
> -       [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>         [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
>
>         rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Sun Feb 17 15:51:51 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Sun, 17 Feb 2019 21:51:51 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] gemini: Generate harddisk image for
 DNS-313
In-Reply-To: <2163605.jBeidrCiVr@debian64>
References: <20190215160223.19734-1-linus.walleij@linaro.org>
 <2163605.jBeidrCiVr@debian64>
Message-ID: <CACRpkdZEd=MJ6jkhU57iE3GiUxb_+Ea3swJ2dey59b50SzUWbg@mail.gmail.com>

On Sun, Feb 17, 2019 at 5:22 PM Christian Lamparter <chunkeey at gmail.com> wrote:

> > +     FILESYSTEMS := ext4 squashfs
>
> squashfs images would be nice. They are prefered because they support features
> like better/safer Failsafe Mode and Factory Reset, which are not available for
> the ext4 images as they need the "read-only" property that squashfs provides.
>
> Though, the squashfs images on block-like devices (hdd/ssd/mmc) are trickier,
> because they need f2fs (kernel + userspace) + loopdev support in order to
> work properly. (Without these, the squashfs image will boot, but it will
> always lose the configuration on reboot because all the volatile files are
> just stored on a emergency ramdisk fallback).

So I figure if I just put a file in /etc/config/foo.txt or so and it remains
after a reboot it is fine.

> That's why I added the changes to the config-4.14 and config-4.19 and added
> the f2fs tools. I put them into this separate patch on my staging area:
>
> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=1626b5ca1d963e70a979fc4e6262149208608d46
>
> if these work out, please let me know.

I'll git it a spin, now that I understand what you want to achieve!

Yours,
Linus Walleij

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Sun Feb 17 15:56:44 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Sun, 17 Feb 2019 21:56:44 +0100
Subject: [OpenWrt-Devel] [PATCH 6/8 v3] ubifs: Use
 dirty_writeback_interval value for wbuf timer
In-Reply-To: <20190217181802.GH10616@sasha-vm>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
 <20190214132403.10687-7-linus.walleij@linaro.org>
 <20190217181802.GH10616@sasha-vm>
Message-ID: <CACRpkdY4m9qyZoktQLC95jzMLRUdiSa2KuG8Evahp1KsaPvNPA@mail.gmail.com>

On Sun, Feb 17, 2019 at 7:18 PM Sasha Levin <sashal at kernel.org> wrote:
> On Thu, Feb 14, 2019 at 02:24:01PM +0100, Linus Walleij wrote:
> >From: Rafa? Mi?ecki <rafal at milecki.pl>
> >
> >commit 1b7fc2c0069f3864a3dda15430b7aded31c0bfcc upstream.
> >
> >Right now wbuf timer has hardcoded timeouts and there is no place for
> >manual adjustments. Some projects / cases many need that though. Few
> >file systems allow doing that by respecting dirty_writeback_interval
> >that can be set using sysctl (dirty_writeback_centisecs).
> >
> >Lowering dirty_writeback_interval could be some way of dealing with user
> >space apps lacking proper fsyncs. This is definitely *not* a perfect
> >solution but we don't have ideal (user space) world. There were already
> >advanced discussions on this matter, mostly when ext4 was introduced and
> >it wasn't behaving as ext3. Anyway, the final decision was to add some
> >hacks to the ext4, as trying to fix whole user space or adding new API
> >was pointless.
> >
> >We can't (and shouldn't?) just follow ext4. We can't e.g. sync on close
> >as this would cause too many commits and flash wearing. On the other
> >hand we still should allow some trade-off between -o sync and default
> >wbuf timeout. Respecting dirty_writeback_interval should allow some sane
> >cutomizations if used warily.
> >
> >Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
> >Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
> >Signed-off-by: Richard Weinberger <richard at nod.at>
> >Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
>
> This one looks like a new feature that will also require changes to
> userspace. Is there actual breakage this fixes?

No let's drop it then, the problem I am investigating in OpenWrt and other
distributions (and code dumps) are backported patches: sometimes they
are obviously backported for features, sometimes obviously for fixing something
that was broken, sometimes it is just unclear to me why it has been
backported.

So I guess this was backported for features, so it can be dropped.

Thanks for helping out!
Linus Walleij

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Sun Feb 17 15:57:36 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Sun, 17 Feb 2019 21:57:36 +0100
Subject: [OpenWrt-Devel] [PATCH 5/8 v3] ubifs: Drop softlimit and delta
 fields from struct ubifs_wbuf
In-Reply-To: <20190217181646.GG10616@sasha-vm>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
 <20190214132403.10687-6-linus.walleij@linaro.org>
 <20190217181646.GG10616@sasha-vm>
Message-ID: <CACRpkdaoY+P29YSwfTGno2+NeJs0oUnKHp8hXAQkc3u90S4E-w@mail.gmail.com>

On Sun, Feb 17, 2019 at 7:16 PM Sasha Levin <sashal at kernel.org> wrote:
> On Thu, Feb 14, 2019 at 02:24:00PM +0100, Linus Walleij wrote:
> >From: Rafa? Mi?ecki <rafal at milecki.pl>
> >
> >commit 854826c9d526fd81077742c3b000e3f7fcaef3ce upstream.
> >
> >Values of these fields are set during init and never modified. They are
> >used (read) in a single function only. There isn't really any reason to
> >keep them in a struct. It only makes struct just a bit bigger without
> >any visible gain.
> >
> >Signed-off-by: Rafa? Mi?ecki <rafal at milecki.pl>
> >Reviewed-by: Boris Brezillon <boris.brezillon at free-electrons.com>
> >Signed-off-by: Richard Weinberger <richard at nod.at>
> >Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
>
> This one is a cleanup, why is it needed in -stable?

I suppose just a prerequisite for 6/8 which was a feature,
so let's drop this one too.

Thanks!
Linus Walleij

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From linus.walleij at linaro.org  Sun Feb 17 16:08:15 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Sun, 17 Feb 2019 22:08:15 +0100
Subject: [OpenWrt-Devel] [PATCH 1/8 v3] bridge: multicast to unicast
In-Reply-To: <20190217181604.GF10616@sasha-vm>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
 <20190214132403.10687-2-linus.walleij@linaro.org>
 <20190217181604.GF10616@sasha-vm>
Message-ID: <CACRpkdY9976LpkzBJnyknX9v1SUE=DtADcrsFzMb9tcGznES0w@mail.gmail.com>

On Sun, Feb 17, 2019 at 7:16 PM Sasha Levin <sashal at kernel.org> wrote:
> On Thu, Feb 14, 2019 at 02:23:56PM +0100, Linus Walleij wrote:
> >From: Felix Fietkau <nbd at nbd.name>
> >
> >commit 6db6f0eae6052b70885562e1733896647ec1d807 upstream.
> >
> >Implements an optional, per bridge port flag and feature to deliver
> >multicast packets to any host on the according port via unicast
> >individually. This is done by copying the packet per host and
> >changing the multicast destination MAC to a unicast one accordingly.
> >
> >multicast-to-unicast works on top of the multicast snooping feature of
> >the bridge. Which means unicast copies are only delivered to hosts which
> >are interested in it and signalized this via IGMP/MLD reports
> >previously.
> >
> >This feature is intended for interface types which have a more reliable
> >and/or efficient way to deliver unicast packets than broadcast ones
> >(e.g. wifi).
(...)

> This looks like a new feature rather than a fix, why does it need to go
> to -stable?

Yeah :/

I'm not very good with networking stuff and it shows.

I percieved it as something else when I picked it out, now I see that
it requires a flag set on the bridge which is not gonna be done
without some other changes setting it. Let's
drop it.

Thanks,
Linus Walleij

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From linus.walleij at linaro.org  Sun Feb 17 16:18:29 2019
From: linus.walleij at linaro.org (Linus Walleij)
Date: Sun, 17 Feb 2019 22:18:29 +0100
Subject: [OpenWrt-Devel] [PATCH v2] net: Allow class-e address
 assignment via ifconfig ioctl
In-Reply-To: <20190217182241.GJ10616@sasha-vm>
References: <20190214131604.8107-1-linus.walleij@linaro.org>
 <20190217182241.GJ10616@sasha-vm>
Message-ID: <CACRpkdah9HEoXKqimsd-juvJrUq__-RObpR-WAwOF9FRaCdrLA@mail.gmail.com>

On Sun, Feb 17, 2019 at 7:22 PM Sasha Levin <sashal at kernel.org> wrote:
> On Thu, Feb 14, 2019 at 02:16:04PM +0100, Linus Walleij wrote:
> >From: Dave Taht <dave.taht at gmail.com>
> >
> >commit 65cab850f0eeaa9180bd2e10a231964f33743edf upstream.
> >
> >While most distributions long ago switched to the iproute2 suite
> >of utilities, which allow class-e (240.0.0.0/4) address assignment,
> >distributions relying on busybox, toybox and other forms of
> >ifconfig cannot assign class-e addresses without this kernel patch.
> >
> >While CIDR has been obsolete for 2 decades, and a survey of all the
> >open source code in the world shows the IN_whatever macros are also
> >obsolete... rather than obsolete CIDR from this ioctl entirely, this
> >patch merely enables class-e assignment, sanely.
> >
> >Signed-off-by: Dave Taht <dave.taht at gmail.com>
> >Signed-off-by: David S. Miller <davem at davemloft.net>
> >Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
>
> Is this really a fix? This isn't something that ever worked.

I guess it fits the bill of "a real bug that bothers people", what OpenWrt
wants is to use their simple userspace to set up class-e addresses
and without this patch, this doesn't work for them, and IIUC it could
be expected to work.

I guess it is an ontological question whether OpenWrt are "fixning"
or "stabilizing" or "adding features" by making class-e networks
work with good old ifconfig. The maintainer(s) will decide.

> Either way, David Miller will need to sign off on this since he manages
> net/ -stable patches.

I was unaware of different route points for stable patches, but it makes
sense.

Maybe we should add some kind of tagging
entries to MAINTAINERS so it is clear where to route stable
material? Right now I guess it is another one of these undocumented
rules that one is supposed to pick up by first annoying everyone :D

Are there other subsystems that have a second-level maintainer
for stable, so I know before annoying someone else?

Yours,
Linus Walleij

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From davem at davemloft.net  Sun Feb 17 16:49:32 2019
From: davem at davemloft.net (David Miller)
Date: Sun, 17 Feb 2019 13:49:32 -0800 (PST)
Subject: [OpenWrt-Devel] [PATCH v2] net: Allow class-e address
 assignment via ifconfig ioctl
In-Reply-To: <20190217182241.GJ10616@sasha-vm>
References: <20190214131604.8107-1-linus.walleij@linaro.org>
 <20190217182241.GJ10616@sasha-vm>
Message-ID: <20190217.134932.1017410103134137402.davem@davemloft.net>

From: Sasha Levin <sashal at kernel.org>
Date: Sun, 17 Feb 2019 13:22:41 -0500

> On Thu, Feb 14, 2019 at 02:16:04PM +0100, Linus Walleij wrote:
>>From: Dave Taht <dave.taht at gmail.com>
>>
>>commit 65cab850f0eeaa9180bd2e10a231964f33743edf upstream.
>>
>>While most distributions long ago switched to the iproute2 suite
>>of utilities, which allow class-e (240.0.0.0/4) address assignment,
>>distributions relying on busybox, toybox and other forms of
>>ifconfig cannot assign class-e addresses without this kernel patch.
>>
>>While CIDR has been obsolete for 2 decades, and a survey of all the
>>open source code in the world shows the IN_whatever macros are also
>>obsolete... rather than obsolete CIDR from this ioctl entirely, this
>>patch merely enables class-e assignment, sanely.
>>
>>Signed-off-by: Dave Taht <dave.taht at gmail.com>
>>Signed-off-by: David S. Miller <davem at davemloft.net>
>>Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
> 
> Is this really a fix? This isn't something that ever worked.
> 
> Either way, David Miller will need to sign off on this since he
> manages
> net/ -stable patches.

I don't think this is -stable material at all.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sashal at kernel.org  Sun Feb 17 18:08:15 2019
From: sashal at kernel.org (Sasha Levin)
Date: Sun, 17 Feb 2019 18:08:15 -0500
Subject: [OpenWrt-Devel] [PATCH v2] net: Allow class-e address
 assignment via ifconfig ioctl
In-Reply-To: <CACRpkdah9HEoXKqimsd-juvJrUq__-RObpR-WAwOF9FRaCdrLA@mail.gmail.com>
References: <20190214131604.8107-1-linus.walleij@linaro.org>
 <20190217182241.GJ10616@sasha-vm>
 <CACRpkdah9HEoXKqimsd-juvJrUq__-RObpR-WAwOF9FRaCdrLA@mail.gmail.com>
Message-ID: <20190217230815.GP10616@sasha-vm>

On Sun, Feb 17, 2019 at 10:18:29PM +0100, Linus Walleij wrote:
>On Sun, Feb 17, 2019 at 7:22 PM Sasha Levin <sashal at kernel.org> wrote:
>> Either way, David Miller will need to sign off on this since he manages
>> net/ -stable patches.
>
>I was unaware of different route points for stable patches, but it makes
>sense.
>
>Maybe we should add some kind of tagging
>entries to MAINTAINERS so it is clear where to route stable
>material? Right now I guess it is another one of these undocumented
>rules that one is supposed to pick up by first annoying everyone :D
>
>Are there other subsystems that have a second-level maintainer
>for stable, so I know before annoying someone else?

I really think that this is the only exception to the procees, and given
that David is only looking at the last 2 -stable releases (that would be
4.20 and 4.19 right now) it gets a bit tricky for folks who are not
intimate with the process. So no, you're not annoying anyone :)

FWIW, the process is documented here:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/networking/netdev-FAQ.rst#n134

--
Thanks,
Sasha

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From managing at scik.eu  Sun Feb 17 20:22:09 2019
From: managing at scik.eu (SecretarySciKnow)
Date: Mon, 18 Feb 2019 01:22:09 +0000 (UTC)
Subject: [OpenWrt-Devel] M&Ns-19, Materials & Nanomaterials, Paris July 2019
Message-ID: <NTgxNjYxMQAC1412030Y304BAMTU1MDQ1MjkyODMxMTk2@www.sciknowledge.net>

2019 International Conference on Materials and Nanomaterials (MNs-19) (
http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51s9NBHmSLI0rNpvNI2W1Kb4OFhe6MqScuJGteirto9erpL-2BGsujz35fgGi-2B73ivBNDtsbv8jKHiFEmtBsCTtwugE1CgqycgeOX3c1FziW1Lsxks3yux44v21ZwuCMLRFrg-3D-3D_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu7iqUb1vcKyiRgQmhgwG7DXoB70YeWCejIA0jBIPGzobys83Ska7Y-2BbZwN57QMgeAOEPAQYMNoQnTcbmVNTKnp0f8-2Fh9ZK5KaiCkUNKD88c5QLXKTjdoYH5gescxSCXLW5rK4lxLry1PmC62i8-2BQq-2BA-3D )

P A R I S 1 7 - 1 9 J u l y 2 0 1 9

http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51n8YDD2YqciiY62wfmgVd9s-3D_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGuzGIKOoW-2FSglEiftXXnsVT7KXS0ox4WDDwqUg4mN5TeU7IEUzIw0A-2FuAXCQpEE5tXqPCL39jciJtSePf07cQ1DU3B4X-2F03t4mlUK8rbLXFUW2Q9pWLkpxKZuuv0iB0JtBOSE6WwPhF80aWss9su9Gc8-3D ( http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51s9NBHmSLI0rNpvNI2W1Kb4OFhe6MqScuJGteirto9erpL-2BGsujz35fgGi-2B73ivBNDtsbv8jKHiFEmtBsCTtwugE1CgqycgeOX3c1FziW1LsaSAwbWUio36fTKDYLZfUrQ-3D-3D_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu0jFSSdbwX-2FHd6zM37uHZOf06j-2FnTkOQZf77p-2BofszfStU4FjUkk-2BLiD4wH1reJX8Jdl64XasDzXlktor92wixdk47TwS9uBYUcPBoKcEMRBSOhLX9MoWGDExDskF34g6uxRGRu-2FbGTKtlaaxeQm1tQ-3D ) 

It is a pleasure to invite you to 2019 International Conference on Materials and Nanomaterials (MNs-19) (
http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51s9NBHmSLI0rNpvNI2W1Kb4OFhe6MqScuJGteirto9erpL-2BGsujz35fgGi-2B73ivBNDtsbv8jKHiFEmtBsCTtwugE1CgqycgeOX3c1FziW1Lsq8F1r-2B-2FDKsaqeByYVSLYSA-3D-3D_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu-2FvCa2rQkeZwYxFt2W1pUq8qDRPkaxpsapdE1QHWTwZyuPVvItbFxRDUMbdTTvvDqKKQqJa4RNEwqpX5wp7jqKKaJTRfXVajiDcxpYokYoLHiRkn3fINB-2BierUe-2Fgr0J7OFjASdTE8hviiwHC6iLgG0-3D )The conference is organized by Sciknowledge
European Conferences ( http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51s9NBHmSLI0rNpvNI2W1Kb4OFhe6MqScuJGteirto9erpL-2BGsujz35fgGi-2B73ivBNDtsbv8jKHiFEmtBsCTtwugE1CgqycgeOX3c1FziW1Ls4WIOqYipOMAGaLXIDvcY3Q-3D-3D_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu30SrNxNaKhebEVnsP1Zjzx15SwjxOJuLcB-2BywVpcYkZjnsPriYgdsdipR2FMFZlJllTfFMsqQ57ttfFk12HRWkb05J1uunWjwMn-2FyD4sKUueopNmcKaT5hvZP7l-2FqHWNuXxHNMdtn0uolbI0Cf1Kng-3D ) in collaboration
with different universities, and will take place in Paris on 17-19 July 2019.
The event has the objective of creating an international forum for academics, researchers and scientists from worldwide to discuss worldwide results
and proposals regarding to the soundest issues related to Water, Waste and Energy Management.

Topics

Nanomaterials: Synthesis, Characterization, Properties, Nanoelectronics and Spintronics, Nanotechnology, Biomaterials, Nanomaterials in Food,
Agriculture, Water, Energy and Environment, Nanophysics, Nano-optics, Nanophotonics.
Materials in Industry: Ceramics, Composite, Polymers, Metal Alloys, Paper and Wood, Textiles, Electronic, Optical and Magnetic Materials, Construction
materials.
Green Materials: Green Manufacturing and Sustainability
Recycled materiales, New construction materials
Procesing and Product Manufacturing: New Manufacturing and Sustainability, Surface Modifications, Coating and Films

Important Dates

Deadline for submission: April 1st 2019
Notification of acceptance: April 15th 2019
Deadline for final paper submission: April 30th 2019

Venue
Universit? Par?s 8
Par?s, France

Organizing Committee

Prof. Mario Monz?n Verona Ph.D.
Prof. Israel Gonz?lez Carrasco Ph.D.
Prof. Abbas Tcharkhtchi Ph.D
Prof. Ilaria Cacciotti Ph.D.
Prof. Osman Adiguzel Ph.D.

Prof. Elisenda Pulido Meli?n Ph.D.
Prof. Juan Garc?a Rodr?guez Ph.D.
Prof. Joaquin R. Dominguez Ph.D.
Prof. Gabriel Ovejero Escudero Ph.D.
Prof. Silvia ?lvarez Torrellas Ph.D.

Publications
The papers will be published in the Abstract E-book of the Conference. Those communications considered of having enough quality can be further
considered for publication in the International Conference Journals. At the authors? choice, those works not suitable for publication in any of the
congress journals will be published in the Extended Proceedings E-book of the Conference.

Guide for authors
To submit your abstract, please click on the following link: http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51oe-2BNfO-2BA4DzvWDF-2FJT3wB9-2BTi5deXv48AaBbgT3F3iy_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu8xx489S-2Fa7Pmb8t2BStHPIB4CFqc6LfOUXF4yWAsesQMWu-2FUJ8ECwdgkMFjl1Fwomv1A7WI3Ha4tgwl4pKRZgy-2BpmENNv-2FyWcTc7LaZytLMpV3-2Fa9j8pCYTXxW-2BDmlauClBjD1d6SukkKY8wTcDZa0-3D (
http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51s9NBHmSLI0rNpvNI2W1Kb4OFhe6MqScuJGteirto9erpL-2BGsujz35fgGi-2B73ivBNDtsbv8jKHiFEmtBsCTtwugE1CgqycgeOX3c1FziW1LsdmwczS-2BGkX5ba1oCBDRvbA-3D-3D_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu-2FF2c2ktoS4tBW-2F91ci4HBuuNf-2FCc2JtgRB508G4wmRGnDXuZsGw1-2F93E2LNAVr1n1-2Fn-2BHOD-2FKYMgoOamVDOFnM0jy-2FzeQUFXHwGWFT-2BNLMwUP-2BtX1pCt4OAjDkOxUygYHyJOsk-2BmpBp1gWMg7YyWFM-3D )
For registration: http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51uUJomAiyVaksSmj39XjhSm2ysIGuMdCxY-2FWcegTxSFN_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu6tYjnj-2Fqp8vkCRtm8yNyD-2BCrYIVTrODiOcfNNts9-2F4tXlHF1YD42hZKN3PMnk-2F4wmMe5XC64ukpP7OOPs4-2B-2BF9GVFPVuzeg-2Bn8NKo50QzthxIlhJHvh8Ht3AsvMPG3QA8WsDeErXya-2FV9GKGqWhuHA-3D (
http://newsletter.madrid18.org/wf/click?upn=2bJS55dLSu7pO200j1S51s9NBHmSLI0rNpvNI2W1Kb4OFhe6MqScuJGteirto9erpL-2BGsujz35fgGi-2B73ivBNDtsbv8jKHiFEmtBsCTtwugE1CgqycgeOX3c1FziW1Lswfid9XH85xran-2FWmU9p6Cg-3D-3D_iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu-2FtsSiu4fejYUp627tarfG07uwTiw7DRIXyeCa1-2B5WBoGUYsShqrZmsIraL6XzHV9H4ugPghnptc4IpRqzDpz0niEd5uYbbQ0DUZD1OXkQwjZeI-2F7Yr-2Bfwi-2FyG3-2B-2F4pb3rfYkYoS9PuL298-2FgDy2wFE-3D )
For all general enquiries, please contact: info at mns-19.com ( mailto:info at mns-19.com )
We look forward to seeing you at MNs-19

Sincerely,
Prof. Mario Monz?n Verona, Ph.D.
MNs-19 Chairman

ADAPTATION TO THE NEW EUROPEAN REGULATION OF DATA PROTECTION (RGPD)
In order to guarantee your privacy, this organization informs you that, based on the provisions of REGULATION (EU) 2016/679 OF THE EUROPEAN PARLIAMENT
AND OF THE COUNCIL of April 27, 2016 relating to the protection of natural persons in relation to Regarding the processing of personal data and the
free circulation of these data, and to protect it as much as possible, you are informed that the information we have about you is basic level
(exclusively your email address, without any other information identifier such as name, telephone or address) and will never have a commercial
destination. However, at any time you wish to proceed immediately to cancel the file, to modify your data or to provide them in an appropriate format
for your portability, for which you only have to contact the responsible person for Sciknowledge Education Conferences, at T. Romero-Castilla, 18,
06011 Badajoz - Spain, by phone +34 644782000 or +34 924105697 or by e-mail to: info at sciknowledge.net. In case of termination of the activities of
this organization your data will never be transferred to third parties. They only serve to send information about our activities of possible interest
for you.

If you would like to unsubscribe and stop receiving these emails click here: http://newsletter.madrid18.org/wf/unsubscribe?upn=iHHhiMyCjRugsPcnpSiVzuCO7A-2FCGKbnOsPHlbjQ3vpqn3GVMfE22smNSLpagxWvrmEQ9g1AXogQC4DrrijGu4eO2lTR7j-2BSP5z9ro5m9NtrY3wSfDwkYY455nljlRKyjS3Elrxg6J3flIBsgbXYy-2BPBfZShnVVqsXXwVU2XTMXlJyIxwgSvIDvOcOl66yl-2BrdhALFlUf8w-2Btx5BccwiaybzPOpt-2FAWCakN0g9XAf4g-3D.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190218/d85793b0/attachment.htm>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From yszhou4tech at gmail.com  Mon Feb 18 01:52:02 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Mon, 18 Feb 2019 14:52:02 +0800
Subject: [OpenWrt-Devel] [PATCH 2/2] dnsmasq: decouple /tmp/resolv.conf
 from value of option resolvfile
In-Reply-To: <CAJLcKsFNN1sdQWiOfePnm3KuABnVS26y35QFjZSKsN6_D8Lrmw@mail.gmail.com>
References: <20190214121456.4784-1-yszhou4tech@gmail.com>
 <20190214121456.4784-2-yszhou4tech@gmail.com>
 <CAJLcKsFNN1sdQWiOfePnm3KuABnVS26y35QFjZSKsN6_D8Lrmw@mail.gmail.com>
Message-ID: <CAECwjAiLiVQr=Xh8PUVo+aLTmugbw4zmJ8ipnyGNHGCOt30VjA@mail.gmail.com>

On Mon, 18 Feb 2019 at 04:00, Hans Dedecker <dedeckeh at gmail.com> wrote:
>
> Hi Yousong,
> On Thu, Feb 14, 2019 at 1:15 PM Yousong Zhou <yszhou4tech at gmail.com> wrote:Y
> >
> > Option resolvfile should now affect only how dnsmasq itself will run.
> > The implicit effect of its specific value on other parts of the system
> > makes the code unnecessarily hard to follow
> >
> > Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> > ---
> >  package/network/services/dnsmasq/Makefile           | 2 +-
> >  package/network/services/dnsmasq/files/dnsmasq.init | 7 +------
> >  2 files changed, 2 insertions(+), 7 deletions(-)
> >
> > diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> > index d51f23e48b..5e83b4f8e5 100644
> > --- a/package/network/services/dnsmasq/Makefile
> > +++ b/package/network/services/dnsmasq/Makefile
> > @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
> >
> >  PKG_NAME:=dnsmasq
> >  PKG_VERSION:=2.80
> > -PKG_RELEASE:=8
> > +PKG_RELEASE:=9
> >
> >  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
> >  PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> > diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> > index 05c555bd8c..22471c11aa 100644
> > --- a/package/network/services/dnsmasq/files/dnsmasq.init
> > +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> > @@ -888,7 +888,6 @@ dnsmasq_start()
> >                 config_get resolvfile "$cfg" resolvfile
> >                 [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> >                 xappend "--resolv-file=$resolvfile"
> > -               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> By removing this line 127.0.0.1 is not added anymore in
> /tmp/resolv.conf as localuse is 0 by default;
> as a result local resolving is broken.

Yes, this is exactly the behavior change.  It intends to make it clear
that to use dnsmasq for local dns query, one has to set explicitly
localuse to 1.  And with localuse being 0, /etc/resolv.conf will
default to /tmp/resolv.conf.auto as setup by /etc/init.d/boot

The argument is mainly that resolvfile being /tmp/resolv.conf.auto
should not have a consequence on the content of /tmp/resolv.conf.
resolvfile is dnsmasq specific and /tmp/resolv.conf is for all other
processes in the local system

Should have made it more clear in the commit message that this can
break existing expectations.  Sorry about that, I will drop this
change, amend the first, then send another version.

Thank you,
               yousong

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dedeckeh at gmail.com  Mon Feb 18 03:52:24 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Mon, 18 Feb 2019 09:52:24 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] dnsmasq: decouple /tmp/resolv.conf
 from value of option resolvfile
In-Reply-To: <CAECwjAiLiVQr=Xh8PUVo+aLTmugbw4zmJ8ipnyGNHGCOt30VjA@mail.gmail.com>
References: <20190214121456.4784-1-yszhou4tech@gmail.com>
 <20190214121456.4784-2-yszhou4tech@gmail.com>
 <CAJLcKsFNN1sdQWiOfePnm3KuABnVS26y35QFjZSKsN6_D8Lrmw@mail.gmail.com>
 <CAECwjAiLiVQr=Xh8PUVo+aLTmugbw4zmJ8ipnyGNHGCOt30VjA@mail.gmail.com>
Message-ID: <CAJLcKsGQghxxEmFDBO8xuh-tGrF4XgwktAJ9ZS_zgS7aKW444w@mail.gmail.com>

On Mon, Feb 18, 2019 at 7:52 AM Yousong Zhou <yszhou4tech at gmail.com> wrote:
>
> On Mon, 18 Feb 2019 at 04:00, Hans Dedecker <dedeckeh at gmail.com> wrote:
> >
> > Hi Yousong,
> > On Thu, Feb 14, 2019 at 1:15 PM Yousong Zhou <yszhou4tech at gmail.com> wrote:Y
> > >
> > > Option resolvfile should now affect only how dnsmasq itself will run.
> > > The implicit effect of its specific value on other parts of the system
> > > makes the code unnecessarily hard to follow
> > >
> > > Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> > > ---
> > >  package/network/services/dnsmasq/Makefile           | 2 +-
> > >  package/network/services/dnsmasq/files/dnsmasq.init | 7 +------
> > >  2 files changed, 2 insertions(+), 7 deletions(-)
> > >
> > > diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> > > index d51f23e48b..5e83b4f8e5 100644
> > > --- a/package/network/services/dnsmasq/Makefile
> > > +++ b/package/network/services/dnsmasq/Makefile
> > > @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
> > >
> > >  PKG_NAME:=dnsmasq
> > >  PKG_VERSION:=2.80
> > > -PKG_RELEASE:=8
> > > +PKG_RELEASE:=9
> > >
> > >  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
> > >  PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> > > diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> > > index 05c555bd8c..22471c11aa 100644
> > > --- a/package/network/services/dnsmasq/files/dnsmasq.init
> > > +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> > > @@ -888,7 +888,6 @@ dnsmasq_start()
> > >                 config_get resolvfile "$cfg" resolvfile
> > >                 [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> > >                 xappend "--resolv-file=$resolvfile"
> > > -               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> > By removing this line 127.0.0.1 is not added anymore in
> > /tmp/resolv.conf as localuse is 0 by default;
> > as a result local resolving is broken.
>
> Yes, this is exactly the behavior change.  It intends to make it clear
> that to use dnsmasq for local dns query, one has to set explicitly
> localuse to 1.  And with localuse being 0, /etc/resolv.conf will
> default to /tmp/resolv.conf.auto as setup by /etc/init.d/boot
This will mean a change in behavior when an user upgrades as localuse will
default to 0 which will mean for local dns queries dnsmasq will be bypassed as
the local dns requests will be forwarded to the dns servers in
/tmp/resolv.conf.auto
I understand the motivation for the change but shouldn't we try to preserve the
behavior when an user upgrades ?

Hans
>
> The argument is mainly that resolvfile being /tmp/resolv.conf.auto
> should not have a consequence on the content of /tmp/resolv.conf.
> resolvfile is dnsmasq specific and /tmp/resolv.conf is for all other
> processes in the local system
>
> Should have made it more clear in the commit message that this can
> break existing expectations.  Sorry about that, I will drop this
> change, amend the first, then send another version.
>
> Thank you,
>                yousong

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From gregkh at linuxfoundation.org  Mon Feb 18 07:45:12 2019
From: gregkh at linuxfoundation.org (Greg Kroah-Hartman)
Date: Mon, 18 Feb 2019 13:45:12 +0100
Subject: [OpenWrt-Devel] [PATCH 0/8 v3] Stable material from OpenWrt for
 v4.9.y
In-Reply-To: <20190214132403.10687-1-linus.walleij@linaro.org>
References: <20190214132403.10687-1-linus.walleij@linaro.org>
Message-ID: <20190218124512.GA15796@kroah.com>

On Thu, Feb 14, 2019 at 02:23:55PM +0100, Linus Walleij wrote:
> This is a series of patches used in OpenWrt's v4.9 backports
> that seem to be of generic interest to v4.9.y
> 
> For the remaining patches I cherry-picked the upstream
> commits except for (8/8)
> "netfilter: nf_tables: fix mismatch in big-endian system"
> where I used OpenWrt's backport.

Now queued up, except for the ones that were new features :)

thanks,

greg k-h

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Mon Feb 18 07:56:45 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Mon, 18 Feb 2019 12:56:45 +0000
Subject: [OpenWrt-Devel] [PATCH 1/2] armvirt: 32: refresh kernel config
Message-ID: <20190218125646.1621-1-yszhou4tech@gmail.com>

The diff was genereated by running the following command without
actually changing any kernel config options

	make kernel_menuconfig CONFIG_TARGET=subtarget

Here are some initial findings on the change

 - CONFIG_ARCH_OPTIONAL_KERNEL_RWX is now arch default
 - CONFIG_ARM_GIC_V3_ITS is selected by CONFIG_ARCH_VIRT
 - CONFIG_CPU_SPECTRE is select by CONFIG_CPU_V7
 - CONFIG_TIMER_OF is now a arch default
 - CONFIG_TIMER_PROBE is select by CONFIG_TIMER_OF

The following options should probably be moved to generic config

 - CONFIG_MIGRATION is a default on option
 - CONFIG_TREE_SRCU is a default on option for !PREEMPT && SMP system
 - CONFIG_RCU_NEED_SEGCBLIST

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 target/linux/armvirt/32/config-default | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/target/linux/armvirt/32/config-default b/target/linux/armvirt/32/config-default
index a3530b0e77..cdac5ffe56 100644
--- a/target/linux/armvirt/32/config-default
+++ b/target/linux/armvirt/32/config-default
@@ -1,4 +1,8 @@
 CONFIG_ALIGNMENT_TRAP=y
+CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
+CONFIG_ARCH_HAS_SET_MEMORY=y
+CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
+CONFIG_ARCH_HAS_STRICT_MODULE_RWX=y
 CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
 CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y
 CONFIG_ARCH_MULTIPLATFORM=y
@@ -6,6 +10,8 @@ CONFIG_ARCH_MULTIPLATFORM=y
 CONFIG_ARCH_MULTI_V6_V7=y
 CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_NR_GPIO=0
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
+CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 CONFIG_ARCH_SUPPORTS_UPROBES=y
@@ -15,6 +21,7 @@ CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
 CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
 CONFIG_ARM=y
 CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_ARM_GIC_V3_ITS=y
 CONFIG_ARM_HAS_SG_CHAIN=y
 CONFIG_ARM_HEAVY_MB=y
 CONFIG_ARM_L1_CACHE_SHIFT=6
@@ -27,7 +34,8 @@ CONFIG_ARM_THUMB=y
 # CONFIG_ARM_THUMBEE is not set
 CONFIG_ARM_VIRT_EXT=y
 CONFIG_AUTO_ZRELADDR=y
-# CONFIG_BINFMT_FLAT is not set
+CONFIG_BLK_MQ_VIRTIO=y
+CONFIG_BLK_SCSI_REQUEST=y
 CONFIG_CACHE_L2X0=y
 CONFIG_CPU_32v6K=y
 CONFIG_CPU_32v7=y
@@ -41,6 +49,8 @@ CONFIG_CPU_CP15_MMU=y
 CONFIG_CPU_HAS_ASID=y
 # CONFIG_CPU_ICACHE_DISABLE is not set
 CONFIG_CPU_PABRT_V7=y
+CONFIG_CPU_SPECTRE=y
+CONFIG_CPU_THUMB_CAPABLE=y
 CONFIG_CPU_TLB_V7=y
 CONFIG_CPU_V7=y
 CONFIG_DEBUG_BUGVERBOSE=y
@@ -48,9 +58,14 @@ CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
 # CONFIG_DEBUG_UART_8250 is not set
 # CONFIG_DEBUG_USER is not set
 CONFIG_EDAC_ATOMIC_SCRUB=y
+CONFIG_GENERIC_ARCH_TOPOLOGY=y
+CONFIG_GENERIC_CPU_AUTOPROBE=y
+CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
+# CONFIG_GRO_CELLS is not set
 CONFIG_HARDEN_BRANCH_PREDICTOR=y
 CONFIG_HAVE_ARM_ARCH_TIMER=y
-CONFIG_HAVE_CBPF_JIT=y
+CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
+CONFIG_HAVE_EBPF_JIT=y
 CONFIG_HAVE_IDE=y
 CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
 CONFIG_HAVE_OPROFILE=y
@@ -59,8 +74,10 @@ CONFIG_HAVE_PROC_CPU=y
 CONFIG_HAVE_SMP=y
 CONFIG_HZ_FIXED=0
 CONFIG_HZ_PERIODIC=y
+# CONFIG_MDIO_BUS is not set
 CONFIG_MIGHT_HAVE_CACHE_L2X0=y
 CONFIG_MIGHT_HAVE_PCI=y
+CONFIG_MIGRATION=y
 CONFIG_MODULES_USE_ELF_REL=y
 CONFIG_MULTI_IRQ_HANDLER=y
 CONFIG_NEON=y
@@ -74,12 +91,17 @@ CONFIG_PGTABLE_LEVELS=2
 # CONFIG_PL310_ERRATA_727915 is not set
 # CONFIG_PL310_ERRATA_753970 is not set
 # CONFIG_PL310_ERRATA_769419 is not set
+CONFIG_RCU_NEED_SEGCBLIST=y
 CONFIG_RTC_MC146818_LIB=y
 CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SG_POOL=y
 CONFIG_SMP_ON_UP=y
 CONFIG_SWP_EMULATE=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
 # CONFIG_THUMB2_KERNEL is not set
+CONFIG_TIMER_OF=y
+CONFIG_TIMER_PROBE=y
+CONFIG_TREE_SRCU=y
 CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
 CONFIG_USE_OF=y
 CONFIG_VECTORS_BASE=0xffff0000

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Mon Feb 18 07:56:46 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Mon, 18 Feb 2019 12:56:46 +0000
Subject: [OpenWrt-Devel] [PATCH 2/2] armvirt: 32: enable CONFIG_ARM_LPAE
In-Reply-To: <20190218125646.1621-1-yszhou4tech@gmail.com>
References: <20190218125646.1621-1-yszhou4tech@gmail.com>
Message-ID: <20190218125646.1621-2-yszhou4tech@gmail.com>

This is required for running armvirt_32 on QEMU 3.0 [1], otherwise the
kernel will emit the following complaint and virtio-net-pci devices will
fail to be initialized

        [    1.124214] OF: PCI: host bridge /pcie at 10000000 ranges:
        [    1.125093] OF: PCI:    IO 0x3eff0000..0x3effffff -> 0x00000000
        [    1.125942] OF: PCI:   MEM 0x10000000..0x3efeffff -> 0x10000000
        [    1.126403] OF: PCI:   MEM 0x8000000000..0xffffffffff -> 0x8000000000
        [    1.127748] pci-host-generic 4010000000.pcie: can't claim ECAM area [mem 0x10000000-0x1fffffff]: address conflict with /pcie at 10000000 [mem 0x10000000-0x3efeffff]
        [    1.129752] pci-host-generic: probe of 4010000000.pcie failed with error -16

Running QEMU with "-M virt,highmem=off" is an option, but "highmem" was only
introduced as a default on flag since QEMU 2.5.0 and QEMU will fail and quit on
encounter of unknown flags

 [1] Armv7 guest fails to boot with qemu-3.0.0-1,
     https://bugzilla.redhat.com/show_bug.cgi?id=1633328#c5

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 target/linux/armvirt/32/config-default | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/target/linux/armvirt/32/config-default b/target/linux/armvirt/32/config-default
index cdac5ffe56..a31488749c 100644
--- a/target/linux/armvirt/32/config-default
+++ b/target/linux/armvirt/32/config-default
@@ -1,4 +1,5 @@
 CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_ARCH_AXXIA is not set
 CONFIG_ARCH_HAS_DEBUG_VIRTUAL=y
 CONFIG_ARCH_HAS_SET_MEMORY=y
 CONFIG_ARCH_HAS_STRICT_KERNEL_RWX=y
@@ -12,6 +13,7 @@ CONFIG_ARCH_MULTI_V7=y
 CONFIG_ARCH_NR_GPIO=0
 CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y
 CONFIG_ARCH_OPTIONAL_KERNEL_RWX_DEFAULT=y
+CONFIG_ARCH_PHYS_ADDR_T_64BIT=y
 # CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
 # CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
 CONFIG_ARCH_SUPPORTS_UPROBES=y
@@ -26,7 +28,7 @@ CONFIG_ARM_HAS_SG_CHAIN=y
 CONFIG_ARM_HEAVY_MB=y
 CONFIG_ARM_L1_CACHE_SHIFT=6
 CONFIG_ARM_L1_CACHE_SHIFT_6=y
-# CONFIG_ARM_LPAE is not set
+CONFIG_ARM_LPAE=y
 CONFIG_ARM_PATCH_IDIV=y
 CONFIG_ARM_PATCH_PHYS_VIRT=y
 CONFIG_ARM_PSCI=y
@@ -63,15 +65,19 @@ CONFIG_GENERIC_CPU_AUTOPROBE=y
 CONFIG_GENERIC_IRQ_EFFECTIVE_AFF_MASK=y
 # CONFIG_GRO_CELLS is not set
 CONFIG_HARDEN_BRANCH_PREDICTOR=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
 CONFIG_HAVE_ARM_ARCH_TIMER=y
 CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS=y
 CONFIG_HAVE_EBPF_JIT=y
+CONFIG_HAVE_GENERIC_GUP=y
 CONFIG_HAVE_IDE=y
 CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
 CONFIG_HAVE_OPROFILE=y
 CONFIG_HAVE_OPTPROBES=y
 CONFIG_HAVE_PROC_CPU=y
+CONFIG_HAVE_RCU_TABLE_FREE=y
 CONFIG_HAVE_SMP=y
+# CONFIG_HUGETLBFS is not set
 CONFIG_HZ_FIXED=0
 CONFIG_HZ_PERIODIC=y
 # CONFIG_MDIO_BUS is not set
@@ -86,7 +92,8 @@ CONFIG_OUTER_CACHE=y
 CONFIG_OUTER_CACHE_SYNC=y
 CONFIG_PAGE_OFFSET=0xC0000000
 CONFIG_PERF_USE_VMALLOC=y
-CONFIG_PGTABLE_LEVELS=2
+CONFIG_PGTABLE_LEVELS=3
+CONFIG_PHYS_ADDR_T_64BIT=y
 # CONFIG_PL310_ERRATA_588369 is not set
 # CONFIG_PL310_ERRATA_727915 is not set
 # CONFIG_PL310_ERRATA_753970 is not set
@@ -98,6 +105,7 @@ CONFIG_SG_POOL=y
 CONFIG_SMP_ON_UP=y
 CONFIG_SWP_EMULATE=y
 CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
 # CONFIG_THUMB2_KERNEL is not set
 CONFIG_TIMER_OF=y
 CONFIG_TIMER_PROBE=y

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sakib at darkstar.site  Mon Feb 18 08:04:16 2019
From: sakib at darkstar.site (Sergiy Kibrik)
Date: Mon, 18 Feb 2019 15:04:16 +0200
Subject: [OpenWrt-Devel] [PATCH] [ubox] kmodloader: increase module name
 length
Message-ID: <1550495056-1906-1-git-send-email-sakib@darkstar.site>

Otherwise modules with long names, e.g. lttng (>32 chars) can't be loaded.

Signed-off-by: Sergiy Kibrik <sakib at darkstar.site>
---
 kmodloader.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kmodloader.c b/kmodloader.c
index 3196deb..67e3706 100644
--- a/kmodloader.c
+++ b/kmodloader.c
@@ -157,7 +157,7 @@ static char* get_module_path(char *name)
 
 static char* get_module_name(char *path)
 {
-	static char name[33];
+	static char name[NAME_MAX];
 	char *t;
 
 	strncpy(name, basename(path), sizeof(name) - 1);
-- 
2.7.4


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From seckelmann at datto.com  Mon Feb 18 08:25:49 2019
From: seckelmann at datto.com (Sven Eckelmann)
Date: Mon, 18 Feb 2019 14:25:49 +0100
Subject: [OpenWrt-Devel] 5GHz wifi is broken
In-Reply-To: <2963047.YPBBb5UhK6@debian64>
References: <2b658d23-d248-81a7-9757-8dd92630ded2@gmail.com>
 <2963047.YPBBb5UhK6@debian64>
Message-ID: <36918933.JLx2pUsKP1@bentobox>

On Saturday, 16 February 2019 22:36:18 CET Christian Lamparter wrote:
> @Ben can you please take a peek into your wave-1 firmware and check if the 
> mgmt_rate WMI (WMI_10X_VDEV_PARAM_MGMT_RATE) is supported, or if there is
> a bad interaction somewhere else?

I am using the same driver and ath10k-firmware-qca988x-ct on an OM5P-ACv2 with 
reboot-9393-gd0b45962ef. It seems to  work here for me with following 
configuration:

    config wifi-device 'radio0'
            option type 'mac80211'
            option channel '36'
            option hwmode '11a'
            option path 'pci0000:00/0000:00:00.0'
            option htmode 'VHT80'
            option disabled '0'
    
    config wifi-iface 'default_radio0'
            option device 'radio0'
            option network 'lan'
            option mode 'ap'
            option ssid 'OpenWrt'
            option encryption 'psk'
            option key 'supersecret'
    
    config wifi-iface 'default_radio2'
            option device 'radio0'
            option network 'lan'
            option mode 'ap'
            option ssid 'OpenWrt5'
            option encryption 'psk'
            option key 'supersecret2'
    
    config wifi-device 'radio1'
            option type 'mac80211'
            option channel '11'
            option hwmode '11g'
            option path 'platform/qca955x_wmac'
            option htmode 'HT20'
            option disabled '1'
    
    config wifi-iface 'default_radio1'
            option device 'radio1'
            option network 'lan'
            option mode 'ap'
            option ssid 'OpenWrt'
            option encryption 'none'

So it should work in theory. I personally (and some Freifunk Communities) need 
it more for 2.4GHz PHYs (Dakota). But also playing around with the rates for 
the QCA988X PHY (radio0) seems to work for me:

        list supported_rates '24000'
        list supported_rates '48000'
        list supported_rates '54000'
        list basic_rate '24000'
        list basic_rate '54000'

and the management rates (captured by a second device) are 24MBit/s.

So I would guess that it is something very specific (yeah, I know step 6 of 
"six stages of debugging": How did that ever work?). Having some way to 
reproduce it could be helpful - just do as Ben said to better understand the 
problem.

And we have a different user which also complained about something like this 
on Tp-Link Archer C60 V2 - but both radios were not working anymore. If this 
is true and related the it doesn't sound to me like this is strictly a 
ath10k(-ct) problem - one of the radios is ath9k. But who knows.

@Ben, the patch (or actually the whole series) is basically the upstream way 
to change the rate for management/broadcast/multicast frames. It is not using 
debugfs to communicate with the driver but just the events from mac80211. So 
it is less flexible in what you can do but works automatically. The broadcast 
multicast parts are in the kernel (and OpenWrt) for a while and these two 
patches just add the missing management rates part. They just wait for an 
BSS_CHANGED_BASIC_RATES event in ath10k_bss_info_changed and find the lowest 
basic rate + set this as management rate. Similar behavior to what ath9k & co 
are doing automatically with minstrel(_ht).

The implementation is a best effort implementation - if it fails to set the 
rate via WMI then it will print a warning and continue. I personally don't 
like how the control flow works in this patch. It just returns from 
ath10k_bss_info_changed even when some other parts (not yet existing in the 
current code) still might have to be run. But this is just how it was 
implemented and how Kalle Valo accepted it.

But the WMI part of the ath10k firmware (called by your debugfs interface and 
this upstream patch) is the same.

Kind regards,
	Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190218/96f0d548/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From yszhou4tech at gmail.com  Mon Feb 18 09:18:01 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Mon, 18 Feb 2019 14:18:01 +0000
Subject: [OpenWrt-Devel] [PATCH v2] dnsmasq: allow using dnsmasq as the sole
 resolver
Message-ID: <20190218141801.7502-1-yszhou4tech@gmail.com>

Currently it seems impossible to configure /etc/config/dhcp to achieve
the following use case

 - run dnsmasq with no-resolv
 - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"

Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
to achive the 2nd effect above, but setting resolvfile requires noresolv
being false.

A new boolean option "localuse" is added to indicate that we intend to
use dnsmasq as the local dns resolver.  It's false by default and to
align with old behaviour it will be true automatically if resolvfile is
set to /tmp/resolv.conf.auto

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
v2 <- v1

 - retain /tmp/resolv.conf.auto as the default value of resolvfile when
   doing config_get, i.e. 2nd patch in the 1st version is now dropped
 - retain the old behavior of rewriting /tmp/resolv.conf when resolvfile
   is /tmp/resolv.conf.auto

 .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index f3066627d6..f65736e268 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -731,7 +731,9 @@ dhcp_relay_add() {
 
 dnsmasq_start()
 {
-	local cfg="$1" disabled resolvfile user_dhcpscript
+	local cfg="$1"
+	local disabled user_dhcpscript
+	local resolvfile localuse
 
 	config_get_bool disabled "$cfg" disabled 0
 	[ "$disabled" -gt 0 ] && return 0
@@ -882,14 +884,14 @@ dnsmasq_start()
 	config_get_bool cachelocal "$cfg" cachelocal 1
 
 	config_get_bool noresolv "$cfg" noresolv 0
+	config_get_bool localuse "$cfg" localuse 0
 	if [ "$noresolv" != "1" ]; then
-		config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
-		# So jail doesn't complain if file missing
-		[ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
+		config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
+		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
+		xappend "--resolv-file=$resolvfile"
+		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
 	fi
 
-	[ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
-
 	config_get hostsfile "$cfg" dhcphostsfile
 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
 
@@ -1011,7 +1013,7 @@ dnsmasq_start()
 	mv -f $CONFIGFILE_TMP $CONFIGFILE
 	mv -f $HOSTFILE_TMP $HOSTFILE
 
-	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
+	[ "$localuse" -gt 0 ] && {
 		rm -f /tmp/resolv.conf
 		[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
 			echo "search $DOMAIN" >> /tmp/resolv.conf
@@ -1037,17 +1039,15 @@ dnsmasq_start()
 
 dnsmasq_stop()
 {
-	local cfg="$1" resolvfile
+	local cfg="$1"
+	local noresolv resolvfile localuse
 
+	config_get_bool noresolv "$cfg" noresolv 0
+	config_get_bool localuse "$cfg" localuse 0
 	config_get resolvfile "$cfg" "resolvfile"
 
-	#relink /tmp/resolve.conf only for main instance
-	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
-		[ -f /tmp/resolv.conf ] && {
-			rm -f /tmp/resolv.conf
-			ln -s "$resolvfile" /tmp/resolv.conf
-		}
-	}
+	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
+	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
 
 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
 }

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From bjorn at mork.no  Mon Feb 18 09:24:03 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Mon, 18 Feb 2019 15:24:03 +0100
Subject: [OpenWrt-Devel] [PATCH] [ubox] kmodloader: increase module name
 length
In-Reply-To: <1550495056-1906-1-git-send-email-sakib@darkstar.site> (Sergiy
 Kibrik's message of "Mon, 18 Feb 2019 15:04:16 +0200")
References: <1550495056-1906-1-git-send-email-sakib@darkstar.site>
Message-ID: <87a7ittbss.fsf@miraculix.mork.no>

Sergiy Kibrik <sakib at darkstar.site> writes:

> Otherwise modules with long names, e.g. lttng (>32 chars) can't be loaded.
>
> Signed-off-by: Sergiy Kibrik <sakib at darkstar.site>
> ---
>  kmodloader.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kmodloader.c b/kmodloader.c
> index 3196deb..67e3706 100644
> --- a/kmodloader.c
> +++ b/kmodloader.c
> @@ -157,7 +157,7 @@ static char* get_module_path(char *name)
>  
>  static char* get_module_name(char *path)
>  {
> -	static char name[33];
> +	static char name[NAME_MAX];
>  	char *t;
>  
>  	strncpy(name, basename(path), sizeof(name) - 1);

Agreed that 33 is not enough, but NAME_MAX is way overkill again.  Why
not use the actual max length from the kernel?:

 include/linux/module.h:#define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN
 include/linux/moduleparam.h:#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))


Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From sakib at darkstar.site  Mon Feb 18 12:38:49 2019
From: sakib at darkstar.site (Sergiy Kibrik)
Date: Mon, 18 Feb 2019 19:38:49 +0200
Subject: [OpenWrt-Devel] [PATCH] [ubox] kmodloader: increase module name
 length
In-Reply-To: <87a7ittbss.fsf@miraculix.mork.no>
References: <1550495056-1906-1-git-send-email-sakib@darkstar.site>
 <87a7ittbss.fsf@miraculix.mork.no>
Message-ID: <48784941-8d00-8521-9039-d1318342dd2e@darkstar.site>

hi Bj?rn,

On 2/18/19 4:24 PM, Bj?rn Mork wrote:
> Agreed that 33 is not enough, but NAME_MAX is way overkill again.  Why
> not use the actual max length from the kernel?:
> 
>  include/linux/module.h:#define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN
>  include/linux/moduleparam.h:#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))

but those aren't exposed to user space.
Or do you suggest to duplicate that (64 - sizeof(unsigned long)) definition?

--
regards,
Sergiy

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 321 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190218/f34fe2ee/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From bjorn at mork.no  Mon Feb 18 13:46:08 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Mon, 18 Feb 2019 19:46:08 +0100
Subject: [OpenWrt-Devel] [PATCH] [ubox] kmodloader: increase module name
 length
In-Reply-To: <48784941-8d00-8521-9039-d1318342dd2e@darkstar.site> (Sergiy
 Kibrik's message of "Mon, 18 Feb 2019 19:38:49 +0200")
References: <1550495056-1906-1-git-send-email-sakib@darkstar.site>
 <87a7ittbss.fsf@miraculix.mork.no>
 <48784941-8d00-8521-9039-d1318342dd2e@darkstar.site>
Message-ID: <871s45sznz.fsf@miraculix.mork.no>

Sergiy Kibrik <sakib at darkstar.site> writes:
> On 2/18/19 4:24 PM, Bj?rn Mork wrote:
>> Agreed that 33 is not enough, but NAME_MAX is way overkill again.  Why
>> not use the actual max length from the kernel?:
>> 
>>  include/linux/module.h:#define MODULE_NAME_LEN MAX_PARAM_PREFIX_LEN
>>  include/linux/moduleparam.h:#define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
>
> but those aren't exposed to user space.
> Or do you suggest to duplicate that (64 - sizeof(unsigned long)) definition?

This is my personal taste only, but yes, I prefer duplicating
definitions to document such relationships. Or at least having a comment
documenting it if some other value is used.  Which would have
immediately exposed the original bug.


Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ynezz at true.cz  Mon Feb 18 13:56:49 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Mon, 18 Feb 2019 19:56:49 +0100
Subject: [OpenWrt-Devel] Random PARTUUID on every rebuild
In-Reply-To: <mailman.21733.1550340849.2376.openwrt-devel@lists.openwrt.org>
References: <mailman.21733.1550340849.2376.openwrt-devel@lists.openwrt.org>
Message-ID: <20190218185649.GC23776@meh.true.cz>

R. Diez via openwrt-devel <openwrt-devel at lists.openwrt.org> [2019-02-16 18:14:14]:

> The one thing I noticed is that there is a random PARTUUID for the X86_64
> target, and that it gets regenerated on every (re)build. This makes the
> image different every time, even if nothing has changed.

PARTUUID can't be the source of the rebuild as PARTUUID is not target or
dependency in the make's build pipeline. The (re)build times here are the same,
with or without ptgen's random signature.

> Is there a reason why this partition ID has to be random? Such things make it
> impossible to do repeatable builds.

It's UUID, so I think it should be unique. It seems like you could use
CONFIG_TARGET_ROOTFS_PARTNAME for fixed root partition name, but by looking at
the code, it might probably need some love to get it working properly.

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From openwrt-devel at lists.openwrt.org  Mon Feb 18 14:28:07 2019
From: openwrt-devel at lists.openwrt.org (R. Diez via openwrt-devel)
Date: Mon, 18 Feb 2019 19:28:07 +0000
Subject: [OpenWrt-Devel] Random PARTUUID on every rebuild
In-Reply-To: <20190218185649.GC23776@meh.true.cz>
References: <mailman.21733.1550340849.2376.openwrt-devel@lists.openwrt.org>
 <20190218185649.GC23776@meh.true.cz>
Message-ID: <mailman.22087.1550518087.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: "R. Diez" <rdiezmail-openwrt at yahoo.com>
Subject: Re: [OpenWrt-Devel] Random PARTUUID on every rebuild
Date: Mon, 18 Feb 2019 20:27:55 +0100
Size: 6893
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190218/97582ef7/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ynezz at true.cz  Mon Feb 18 15:24:45 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Mon, 18 Feb 2019 21:24:45 +0100
Subject: [OpenWrt-Devel] Random PARTUUID on every rebuild
In-Reply-To: <9e10493a-04ad-153d-06bb-449b1de1d910@yahoo.com>
References: <mailman.21733.1550340849.2376.openwrt-devel@lists.openwrt.org>
 <20190218185649.GC23776@meh.true.cz>
 <9e10493a-04ad-153d-06bb-449b1de1d910@yahoo.com>
Message-ID: <20190218202445.GD23776@meh.true.cz>

R. Diez <rdiezmail-openwrt at yahoo.com> [2019-02-18 20:27:55]:

> Besides, like I mentioned in my first mail, this random PARTUUID is an
> obstacle for repeatable builds. In my opinion, repeatable builds is a
> desirable goal. It can help troubleshoot some problems, but it is especially
> interesting from a security point of view. Two independent parties can
> verify that a binary was created from the stated sources. This particular
> UUID issue is listed here as a problem:
> 
> https://reproducible-builds.org/docs/system-images/

Well, one can notice following on IRC:

 -KGB-1:#openwrt-devel- https://tests.reproducible-builds.org/openwrt/openwrt_ramips.html has been updated. 
  (0% images and 99.8% packages reproducible in our current test framework.)

So I would say, that it's just lack of resources, rather then lack of
interest or lack of awareness.

> However, you did not actually give a reason why this OpenWrt PARTUUID has to
> be random at build time.

Simply I just don't know all the details, to give you such answer.  I tend to
believe, that it's named UUID for a reason.

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dedeckeh at gmail.com  Mon Feb 18 15:50:02 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Mon, 18 Feb 2019 21:50:02 +0100
Subject: [OpenWrt-Devel] [PATCH v2] dnsmasq: allow using dnsmasq as the
 sole resolver
In-Reply-To: <20190218141801.7502-1-yszhou4tech@gmail.com>
References: <20190218141801.7502-1-yszhou4tech@gmail.com>
Message-ID: <CAJLcKsH0f8ZERD9pfxy8_62Kxmweo8jiP913rAGR8yabPEUwEg@mail.gmail.com>

On Mon, Feb 18, 2019 at 3:18 PM Yousong Zhou <yszhou4tech at gmail.com> wrote:
>
> Currently it seems impossible to configure /etc/config/dhcp to achieve
> the following use case
>
>  - run dnsmasq with no-resolv
>  - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"
>
> Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
> to achive the 2nd effect above, but setting resolvfile requires noresolv
> being false.
>
> A new boolean option "localuse" is added to indicate that we intend to
> use dnsmasq as the local dns resolver.  It's false by default and to
> align with old behaviour it will be true automatically if resolvfile is
> set to /tmp/resolv.conf.auto
>
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
Acked-by: Hans Dedecker <dedeckeh at gmail.com>
> ---
> v2 <- v1
>
>  - retain /tmp/resolv.conf.auto as the default value of resolvfile when
>    doing config_get, i.e. 2nd patch in the 1st version is now dropped
>  - retain the old behavior of rewriting /tmp/resolv.conf when resolvfile
>    is /tmp/resolv.conf.auto
>
>  .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
>  1 file changed, 15 insertions(+), 15 deletions(-)
>
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index f3066627d6..f65736e268 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -731,7 +731,9 @@ dhcp_relay_add() {
>
>  dnsmasq_start()
>  {
> -       local cfg="$1" disabled resolvfile user_dhcpscript
> +       local cfg="$1"
> +       local disabled user_dhcpscript
> +       local resolvfile localuse
>
>         config_get_bool disabled "$cfg" disabled 0
>         [ "$disabled" -gt 0 ] && return 0
> @@ -882,14 +884,14 @@ dnsmasq_start()
>         config_get_bool cachelocal "$cfg" cachelocal 1
>
>         config_get_bool noresolv "$cfg" noresolv 0
> +       config_get_bool localuse "$cfg" localuse 0
>         if [ "$noresolv" != "1" ]; then
> -               config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
> -               # So jail doesn't complain if file missing
> -               [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
> +               config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
> +               [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> +               xappend "--resolv-file=$resolvfile"
> +               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>         fi
>
> -       [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
> -
>         config_get hostsfile "$cfg" dhcphostsfile
>         [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
>
> @@ -1011,7 +1013,7 @@ dnsmasq_start()
>         mv -f $CONFIGFILE_TMP $CONFIGFILE
>         mv -f $HOSTFILE_TMP $HOSTFILE
>
> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> +       [ "$localuse" -gt 0 ] && {
>                 rm -f /tmp/resolv.conf
>                 [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
>                         echo "search $DOMAIN" >> /tmp/resolv.conf
> @@ -1037,17 +1039,15 @@ dnsmasq_start()
>
>  dnsmasq_stop()
>  {
> -       local cfg="$1" resolvfile
> +       local cfg="$1"
> +       local noresolv resolvfile localuse
>
> +       config_get_bool noresolv "$cfg" noresolv 0
> +       config_get_bool localuse "$cfg" localuse 0
>         config_get resolvfile "$cfg" "resolvfile"
>
> -       #relink /tmp/resolve.conf only for main instance
> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> -               [ -f /tmp/resolv.conf ] && {
> -                       rm -f /tmp/resolv.conf
> -                       ln -s "$resolvfile" /tmp/resolv.conf
> -               }
> -       }
> +       [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> +       [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
>
>         rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
>  }

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Mon Feb 18 15:57:51 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Mon, 18 Feb 2019 12:57:51 -0800
Subject: [OpenWrt-Devel] [PATCH] openssl: backport devcrypto changes from
 master
Message-ID: <20190218205751.21910-1-rosenp@gmail.com>

From: Eneas U de Queiroz via openwrt-devel <openwrt-devel at lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
The patches to the /dev/crypto engine were commited to openssl master,
and will be in the next major version (3.0).

Changes:
- Optimization in computing a digest in one operation, saving an ioctl
- Runtime configuration options for the choice of algorithms to use
- Command to dump useful information about the algorithms supported by
  the engine and the system.
- Build the devcrypto engine as a dynamic module, like other engines.

The devcrypto engine is built as a separate package by default, but
options were added to allow building the engines into the main library.

Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
---
 package/libs/openssl/Config.in                |  35 +-
 package/libs/openssl/Makefile                 |  65 +-
 ...o-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch |  60 ++
 ..._devcrypto-add-configuration-options.patch | 569 ++++++++++++++++++
 ...ypto-add-command-to-dump-driver-info.patch | 275 +++++++++
 ...o-make-the-dev-crypto-engine-dynamic.patch | 336 +++++++++++
 6 files changed, 1322 insertions(+), 18 deletions(-)
 create mode 100644 package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch
 create mode 100644 package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch
 create mode 100644 package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch
 create mode 100644 package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch

diff --git a/package/libs/openssl/Config.in b/package/libs/openssl/Config.in
index 3ad8a66b9e..235f38e787 100644
--- a/package/libs/openssl/Config.in
+++ b/package/libs/openssl/Config.in
@@ -253,18 +253,41 @@ config OPENSSL_ENGINE
 		Note that you need to enable KERNEL_AIO to be able to build the
 		afalg engine package.
 
-config OPENSSL_ENGINE_CRYPTO
+config OPENSSL_ENGINE_BUILTIN
+	bool "Build chosen engines into libcrypto"
+	depends on OPENSSL_ENGINE
+	help
+		This builds all chosen engines into libcrypto.so, instead of building
+		them as dynamic engines in separate packages.
+		The benefit of building the engines into libcrypto is that they won't
+		require any configuration to be used by default.
+
+config OPENSSL_ENGINE_BUILTIN_AFALG
 	bool
-	select OPENSSL_ENGINE
-	select PACKAGE_kmod-cryptodev
+	prompt "Acceleration support through AF_ALG sockets engine"
+	depends on OPENSSL_ENGINE_BUILTIN && KERNEL_AIO && !LINUX_3_18
 	select PACKAGE_libopenssl-conf
+	help
+		This enables use of hardware acceleration through the
+		AF_ALG kenrel interface.
+
+config OPENSSL_ENGINE_BUILTIN_DEVCRYPTO
+	bool
 	prompt "Acceleration support through /dev/crypto"
+	depends on OPENSSL_ENGINE_BUILTIN
+	select PACKAGE_libopenssl-conf
 	help
 		This enables use of hardware acceleration through OpenBSD
 		Cryptodev API (/dev/crypto) interface.
-		You must install kmod-cryptodev (under Kernel modules, Cryptographic
-		API modules) for /dev/crypto to show up and use hardware
-		acceleration; otherwise it falls back to software.
+
+config OPENSSL_ENGINE_BUILTIN_PADLOCK
+	bool
+	prompt "VIA Padlock Acceleration support engine"
+	depends on OPENSSL_ENGINE_BUILTIN && TARGET_x86
+	select PACKAGE_libopenssl-conf
+	help
+		This enables use of hardware acceleration through the
+		VIA Padlock module.
 
 config OPENSSL_WITH_ASYNC
 	bool
diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile
index 732e3eb1cb..9b97b5399b 100644
--- a/package/libs/openssl/Makefile
+++ b/package/libs/openssl/Makefile
@@ -32,7 +32,10 @@ PKG_LICENSE_FILES:=LICENSE
 PKG_CPE_ID:=cpe:/a:openssl:openssl
 PKG_CONFIG_DEPENDS:= \
 	CONFIG_OPENSSL_ENGINE \
-	CONFIG_OPENSSL_ENGINE_CRYPTO \
+	CONFIG_OPENSSL_ENGINE_BUILTIN \
+	CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG \
+	CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO \
+	CONFIG_OPENSSL_ENGINE_BUILTIN_PADLOCK \
 	CONFIG_OPENSSL_NO_DEPRECATED \
 	CONFIG_OPENSSL_OPTIMIZE_SPEED \
 	CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM \
@@ -89,7 +92,10 @@ endef
 define Package/libopenssl
 $(call Package/openssl/Default)
   SUBMENU:=SSL
-  DEPENDS:=+OPENSSL_WITH_COMPRESSION:zlib
+  DEPENDS:=+OPENSSL_WITH_COMPRESSION:zlib \
+	   +OPENSSL_ENGINE_BUILTIN_AFALG:kmod-crypto-user \
+	   +OPENSSL_ENGINE_BUILTIN_DEVCRYPTO:kmod-cryptodev \
+	   +OPENSSL_ENGINE_BUILTIN_PADLOCK:kmod-crypto-hw-padlock
   TITLE+= (libraries)
   ABI_VERSION:=1.1
   MENU:=1
@@ -134,7 +140,7 @@ define Package/libopenssl-afalg
   SUBMENU:=SSL
   TITLE:=AFALG hardware acceleration engine
   DEPENDS:=libopenssl @OPENSSL_ENGINE @KERNEL_AIO @!LINUX_3_18 +kmod-crypto-user \
-	   +libopenssl-conf
+	   +libopenssl-conf @!OPENSSL_ENGINE_BUILTIN
 endef
 
 define Package/libopenssl-afalg/description
@@ -145,12 +151,28 @@ See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-
 The engine_id is "afalg"
 endef
 
+define Package/libopenssl-devcrypto
+  $(call Package/openssl/Default)
+  SUBMENU:=SSL
+  TITLE:=/dev/crypto hardware acceleration engine
+  DEPENDS:=libopenssl @OPENSSL_ENGINE +kmod-cryptodev +libopenssl-conf \
+	   @!OPENSSL_ENGINE_BUILTIN
+endef
+
+define Package/libopenssl-devcrypto/description
+This package adds an engine that enables hardware acceleration
+through the /dev/crypto kernel interface.
+To use it, you need to configure the engine in /etc/ssl/openssl.cnf
+See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-Module
+The engine_id is "devcrypto"
+endef
+
 define Package/libopenssl-padlock
   $(call Package/openssl/Default)
   SUBMENU:=SSL
   TITLE:=VIA Padlock hardware acceleration engine
   DEPENDS:=libopenssl @OPENSSL_ENGINE @TARGET_x86 +kmod-crypto-hw-padlock \
-	   +libopenssl-conf
+	   +libopenssl-conf @!OPENSSL_ENGINE_BUILTIN
 endef
 
 define Package/libopenssl-padlock/description
@@ -241,14 +263,27 @@ else
 endif
 
 ifdef CONFIG_OPENSSL_ENGINE
-  ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
-    OPENSSL_OPTIONS += enable-devcryptoeng
-  endif
-  ifndef CONFIG_PACKAGE_libopenssl-afalg
-    OPENSSL_OPTIONS += no-afalgeng
-  endif
-  ifndef CONFIG_PACKAGE_libopenssl-padlock
-    OPENSSL_OPTIONS += no-hw-padlock
+  ifdef CONFIG_OPENSSL_ENGINE_BUILTIN
+    OPENSSL_OPTIONS += disable-dynamic-engine
+    ifndef CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG
+      OPENSSL_OPTIONS += no-afalgeng
+    endif
+    ifdef CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO
+      OPENSSL_OPTIONS += enable-devcryptoeng
+    endif
+    ifndef CONFIG_OPENSSL_ENGINE_BUILTIN_PADLOCK
+      OPENSSL_OPTIONS += no-hw-padlock
+    endif
+  else
+    ifdef CONFIG_PACKAGE_libopenssl-devcrypto
+      OPENSSL_OPTIONS += enable-devcryptoeng
+    endif
+    ifndef CONFIG_PACKAGE_libopenssl-afalg
+      OPENSSL_OPTIONS += no-afalgeng
+    endif
+    ifndef CONFIG_PACKAGE_libopenssl-padlock
+      OPENSSL_OPTIONS += no-hw-padlock
+    endif
   endif
 else
   OPENSSL_OPTIONS += no-engine
@@ -364,6 +399,11 @@ define Package/libopenssl-afalg/install
 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/afalg.so $(1)/usr/lib/$(ENGINES_DIR)
 endef
 
+define Package/libopenssl-devcrypto/install
+	$(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
+	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/devcrypto.so $(1)/usr/lib/$(ENGINES_DIR)
+endef
+
 define Package/libopenssl-padlock/install
 	$(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
 	$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/*padlock.so $(1)/usr/lib/$(ENGINES_DIR)
@@ -372,5 +412,6 @@ endef
 $(eval $(call BuildPackage,libopenssl))
 $(eval $(call BuildPackage,libopenssl-conf))
 $(eval $(call BuildPackage,libopenssl-afalg))
+$(eval $(call BuildPackage,libopenssl-devcrypto))
 $(eval $(call BuildPackage,libopenssl-padlock))
 $(eval $(call BuildPackage,openssl-util))
diff --git a/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch b/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch
new file mode 100644
index 0000000000..7be26825fd
--- /dev/null
+++ b/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch
@@ -0,0 +1,60 @@
+From b7b15970499007b0aa820e26565a8fca267f91ea Mon Sep 17 00:00:00 2001
+From: Eneas U de Queiroz <cote2004-github at yahoo.com>
+Date: Mon, 5 Nov 2018 15:54:17 -0200
+Subject: [PATCH 1/4] eng_devcrypto: save ioctl if EVP_MD_..FLAG_ONESHOT
+
+Since each ioctl causes a context switch, slowing things down, if
+EVP_MD_CTX_FLAG_ONESHOT is set, then:
+ - call the ioctl in digest_update, saving the result; and
+ - just copy the result in digest_final, instead of using another ioctl.
+
+Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
+
+Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
+Reviewed-by: Richard Levitte <levitte at openssl.org>
+(Merged from https://github.com/openssl/openssl/pull/7585)
+
+diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
+index 0c49238901..2d6cf5e478 100644
+--- a/crypto/engine/eng_devcrypto.c
++++ b/crypto/engine/eng_devcrypto.c
+@@ -460,6 +460,7 @@ struct digest_ctx {
+     struct session_op sess;
+     /* This signals that the init function was called, not that it succeeded. */
+     int init_called;
++    unsigned char digest_res[HASH_MAX_LEN];
+ };
+ 
+ static const struct digest_data_st {
+@@ -562,12 +563,15 @@ static int digest_update(EVP_MD_CTX *ctx, const void *data, size_t count)
+     if (digest_ctx == NULL)
+         return 0;
+ 
+-    if (digest_op(digest_ctx, data, count, NULL, COP_FLAG_UPDATE) < 0) {
+-        SYSerr(SYS_F_IOCTL, errno);
+-        return 0;
++    if (EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_ONESHOT)) {
++        if (digest_op(digest_ctx, data, count, digest_ctx->digest_res, 0) >= 0)
++            return 1;
++    } else if (digest_op(digest_ctx, data, count, NULL, COP_FLAG_UPDATE) >= 0) {
++        return 1;
+     }
+ 
+-    return 1;
++    SYSerr(SYS_F_IOCTL, errno);
++    return 0;
+ }
+ 
+ static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
+@@ -577,7 +581,10 @@ static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
+ 
+     if (md == NULL || digest_ctx == NULL)
+         return 0;
+-    if (digest_op(digest_ctx, NULL, 0, md, COP_FLAG_FINAL) < 0) {
++
++    if (EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_ONESHOT)) {
++        memcpy(md, digest_ctx->digest_res, EVP_MD_CTX_size(ctx));
++    } else if (digest_op(digest_ctx, NULL, 0, md, COP_FLAG_FINAL) < 0) {
+         SYSerr(SYS_F_IOCTL, errno);
+         return 0;
+     }
diff --git a/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch b/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch
new file mode 100644
index 0000000000..962bb062ce
--- /dev/null
+++ b/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch
@@ -0,0 +1,569 @@
+From 2454b0c23056584a8e1df6a0cafb282884d660c2 Mon Sep 17 00:00:00 2001
+From: Eneas U de Queiroz <cote2004-github at yahoo.com>
+Date: Sat, 3 Nov 2018 15:41:10 -0300
+Subject: [PATCH 2/4] eng_devcrypto: add configuration options
+
+USE_SOFTDRIVERS: whether to use software (not accelerated) drivers
+CIPHERS: list of ciphers to enable
+DIGESTS: list of digests to enable
+
+Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
+
+Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
+Reviewed-by: Richard Levitte <levitte at openssl.org>
+(Merged from https://github.com/openssl/openssl/pull/7585)
+
+diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
+index 2d6cf5e478..97e0ead194 100644
+--- a/crypto/engine/eng_devcrypto.c
++++ b/crypto/engine/eng_devcrypto.c
+@@ -16,6 +16,7 @@
+ #include <unistd.h>
+ #include <assert.h>
+ 
++#include <openssl/conf.h>
+ #include <openssl/evp.h>
+ #include <openssl/err.h>
+ #include <openssl/engine.h>
+@@ -34,6 +35,30 @@
+  * saner...  why re-open /dev/crypto for every session?
+  */
+ static int cfd;
++#define DEVCRYPTO_REQUIRE_ACCELERATED 0 /* require confirmation of acceleration */
++#define DEVCRYPTO_USE_SOFTWARE        1 /* allow software drivers */
++#define DEVCRYPTO_REJECT_SOFTWARE     2 /* only disallow confirmed software drivers */
++
++#define DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS DEVCRYPTO_REJECT_SOFTWARE
++static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
++
++/*
++ * cipher/digest status & acceleration definitions
++ * Make sure the defaults are set to 0
++ */
++struct driver_info_st {
++    enum devcrypto_status_t {
++        DEVCRYPTO_STATUS_UNUSABLE       = -1, /* session open failed */
++        DEVCRYPTO_STATUS_UNKNOWN        =  0, /* not tested yet */
++        DEVCRYPTO_STATUS_USABLE         =  1  /* algo can be used */
++    } status;
++
++    enum devcrypto_accelerated_t {
++        DEVCRYPTO_NOT_ACCELERATED       = -1, /* software implemented */
++        DEVCRYPTO_ACCELERATION_UNKNOWN  =  0, /* acceleration support unkown */
++        DEVCRYPTO_ACCELERATED           =  1  /* hardware accelerated */
++    } accelerated;
++};
+ 
+ static int clean_devcrypto_session(struct session_op *sess) {
+     if (ioctl(cfd, CIOCFSESSION, &sess->ses) < 0) {
+@@ -117,13 +142,22 @@ static const struct cipher_data_st {
+ #endif
+ };
+ 
+-static size_t get_cipher_data_index(int nid)
++static size_t find_cipher_data_index(int nid)
+ {
+     size_t i;
+ 
+     for (i = 0; i < OSSL_NELEM(cipher_data); i++)
+         if (nid == cipher_data[i].nid)
+             return i;
++    return (size_t)-1;
++}
++
++static size_t get_cipher_data_index(int nid)
++{
++    size_t i = find_cipher_data_index(nid);
++
++    if (i != (size_t)-1)
++        return i;
+ 
+     /*
+      * Code further down must make sure that only NIDs in the table above
+@@ -332,19 +366,40 @@ static int cipher_cleanup(EVP_CIPHER_CTX *ctx)
+ }
+ 
+ /*
+- * Keep a table of known nids and associated methods.
++ * Keep tables of known nids, associated methods, selected ciphers, and driver
++ * info.
+  * Note that known_cipher_nids[] isn't necessarily indexed the same way as
+- * cipher_data[] above, which known_cipher_methods[] is.
++ * cipher_data[] above, which the other tables are.
+  */
+ static int known_cipher_nids[OSSL_NELEM(cipher_data)];
+ static int known_cipher_nids_amount = -1; /* -1 indicates not yet initialised */
+ static EVP_CIPHER *known_cipher_methods[OSSL_NELEM(cipher_data)] = { NULL, };
++static int selected_ciphers[OSSL_NELEM(cipher_data)];
++static struct driver_info_st cipher_driver_info[OSSL_NELEM(cipher_data)];
++
++
++static int devcrypto_test_cipher(size_t cipher_data_index)
++{
++    return (cipher_driver_info[cipher_data_index].status == DEVCRYPTO_STATUS_USABLE
++            && selected_ciphers[cipher_data_index] == 1
++            && (cipher_driver_info[cipher_data_index].accelerated
++                    == DEVCRYPTO_ACCELERATED
++                || use_softdrivers == DEVCRYPTO_USE_SOFTWARE
++                || (cipher_driver_info[cipher_data_index].accelerated
++                        != DEVCRYPTO_NOT_ACCELERATED
++                    && use_softdrivers == DEVCRYPTO_REJECT_SOFTWARE)));
++}
+ 
+ static void prepare_cipher_methods(void)
+ {
+     size_t i;
+     struct session_op sess;
+     unsigned long cipher_mode;
++#ifdef CIOCGSESSINFO
++    struct session_info_op siop;
++#endif
++
++    memset(&cipher_driver_info, 0, sizeof(cipher_driver_info));
+ 
+     memset(&sess, 0, sizeof(sess));
+     sess.key = (void *)"01234567890123456789012345678901234567890123456789";
+@@ -352,15 +407,16 @@ static void prepare_cipher_methods(void)
+     for (i = 0, known_cipher_nids_amount = 0;
+          i < OSSL_NELEM(cipher_data); i++) {
+ 
++        selected_ciphers[i] = 1;
+         /*
+-         * Check that the algo is really availably by trying to open and close
+-         * a session.
++         * Check that the cipher is usable
+          */
+         sess.cipher = cipher_data[i].devcryptoid;
+         sess.keylen = cipher_data[i].keylen;
+-        if (ioctl(cfd, CIOCGSESSION, &sess) < 0
+-            || ioctl(cfd, CIOCFSESSION, &sess.ses) < 0)
++        if (ioctl(cfd, CIOCGSESSION, &sess) < 0) {
++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
+             continue;
++        }
+ 
+         cipher_mode = cipher_data[i].flags & EVP_CIPH_MODE;
+ 
+@@ -386,15 +442,41 @@ static void prepare_cipher_methods(void)
+                                             cipher_cleanup)
+             || !EVP_CIPHER_meth_set_impl_ctx_size(known_cipher_methods[i],
+                                                   sizeof(struct cipher_ctx))) {
++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
+             EVP_CIPHER_meth_free(known_cipher_methods[i]);
+             known_cipher_methods[i] = NULL;
+         } else {
++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
++#ifdef CIOCGSESSINFO
++            siop.ses = sess.ses;
++            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
++                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
++            else if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
++                cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
++            else
++                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
++#endif /* CIOCGSESSINFO */
++        }
++        ioctl(cfd, CIOCFSESSION, &sess.ses);
++        if (devcrypto_test_cipher(i)) {
+             known_cipher_nids[known_cipher_nids_amount++] =
+                 cipher_data[i].nid;
+         }
+     }
+ }
+ 
++static void rebuild_known_cipher_nids(ENGINE *e)
++{
++    size_t i;
++
++    for (i = 0, known_cipher_nids_amount = 0; i < OSSL_NELEM(cipher_data); i++) {
++        if (devcrypto_test_cipher(i))
++            known_cipher_nids[known_cipher_nids_amount++] = cipher_data[i].nid;
++    }
++    ENGINE_unregister_ciphers(e);
++    ENGINE_register_ciphers(e);
++}
++
+ static const EVP_CIPHER *get_cipher_method(int nid)
+ {
+     size_t i = get_cipher_data_index(nid);
+@@ -437,6 +519,36 @@ static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
+     return *cipher != NULL;
+ }
+ 
++static void devcrypto_select_all_ciphers(int *cipher_list)
++{
++    size_t i;
++
++    for (i = 0; i < OSSL_NELEM(cipher_data); i++)
++        cipher_list[i] = 1;
++}
++
++static int cryptodev_select_cipher_cb(const char *str, int len, void *usr)
++{
++    int *cipher_list = (int *)usr;
++    char *name;
++    const EVP_CIPHER *EVP;
++    size_t i;
++
++    if (len == 0)
++        return 1;
++    if (usr == NULL || (name = OPENSSL_strndup(str, len)) == NULL)
++        return 0;
++    EVP = EVP_get_cipherbyname(name);
++    if (EVP == NULL)
++        fprintf(stderr, "devcrypto: unknown cipher %s\n", name);
++    else if ((i = find_cipher_data_index(EVP_CIPHER_nid(EVP))) != (size_t)-1)
++        cipher_list[i] = 1;
++    else
++        fprintf(stderr, "devcrypto: cipher %s not available\n", name);
++    OPENSSL_free(name);
++    return 1;
++}
++
+ /*
+  * We only support digests if the cryptodev implementation supports multiple
+  * data updates and session copying.  Otherwise, we would be forced to maintain
+@@ -491,13 +603,22 @@ static const struct digest_data_st {
+ #endif
+ };
+ 
+-static size_t get_digest_data_index(int nid)
++static size_t find_digest_data_index(int nid)
+ {
+     size_t i;
+ 
+     for (i = 0; i < OSSL_NELEM(digest_data); i++)
+         if (nid == digest_data[i].nid)
+             return i;
++    return (size_t)-1;
++}
++
++static size_t get_digest_data_index(int nid)
++{
++    size_t i = find_digest_data_index(nid);
++
++    if (i != (size_t)-1)
++        return i;
+ 
+     /*
+      * Code further down must make sure that only NIDs in the table above
+@@ -514,8 +635,8 @@ static const struct digest_data_st *get_digest_data(int nid)
+ }
+ 
+ /*
+- * Following are the four necessary functions to map OpenSSL functionality
+- * with cryptodev.
++ * Following are the five necessary functions to map OpenSSL functionality
++ * with cryptodev: init, update, final, cleanup, and copy.
+  */
+ 
+ static int digest_init(EVP_MD_CTX *ctx)
+@@ -628,52 +749,94 @@ static int digest_cleanup(EVP_MD_CTX *ctx)
+     return clean_devcrypto_session(&digest_ctx->sess);
+ }
+ 
+-static int devcrypto_test_digest(size_t digest_data_index)
+-{
+-    struct session_op sess1, sess2;
+-    struct cphash_op cphash;
+-    int ret=0;
+-
+-    memset(&sess1, 0, sizeof(sess1));
+-    memset(&sess2, 0, sizeof(sess2));
+-    sess1.mac = digest_data[digest_data_index].devcryptoid;
+-    if (ioctl(cfd, CIOCGSESSION, &sess1) < 0)
+-        return 0;
+-    /* Make sure the driver is capable of hash state copy */
+-    sess2.mac = sess1.mac;
+-    if (ioctl(cfd, CIOCGSESSION, &sess2) >= 0) {
+-        cphash.src_ses = sess1.ses;
+-        cphash.dst_ses = sess2.ses;
+-        if (ioctl(cfd, CIOCCPHASH, &cphash) >= 0)
+-            ret = 1;
+-        ioctl(cfd, CIOCFSESSION, &sess2.ses);
+-    }
+-    ioctl(cfd, CIOCFSESSION, &sess1.ses);
+-    return ret;
+-}
+-
+ /*
+- * Keep a table of known nids and associated methods.
++ * Keep tables of known nids, associated methods, selected digests, and
++ * driver info.
+  * Note that known_digest_nids[] isn't necessarily indexed the same way as
+- * digest_data[] above, which known_digest_methods[] is.
++ * digest_data[] above, which the other tables are.
+  */
+ static int known_digest_nids[OSSL_NELEM(digest_data)];
+ static int known_digest_nids_amount = -1; /* -1 indicates not yet initialised */
+ static EVP_MD *known_digest_methods[OSSL_NELEM(digest_data)] = { NULL, };
++static int selected_digests[OSSL_NELEM(digest_data)];
++static struct driver_info_st digest_driver_info[OSSL_NELEM(digest_data)];
++
++static int devcrypto_test_digest(size_t digest_data_index)
++{
++    return (digest_driver_info[digest_data_index].status == DEVCRYPTO_STATUS_USABLE
++            && selected_digests[digest_data_index] == 1
++            && (digest_driver_info[digest_data_index].accelerated
++                    == DEVCRYPTO_ACCELERATED
++                || use_softdrivers == DEVCRYPTO_USE_SOFTWARE
++                || (digest_driver_info[digest_data_index].accelerated
++                        != DEVCRYPTO_NOT_ACCELERATED
++                    && use_softdrivers == DEVCRYPTO_REJECT_SOFTWARE)));
++}
++
++static void rebuild_known_digest_nids(ENGINE *e)
++{
++    size_t i;
++
++    for (i = 0, known_digest_nids_amount = 0; i < OSSL_NELEM(digest_data); i++) {
++        if (devcrypto_test_digest(i))
++            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
++    }
++    ENGINE_unregister_digests(e);
++    ENGINE_register_digests(e);
++}
+ 
+ static void prepare_digest_methods(void)
+ {
+     size_t i;
++    struct session_op sess1, sess2;
++#ifdef CIOCGSESSINFO
++    struct session_info_op siop;
++#endif
++    struct cphash_op cphash;
++
++    memset(&digest_driver_info, 0, sizeof(digest_driver_info));
++
++    memset(&sess1, 0, sizeof(sess1));
++    memset(&sess2, 0, sizeof(sess2));
+ 
+     for (i = 0, known_digest_nids_amount = 0; i < OSSL_NELEM(digest_data);
+          i++) {
+ 
++        selected_digests[i] = 1;
++
+         /*
+-         * Check that the algo is usable
++         * Check that the digest is usable
+          */
+-        if (!devcrypto_test_digest(i))
+-            continue;
++        sess1.mac = digest_data[i].devcryptoid;
++        sess2.ses = 0;
++        if (ioctl(cfd, CIOCGSESSION, &sess1) < 0) {
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            goto finish;
++        }
+ 
++#ifdef CIOCGSESSINFO
++        /* gather hardware acceleration info from the driver */
++        siop.ses = sess1.ses;
++        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
++            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
++        else if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
++            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
++        else
++            digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
++#endif
++
++        /* digest must be capable of hash state copy */
++        sess2.mac = sess1.mac;
++        if (ioctl(cfd, CIOCGSESSION, &sess2) < 0) {
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            goto finish;
++        }
++        cphash.src_ses = sess1.ses;
++        cphash.dst_ses = sess2.ses;
++        if (ioctl(cfd, CIOCCPHASH, &cphash) < 0) {
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            goto finish;
++        }
+         if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid,
+                                                        NID_undef)) == NULL
+             || !EVP_MD_meth_set_result_size(known_digest_methods[i],
+@@ -685,11 +848,18 @@ static void prepare_digest_methods(void)
+             || !EVP_MD_meth_set_cleanup(known_digest_methods[i], digest_cleanup)
+             || !EVP_MD_meth_set_app_datasize(known_digest_methods[i],
+                                              sizeof(struct digest_ctx))) {
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
+             EVP_MD_meth_free(known_digest_methods[i]);
+             known_digest_methods[i] = NULL;
+-        } else {
+-            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
++            goto finish;
+         }
++        digest_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
++finish:
++        ioctl(cfd, CIOCFSESSION, &sess1.ses);
++        if (sess2.ses != 0)
++            ioctl(cfd, CIOCFSESSION, &sess2.ses);
++        if (devcrypto_test_digest(i))
++            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
+     }
+ }
+ 
+@@ -735,8 +905,154 @@ static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
+     return *digest != NULL;
+ }
+ 
++static void devcrypto_select_all_digests(int *digest_list)
++{
++    size_t i;
++
++    for (i = 0; i < OSSL_NELEM(digest_data); i++)
++        digest_list[i] = 1;
++}
++
++static int cryptodev_select_digest_cb(const char *str, int len, void *usr)
++{
++    int *digest_list = (int *)usr;
++    char *name;
++    const EVP_MD *EVP;
++    size_t i;
++
++    if (len == 0)
++        return 1;
++    if (usr == NULL || (name = OPENSSL_strndup(str, len)) == NULL)
++        return 0;
++    EVP = EVP_get_digestbyname(name);
++    if (EVP == NULL)
++        fprintf(stderr, "devcrypto: unknown digest %s\n", name);
++    else if ((i = find_digest_data_index(EVP_MD_type(EVP))) != (size_t)-1)
++        digest_list[i] = 1;
++    else
++        fprintf(stderr, "devcrypto: digest %s not available\n", name);
++    OPENSSL_free(name);
++    return 1;
++}
++
++#endif
++
++/******************************************************************************
++ *
++ * CONTROL COMMANDS
++ *
++ *****/
++
++#define DEVCRYPTO_CMD_USE_SOFTDRIVERS ENGINE_CMD_BASE
++#define DEVCRYPTO_CMD_CIPHERS (ENGINE_CMD_BASE + 1)
++#define DEVCRYPTO_CMD_DIGESTS (ENGINE_CMD_BASE + 2)
++#define DEVCRYPTO_CMD_DUMP_INFO (ENGINE_CMD_BASE + 3)
++
++/* Helper macros for CPP string composition */
++#ifndef OPENSSL_MSTR
++# define OPENSSL_MSTR_HELPER(x) #x
++# define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x)
++#endif
++
++static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
++#ifdef CIOCGSESSINFO
++   {DEVCRYPTO_CMD_USE_SOFTDRIVERS,
++    "USE_SOFTDRIVERS",
++    "specifies whether to use software (not accelerated) drivers ("
++        OPENSSL_MSTR(DEVCRYPTO_REQUIRE_ACCELERATED) "=use only accelerated drivers, "
++        OPENSSL_MSTR(DEVCRYPTO_USE_SOFTWARE) "=allow all drivers, "
++        OPENSSL_MSTR(DEVCRYPTO_REJECT_SOFTWARE)
++        "=use if acceleration can't be determined) [default="
++        OPENSSL_MSTR(DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS) "]",
++    ENGINE_CMD_FLAG_NUMERIC},
++#endif
++
++   {DEVCRYPTO_CMD_CIPHERS,
++    "CIPHERS",
++    "either ALL, NONE, or a comma-separated list of ciphers to enable [default=ALL]",
++    ENGINE_CMD_FLAG_STRING},
++
++#ifdef IMPLEMENT_DIGEST
++   {DEVCRYPTO_CMD_DIGESTS,
++    "DIGESTS",
++    "either ALL, NONE, or a comma-separated list of digests to enable [default=ALL]",
++    ENGINE_CMD_FLAG_STRING},
+ #endif
+ 
++   {0, NULL, NULL, 0}
++};
++
++static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
++{
++    int *new_list;
++    switch (cmd) {
++#ifdef CIOCGSESSINFO
++    case DEVCRYPTO_CMD_USE_SOFTDRIVERS:
++        switch (i) {
++        case DEVCRYPTO_REQUIRE_ACCELERATED:
++        case DEVCRYPTO_USE_SOFTWARE:
++        case DEVCRYPTO_REJECT_SOFTWARE:
++            break;
++        default:
++            fprintf(stderr, "devcrypto: invalid value (%ld) for USE_SOFTDRIVERS\n", i);
++            return 0;
++        }
++        if (use_softdrivers == i)
++            return 1;
++        use_softdrivers = i;
++#ifdef IMPLEMENT_DIGEST
++        rebuild_known_digest_nids(e);
++#endif
++        rebuild_known_cipher_nids(e);
++        return 1;
++#endif /* CIOCGSESSINFO */
++
++    case DEVCRYPTO_CMD_CIPHERS:
++        if (p == NULL)
++            return 1;
++        if (strcasecmp((const char *)p, "ALL") == 0) {
++            devcrypto_select_all_ciphers(selected_ciphers);
++        } else if (strcasecmp((const char*)p, "NONE") == 0) {
++            memset(selected_ciphers, 0, sizeof(selected_ciphers));
++        } else {
++            new_list=OPENSSL_zalloc(sizeof(selected_ciphers));
++            if (!CONF_parse_list(p, ',', 1, cryptodev_select_cipher_cb, new_list)) {
++                OPENSSL_free(new_list);
++                return 0;
++            }
++            memcpy(selected_ciphers, new_list, sizeof(selected_ciphers));
++            OPENSSL_free(new_list);
++        }
++        rebuild_known_cipher_nids(e);
++        return 1;
++
++#ifdef IMPLEMENT_DIGEST
++    case DEVCRYPTO_CMD_DIGESTS:
++        if (p == NULL)
++            return 1;
++        if (strcasecmp((const char *)p, "ALL") == 0) {
++            devcrypto_select_all_digests(selected_digests);
++        } else if (strcasecmp((const char*)p, "NONE") == 0) {
++            memset(selected_digests, 0, sizeof(selected_digests));
++        } else {
++            new_list=OPENSSL_zalloc(sizeof(selected_digests));
++            if (!CONF_parse_list(p, ',', 1, cryptodev_select_digest_cb, new_list)) {
++                OPENSSL_free(new_list);
++                return 0;
++            }
++            memcpy(selected_digests, new_list, sizeof(selected_digests));
++            OPENSSL_free(new_list);
++        }
++        rebuild_known_digest_nids(e);
++        return 1;
++#endif /* IMPLEMENT_DIGEST */
++
++    default:
++        break;
++    }
++    return 0;
++}
++
+ /******************************************************************************
+  *
+  * LOAD / UNLOAD
+@@ -786,6 +1102,8 @@ void engine_load_devcrypto_int()
+ 
+     if (!ENGINE_set_id(e, "devcrypto")
+         || !ENGINE_set_name(e, "/dev/crypto engine")
++        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
++        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl)
+ 
+ /*
+  * Asymmetric ciphers aren't well supported with /dev/crypto.  Among the BSD
diff --git a/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch b/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch
new file mode 100644
index 0000000000..d6b687fb61
--- /dev/null
+++ b/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch
@@ -0,0 +1,275 @@
+From fe2c6804d82eaabc592fe78755c4329e4e193fb9 Mon Sep 17 00:00:00 2001
+From: Eneas U de Queiroz <cote2004-github at yahoo.com>
+Date: Tue, 6 Nov 2018 22:54:07 -0200
+Subject: [PATCH 3/4] eng_devcrypto: add command to dump driver info
+
+This is useful to determine the kernel driver running each algorithm.
+
+Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
+
+Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
+Reviewed-by: Richard Levitte <levitte at openssl.org>
+(Merged from https://github.com/openssl/openssl/pull/7585)
+
+diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
+index 97e0ead194..e9d67d9f1d 100644
+--- a/crypto/engine/eng_devcrypto.c
++++ b/crypto/engine/eng_devcrypto.c
+@@ -48,16 +48,20 @@ static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
+  */
+ struct driver_info_st {
+     enum devcrypto_status_t {
+-        DEVCRYPTO_STATUS_UNUSABLE       = -1, /* session open failed */
+-        DEVCRYPTO_STATUS_UNKNOWN        =  0, /* not tested yet */
+-        DEVCRYPTO_STATUS_USABLE         =  1  /* algo can be used */
++        DEVCRYPTO_STATUS_FAILURE         = -3, /* unusable for other reason */
++        DEVCRYPTO_STATUS_NO_CIOCCPHASH   = -2, /* hash state copy not supported */
++        DEVCRYPTO_STATUS_NO_CIOCGSESSION = -1, /* session open failed */
++        DEVCRYPTO_STATUS_UNKNOWN         =  0, /* not tested yet */
++        DEVCRYPTO_STATUS_USABLE          =  1  /* algo can be used */
+     } status;
+ 
+     enum devcrypto_accelerated_t {
+-        DEVCRYPTO_NOT_ACCELERATED       = -1, /* software implemented */
+-        DEVCRYPTO_ACCELERATION_UNKNOWN  =  0, /* acceleration support unkown */
+-        DEVCRYPTO_ACCELERATED           =  1  /* hardware accelerated */
++        DEVCRYPTO_NOT_ACCELERATED        = -1, /* software implemented */
++        DEVCRYPTO_ACCELERATION_UNKNOWN   =  0, /* acceleration support unkown */
++        DEVCRYPTO_ACCELERATED            =  1  /* hardware accelerated */
+     } accelerated;
++
++    char *driver_name;
+ };
+ 
+ static int clean_devcrypto_session(struct session_op *sess) {
+@@ -414,7 +418,7 @@ static void prepare_cipher_methods(void)
+         sess.cipher = cipher_data[i].devcryptoid;
+         sess.keylen = cipher_data[i].keylen;
+         if (ioctl(cfd, CIOCGSESSION, &sess) < 0) {
+-            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCGSESSION;
+             continue;
+         }
+ 
+@@ -442,19 +446,24 @@ static void prepare_cipher_methods(void)
+                                             cipher_cleanup)
+             || !EVP_CIPHER_meth_set_impl_ctx_size(known_cipher_methods[i],
+                                                   sizeof(struct cipher_ctx))) {
+-            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
+             EVP_CIPHER_meth_free(known_cipher_methods[i]);
+             known_cipher_methods[i] = NULL;
+         } else {
+             cipher_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
+ #ifdef CIOCGSESSINFO
+             siop.ses = sess.ses;
+-            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
++            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0) {
+                 cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
+-            else if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
+-                cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
+-            else
+-                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
++            } else {
++                cipher_driver_info[i].driver_name =
++                    OPENSSL_strndup(siop.cipher_info.cra_driver_name,
++                                    CRYPTODEV_MAX_ALG_NAME);
++                if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
++                    cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
++                else
++                    cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
++            }
+ #endif /* CIOCGSESSINFO */
+         }
+         ioctl(cfd, CIOCFSESSION, &sess.ses);
+@@ -504,8 +513,11 @@ static void destroy_all_cipher_methods(void)
+ {
+     size_t i;
+ 
+-    for (i = 0; i < OSSL_NELEM(cipher_data); i++)
++    for (i = 0; i < OSSL_NELEM(cipher_data); i++) {
+         destroy_cipher_method(cipher_data[i].nid);
++        OPENSSL_free(cipher_driver_info[i].driver_name);
++        cipher_driver_info[i].driver_name = NULL;
++    }
+ }
+ 
+ static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
+@@ -549,6 +561,40 @@ static int cryptodev_select_cipher_cb(const char *str, int len, void *usr)
+     return 1;
+ }
+ 
++static void dump_cipher_info(void)
++{
++    size_t i;
++    const char *name;
++
++    fprintf (stderr, "Information about ciphers supported by the /dev/crypto"
++             " engine:\n");
++#ifndef CIOCGSESSINFO
++    fprintf(stderr, "CIOCGSESSINFO (session info call) unavailable\n");
++#endif
++    for (i = 0; i < OSSL_NELEM(cipher_data); i++) {
++        name = OBJ_nid2sn(cipher_data[i].nid);
++        fprintf (stderr, "Cipher %s, NID=%d, /dev/crypto info: id=%d, ",
++                 name ? name : "unknown", cipher_data[i].nid,
++                 cipher_data[i].devcryptoid);
++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCGSESSION ) {
++            fprintf (stderr, "CIOCGSESSION (session open call) failed\n");
++            continue;
++        }
++        fprintf (stderr, "driver=%s ", cipher_driver_info[i].driver_name ?
++                 cipher_driver_info[i].driver_name : "unknown");
++        if (cipher_driver_info[i].accelerated == DEVCRYPTO_ACCELERATED)
++            fprintf(stderr, "(hw accelerated)");
++        else if (cipher_driver_info[i].accelerated == DEVCRYPTO_NOT_ACCELERATED)
++            fprintf(stderr, "(software)");
++        else
++            fprintf(stderr, "(acceleration status unknown)");
++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_FAILURE)
++            fprintf (stderr, ". Cipher setup failed");
++        fprintf(stderr, "\n");
++    }
++    fprintf(stderr, "\n");
++}
++
+ /*
+  * We only support digests if the cryptodev implementation supports multiple
+  * data updates and session copying.  Otherwise, we would be forced to maintain
+@@ -810,31 +856,36 @@ static void prepare_digest_methods(void)
+         sess1.mac = digest_data[i].devcryptoid;
+         sess2.ses = 0;
+         if (ioctl(cfd, CIOCGSESSION, &sess1) < 0) {
+-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCGSESSION;
+             goto finish;
+         }
+ 
+ #ifdef CIOCGSESSINFO
+         /* gather hardware acceleration info from the driver */
+         siop.ses = sess1.ses;
+-        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
++        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0) {
+             digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
+-        else if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
+-            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
+-        else
+-            digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
++        } else {
++            digest_driver_info[i].driver_name =
++                OPENSSL_strndup(siop.hash_info.cra_driver_name,
++                                CRYPTODEV_MAX_ALG_NAME);
++            if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
++                digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
++            else
++                digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
++        }
+ #endif
+ 
+         /* digest must be capable of hash state copy */
+         sess2.mac = sess1.mac;
+         if (ioctl(cfd, CIOCGSESSION, &sess2) < 0) {
+-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
+             goto finish;
+         }
+         cphash.src_ses = sess1.ses;
+         cphash.dst_ses = sess2.ses;
+         if (ioctl(cfd, CIOCCPHASH, &cphash) < 0) {
+-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCCPHASH;
+             goto finish;
+         }
+         if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid,
+@@ -848,7 +899,7 @@ static void prepare_digest_methods(void)
+             || !EVP_MD_meth_set_cleanup(known_digest_methods[i], digest_cleanup)
+             || !EVP_MD_meth_set_app_datasize(known_digest_methods[i],
+                                              sizeof(struct digest_ctx))) {
+-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
++            digest_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
+             EVP_MD_meth_free(known_digest_methods[i]);
+             known_digest_methods[i] = NULL;
+             goto finish;
+@@ -890,8 +941,11 @@ static void destroy_all_digest_methods(void)
+ {
+     size_t i;
+ 
+-    for (i = 0; i < OSSL_NELEM(digest_data); i++)
++    for (i = 0; i < OSSL_NELEM(digest_data); i++) {
+         destroy_digest_method(digest_data[i].nid);
++        OPENSSL_free(digest_driver_info[i].driver_name);
++        digest_driver_info[i].driver_name = NULL;
++    }
+ }
+ 
+ static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
+@@ -935,6 +989,43 @@ static int cryptodev_select_digest_cb(const char *str, int len, void *usr)
+     return 1;
+ }
+ 
++static void dump_digest_info(void)
++{
++    size_t i;
++    const char *name;
++
++    fprintf (stderr, "Information about digests supported by the /dev/crypto"
++             " engine:\n");
++#ifndef CIOCGSESSINFO
++    fprintf(stderr, "CIOCGSESSINFO (session info call) unavailable\n");
++#endif
++
++    for (i = 0; i < OSSL_NELEM(digest_data); i++) {
++        name = OBJ_nid2sn(digest_data[i].nid);
++        fprintf (stderr, "Digest %s, NID=%d, /dev/crypto info: id=%d, driver=%s",
++                 name ? name : "unknown", digest_data[i].nid,
++                 digest_data[i].devcryptoid,
++                 digest_driver_info[i].driver_name ? digest_driver_info[i].driver_name : "unknown");
++        if (digest_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCGSESSION) {
++            fprintf (stderr, ". CIOCGSESSION (session open) failed\n");
++            continue;
++        }
++        if (digest_driver_info[i].accelerated == DEVCRYPTO_ACCELERATED)
++            fprintf(stderr, " (hw accelerated)");
++        else if (digest_driver_info[i].accelerated == DEVCRYPTO_NOT_ACCELERATED)
++            fprintf(stderr, " (software)");
++        else
++            fprintf(stderr, " (acceleration status unknown)");
++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_FAILURE)
++            fprintf (stderr, ". Cipher setup failed\n");
++        else if (digest_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCCPHASH)
++            fprintf(stderr, ", CIOCCPHASH failed\n");
++        else
++            fprintf(stderr, ", CIOCCPHASH capable\n");
++    }
++    fprintf(stderr, "\n");
++}
++
+ #endif
+ 
+ /******************************************************************************
+@@ -979,6 +1070,11 @@ static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
+     ENGINE_CMD_FLAG_STRING},
+ #endif
+ 
++   {DEVCRYPTO_CMD_DUMP_INFO,
++    "DUMP_INFO",
++    "dump info about each algorithm to stderr; use 'openssl engine -pre DUMP_INFO devcrypto'",
++    ENGINE_CMD_FLAG_NO_INPUT},
++
+    {0, NULL, NULL, 0}
+ };
+ 
+@@ -1047,6 +1143,13 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
+         return 1;
+ #endif /* IMPLEMENT_DIGEST */
+ 
++    case DEVCRYPTO_CMD_DUMP_INFO:
++        dump_cipher_info();
++#ifdef IMPLEMENT_DIGEST
++        dump_digest_info();
++#endif
++        return 1;
++
+     default:
+         break;
+     }
diff --git a/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch
new file mode 100644
index 0000000000..11d1d62ac6
--- /dev/null
+++ b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch
@@ -0,0 +1,336 @@
+From f9c260c3bde7905fe967cc6c9519bea89ae250ef Mon Sep 17 00:00:00 2001
+From: Eneas U de Queiroz <cote2004-github at yahoo.com>
+Date: Tue, 6 Nov 2018 10:57:03 -0200
+Subject: [PATCH 4/4] e_devcrypto: make the /dev/crypto engine dynamic
+
+Engine has been moved from crypto/engine/eng_devcrypto.c to
+engines/e_devcrypto.c.
+
+Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
+
+diff --git a/crypto/engine/build.info b/crypto/engine/build.info
+index e00802a3fd..47fe948966 100644
+--- a/crypto/engine/build.info
++++ b/crypto/engine/build.info
+@@ -6,6 +6,3 @@ SOURCE[../../libcrypto]=\
+         tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c tb_eckey.c \
+         eng_openssl.c eng_cnf.c eng_dyn.c \
+         eng_rdrand.c
+-IF[{- !$disabled{devcryptoeng} -}]
+-  SOURCE[../../libcrypto]=eng_devcrypto.c
+-ENDIF
+diff --git a/crypto/init.c b/crypto/init.c
+index 209d1a483d..02c609535f 100644
+--- a/crypto/init.c
++++ b/crypto/init.c
+@@ -290,18 +290,6 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_openssl)
+     engine_load_openssl_int();
+     return 1;
+ }
+-# ifndef OPENSSL_NO_DEVCRYPTOENG
+-static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT;
+-DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto)
+-{
+-#  ifdef OPENSSL_INIT_DEBUG
+-    fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: "
+-                    "engine_load_devcrypto_int()\n");
+-#  endif
+-    engine_load_devcrypto_int();
+-    return 1;
+-}
+-# endif
+ 
+ # ifndef OPENSSL_NO_RDRAND
+ static CRYPTO_ONCE engine_rdrand = CRYPTO_ONCE_STATIC_INIT;
+@@ -326,6 +314,18 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_dynamic)
+     return 1;
+ }
+ # ifndef OPENSSL_NO_STATIC_ENGINE
++#  ifndef OPENSSL_NO_DEVCRYPTOENG
++static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT;
++DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto)
++{
++#   ifdef OPENSSL_INIT_DEBUG
++    fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: "
++                    "engine_load_devcrypto_int()\n");
++#   endif
++    engine_load_devcrypto_int();
++    return 1;
++}
++#  endif
+ #  if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)
+ static CRYPTO_ONCE engine_padlock = CRYPTO_ONCE_STATIC_INIT;
+ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_padlock)
+@@ -645,11 +645,6 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
+     if ((opts & OPENSSL_INIT_ENGINE_OPENSSL)
+             && !RUN_ONCE(&engine_openssl, ossl_init_engine_openssl))
+         return 0;
+-# if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_DEVCRYPTOENG)
+-    if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV)
+-            && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto))
+-        return 0;
+-# endif
+ # ifndef OPENSSL_NO_RDRAND
+     if ((opts & OPENSSL_INIT_ENGINE_RDRAND)
+             && !RUN_ONCE(&engine_rdrand, ossl_init_engine_rdrand))
+@@ -659,6 +654,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
+             && !RUN_ONCE(&engine_dynamic, ossl_init_engine_dynamic))
+         return 0;
+ # ifndef OPENSSL_NO_STATIC_ENGINE
++#  ifndef OPENSSL_NO_DEVCRYPTOENG
++    if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV)
++            && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto))
++        return 0;
++#  endif
+ #  if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)
+     if ((opts & OPENSSL_INIT_ENGINE_PADLOCK)
+             && !RUN_ONCE(&engine_padlock, ossl_init_engine_padlock))
+diff --git a/engines/build.info b/engines/build.info
+index df173ea69d..dc0cbeb0a3 100644
+--- a/engines/build.info
++++ b/engines/build.info
+@@ -10,6 +10,9 @@ IF[{- !$disabled{"engine"} -}]
+     IF[{- !$disabled{afalgeng} -}]
+       SOURCE[../libcrypto]=e_afalg.c
+     ENDIF
++    IF[{- !$disabled{"devcryptoeng"} -}]
++      SOURCE[../libcrypto]=e_devcrypto.c
++    ENDIF
+   ELSE
+     ENGINES=padlock
+     SOURCE[padlock]=e_padlock.c {- $target{padlock_asm_src} -}
+@@ -27,6 +30,12 @@ IF[{- !$disabled{"engine"} -}]
+       DEPEND[afalg]=../libcrypto
+       INCLUDE[afalg]= ../include
+     ENDIF
++    IF[{- !$disabled{"devcryptoeng"} -}]
++      ENGINES=devcrypto
++      SOURCE[devcrypto]=e_devcrypto.c
++      DEPEND[devcrypto]=../libcrypto
++      INCLUDE[devcrypto]=../include
++    ENDIF
+ 
+     ENGINES_NO_INST=ossltest dasync
+     SOURCE[dasync]=e_dasync.c
+diff --git a/crypto/engine/eng_devcrypto.c b/engines/e_devcrypto.c
+similarity index 95%
+rename from crypto/engine/eng_devcrypto.c
+rename to engines/e_devcrypto.c
+index e9d67d9f1d..24456c8a22 100644
+--- a/crypto/engine/eng_devcrypto.c
++++ b/engines/e_devcrypto.c
+@@ -7,7 +7,7 @@
+  * https://www.openssl.org/source/license.html
+  */
+ 
+-#include "e_os.h"
++#include "../e_os.h"
+ #include <string.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+@@ -23,24 +23,24 @@
+ #include <openssl/objects.h>
+ #include <crypto/cryptodev.h>
+ 
+-#include "internal/engine.h"
+-
+ #ifdef CRYPTO_ALGORITHM_MIN
+ # define CHECK_BSD_STYLE_MACROS
+ #endif
+ 
++#define engine_devcrypto_id "devcrypto"
++
+ /*
+  * ONE global file descriptor for all sessions.  This allows operations
+  * such as digest session data copying (see digest_copy()), but is also
+  * saner...  why re-open /dev/crypto for every session?
+  */
+-static int cfd;
++static int cfd = -1;
+ #define DEVCRYPTO_REQUIRE_ACCELERATED 0 /* require confirmation of acceleration */
+ #define DEVCRYPTO_USE_SOFTWARE        1 /* allow software drivers */
+ #define DEVCRYPTO_REJECT_SOFTWARE     2 /* only disallow confirmed software drivers */
+ 
+-#define DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS DEVCRYPTO_REJECT_SOFTWARE
+-static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
++#define DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS DEVCRYPTO_REJECT_SOFTWARE
++static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS;
+ 
+ /*
+  * cipher/digest status & acceleration definitions
+@@ -73,6 +73,10 @@ static int clean_devcrypto_session(struct session_op *sess) {
+     return 1;
+ }
+ 
++#ifdef OPENSSL_NO_DYNAMIC_ENGINE
++void engine_load_devcrypto_int(void);
++#endif
++
+ /******************************************************************************
+  *
+  * Ciphers
+@@ -1162,6 +1166,37 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
+  *
+  *****/
+ 
++/*
++ * Opens /dev/crypto
++ */
++static int open_devcrypto(void)
++{
++    if (cfd >= 0)
++        return 1;
++
++    if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
++        fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno));
++        return 0;
++    }
++
++    return 1;
++}
++
++static int close_devcrypto(void)
++{
++    int ret;
++
++    if (cfd < 0)
++        return 1;
++    ret = close(cfd);
++    cfd = -1;
++    if (ret != 0) {
++        fprintf(stderr, "Error closing /dev/crypto: %s\n", strerror(errno));
++        return 0;
++    }
++    return 1;
++}
++
+ static int devcrypto_unload(ENGINE *e)
+ {
+     destroy_all_cipher_methods();
+@@ -1169,45 +1204,29 @@ static int devcrypto_unload(ENGINE *e)
+     destroy_all_digest_methods();
+ #endif
+ 
+-    close(cfd);
++    close_devcrypto();
+ 
+     return 1;
+ }
+-/*
+- * This engine is always built into libcrypto, so it doesn't offer any
+- * ability to be dynamically loadable.
+- */
+-void engine_load_devcrypto_int()
+-{
+-    ENGINE *e = NULL;
+ 
+-    if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
+-        fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno));
+-        return;
+-    }
++static int bind_devcrypto(ENGINE *e) {
+ 
+-    if ((e = ENGINE_new()) == NULL
+-        || !ENGINE_set_destroy_function(e, devcrypto_unload)) {
+-        ENGINE_free(e);
+-        /*
+-         * We know that devcrypto_unload() won't be called when one of the
+-         * above two calls have failed, so we close cfd explicitly here to
+-         * avoid leaking resources.
+-         */
+-        close(cfd);
+-        return;
+-    }
++    if (!ENGINE_set_id(e, engine_devcrypto_id)
++        || !ENGINE_set_name(e, "/dev/crypto engine")
++        || !ENGINE_set_destroy_function(e, devcrypto_unload)
++        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
++        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl))
++        return 0;
+ 
+     prepare_cipher_methods();
+ #ifdef IMPLEMENT_DIGEST
+     prepare_digest_methods();
+ #endif
+ 
+-    if (!ENGINE_set_id(e, "devcrypto")
+-        || !ENGINE_set_name(e, "/dev/crypto engine")
+-        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
+-        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl)
+-
++    return (ENGINE_set_ciphers(e, devcrypto_ciphers)
++#ifdef IMPLEMENT_DIGEST
++        && ENGINE_set_digests(e, devcrypto_digests)
++#endif
+ /*
+  * Asymmetric ciphers aren't well supported with /dev/crypto.  Among the BSD
+  * implementations, it seems to only exist in FreeBSD, and regarding the
+@@ -1230,23 +1249,36 @@ void engine_load_devcrypto_int()
+  */
+ #if 0
+ # ifndef OPENSSL_NO_RSA
+-        || !ENGINE_set_RSA(e, devcrypto_rsa)
++        && ENGINE_set_RSA(e, devcrypto_rsa)
+ # endif
+ # ifndef OPENSSL_NO_DSA
+-        || !ENGINE_set_DSA(e, devcrypto_dsa)
++        && ENGINE_set_DSA(e, devcrypto_dsa)
+ # endif
+ # ifndef OPENSSL_NO_DH
+-        || !ENGINE_set_DH(e, devcrypto_dh)
++        && ENGINE_set_DH(e, devcrypto_dh)
+ # endif
+ # ifndef OPENSSL_NO_EC
+-        || !ENGINE_set_EC(e, devcrypto_ec)
++        && ENGINE_set_EC(e, devcrypto_ec)
+ # endif
+ #endif
+-        || !ENGINE_set_ciphers(e, devcrypto_ciphers)
+-#ifdef IMPLEMENT_DIGEST
+-        || !ENGINE_set_digests(e, devcrypto_digests)
+-#endif
+-        ) {
++        );
++}
++
++#ifdef OPENSSL_NO_DYNAMIC_ENGINE
++/*
++ * In case this engine is built into libcrypto, then it doesn't offer any
++ * ability to be dynamically loadable.
++ */
++void engine_load_devcrypto_int(void)
++{
++    ENGINE *e = NULL;
++
++    if (!open_devcrypto())
++        return;
++
++    if ((e = ENGINE_new()) == NULL
++        || !bind_devcrypto(e)) {
++        close_devcrypto();
+         ENGINE_free(e);
+         return;
+     }
+@@ -1255,3 +1287,22 @@ void engine_load_devcrypto_int()
+     ENGINE_free(e);          /* Loose our local reference */
+     ERR_clear_error();
+ }
++
++#else
++
++static int bind_helper(ENGINE *e, const char *id)
++{
++    if ((id && (strcmp(id, engine_devcrypto_id) != 0))
++        || !open_devcrypto())
++        return 0;
++    if (!bind_devcrypto(e)) {
++        close_devcrypto();
++        return 0;
++    }
++    return 1;
++}
++
++IMPLEMENT_DYNAMIC_CHECK_FN()
++IMPLEMENT_DYNAMIC_BIND_FN(bind_helper)
++
++#endif
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel at dd-wrt.com  Mon Feb 18 16:35:05 2019
From: daniel at dd-wrt.com (Daniel Danzberger)
Date: Mon, 18 Feb 2019 22:35:05 +0100
Subject: [OpenWrt-Devel] [PATCH 1/3][rpcd] iwinfo: show more stats from
 assoclist.
Message-ID: <20190218213507.12204-1-daniel@dd-wrt.com>

Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
---
 iwinfo.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/iwinfo.c b/iwinfo.c
index 1849196..d476ce3 100644
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -458,10 +458,22 @@ rpc_iwinfo_assoclist(struct ubus_context *ctx, struct ubus_object *obj,
 
 			blobmsg_add_string(&buf, "mac", mac);
 			blobmsg_add_u32(&buf, "signal", a->signal);
+			blobmsg_add_u32(&buf, "signal_avg", a->signal_avg);
 			blobmsg_add_u32(&buf, "noise", a->noise);
 			blobmsg_add_u32(&buf, "inactive", a->inactive);
+			blobmsg_add_u32(&buf, "connected_time", a->connected_time);
+			blobmsg_add_u32(&buf, "thr", a->thr);
+			blobmsg_add_u8(&buf, "authorized", a->is_authorized);
+			blobmsg_add_u8(&buf, "authenticated", a->is_authenticated);
+			blobmsg_add_string(&buf, "preamble", a->is_preamble_short ? "short" : "long");
+			blobmsg_add_u8(&buf, "wme", a->is_wme);
+			blobmsg_add_u8(&buf, "mfp", a->is_mfp);
+			blobmsg_add_u8(&buf, "tdls", a->is_tdls);
 
 			e = blobmsg_open_table(&buf, "rx");
+			blobmsg_add_u64(&buf, "drop_misc", a->rx_drop_misc);
+			blobmsg_add_u32(&buf, "packets", a->rx_packets);
+			blobmsg_add_u32(&buf, "bytes", a->rx_bytes);
 			blobmsg_add_u32(&buf, "rate", a->rx_rate.rate);
 			blobmsg_add_u32(&buf, "mcs", a->rx_rate.mcs);
 			blobmsg_add_u8(&buf, "40mhz", a->rx_rate.is_40mhz);
@@ -469,6 +481,10 @@ rpc_iwinfo_assoclist(struct ubus_context *ctx, struct ubus_object *obj,
 			blobmsg_close_table(&buf, e);
 
 			e = blobmsg_open_table(&buf, "tx");
+			blobmsg_add_u32(&buf, "failed", a->tx_failed);
+			blobmsg_add_u32(&buf, "retries", a->tx_retries);
+			blobmsg_add_u32(&buf, "packets", a->tx_packets);
+			blobmsg_add_u32(&buf, "bytes", a->tx_bytes);
 			blobmsg_add_u32(&buf, "rate", a->tx_rate.rate);
 			blobmsg_add_u32(&buf, "mcs", a->tx_rate.mcs);
 			blobmsg_add_u8(&buf, "40mhz", a->tx_rate.is_40mhz);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel at dd-wrt.com  Mon Feb 18 16:35:06 2019
From: daniel at dd-wrt.com (Daniel Danzberger)
Date: Mon, 18 Feb 2019 22:35:06 +0100
Subject: [OpenWrt-Devel] [PATCH 2/3][rpcd] iwinfo: add survey.
In-Reply-To: <20190218213507.12204-1-daniel@dd-wrt.com>
References: <20190218213507.12204-1-daniel@dd-wrt.com>
Message-ID: <20190218213507.12204-2-daniel@dd-wrt.com>

Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
---
 iwinfo.c | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

diff --git a/iwinfo.c b/iwinfo.c
index d476ce3..983001a 100644
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -511,6 +511,45 @@ rpc_iwinfo_assoclist(struct ubus_context *ctx, struct ubus_object *obj,
 	return UBUS_STATUS_OK;
 }
 
+static int
+rpc_iwinfo_survey(struct ubus_context *ctx, struct ubus_object *obj,
+                    struct ubus_request_data *req, const char *method,
+                    struct blob_attr *msg)
+{
+	char res[IWINFO_BUFSIZE];
+	struct iwinfo_survey_entry *e;
+	void *c, *d;
+	int i, rv, len;
+
+	blob_buf_init(&buf, 0);
+
+	rv = rpc_iwinfo_open(msg);
+
+	c = blobmsg_open_array(&buf, "results");
+
+	if (rv || iw->survey(ifname, res, &len) || len < 0)
+		return UBUS_STATUS_OK;
+
+	for (i = 0; i < len; i += sizeof(struct iwinfo_survey_entry)) {
+		e = (struct iwinfo_survey_entry *)&res[i];
+
+		d = blobmsg_open_table(&buf, NULL);
+		blobmsg_add_u32(&buf, "mhz", e->mhz);
+		blobmsg_add_u32(&buf, "noise", e->noise);
+		blobmsg_add_u64(&buf, "active_time", e->active_time);
+		blobmsg_add_u64(&buf, "busy_time", e->busy_time);
+		blobmsg_add_u64(&buf, "busy_time_ext", e->busy_time_ext);
+		blobmsg_add_u64(&buf, "rx_time", e->rxtime);
+		blobmsg_add_u64(&buf, "tx_time", e->txtime);
+		blobmsg_close_table(&buf, d);
+	}
+
+	blobmsg_close_array(&buf, c);
+	ubus_send_reply(ctx, req, buf.head);
+	rpc_iwinfo_close();
+	return UBUS_STATUS_OK;
+}
+
 static int
 rpc_iwinfo_freqlist(struct ubus_context *ctx, struct ubus_object *obj,
                     struct ubus_request_data *req, const char *method,
@@ -791,6 +830,7 @@ rpc_iwinfo_api_init(const struct rpc_daemon_ops *o, struct ubus_context *ctx)
 		UBUS_METHOD("freqlist",    rpc_iwinfo_freqlist,    rpc_device_policy),
 		UBUS_METHOD("txpowerlist", rpc_iwinfo_txpowerlist, rpc_device_policy),
 		UBUS_METHOD("countrylist", rpc_iwinfo_countrylist, rpc_device_policy),
+		UBUS_METHOD("survey",      rpc_iwinfo_survey,      rpc_device_policy),
 		UBUS_METHOD("phyname",     rpc_iwinfo_phyname,     rpc_uci_policy),
 	};
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel at dd-wrt.com  Mon Feb 18 16:35:07 2019
From: daniel at dd-wrt.com (Daniel Danzberger)
Date: Mon, 18 Feb 2019 22:35:07 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3][rpcd] iwinfo: add mesh infos in
 assoclist.
In-Reply-To: <20190218213507.12204-1-daniel@dd-wrt.com>
References: <20190218213507.12204-1-daniel@dd-wrt.com>
Message-ID: <20190218213507.12204-3-daniel@dd-wrt.com>

Signed-off-by: Daniel Danzberger <daniel at dd-wrt.com>
---
 iwinfo.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/iwinfo.c b/iwinfo.c
index 983001a..a76b72a 100644
--- a/iwinfo.c
+++ b/iwinfo.c
@@ -470,6 +470,13 @@ rpc_iwinfo_assoclist(struct ubus_context *ctx, struct ubus_object *obj,
 			blobmsg_add_u8(&buf, "mfp", a->is_mfp);
 			blobmsg_add_u8(&buf, "tdls", a->is_tdls);
 
+			blobmsg_add_u16(&buf, "mesh llid", a->llid);
+			blobmsg_add_u16(&buf, "mesh plid", a->plid);
+			blobmsg_add_string(&buf, "mesh plink", a->plink_state);
+			blobmsg_add_string(&buf, "mesh local PS", a->local_ps);
+			blobmsg_add_string(&buf, "mesh peer PS", a->peer_ps);
+			blobmsg_add_string(&buf, "mesh non-peer PS", a->nonpeer_ps);
+
 			e = blobmsg_open_table(&buf, "rx");
 			blobmsg_add_u64(&buf, "drop_misc", a->rx_drop_misc);
 			blobmsg_add_u32(&buf, "packets", a->rx_packets);
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From osexpert at gmail.com  Mon Feb 18 16:38:51 2019
From: osexpert at gmail.com (Hartmut Birr)
Date: Mon, 18 Feb 2019 22:38:51 +0100
Subject: [OpenWrt-Devel] 5GHz wifi is broken
In-Reply-To: <a64777db-2e0b-09e2-7cc2-cf5cf7dc17b0@gmail.com>
References: <a64777db-2e0b-09e2-7cc2-cf5cf7dc17b0@gmail.com>
Message-ID: <244a74cf-f9a1-680c-82e5-115c454ce701@gmail.com>

Hi,

this is my wireless configuration. I build hostapd with the internal radius server enabled and set the expected
configuration for the internal radius server for hostapd if config value for auth_server isn't given or empty.

config wifi-device 'radio0'
	option type 'mac80211'
	option channel 'auto'
	option channels '36-140'
	option hwmode '11a'
	option path 'pci0000:00/0000:00:00.0'
	option htmode 'VHT80'
	option country 'DE'
	option disassoc_low_ack '0'
	option log_level '0'

config wifi-iface
	option device 'radio0'
	option mode 'ap'
#	option encryption 'wpa2+ccmp'
	option encryption 'wpa3-mixed'
	option ssid 'Wxxxxxxb-radius'
	option ca_cert '/etc/certs/ca-d171225.crt'
	option server_cert '/etc/certs/crt-d170807.crt'
	option private_key '/etc/certs/key-d170807.key'
	option dh_file '/etc/certs/hostapd.dh4096.pem'
	option eap_user_file '/etc/config/haprad.eap_user'
	option network 'lan'
	option eapol_version '2'
	option ieee80211w '1'
	option wpa_group_rekey '3600'

config wifi-iface
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'Wxxxxxxb'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option wpa_psk_file '/etc/config/hostapd.wpa_psk'
	option disassoc_low_ack '0'
	option ieee80211w '1'
	option wpa_group_rekey '3600'

config wifi-iface
	option device 'radio0'
	option mode 'ap'
	option ssid 'Txxxxxx'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option network 'tor'
	option macaddr '00:xx:xx:xx:xx:xx'
	option disassoc_low_ack '0'
	option ieee80211w '1'
	option wpa_group_rekey '3600'

config wifi-device 'radio1'
	option type 'mac80211'
	option channel '11'
	option hwmode '11g'
	option path 'platform/ahb/ahb:apb/18100000.wmac'
	option htmode 'HT40-'
	option country 'DE'
	option noscan '1'
	option log_level '3'
	option ht_coex '1'

config wifi-iface
	option device 'radio1'
	option mode 'ap'
	option network 'lan'
#	option encryption 'wpa2+ccmp'
	option encryption 'wpa3-mixed'
	option ssid 'Wxxxxxxa-radius'
	option ca_cert '/etc/certs/ca-d171225.crt'
	option crl_file '/etc/certs/crl-d181127.pem'
	option check_crl '2'
	option server_cert '/etc/certs/crt-d170807.crt'
	option private_key '/etc/certs/key-d170807.key'
	option dh_file '/etc/certs/hostapd.dh4096.pem'
	option eap_user_file '/etc/config/haprad.eap_user'
	option eapol_version '2'
	option ieee80211w '1'

config wifi-iface
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'Wxxxxxxa'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option wpa_psk_file '/etc/config/hostapd.wpa_psk'
	option beacon_int '500'

config wifi-iface
	option device 'radio1'
	option network 'guest1'
	option mode 'ap'
	option ssid 'Wxxxxxxc'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	list maclist 'fc:xx:xx:xx:xx:xx'
	list maclist 'e8:xx:xx:xx:xx:xx'
	option macfilter 'deny'
	option ieee80211w '1'

config wifi-iface
	option device 'radio1'
	option network 'guest2'
	option mode 'ap'
	option ssid 'Wxxxxxxd'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	list maclist '8c:xx:xx:xx:xx:xx'
	option macfilter 'deny'
	option ieee80211w '1'

config wifi-iface
	option device 'radio1'
	option network 'Ixxxxx'
	option mode 'ap'
	option ssid 'The Internet of Shitty Things'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option ieee80211w '1'
	option disassoc_low_ack '0'
	option max_inactivity '1800'

config wifi-iface
	option device 'radio1'
	option network 'radio'
	option mode 'ap'
	option ssid 'wxxxxx'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option ieee80211w '1'
	list maclist '8c:xx:xx:xx:xx:xx'
	list maclist 'fc:xx:xx:xx:xx:xx'
	list maclist 'e8:xx:xx:xx:xx:xx'
	option macfilter 'deny'

config wifi-iface
	option device 'radio1'
	option network 'tor'
	option mode 'ap'
	option ssid 'Txxxxx'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option macaddr '00:xx:xx:xx:xx:xx'
	option ieee80211w '1'

I did try to identify the commit where the issue does start:

...
curl: bump to 7.64.0					8 Feb 2019 08:37 +0100

LAST GOOD BUILD 8 Feb 2019 12:30 +0100

mac80211: rt2x00: remove patch causing low tx power	8 Feb 2019 13:13 +0100
...
glibc: update to latest 2.27 commit [BZ #24180]		9 Feb 2019 21:07 +0100

FIRST BAD BUILD 10 Feb 2019 09:30:00

tools/tar: Update to 1.31				10 Feb 2019 20:47 +0100
...

I did do a checkout of the variants around my first bad build and build an image. I couldn't reproduce the issue again.
Then I did go forward by a few commits and did check the image again. The last commit without the issue is:

base-files: fix ucert verification			12 Feb 2019 16:42 +0100

The issue starts with the openssl related commits, but I did check only the last one:

openssl: add package for openssl.cnf, misc changes	12 Feb 2019 22:24 +0100

I build 6 images from different commits till:

build: Honour NO_COLOR in include/scan.mk		17 Feb 2019 19:22 +0100

If the openssl stuff is included, than I get the issue. If the openssl stuff isn't included, my 5GHz WiFi does start.
I've another TP-Link router with an ath9k as 5Ghz Wifi. It is the WDR3600. The Wifi configuration is similar like my
Archer C7. I don't see this issue.

Regards,
Hartmut


Am 16.02.2019 um 22:42 schrieb Ben Greear:
> 
> 
> On 02/16/2019 01:36 PM, Christian Lamparter wrote:
>> Hello,
>>
>> On Thursday, February 14, 2019 6:43:26 PM CET e9hack wrote:
>>> a change somewhere between 8.Feb and 10.Feb breaks the usage of the 5GHz WiFi on my Archer C7 router.
>>> I get the following entries in the log file:
>>>
>>> Firmware is:
>>> ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-1bbfa151 api 2 features
>>> wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT
>>>
>>> crc32 66e0dff7
>>>
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Failed to set beacon parameters
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Interface initialization failed
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DFS->DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DISABLED->DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: CTRL-EVENT-TERMINATING
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-2 wasn't started
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: CTRL-EVENT-TERMINATING
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-1 wasn't started
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: CTRL-EVENT-TERMINATING
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0 wasn't started
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
>>> Thu Feb 14 18:27:01 2019 kern.info kernel: [? 162.919267] device wlan0 left promiscuous mode
>>> Thu Feb 14 18:27:01 2019 kern.info kernel: [? 162.923985] br-lan: port 2(wlan0) entered disabled state
>>> Thu Feb 14 18:27:02 2019 daemon.notice hostapd: ELOOP: remaining socket: sock=23 eloop_data=0x77f9cc40 user_data=0
>>> handler=0x556a2d91
>>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): cat: can't open '/var/run/wifi-phy0.pid': No such file or
>>> directory
>>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): WARNING (wireless_add_process): executable path
>>> /usr/sbin/hostapd does not match process? path (/proc/exe)
>>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): Command failed: Invalid argument
>>> Thu Feb 14 18:27:03 2019 kern.warn kernel: [? 164.791404] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16? peers: 127
>>> tid: 256
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.808256] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.814618] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424? sw-crypt:
>>> 0 ct-sta: 0'
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.822797] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24616 iram:
>>> 26584'
>>
>>> Thu Feb 14 18:27:03 2019 kern.warn kernel: [? 164.900521] ath10k_pci 0000:00:00.0: pdev param 0 not supported by
>>> firmware
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.925384] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
>>> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-1"
>>> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Interface 1 setup failed: IFUP_ERROR
>>> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-2"
>>> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Interface 2 setup failed: IFUP_ERROR
>>> Thu Feb 14 18:27:05 2019 kern.info kernel: [? 166.183839] br-lan: port 2(wlan0) entered blocking state
>>> Thu Feb 14 18:27:05 2019 kern.info kernel: [? 166.189311] br-lan: port 2(wlan0) entered disabled state
>>> Thu Feb 14 18:27:05 2019 kern.info kernel: [? 166.195048] device wlan0 entered promiscuous mode
>>
>> "between 8.Feb and 10.Feb"
>>
>> https://github.com/openwrt/openwrt/commits/master/package/kernel/ath10k-ct
>>
>> so maybe it was:
>>
>> https://github.com/openwrt/openwrt/commit/835fc08ae3fb9e27db0f095a10fbff24f87ee1a9
>> (Although, github says it was commited on the 11th)
>>
>> Can you please post your /etc/config/wireless and try to revert the patch to test if
>> this helps with the situation?
>>
>> If it is indeed the patch (and not a unsupported configuration):
>>
>> @Ben can you please take a peek into your wave-1 firmware and check if the
>> mgmt_rate WMI (WMI_10X_VDEV_PARAM_MGMT_RATE) is supported, or if there is
>> a bad interaction somewhere else?
>>
>> (This "pdev param 0 not supported by firmware" was mentioned in
>> https://bugs.openwrt.org/index.php?do=details&task_id=1920 so probably not the problem)
> 
> Hopefully the user can bisect to the exact bad commit, and then I'll be happy to
> try to figure out what is the issue.
> 
> I have not made many changes to the wave-1 firmware recently.? I have some API
> to set the management rates, but not sure it uses the same API as whatever that
> patch in question is using.
> 
> Thanks,
> Ben
> 
>>
>> Cheers,
>> Christian
>>
>>
> 


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From e9hack at gmail.com  Mon Feb 18 16:41:26 2019
From: e9hack at gmail.com (e9hack)
Date: Mon, 18 Feb 2019 22:41:26 +0100
Subject: [OpenWrt-Devel] Fwd: Re:  5GHz wifi is broken
In-Reply-To: <a64777db-2e0b-09e2-7cc2-cf5cf7dc17b0@gmail.com>
References: <a64777db-2e0b-09e2-7cc2-cf5cf7dc17b0@gmail.com>
Message-ID: <97eeb7d2-da03-7b13-d4d7-0fdb41e0dc65@gmail.com>




-------- Weitergeleitete Nachricht --------
Betreff: Re: [OpenWrt-Devel] 5GHz wifi is broken
Datum: Mon, 18 Feb 2019 21:13:58 +0100
Von: e9hack <e9hack at gmail.com>
An: Ben Greear <greearb at candelatech.com>

Hi,

this is my wireless configuration. I build hostapd with the internal radius server enabled and set the expected
configuration for the internal radius server for hostapd if config value for auth_server isn't given or empty.

config wifi-device 'radio0'
	option type 'mac80211'
	option channel 'auto'
	option channels '36-140'
	option hwmode '11a'
	option path 'pci0000:00/0000:00:00.0'
	option htmode 'VHT80'
	option country 'DE'
	option disassoc_low_ack '0'
	option log_level '0'

config wifi-iface
	option device 'radio0'
	option mode 'ap'
#	option encryption 'wpa2+ccmp'
	option encryption 'wpa3-mixed'
	option ssid 'Wxxxxxxb-radius'
	option ca_cert '/etc/certs/ca-d171225.crt'
	option server_cert '/etc/certs/crt-d170807.crt'
	option private_key '/etc/certs/key-d170807.key'
	option dh_file '/etc/certs/hostapd.dh4096.pem'
	option eap_user_file '/etc/config/haprad.eap_user'
	option network 'lan'
	option eapol_version '2'
	option ieee80211w '1'
	option wpa_group_rekey '3600'

config wifi-iface
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'Wxxxxxxb'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option wpa_psk_file '/etc/config/hostapd.wpa_psk'
	option disassoc_low_ack '0'
	option ieee80211w '1'
	option wpa_group_rekey '3600'

config wifi-iface
	option device 'radio0'
	option mode 'ap'
	option ssid 'Txxxxxx'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option network 'tor'
	option macaddr '00:xx:xx:xx:xx:xx'
	option disassoc_low_ack '0'
	option ieee80211w '1'
	option wpa_group_rekey '3600'

config wifi-device 'radio1'
	option type 'mac80211'
	option channel '11'
	option hwmode '11g'
	option path 'platform/ahb/ahb:apb/18100000.wmac'
	option htmode 'HT40-'
	option country 'DE'
	option noscan '1'
	option log_level '3'
	option ht_coex '1'

config wifi-iface
	option device 'radio1'
	option mode 'ap'
	option network 'lan'
#	option encryption 'wpa2+ccmp'
	option encryption 'wpa3-mixed'
	option ssid 'Wxxxxxxa-radius'
	option ca_cert '/etc/certs/ca-d171225.crt'
	option crl_file '/etc/certs/crl-d181127.pem'
	option check_crl '2'
	option server_cert '/etc/certs/crt-d170807.crt'
	option private_key '/etc/certs/key-d170807.key'
	option dh_file '/etc/certs/hostapd.dh4096.pem'
	option eap_user_file '/etc/config/haprad.eap_user'
	option eapol_version '2'
	option ieee80211w '1'

config wifi-iface
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'Wxxxxxxa'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option wpa_psk_file '/etc/config/hostapd.wpa_psk'
	option beacon_int '500'

config wifi-iface
	option device 'radio1'
	option network 'guest1'
	option mode 'ap'
	option ssid 'Wxxxxxxc'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	list maclist 'fc:xx:xx:xx:xx:xx'
	list maclist 'e8:xx:xx:xx:xx:xx'
	option macfilter 'deny'
	option ieee80211w '1'

config wifi-iface
	option device 'radio1'
	option network 'guest2'
	option mode 'ap'
	option ssid 'Wxxxxxxd'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	list maclist '8c:xx:xx:xx:xx:xx'
	option macfilter 'deny'
	option ieee80211w '1'

config wifi-iface
	option device 'radio1'
	option network 'Ixxxxx'
	option mode 'ap'
	option ssid 'The Internet of Shitty Things'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option ieee80211w '1'
	option disassoc_low_ack '0'
	option max_inactivity '1800'

config wifi-iface
	option device 'radio1'
	option network 'radio'
	option mode 'ap'
	option ssid 'wxxxxx'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option ieee80211w '1'
	list maclist '8c:xx:xx:xx:xx:xx'
	list maclist 'fc:xx:xx:xx:xx:xx'
	list maclist 'e8:xx:xx:xx:xx:xx'
	option macfilter 'deny'

config wifi-iface
	option device 'radio1'
	option network 'tor'
	option mode 'ap'
	option ssid 'Txxxxx'
#	option encryption 'psk2+ccmp'
	option encryption 'sae-mixed'
	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
	option macaddr '00:xx:xx:xx:xx:xx'
	option ieee80211w '1'

I did try to identify the commit where the issue does start:

...
curl: bump to 7.64.0					8 Feb 2019 08:37 +0100

LAST GOOD BUILD 8 Feb 2019 12:30 +0100

mac80211: rt2x00: remove patch causing low tx power	8 Feb 2019 13:13 +0100
...
glibc: update to latest 2.27 commit [BZ #24180]		9 Feb 2019 21:07 +0100

FIRST BAD BUILD 10 Feb 2019 09:30:00

tools/tar: Update to 1.31				10 Feb 2019 20:47 +0100
...

I did do a checkout of the variants around my first bad build and build an image. I couldn't reproduce the issue again.
Then I did go forward by a few commits and did check the image again. The last commit without the issue is:

base-files: fix ucert verification			12 Feb 2019 16:42 +0100

The issue starts with the openssl related commits, but I did check only the last one:

openssl: add package for openssl.cnf, misc changes	12 Feb 2019 22:24 +0100

I build 6 images from different commits till:

build: Honour NO_COLOR in include/scan.mk		17 Feb 2019 19:22 +0100

If the openssl stuff is included, than I get the issue. If the openssl stuff isn't included, my 5GHz WiFi does start.
I've another TP-Link router with an ath9k as 5Ghz Wifi. It is the WDR3600. The Wifi configuration is similar like my
Archer C7. I don't see this issue.

Regards,
Hartmut


Am 16.02.2019 um 22:42 schrieb Ben Greear:
> 
> 
> On 02/16/2019 01:36 PM, Christian Lamparter wrote:
>> Hello,
>>
>> On Thursday, February 14, 2019 6:43:26 PM CET e9hack wrote:
>>> a change somewhere between 8.Feb and 10.Feb breaks the usage of the 5GHz WiFi on my Archer C7 router.
>>> I get the following entries in the log file:
>>>
>>> Firmware is:
>>> ath10k_pci 0000:00:00.0: firmware ver 10.1-ct-8x-__fW-022-1bbfa151 api 2 features
>>> wmi-10.x,has-wmi-mgmt-tx,mfp,txstatus-noack,wmi-10.x-CT,ratemask-CT,txrate-CT,get-temp-CT,tx-rc-CT,cust-stats-CT,retry-gt2-CT,txrate2-CT
>>>
>>> crc32 66e0dff7
>>>
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Failed to set beacon parameters
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: Interface initialization failed
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DFS->DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: interface state DISABLED->DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-2: CTRL-EVENT-TERMINATING
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-2 wasn't started
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0-1: CTRL-EVENT-TERMINATING
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0-1 wasn't started
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: AP-DISABLED
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: wlan0: CTRL-EVENT-TERMINATING
>>> Thu Feb 14 18:27:01 2019 daemon.err hostapd: hostapd_free_hapd_data: Interface wlan0 wasn't started
>>> Thu Feb 14 18:27:01 2019 daemon.notice hostapd: nl80211: deinit ifname=wlan0 disabled_11b_rates=0
>>> Thu Feb 14 18:27:01 2019 kern.info kernel: [? 162.919267] device wlan0 left promiscuous mode
>>> Thu Feb 14 18:27:01 2019 kern.info kernel: [? 162.923985] br-lan: port 2(wlan0) entered disabled state
>>> Thu Feb 14 18:27:02 2019 daemon.notice hostapd: ELOOP: remaining socket: sock=23 eloop_data=0x77f9cc40 user_data=0
>>> handler=0x556a2d91
>>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): cat: can't open '/var/run/wifi-phy0.pid': No such file or
>>> directory
>>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): WARNING (wireless_add_process): executable path
>>> /usr/sbin/hostapd does not match process? path (/proc/exe)
>>> Thu Feb 14 18:27:02 2019 daemon.notice netifd: radio0 (2540): Command failed: Invalid argument
>>> Thu Feb 14 18:27:03 2019 kern.warn kernel: [? 164.791404] ath10k_pci 0000:00:00.0: 10.1 wmi init: vdevs: 16? peers: 127
>>> tid: 256
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.808256] ath10k_pci 0000:00:00.0: wmi print 'P 128 V 8 T 410'
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.814618] ath10k_pci 0000:00:00.0: wmi print 'msdu-desc: 1424? sw-crypt:
>>> 0 ct-sta: 0'
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.822797] ath10k_pci 0000:00:00.0: wmi print 'alloc rem: 24616 iram:
>>> 26584'
>>
>>> Thu Feb 14 18:27:03 2019 kern.warn kernel: [? 164.900521] ath10k_pci 0000:00:00.0: pdev param 0 not supported by
>>> firmware
>>> Thu Feb 14 18:27:03 2019 kern.info kernel: [? 164.925384] IPv6: ADDRCONF(NETDEV_UP): wlan0: link is not ready
>>> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-1"
>>> Thu Feb 14 18:27:04 2019 daemon.notice netifd: radio0 (2540): Interface 1 setup failed: IFUP_ERROR
>>> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Cannot find device "wlan0-2"
>>> Thu Feb 14 18:27:05 2019 daemon.notice netifd: radio0 (2540): Interface 2 setup failed: IFUP_ERROR
>>> Thu Feb 14 18:27:05 2019 kern.info kernel: [? 166.183839] br-lan: port 2(wlan0) entered blocking state
>>> Thu Feb 14 18:27:05 2019 kern.info kernel: [? 166.189311] br-lan: port 2(wlan0) entered disabled state
>>> Thu Feb 14 18:27:05 2019 kern.info kernel: [? 166.195048] device wlan0 entered promiscuous mode
>>
>> "between 8.Feb and 10.Feb"
>>
>> https://github.com/openwrt/openwrt/commits/master/package/kernel/ath10k-ct
>>
>> so maybe it was:
>>
>> https://github.com/openwrt/openwrt/commit/835fc08ae3fb9e27db0f095a10fbff24f87ee1a9
>> (Although, github says it was commited on the 11th)
>>
>> Can you please post your /etc/config/wireless and try to revert the patch to test if
>> this helps with the situation?
>>
>> If it is indeed the patch (and not a unsupported configuration):
>>
>> @Ben can you please take a peek into your wave-1 firmware and check if the
>> mgmt_rate WMI (WMI_10X_VDEV_PARAM_MGMT_RATE) is supported, or if there is
>> a bad interaction somewhere else?
>>
>> (This "pdev param 0 not supported by firmware" was mentioned in
>> https://bugs.openwrt.org/index.php?do=details&task_id=1920 so probably not the problem)
> 
> Hopefully the user can bisect to the exact bad commit, and then I'll be happy to
> try to figure out what is the issue.
> 
> I have not made many changes to the wave-1 firmware recently.? I have some API
> to set the management rates, but not sure it uses the same API as whatever that
> patch in question is using.
> 
> Thanks,
> Ben
> 
>>
>> Cheers,
>> Christian
>>
>>
> 


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Mon Feb 18 17:58:32 2019
From: mail at david-bauer.net (David Bauer)
Date: Mon, 18 Feb 2019 23:58:32 +0100
Subject: [OpenWrt-Devel] [PATCH v2 1/3] scripts: make eva_ramboot.py offset
 configurable
Message-ID: <20190218225834.28100-1-mail@david-bauer.net>

The current eva_ramboot.py script is currently only compatible with
Lantiq based AVM devices. For IPQ40xx devices, the offset needs to be
changed. Also an alignment is not necessary here.

Adjust the script to be able to pass an optional offset to load the
image to. In case no offset is provided, the script behaves exactly as
before this commit.

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 scripts/flashing/eva_ramboot.py | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/scripts/flashing/eva_ramboot.py b/scripts/flashing/eva_ramboot.py
index b825d2768b..b182f09d21 100755
--- a/scripts/flashing/eva_ramboot.py
+++ b/scripts/flashing/eva_ramboot.py
@@ -1,24 +1,32 @@
-#!/usr/bin/python
+#!/usr/bin/env python3
+
+import argparse
 
 from ftplib import FTP
 from sys import argv
 from os import stat
 
-assert len(argv) == 3
-ip = argv[1]
-image = argv[2]
+parser = argparse.ArgumentParser(description='Tool to boot AVM EVA ramdisk images.')
+parser.add_argument('ip', type=str, help='IP-address to transfer the image to')
+parser.add_argument('image', type=str, help='Location of the ramdisk image')
+parser.add_argument('--offset', type=lambda x: int(x,0), help='Offset to load the image to in hex format with leading 0x. Only needed for non-lantiq devices.')
+args = parser.parse_args()
 
-size = stat(image).st_size
+size = stat(args.image).st_size
 # arbitrary size limit, to prevent the address calculations from overflows etc.
 assert size < 0x2000000
 
-# We need to align the address. A page boundary seems to be sufficient on 7362sl
-# and 7412
-addr = ((0x8000000 - size) & ~0xfff)
-haddr = 0x80000000 + addr
-img = open(image, "rb")
+if args.offset:
+	addr = size
+	haddr = args.offset
+else:
+	# We need to align the address.
+	# A page boundary seems to be sufficient on 7362sl and 7412
+	addr = ((0x8000000 - size) & ~0xfff)
+	haddr = 0x80000000 + addr
 
-ftp = FTP(ip, 'adam2', 'adam2')
+img = open(args.image, "rb")
+ftp = FTP(args.ip, 'adam2', 'adam2')
 
 def adam(cmd):
 	print("> %s"%(cmd))
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Mon Feb 18 17:58:33 2019
From: mail at david-bauer.net (David Bauer)
Date: Mon, 18 Feb 2019 23:58:33 +0100
Subject: [OpenWrt-Devel] [PATCH v2 2/3] uboot-fritz4040: bump version to
 2019-02-08
In-Reply-To: <20190218225834.28100-1-mail@david-bauer.net>
References: <20190218225834.28100-1-mail@david-bauer.net>
Message-ID: <20190218225834.28100-2-mail@david-bauer.net>

Adds support for the AVM FRITZ!Box 7530.

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 package/boot/uboot-fritz4040/Makefile | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile
index df00b89af0..45f211527d 100644
--- a/package/boot/uboot-fritz4040/Makefile
+++ b/package/boot/uboot-fritz4040/Makefile
@@ -10,22 +10,23 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_SOURCE_URL:=https://github.com/chunkeey/FritzBox-4040-UBOOT
 PKG_SOURCE_PROTO:=git
-PKG_SOURCE_VERSION:=a768e513b07b5999a8e7d7740ac8d9da04ee7e51
-PKG_SOURCE_DATE:=2019-01-25
-PKG_MIRROR_HASH:=eb552c946bcad53763557b19703b10210f7acabf0d135759beddb7b11fa4ef25
+PKG_SOURCE_VERSION:=d306cce36f98a0a67becc42f20df4b22f1d1465f
+PKG_SOURCE_DATE:=2019-02-08
+PKG_MIRROR_HASH:=715380605dd0cd6ffd65a18b34127bd57dfe9fb0a0164bf8aca703ee018d8070
 
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 include $(INCLUDE_DIR)/u-boot.mk
 include $(INCLUDE_DIR)/package.mk
 
 define U-Boot/Default
   BUILD_TARGET:=ipq40xx
+  UBOOT_BOARD:=$(1)
+  UBOOT_IMAGE:=uboot-$(1).bin
 endef
 
 define U-Boot/fritz4040
   NAME:=FritzBox 4040
-  UBOOT_IMAGE:=uboot-fritz4040.bin
   BUILD_DEVICES:=avm_fritzbox-4040
 endef
 
@@ -42,7 +43,7 @@ endef
 
 define Build/Compile
 	$(Build/Compile/U-Boot)
-	(cd $(PKG_BUILD_DIR); ./fritz/fritzcreator.sh;)
+	(cd $(PKG_BUILD_DIR); ./fritz/fritzcreator.sh $(UBOOT_BOARD);)
 endef
 
 define Build/InstallDev
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Mon Feb 18 17:58:34 2019
From: mail at david-bauer.net (David Bauer)
Date: Mon, 18 Feb 2019 23:58:34 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ipq40xx: add support for FritzBox
 7530
In-Reply-To: <20190218225834.28100-1-mail@david-bauer.net>
References: <20190218225834.28100-1-mail@david-bauer.net>
Message-ID: <20190218225834.28100-3-mail@david-bauer.net>

Hardware
--------
CPU:   Qualcomm IPQ4019
RAM:   256M
FLASH: 128M NAND
ETH:   QCA8075
VDSL:  Intel/Lantiq VRX518 PCIe attached
       currently not supported
DECT:  Dialog SC14448
       currently not supported
WiFi2: IPQ4019 2T2R 2SS b/g/n
WiFi5: IPQ4019 2T2R 2SS n/ac
LED:    - Power/DSL green
        - WLAN green
        - FON/DECT green
        - Connect/WPS green
        - Info green
        - Info red
BTN:    - WLAN
        - FON
        - WPS/Connect
UART:  115200n8 3.3V (located under the Dialog chip)
       VCC - RX - TX - GND (Square is VCC)

Installation
------------
1. Grab the uboot for the Device from the 'u-boot-fritz7530'
   subdirectory. Place it in the same directory as the 'eva_ramboot.py'
   script. It is located in the 'scripts/flashing' subdirectory of the
   OpenWRT tree.

2. Assign yourself the IP address 192.168.178.10/24. Connect your
   Computer to one of the boxes LAN ports.

3. Connect Power to the Box. As soon as the LAN port of your computer
   shows link, load the U-Boot to the box using following command.

   > ./eva_ramboot.py --offset 0x85000000 192.168.178.1 uboot-fritz7530.bin

4. The U-Boot will now start. Now assign yourself the IP address
   192.168.1.70/24. Copy the OpenWRT initramfs (!) image to a TFTP
   server root directory and rename it to 'FRITZ7530.bin'.

5. The Box will now boot OpenWRT from RAM. This can take up to two
   minutes.

6. Copy the U-Boot and the OpenWRT sysupgrade (!) image to the Box using
   scp. SSH into the Box and first write the Bootloader to both previous
   kernel partitions.

   > mtd write /path/to/uboot-fritz7530.bin uboot0
   > mtd write /path/to/uboot-fritz7530.bin uboot1

7. Remove the AVM filesystem partitions to make room for our kernel +
   rootfs + overlayfs.

   > ubirmvol /dev/ubi0 --name=avm_filesys_0
   > ubirmvol /dev/ubi0 --name=avm_filesys_1

8. Flash OpenWRT peristently using sysupgrade.

   > sysupgrade -n /path/to/openwrt-sysupgrade.bin

Signed-off-by: David Bauer <mail at david-bauer.net>
---
v2:
 - add PCIe subnode so VRX518 is detected on the PCIe bus
   - driver is still missing
 - add fallback onto uboot1 partition for the caldata
 - adjust caldata size so no padding is extracted
 - reordered 01_leds
 - remove gpio52 from nand pinmux
 - fixed wrong label on SBL1 partition
 - drop 'qcom,ipq4019' compatible

 package/boot/uboot-fritz4040/Makefile         |   7 +-
 package/firmware/ipq-wifi/Makefile            |   3 +-
 package/firmware/ipq-wifi/board-fritz7530.bin | Bin 0 -> 24324 bytes
 .../ipq40xx/base-files/etc/board.d/01_leds    |   7 +-
 .../ipq40xx/base-files/etc/board.d/02_network |   4 +
 .../etc/hotplug.d/firmware/11-ath10k-caldata  |   8 +
 .../base-files/lib/upgrade/platform.sh        |   3 +-
 .../boot/dts/qcom-ipq4019-fritzbox-7530.dts   | 305 +++++++++++++++++
 .../boot/dts/qcom-ipq4019-fritzbox-7530.dts   | 309 ++++++++++++++++++
 target/linux/ipq40xx/image/Makefile           |   9 +
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 .../901-arm-boot-add-dts-files.patch          |   3 +-
 12 files changed, 653 insertions(+), 8 deletions(-)
 create mode 100644 package/firmware/ipq-wifi/board-fritz7530.bin
 create mode 100644 target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
 create mode 100644 target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts

diff --git a/package/boot/uboot-fritz4040/Makefile b/package/boot/uboot-fritz4040/Makefile
index 45f211527d..a53b7d010f 100644
--- a/package/boot/uboot-fritz4040/Makefile
+++ b/package/boot/uboot-fritz4040/Makefile
@@ -30,6 +30,11 @@ define U-Boot/fritz4040
   BUILD_DEVICES:=avm_fritzbox-4040
 endef
 
+define U-Boot/fritz7530
+  NAME:=FritzBox 7530
+  BUILD_DEVICES:=avm_fritzbox-7530
+endef
+
 UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
 UBOOT_MAKE_FLAGS = USE_PRIVATE_LIBGCC=yes
 export DTC
@@ -56,6 +61,6 @@ define Package/u-boot/install
 	$(INSTALL_BIN) $(PKG_BUILD_DIR)/upload-to-f4040.sh $(1)/
 endef
 
-UBOOT_TARGETS := fritz4040
+UBOOT_TARGETS := fritz4040 fritz7530
 
 $(eval $(call BuildPackage/U-Boot))
diff --git a/package/firmware/ipq-wifi/Makefile b/package/firmware/ipq-wifi/Makefile
index 7c9def8967..695d2f4429 100644
--- a/package/firmware/ipq-wifi/Makefile
+++ b/package/firmware/ipq-wifi/Makefile
@@ -17,7 +17,7 @@ endef
 # Please send a mail with your device-specific board files upstream.
 # You can find instructions and examples on the linux-wireless wiki:
 # <https://wireless.wiki.kernel.org/en/users/drivers/ath10k/boardfiles>
-ALLWIFIBOARDS:=asus_map-ac2200 engenius_eap1300 linksys_ea6350v3
+ALLWIFIBOARDS:=asus_map-ac2200 engenius_eap1300 fritz7530 linksys_ea6350v3
 ALLWIFIPACKAGES:=$(foreach BOARD,$(ALLWIFIBOARDS),ipq-wifi-$(BOARD))
 
 define Package/ipq-wifi-default
@@ -54,6 +54,7 @@ endef
 #$(eval $(call generate-ipq-wifi-package,<devicename>,<filename>,<displayname>))
 $(eval $(call generate-ipq-wifi-package,asus_map-ac2200,board-map-ac2200.bin,ASUS MAP-AC2200))
 $(eval $(call generate-ipq-wifi-package,engenius_eap1300,board-engenius_eap1300.bin,EnGenius EAP1300))
+$(eval $(call generate-ipq-wifi-package,fritz7530,board-fritz7530.bin,AVM FRITZ!Box 7530))
 $(eval $(call generate-ipq-wifi-package,linksys_ea6350v3,board-linksys_ea6350v3.bin,Linksys EA6350v3))
 
 $(foreach PACKAGE,$(ALLWIFIPACKAGES),$(eval $(call BuildPackage,$(PACKAGE))))
diff --git a/package/firmware/ipq-wifi/board-fritz7530.bin b/package/firmware/ipq-wifi/board-fritz7530.bin
new file mode 100644
index 0000000000000000000000000000000000000000..905145f1da5ee91c481f30e6bd08b3cf8da0c2ed
GIT binary patch
literal 24324
zcmeHPT~HHQ7QR9LR8%?%e<3s>;U{rPfWSzEC?P~9ffg7R5u)oNqLKhZ1m(v#CFP<b
zMr1 at 80!ENRMSgl+rCgm+nOz;%+0vA|FZ1ThzRiPFSzBAath2Y%2 at pxf1Yr%(C)~d0
zp1$XvbHDB+-F-juMOLOTvq+hgm at Aa$XBH|zO-&7eqDvsQ0A#>Yex!cO-pca$@*0hB
zU!_JT)KqLqw6w}=_tsSqO>ts;!`?d0-Y*Yt$t>P3%q~<FspYjz!qm at _6KiO23=SNR
zlQ14gqk&b&=_$p;*c%6c7bpW at jb9+q1aQkuhP6L@ITC>&nHUOy<mBXkzj*_sOkeQ!
zU*|JyWfjwr*N1H!KzsUruTC-&_yx-Q`<%BoOz#SWvmstKA#$|oGj)c;j3-=-IMZ*<
z^pG4tzNQUUg-M at naUA!di*bpOh?&hU4A>?L+gf1dmaJX7e!W``4mxuk*gl0x*D*$%
zHde9E;MMSWd%ISnQfIsx?`vzWQ0J;PKN{&f-Cn2pLbd79DAejTg{sfqLb-ic5C>k5
zjGt_;(rj1DUXAvhYOYjcD(Rz}L^ricC4mlS+Z&-RopgxX2wo43A8RgAr>WwhYisj9
zwE}j#-q#LYb0z#o<9!#Jb?QP%qSYbJKEDsNnxTB4i~VlO!5$CCt>u7{<C!fj>yv at 1
zuX41BJA*UEuGF`sR>bUJ<vtuaWXwLzuL~_Rj_xvUKFz6T?7e?kb1b)tw>?;Pf3Wsc
zdZnN=9D91R`J4RHqWXw^-;OpKx1SX at vJX7DqC1wopQ~b|JszrU&8dyu5v;gzUDKm%
z|4n0f<^A!7{)FR^I!4*jLW#=OhJcUX>b2`OAdH}pu<(dT+b8}^O?<}Ah|SBch8IKt
z&}d#>UNmC6YL$<VkFQnyhC7?el+R8S at R`xkJop#Gjf&!Nqqy8+Z+~FDLa`f-YAh-O
zot+I0MMYS)1gu at _>q~}`2x53#ZX|3l{r>az-Mb*Dkv75 at 5#Z<L?fqX%R~m5SPmZ#9
zTiqDE9)ZK_j(3a^g^0wrN^CSCTuwxAY&4h4LD{TOsLkI7J$XDHF%TTpI^M_F9HD}s
z2$G3rB1vcxqC0Z*c<Y&tuAaFHkXq$|TM8Yei|Ehk2n%J2SXdw$h=ihYR4$S~mm at i7
zjwlC{p)y2?iczsh{9KHrp=qKtED=paB<OS!ra{N*bWT#~bXJr)=lHk+2?J%kW+35c
zxF{UULbG0HA-QO-C>KjclV2wz>1etr9U~9I?5!mf3H_pPiE~$X#xyp&#C)X8e6u*#
z9KB!WYg-Q2q|_W-Ir<bz6iQAIpiT`Zz}T5rBuaJ&Pz?$J3IPfM3IPfM3V{`jK!`X5
ziKKrn{v64tr;1aN47$HfKw<fX!P}2#Z*8~!?$vW+thUL5#aO|Iked2(LBQ1&0$2Mj
zF<h|Sm4=BI0KmG*Ffj4r{Te>0hR>)`b{Lb#<B$)(q2 at U@E)+|Cp%#UBIM4JXTND&d
zB*ZTSDzGN<^CX+6pRO1E5Fkqdz(7Z6!B9G_^+jvV_eX#fNWEnM0e^oiXaOJz at DRwO
zg2Wpx<n!2y6x!uJf|qhX!9QRjYD)?9Mu1<74`&$efA#Wb at Y7E}TWUfl3MI=IfnRO~
zFulAg;0go)G%s)eZ=hU-Vw>?jC?8|PO5lg<z{HQv>bTgL=ucV5l{<2+j$EC?3W`d0
zmsM06IxqHI9vB)PyESp|;a`6E at rC<4X07A7cjdZddIQTkC`NCyt%O?EKrwlnZ57nA
z{)vg(Y%8GdgXq*_`J=mJPJ`u at s4Hv6dBuAUbaY?2j^Ca9n=^fRp)xZY<~t_BM%f}Z
z#srFY3Iszj5r!#1%DWUqib_RNEM>v&uV<pVqXmnD5tN=S&PMX+o5Y)tt#oxS at tQk^
z?R(BvFO^#ycX{_oF7fWMZW;}e?wdL-Ebt&J?>@+nL<e3{@(A8N0N&oD#eU2C?OfhH
z<R4_%%6xhEFv|D#kpNg|-aU~c5d*ag<e2|H!>70FJf|_!&jsGSowwt-?(psbgTZiE
z*lac+N<ct>J7x9i#pK<~m;=n04*$o&4i=}4(a}+-`{wR|$9k5`-S4VpMK0%3lXm6w
z at IaJYNt^0JAwVHOA+S^tC at WJJle~L6J#Za43paW9Wu*VQbzW~s{{shXW3pKAnrgv?
z;@w;C${yJ6&VEgyc=yxjxI%xoLHd91>&i2f*^GNqx1>u>aM8EK8+kV8p3py%b{~V4
z5D&W_zL<4;VW)oR!(-}<xf;hzNe1>*o4E?lHHi%olXp$s`a`AJl9<Wc_>e)bEtRl|
z{}sF36UPTrUFK$7ZIT&;Q<uzoe3waXNWdpd16plqo+N(q&!!9dno_xhLpYd>adBX(
z*L)H`Xeuylnd&#6!K+O>^g{ewL$|h0sgQ`FLzlkV=5WOrCjhY9Ib3Hb)NY!(X70k9
z3?*7AK56LF9#(GShgu?3X?Kw+nR<zoOy+jHO0Ou5o*Fct$LkC`v|I7-3`T8(QppdW
zyl1*(Nhy*@=}IpjM(8pB0pF+Js$@aeHe92ZE5q?WnfkRg%1lXu`8#~j(5&4lVG$1f
zy at FUU)opIU%k*i=uqmUt6|c}sm0>Uuqy9)~u0&wIi}xDpwE4<tGJ*i6bl%*Am*~Yx
z=G52bqqrJsi1|K#6=Erqps(&sUN$vqvy@?E1ULtG!~-w&sgztffD}p;N=^`14yT5b
zsZr(?i@@D8$9}ghNyrZKz1CK}J5?MNvEKi1cXq4b5UV^O`}?8&=eFp12SZB#+SR1a
z5XJ_D`rNs6tSUz?P6!V at KTzC}bd;mrkoWXv^#xf=OikFHXT6$&)VSCX03P)ptyX4<
zgb at +<h7WbiP6+DgJ06c{x-wdL)uDTy^w*ckH^s0+10GzfKB!cp+(3q*FYjd1;h>%C
zw%xy3ej)8Rrz&XILsRwc0!4f@;yp3gP`6FV<p;6ajrpfi8bV70ly^pde at Sv8vL<NH
zM9<-Us;%)nhVO`}p<acFB|+g6{dFB#$Kq>(3!nWl=WKj)*nz;Ex4MsN^A!Rv-FL`X
z`(;6qFeRLO!>DQ7dSv54M(*|D+TQe5ULAAKjq|#4MLLhoX7+wvv42}myf}z;u4Cs{
zDO&C>y6pBy{pGxK{KnAzEB3^pCQc!+3=sI(U*YhZEe`M)XwxYrO=_u_9}^P||KKlh
zaClKs+^Aw7kNFjjxtw?#?cRUE*6ioTu+i>UFIWr*@KYuVf%zfeD(PdP`^_)gW#dKh
z?ja|B5jp#w#Ibjji>IH+!;nu;^4}2)ho0cquW1#uC?HRM<7RFqSt1W at +-xaV1HF?h
zJbHpl at 7J;h7NYjySa|mY*WO3)PYeH^<lw*b^!cyk{0LsWH{`{a^bG&77`*t!#?~3%
z-e&)loO>cR#k-$bnwy74@$TmV8s*~I2)MFl?2Kza+wR%3oPTx{?|!krHGh5l{{g(;
Bh^qhq

literal 0
HcmV?d00001

diff --git a/target/linux/ipq40xx/base-files/etc/board.d/01_leds b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
index 9105bf2452..ec8486aa95 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ipq40xx/base-files/etc/board.d/01_leds
@@ -22,15 +22,16 @@ avm,fritzbox-4040)
 	ucidef_set_led_netdev "wan" "WAN" "fritz4040:green:wan" "eth1"
 	ucidef_set_led_switch "lan" "LAN" "fritz4040:green:lan" "switch0" "0x1e"
 	;;
+avm,fritzbox-7530 |\
+glinet,gl-b1300)
+	ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
+	;;
 engenius,eap1300)
 	ucidef_set_led_netdev "lan" "LAN" "${boardname}:blue:lan" "eth0"
 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "${boardname}:blue:wlan2g" "phy0tpt"
 	ucidef_set_led_wlan "wlan5g" "WLAN5G" "${boardname}:yellow:wlan5g" "phy1tpt"
 	ucidef_set_led_default "mesh" "MESH" "${boardname}:blue:mesh" "0"
 	;;
-glinet,gl-b1300)
-	ucidef_set_led_wlan "wlan" "WLAN" "${boardname}:green:wlan" "phy0tpt"
-	;;
 netgear,ex6100v2 |\
 netgear,ex6150v2)
 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "ex61x0v2:green:router" "phy0tpt"
diff --git a/target/linux/ipq40xx/base-files/etc/board.d/02_network b/target/linux/ipq40xx/base-files/etc/board.d/02_network
index 43be592071..2fd3d76ed0 100755
--- a/target/linux/ipq40xx/base-files/etc/board.d/02_network
+++ b/target/linux/ipq40xx/base-files/etc/board.d/02_network
@@ -32,6 +32,10 @@ ipq40xx_setup_interfaces()
 		ucidef_add_switch "switch0" \
 			"0u at eth0" "1:lan" "2:lan" "3:lan" "4:lan"
 		;;
+	avm,fritzbox-7530)
+		ucidef_add_switch "switch0" \
+			"0u at eth0" "1:lan" "2:lan" "3:lan" "4:lan"
+		;;
 	compex,wpj428)
 		ucidef_set_interface_lan "eth0 eth1"
 		;;
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 59a809e792..d9d362598d 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -134,6 +134,10 @@ case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
+	avm,fritzbox-7530)
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C000 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
+		;;
 	meraki,mr33)
 		ath10kcal_ubi_extract "ART" 4096 12064
 		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
@@ -175,6 +179,10 @@ case "$FIRMWARE" in
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
+	avm,fritzbox-7530)
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader0") || \
+		/usr/bin/fritz_cal_extract -i 1 -s 0x3C800 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader1")
+		;;
 	meraki,mr33)
 		ath10kcal_ubi_extract "ART" 20480 12064
 		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 20480 12064
diff --git a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
index f6bc173a76..eb1c64aa49 100644
--- a/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ipq40xx/base-files/lib/upgrade/platform.sh
@@ -46,7 +46,8 @@ zyxel_do_upgrade() {
 
 platform_do_upgrade() {
 	case "$(board_name)" in
-	8dev,jalapeno)
+	8dev,jalapeno|\
+	avm,fritzbox-7530)
 		nand_do_upgrade "$ARGV"
 		;;
 	asus,map-ac2200)
diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
new file mode 100644
index 0000000000..b2a33468bb
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
@@ -0,0 +1,305 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Box 7530";
+	compatible = "avm,fritzbox-7530";
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &info_red;
+		led-running = &power_green;
+		led-upgrade = &info_green;
+	};
+
+	soc {
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		tcsr at 194b000 {
+			compatible = "qcom,tcsr";
+			reg = <0x194b000 0x100>;
+			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb3 at 8af8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+			qcom,num_gmac = <1>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wlan {
+			label = "wlan";
+			gpios = <&tlmm 42 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 41 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		dect {
+			label = "dect";
+			gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		info_red: info_red {
+			label = "fritzbox-7530:red:info";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		info_green: info {
+			label = "fritzbox-7530:green:info";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan {
+			label = "fritzbox-7530:green:wlan";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+		};
+
+		fon {
+			label = "fritzbox-7530:green:fon";
+			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+		};
+
+		power_green: power {
+			label = "fritzbox-7530:green:power";
+			gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "fritzbox-7530:green:wps";
+			gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio53", "gpio58", "gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+
+	usb-power {
+		line-name = "enable USB3 power";
+		gpios = <49 GPIO_ACTIVE_HIGH>;
+		gpio-hog;
+		output-high;
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition at 180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition at 1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition at 240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition at 2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition at b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition at f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition at 1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&usb3_ss_phy {
+	status = "okay";
+};
+
+&usb3_hs_phy {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&wifi1 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&pcie0 {
+	status = "okay";
+
+	ranges = <0x81000000 0 0x40200000 0x40200000
+			0 0x00100000   /* downstream I/O */
+			0x82000000 0 0x48000000 0x48000000
+			0 0x10000000>; /* non-prefetchable memory */
+
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		dsl at 1,0 {
+			compatible = "intel,vrx518";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+		};
+	};
+};
diff --git a/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
new file mode 100644
index 0000000000..7dacf0ad90
--- /dev/null
+++ b/target/linux/ipq40xx/files-4.19/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
@@ -0,0 +1,309 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include "qcom-ipq4019.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/soc/qcom,tcsr.h>
+
+/ {
+	model = "AVM FRITZ!Box 7530";
+	compatible = "avm,fritzbox-7530";
+
+	aliases {
+		led-boot = &power_green;
+		led-failsafe = &info_red;
+		led-running = &power_green;
+		led-upgrade = &info_green;
+	};
+
+	soc {
+		rng at 22000 {
+			status = "okay";
+		};
+
+		mdio at 90000 {
+			status = "okay";
+		};
+
+		ess-psgmii at 98000 {
+			status = "okay";
+		};
+
+		tcsr at 1949000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1949000 0x100>;
+			qcom,wifi_glb_cfg = <TCSR_WIFI_GLB_CFG>;
+		};
+
+		tcsr at 194b000 {
+			compatible = "qcom,tcsr";
+			reg = <0x194b000 0x100>;
+			qcom,usb-hsphy-mode-select = <TCSR_USB_HSPHY_HOST_MODE>;
+		};
+
+		ess_tcsr at 1953000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1953000 0x1000>;
+			qcom,ess-interface-select = <TCSR_ESS_PSGMII>;
+		};
+
+		tcsr at 1957000 {
+			compatible = "qcom,tcsr";
+			reg = <0x1957000 0x100>;
+			qcom,wifi_noc_memtype_m0_m2 = <TCSR_WIFI_NOC_MEMTYPE_M0_M2>;
+		};
+
+		usb3 at 8af8800 {
+			status = "okay";
+		};
+
+		crypto at 8e3a000 {
+			status = "okay";
+		};
+
+		watchdog at b017000 {
+			status = "okay";
+		};
+
+		ess-switch at c000000 {
+			status = "okay";
+		};
+
+		edma at c080000 {
+			status = "okay";
+			qcom,num_gmac = <1>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		wlan {
+			label = "wlan";
+			gpios = <&tlmm 42 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_RFKILL>;
+		};
+
+		wps {
+			label = "wps";
+			gpios = <&tlmm 41 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_WPS_BUTTON>;
+		};
+
+		dect {
+			label = "dect";
+			gpios = <&tlmm 43 GPIO_ACTIVE_LOW>;
+			linux,code = <KEY_PHONE>;
+		};
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		info_red: info_red {
+			label = "fritzbox-7530:red:info";
+			gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
+		};
+
+		info_green: info {
+			label = "fritzbox-7530:green:info";
+			gpios = <&tlmm 33 GPIO_ACTIVE_LOW>;
+		};
+
+		wlan {
+			label = "fritzbox-7530:green:wlan";
+			gpios = <&tlmm 34 GPIO_ACTIVE_LOW>;
+		};
+
+		fon {
+			label = "fritzbox-7530:green:fon";
+			gpios = <&tlmm 35 GPIO_ACTIVE_LOW>;
+		};
+
+		power_green: power {
+			label = "fritzbox-7530:green:power";
+			gpios = <&tlmm 39 GPIO_ACTIVE_LOW>;
+		};
+
+		wps {
+			label = "fritzbox-7530:green:wps";
+			gpios = <&tlmm 45 GPIO_ACTIVE_LOW>;
+		};
+	};
+};
+
+&tlmm {
+	serial_0_pins: serial_pinmux {
+		mux {
+			pins = "gpio16", "gpio17";
+			function = "blsp_uart0";
+			bias-disable;
+		};
+	};
+
+	nand_pins: nand_pins {
+		pullups {
+			pins = "gpio53", "gpio58", "gpio59";
+			function = "qpic";
+			bias-pull-up;
+		};
+
+		pulldowns {
+			pins = "gpio54", "gpio55", "gpio56",
+				"gpio57", "gpio60", "gpio61",
+				"gpio62", "gpio63", "gpio64",
+				"gpio65", "gpio66", "gpio67",
+				"gpio68", "gpio69";
+			function = "qpic";
+			bias-pull-down;
+		};
+	};
+
+	usb-power {
+		line-name = "enable USB3 power";
+		gpios = <49 GPIO_ACTIVE_HIGH>;
+		gpio-hog;
+		output-high;
+	};
+};
+
+&nand {
+	pinctrl-0 = <&nand_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+	cs-gpios = <&tlmm 54 GPIO_ACTIVE_HIGH>;
+
+	nand at 0 {
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			partition at 0 {
+				label = "SBL1";
+				reg = <0x000000 0x80000>;
+				read-only;
+			};
+
+			partition at 80000 {
+				label = "MIBIB";
+				reg = <0x080000 0x80000>;
+				read-only;
+			};
+
+			partition at 100000 {
+				label = "QSEE";
+				reg = <0x100000 0x80000>;
+				read-only;
+			};
+
+			partition at 180000 {
+				label = "CDT";
+				reg = <0x180000 0x40000>;
+				read-only;
+			};
+
+			partition at 1c0000 {
+				label = "QSEE_B";
+				reg = <0x1c0000 0x80000>;
+				read-only;
+			};
+
+			partition at 240000 {
+				label = "urlader0";
+				reg = <0x240000 0x40000>;
+				read-only;
+			};
+
+			partition at 280000 {
+				label = "urlader1";
+				reg = <0x280000 0x40000>;
+				read-only;
+			};
+
+			partition at 2c0000 {
+				label = "nand-tffs";
+				reg = <0x2c0000 0x840000>;
+				read-only;
+			};
+
+			partition at b00000 {
+				/* 'kernel1' in AVM firmware */
+				label = "uboot0";
+				reg = <0xb00000 0x400000>;
+			};
+
+			partition at f00000 {
+				/* 'kernel2' in AVM firmware */
+				label = "uboot1";
+				reg = <0xf00000 0x400000>;
+			};
+
+			partition at 1300000 {
+				label = "ubi";
+				reg = <0x1300000 0x6d00000>;
+			};
+		};
+	};
+};
+
+&cryptobam {
+	status = "okay";
+};
+
+&blsp_dma {
+	status = "okay";
+};
+
+&blsp1_uart1 {
+	pinctrl-0 = <&serial_0_pins>;
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&usb3_ss_phy {
+	status = "okay";
+};
+
+&usb3_hs_phy {
+	status = "okay";
+};
+
+&qpic_bam {
+	status = "okay";
+};
+
+&wifi0 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&wifi1 {
+	status = "okay";
+	qcom,ath10k-calibration-variant = "AVM-FRITZBox-7530";
+};
+
+&pcie0 {
+	status = "okay";
+
+	ranges = <0x81000000 0 0x40200000 0x40200000
+			0 0x00100000   /* downstream I/O */
+			0x82000000 0 0x48000000 0x48000000
+			0 0x10000000>; /* non-prefetchable memory */
+
+	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
+	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
+
+	bridge at 0,0 {
+		reg = <0x00000000 0 0 0 0>;
+		#address-cells = <3>;
+		#size-cells = <2>;
+		ranges;
+
+		dsl at 1,0 {
+			compatible = "intel,vrx518";
+			status = "okay";
+			reg = <0x00010000 0 0 0 0>;
+		};
+	};
+};
diff --git a/target/linux/ipq40xx/image/Makefile b/target/linux/ipq40xx/image/Makefile
index 31468fd758..4b42ca1241 100644
--- a/target/linux/ipq40xx/image/Makefile
+++ b/target/linux/ipq40xx/image/Makefile
@@ -106,6 +106,15 @@ define Device/avm_fritzbox-4040
 endef
 TARGET_DEVICES += avm_fritzbox-4040
 
+define Device/avm_fritzbox-7530
+	$(call Device/FitImageLzma)
+	DEVICE_DTS := qcom-ipq4019-fritzbox-7530
+	DEVICE_TITLE := AVM Fritz!Box 7530
+	DEVICE_PACKAGES := fritz-caldata ipq-wifi-fritz7530
+	IMAGES := sysupgrade.bin
+endef
+TARGET_DEVICES += avm_fritzbox-7530
+
 define Device/compex_wpj428
 	$(call Device/FitImage)
 	DEVICE_DTS := qcom-ipq4028-wpj428
diff --git a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
index 20ea3a8449..a528743b69 100644
--- a/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.14/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -697,7 +697,23 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -697,7 +697,24 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -27,6 +27,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk01.1-c1.dtb \
 +	qcom-ipq4019-a62.dtb \
 +	qcom-ipq4019-ap.dk04.1-c1.dtb \
++	qcom-ipq4019-fritzbox-7530.dtb \
 +	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
diff --git a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
index f3472b32c0..050779e5a0 100644
--- a/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
+++ b/target/linux/ipq40xx/patches-4.19/901-arm-boot-add-dts-files.patch
@@ -10,7 +10,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
-@@ -785,11 +785,26 @@ dtb-$(CONFIG_ARCH_QCOM) += \
+@@ -785,11 +785,27 @@ dtb-$(CONFIG_ARCH_QCOM) += \
  	qcom-apq8074-dragonboard.dtb \
  	qcom-apq8084-ifc6540.dtb \
  	qcom-apq8084-mtp.dtb \
@@ -30,6 +30,7 @@ Signed-off-by: John Crispin <john at phrozen.org>
  	qcom-ipq4019-ap.dk07.1-c1.dtb \
  	qcom-ipq4019-ap.dk07.1-c2.dtb \
 +	qcom-ipq4019-a62.dtb \
++	qcom-ipq4019-fritzbox-7530.dtb \
 +	qcom-ipq4019-map-ac2200.dtb \
 +	qcom-ipq4028-wpj428.dtb \
 +	qcom-ipq4029-gl-b1300.dtb \
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From gch981213 at gmail.com  Tue Feb 19 01:27:08 2019
From: gch981213 at gmail.com (Chuanhong Guo)
Date: Tue, 19 Feb 2019 14:27:08 +0800
Subject: [OpenWrt-Devel] [PATCH] ath79: fix wmac memory region for qca953x
Message-ID: <20190219062708.10475-1-gch981213@gmail.com>

According to /arch/mips/include/asm/mach-ath79/ar71xx_regs.h
the size of wmac register range for qca953x is only 0x20000.

Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
---
 target/linux/ath79/dts/qca953x.dtsi | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ath79/dts/qca953x.dtsi b/target/linux/ath79/dts/qca953x.dtsi
index 4ce5bfe0a2..669e3fb851 100644
--- a/target/linux/ath79/dts/qca953x.dtsi
+++ b/target/linux/ath79/dts/qca953x.dtsi
@@ -173,7 +173,7 @@
 
 			wmac: wmac at 18100000 {
 				compatible = "qca,qca9530-wmac";
-				reg = <0x18100000 0x230000>;
+				reg = <0x18100000 0x20000>;
 
 				interrupt-parent = <&intc2>;
 				interrupts = <0>;
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From por at oranjevos.nl  Tue Feb 19 10:02:56 2019
From: por at oranjevos.nl (Paul Oranje)
Date: Tue, 19 Feb 2019 16:02:56 +0100
Subject: [OpenWrt-Devel] [PATCH v2] dnsmasq: allow using dnsmasq as the
 sole resolver
In-Reply-To: <CAJLcKsH0f8ZERD9pfxy8_62Kxmweo8jiP913rAGR8yabPEUwEg@mail.gmail.com>
References: <20190218141801.7502-1-yszhou4tech@gmail.com>
 <CAJLcKsH0f8ZERD9pfxy8_62Kxmweo8jiP913rAGR8yabPEUwEg@mail.gmail.com>
Message-ID: <38A885F2-49AA-4715-BBB7-A07B41998428@oranjevos.nl>

Op 18 feb. 2019, om 21:50 heeft Hans Dedecker <dedeckeh at gmail.com> het volgende geschreven:
> 
> On Mon, Feb 18, 2019 at 3:18 PM Yousong Zhou <yszhou4tech at gmail.com> wrote:
>> 
>> Currently it seems impossible to configure /etc/config/dhcp to achieve
>> the following use case
>> 
>> - run dnsmasq with no-resolv
>> - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"
>> 
>> Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
>> to achive the 2nd effect above, but setting resolvfile requires noresolv
>> being false.
>> 
>> A new boolean option "localuse" is added to indicate that we intend to
>> use dnsmasq as the local dns resolver.  It's false by default and to
>> align with old behaviour it will be true automatically if resolvfile is
>> set to /tmp/resolv.conf.auto
>> 
>> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> Acked-by: Hans Dedecker <dedeckeh at gmail.com>
>> ---
>> v2 <- v1
>> 
>> - retain /tmp/resolv.conf.auto as the default value of resolvfile when
>>   doing config_get, i.e. 2nd patch in the 1st version is now dropped
>> - retain the old behavior of rewriting /tmp/resolv.conf when resolvfile
>>   is /tmp/resolv.conf.auto
>> 
>> .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
>> 1 file changed, 15 insertions(+), 15 deletions(-)
>> 
>> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
>> index f3066627d6..f65736e268 100644
>> --- a/package/network/services/dnsmasq/files/dnsmasq.init
>> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
>> @@ -731,7 +731,9 @@ dhcp_relay_add() {
>> 
>> dnsmasq_start()
>> {
>> -       local cfg="$1" disabled resolvfile user_dhcpscript
>> +       local cfg="$1"
>> +       local disabled user_dhcpscript
>> +       local resolvfile localuse
>> 
>>        config_get_bool disabled "$cfg" disabled 0
>>        [ "$disabled" -gt 0 ] && return 0
>> @@ -882,14 +884,14 @@ dnsmasq_start()
>>        config_get_bool cachelocal "$cfg" cachelocal 1
>> 
>>        config_get_bool noresolv "$cfg" noresolv 0
>> +       config_get_bool localuse "$cfg" localuse 0
>>        if [ "$noresolv" != "1" ]; then
>> -               config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
>> -               # So jail doesn't complain if file missing
>> -               [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
>> +               config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
>> +               [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
>> +               xappend "--resolv-file=$resolvfile"
>> +               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>>        fi
>> 
>> -       [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
>> -
>>        config_get hostsfile "$cfg" dhcphostsfile
>>        [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
>> 
>> @@ -1011,7 +1013,7 @@ dnsmasq_start()
>>        mv -f $CONFIGFILE_TMP $CONFIGFILE
>>        mv -f $HOSTFILE_TMP $HOSTFILE
>> 
>> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
>> +       [ "$localuse" -gt 0 ] && {
>>                rm -f /tmp/resolv.conf
>>                [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
>>                        echo "search $DOMAIN" >> /tmp/resolv.conf
>> @@ -1037,17 +1039,15 @@ dnsmasq_start()
>> 
>> dnsmasq_stop()
>> {
>> -       local cfg="$1" resolvfile
>> +       local cfg="$1"
>> +       local noresolv resolvfile localuse
>> 
>> +       config_get_bool noresolv "$cfg" noresolv 0
>> +       config_get_bool localuse "$cfg" localuse 0
>>        config_get resolvfile "$cfg" "resolvfile"
>> 
>> -       #relink /tmp/resolve.conf only for main instance
>> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
>> -               [ -f /tmp/resolv.conf ] && {
>> -                       rm -f /tmp/resolv.conf
>> -                       ln -s "$resolvfile" /tmp/resolv.conf
>> -               }
>> -       }
>> +       [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>> +       [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
>> 
>>        rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
>> }
> 

Hi,

In 2017 I submitted a patch to deal with having resolv.conf (used by the CLIB local resolver) being set correctly, see [1] and [2].
For the problem it sets out to solve (partially) an issue was opened [3].
The use-case concerned having Unbound as nameserver with dnsmasq handling DNS for the local lan domain and DHCP.
The patch was not merged since it was deemed that setting resolv.conf requires atomicity which would imply extending netifd with the functionality to handle this instead as my patch could not offer this atomic setting of resolv.conf.

Currently with the use-case (Unbound with "option dhcp_link 'dnsmasq'" set) still requires restarting Unbound manually after a restart of dnsmasq since dnsmasq.init will reset resol.conf to /etc/resolv.conf.auto.

I wonder, did you see that patch and could that patch still be relevant ?

[1] http://lists.openwrt.org/pipermail/openwrt-devel/2017-June/007923.html
[2] https://patchwork.ozlabs.org/patch/780353/
[3] https://bugs.openwrt.org/index.php?do=details&task_id=785

Regards,
Paul



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Tue Feb 19 10:22:32 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Tue, 19 Feb 2019 16:22:32 +0100
Subject: [OpenWrt-Devel] [PATCH] openssl: backport devcrypto changes
 from master
In-Reply-To: <20190218205751.21910-1-rosenp@gmail.com>
References: <20190218205751.21910-1-rosenp@gmail.com>
Message-ID: <5333142.SzynaX6uI2@debian64>

On Monday, February 18, 2019 9:57:51 PM CET Rosen Penev wrote:
> From: Eneas U de Queiroz via openwrt-devel <openwrt-devel at lists.openwrt.org>
> 
> The sender domain has a DMARC Reject/Quarantine policy which disallows
> sending mailing list messages using the original "From" header.
> 
> To mitigate this problem, the original message has been wrapped
> automatically by the mailing list software.
> The patches to the /dev/crypto engine were commited to openssl master,
> and will be in the next major version (3.0).
> 
> Changes:
> - Optimization in computing a digest in one operation, saving an ioctl
> - Runtime configuration options for the choice of algorithms to use
> - Command to dump useful information about the algorithms supported by
>   the engine and the system.
> - Build the devcrypto engine as a dynamic module, like other engines.
> 
> The devcrypto engine is built as a separate package by default, but
> options were added to allow building the engines into the main library.
> 
> Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>

Isn't this the same patch as:
<https://patchwork.ozlabs.org/patch/1043246/> ?

If you have tested the patch and want to support it, you could just reply
with a Tested-by tag [0] (ideally with a short text that lists what 
features and platforms you have tested it on).

Cheers,
Christian

[0] <https://www.kernel.org/doc/html/v4.20/process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes>




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Tue Feb 19 10:30:56 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Tue, 19 Feb 2019 15:30:56 +0000
Subject: [OpenWrt-Devel] [PATCH] scripts/qemustart: add option --mach
Message-ID: <20190219153056.1054-1-yszhou4tech@gmail.com>

Value of the new option will be passed to qemu --machine verbatim.

This can be used to set machine options like highmem=off for running old
armvirt/32 kernel lacking LPAE support on QEMU version 3.0 or later

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 scripts/qemustart | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/scripts/qemustart b/scripts/qemustart
index 5bb8ca5f3a..5efb1744a6 100755
--- a/scripts/qemustart
+++ b/scripts/qemustart
@@ -88,6 +88,7 @@ Usage: $SELF [-h|--help]
          [<subtarget> [<extra-qemu-options>]]
          [--kernel <kernel>]
          [--rootfs <rootfs>]
+         [--mach <mach>]
 
 <subtarget> will default to "generic" and must be specified if
 <extra-qemu-options> are present
@@ -100,13 +101,14 @@ the actual <target> in use.  They will default to files under bin/targets/
 Examples
 
   $SELF x86 64
-  $SELF x86 64 -enable-kvm -device virtio-balloon-pci
+  $SELF x86 64 --mach q35,accel=kvm -device virtio-balloon-pci
   $SELF x86 64 -incoming tcp:0:4444
   $SELF x86 64-glibc
   $SELF malta be -m 64
   $SELF malta le64
   $SELF malta be-glibc
   $SELF armvirt 32 \\
+                --mach virt,highmem=off \\
                 --kernel bin/targets/armvirt/32/openwrt-armvirt-32-zImage \\
                 --rootfs bin/targets/armvirt/32/openwrt-armvirt-32-root.ext4
 EOF
@@ -122,6 +124,7 @@ parse_args() {
 		case "$1" in
 			--kernel) o_kernel="$2"; shift 2 ;;
 			--rootfs) o_rootfs="$2"; shift 2 ;;
+			--mach) o_mach="$2"; shift 2 ;;
 			--help|-h)
 				usage
 				exit 0
@@ -152,6 +155,7 @@ parse_args() {
 start_qemu_armvirt() {
 	local kernel="$o_kernel"
 	local rootfs="$o_rootfs"
+	local mach="${o_mach:-virt}"
 	local cpu
 	local qemu_exe
 
@@ -181,7 +185,7 @@ start_qemu_armvirt() {
 		)
 	}
 
-	"$qemu_exe" -machine virt -cpu "$cpu" -nographic \
+	"$qemu_exe" -machine "$mach" -cpu "$cpu" -nographic \
 		-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device virtio-net-pci,id=devlan,netdev=lan,mac="$MAC_LAN" \
 		-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device virtio-net-pci,id=devwan,netdev=wan,mac="$MAC_WAN" \
 		-kernel "$kernel" \
@@ -193,6 +197,7 @@ start_qemu_malta() {
 	local isel
 	local qemu_exe
 	local kernel="$o_kernel"
+	local mach="${o_mach:-malta}"
 
 	# o_subtarget can be le, be, le64, be64, le-glibc, le64-glibc, etc..
 	is64="$(echo $o_subtarget | grep -o 64)"
@@ -204,7 +209,7 @@ start_qemu_malta() {
 	# NOTE: order of wan, lan -device arguments matters as it will affect which
 	# one will be actually used as the wan, lan network interface inside the
 	# guest machine
-	"$qemu_exe" -machine malta -nographic \
+	"$qemu_exe" -machine "$mach" -nographic \
 		-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device pcnet,netdev=wan,mac="$MAC_WAN" \
 		-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device pcnet,netdev=lan,mac="$MAC_LAN" \
 		-kernel "$kernel" \
@@ -213,6 +218,7 @@ start_qemu_malta() {
 
 start_qemu_x86() {
 	local rootfs="$o_rootfs"
+	local mach="${o_mach:-pc}"
 	local qemu_exe
 
 	[ -n "$rootfs" ] || {
@@ -227,7 +233,7 @@ start_qemu_x86() {
 	# 64: 64-bit, kvm guest, virtio
 	#
 	case "${o_subtarget%-*}" in
-		legacy)			qemu_exe="qemu-system-i386"		;;
+		legacy)			qemu_exe="qemu-system-i386"	;;
 		generic|64)		qemu_exe="qemu-system-x86_64"	;;
 		*)
 			__errmsg "target $o_target: unknown subtarget $o_subtarget"
@@ -247,7 +253,7 @@ start_qemu_x86() {
 			#	-drive "file=$rootfs,format=raw,id=drv0,if=none" \
 			#
 			# [1] https://dev.openwrt.org/ticket/17947
-			"$qemu_exe" -nographic \
+			"$qemu_exe" --machine "$mach" -nographic \
 				-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device e1000,id=devlan,netdev=lan,mac="$MAC_LAN" \
 				-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device e1000,id=devwan,netdev=wan,mac="$MAC_WAN" \
 				-device ide-drive,drive=drv0 \
@@ -255,7 +261,7 @@ start_qemu_x86() {
 				"${o_qemu_extra[@]}"
 			;;
 		generic|64)
-			"$qemu_exe" -nographic \
+			"$qemu_exe" --machine "$mach" -nographic \
 				-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device virtio-net-pci,id=devlan,netdev=lan,mac="$MAC_LAN" \
 				-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device virtio-net-pci,id=devwan,netdev=wan,mac="$MAC_WAN" \
 				-drive "file=$rootfs,format=raw,if=virtio" \

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Tue Feb 19 16:01:57 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Tue, 19 Feb 2019 13:01:57 -0800
Subject: [OpenWrt-Devel] [PATCH] libevent2: Add -Wl,
 --gc-sections to reduce size a little.
Message-ID: <20190219210157.2177-1-rosenp@gmail.com>

Saves ~4KB. Also reorganized configure arguments to improve compilation
speed.

Signed-off-by: Rosen Penev <rosenp at gmail.com>
---
 package/libs/libevent2/Makefile | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/package/libs/libevent2/Makefile b/package/libs/libevent2/Makefile
index f7223a01d6..c264fed0c4 100644
--- a/package/libs/libevent2/Makefile
+++ b/package/libs/libevent2/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=libevent2
 PKG_VERSION:=2.1.8
-PKG_RELEASE:=3
+PKG_RELEASE:=4
 
 PKG_SOURCE:=libevent-$(PKG_VERSION)-stable.tar.gz
 PKG_SOURCE_URL:=https://github.com/libevent/libevent/releases/download/release-$(PKG_VERSION)-stable
@@ -108,15 +108,16 @@ define Package/libevent2-pthreads/description
 	threading & locking.
 endef
 
-TARGET_CFLAGS += $(FPIC)
+TARGET_LDFLAGS += -Wl,--gc-sections
 
 CONFIGURE_ARGS += \
 	--enable-shared \
 	--enable-static \
-	--disable-debug-mode
-
-MAKE_FLAGS += \
-	CFLAGS="$(TARGET_CFLAGS)"
+	--disable-debug-mode \
+	--disable-gcc-warnings \
+	--disable-libevent-regress \
+	--disable-samples \
+	--with-pic
 
 define Build/InstallDev
 	$(INSTALL_DIR) $(1)/usr/include
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Tue Feb 19 16:03:04 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Tue, 19 Feb 2019 13:03:04 -0800
Subject: [OpenWrt-Devel] [PATCH] openssl: backport devcrypto changes
 from master
In-Reply-To: <5333142.SzynaX6uI2@debian64>
References: <20190218205751.21910-1-rosenp@gmail.com>
 <5333142.SzynaX6uI2@debian64>
Message-ID: <CAKxU2N_=pvbr3CTczFp8NL55rsup1_8UR=2E2GmE5K6R1x89Rw@mail.gmail.com>

On Tue, Feb 19, 2019 at 7:22 AM Christian Lamparter <chunkeey at gmail.com> wrote:
>
> On Monday, February 18, 2019 9:57:51 PM CET Rosen Penev wrote:
> > From: Eneas U de Queiroz via openwrt-devel <openwrt-devel at lists.openwrt.org>
> >
> > The sender domain has a DMARC Reject/Quarantine policy which disallows
> > sending mailing list messages using the original "From" header.
> >
> > To mitigate this problem, the original message has been wrapped
> > automatically by the mailing list software.
> > The patches to the /dev/crypto engine were commited to openssl master,
> > and will be in the next major version (3.0).
> >
> > Changes:
> > - Optimization in computing a digest in one operation, saving an ioctl
> > - Runtime configuration options for the choice of algorithms to use
> > - Command to dump useful information about the algorithms supported by
> >   the engine and the system.
> > - Build the devcrypto engine as a dynamic module, like other engines.
> >
> > The devcrypto engine is built as a separate package by default, but
> > options were added to allow building the engines into the main library.
> >
> > Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
>
> Isn't this the same patch as:
> <https://patchwork.ozlabs.org/patch/1043246/> ?
>
Wrong patch sent. Was too tired.
> If you have tested the patch and want to support it, you could just reply
> with a Tested-by tag [0] (ideally with a short text that lists what
> features and platforms you have tested it on).
>
> Cheers,
> Christian
>
> [0] <https://www.kernel.org/doc/html/v4.20/process/submitting-patches.html#using-reported-by-tested-by-reviewed-by-suggested-by-and-fixes>
>
>
>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Tue Feb 19 21:47:56 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Wed, 20 Feb 2019 02:47:56 +0000
Subject: [OpenWrt-Devel] [PATCH v2] scripts/qemustart: allow machine
 selection with new option --machine
Message-ID: <20190220024756.18464-1-yszhou4tech@gmail.com>

This can be used to set machine options like highmem=off for running old
armvirt/32 kernel lacking LPAE support with QEMU version 3.0 or later

 [1] Armv7 guest fails to boot with qemu-3.0.0-1,
     https://bugzilla.redhat.com/show_bug.cgi?id=1633328#c5

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
v2 <- v1

 - Rename the new option as --machine.  Like --kernel, they both have a
   corresponding qemu option
 - The script will also take over variants of --machine argument like
   -machine, -M which are acceptable by qemu and used by many qemu users

 scripts/qemustart | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

diff --git a/scripts/qemustart b/scripts/qemustart
index 5bb8ca5f3a..b68e8bb011 100755
--- a/scripts/qemustart
+++ b/scripts/qemustart
@@ -88,6 +88,7 @@ Usage: $SELF [-h|--help]
          [<subtarget> [<extra-qemu-options>]]
          [--kernel <kernel>]
          [--rootfs <rootfs>]
+         [--machine <machine>]
 
 <subtarget> will default to "generic" and must be specified if
 <extra-qemu-options> are present
@@ -100,13 +101,14 @@ the actual <target> in use.  They will default to files under bin/targets/
 Examples
 
   $SELF x86 64
-  $SELF x86 64 -enable-kvm -device virtio-balloon-pci
+  $SELF x86 64 --machine q35,accel=kvm -device virtio-balloon-pci
   $SELF x86 64 -incoming tcp:0:4444
   $SELF x86 64-glibc
   $SELF malta be -m 64
   $SELF malta le64
   $SELF malta be-glibc
   $SELF armvirt 32 \\
+                --machine virt,highmem=off \\
                 --kernel bin/targets/armvirt/32/openwrt-armvirt-32-zImage \\
                 --rootfs bin/targets/armvirt/32/openwrt-armvirt-32-root.ext4
 EOF
@@ -122,6 +124,7 @@ parse_args() {
 		case "$1" in
 			--kernel) o_kernel="$2"; shift 2 ;;
 			--rootfs) o_rootfs="$2"; shift 2 ;;
+			--machine|-machine|-M) o_mach="$2"; shift 2 ;;
 			--help|-h)
 				usage
 				exit 0
@@ -152,6 +155,7 @@ parse_args() {
 start_qemu_armvirt() {
 	local kernel="$o_kernel"
 	local rootfs="$o_rootfs"
+	local mach="${o_mach:-virt}"
 	local cpu
 	local qemu_exe
 
@@ -181,7 +185,7 @@ start_qemu_armvirt() {
 		)
 	}
 
-	"$qemu_exe" -machine virt -cpu "$cpu" -nographic \
+	"$qemu_exe" -machine "$mach" -cpu "$cpu" -nographic \
 		-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device virtio-net-pci,id=devlan,netdev=lan,mac="$MAC_LAN" \
 		-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device virtio-net-pci,id=devwan,netdev=wan,mac="$MAC_WAN" \
 		-kernel "$kernel" \
@@ -193,6 +197,7 @@ start_qemu_malta() {
 	local isel
 	local qemu_exe
 	local kernel="$o_kernel"
+	local mach="${o_mach:-malta}"
 
 	# o_subtarget can be le, be, le64, be64, le-glibc, le64-glibc, etc..
 	is64="$(echo $o_subtarget | grep -o 64)"
@@ -204,7 +209,7 @@ start_qemu_malta() {
 	# NOTE: order of wan, lan -device arguments matters as it will affect which
 	# one will be actually used as the wan, lan network interface inside the
 	# guest machine
-	"$qemu_exe" -machine malta -nographic \
+	"$qemu_exe" -machine "$mach" -nographic \
 		-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device pcnet,netdev=wan,mac="$MAC_WAN" \
 		-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device pcnet,netdev=lan,mac="$MAC_LAN" \
 		-kernel "$kernel" \
@@ -213,6 +218,7 @@ start_qemu_malta() {
 
 start_qemu_x86() {
 	local rootfs="$o_rootfs"
+	local mach="${o_mach:-pc}"
 	local qemu_exe
 
 	[ -n "$rootfs" ] || {
@@ -227,7 +233,7 @@ start_qemu_x86() {
 	# 64: 64-bit, kvm guest, virtio
 	#
 	case "${o_subtarget%-*}" in
-		legacy)			qemu_exe="qemu-system-i386"		;;
+		legacy)			qemu_exe="qemu-system-i386"	;;
 		generic|64)		qemu_exe="qemu-system-x86_64"	;;
 		*)
 			__errmsg "target $o_target: unknown subtarget $o_subtarget"
@@ -247,7 +253,7 @@ start_qemu_x86() {
 			#	-drive "file=$rootfs,format=raw,id=drv0,if=none" \
 			#
 			# [1] https://dev.openwrt.org/ticket/17947
-			"$qemu_exe" -nographic \
+			"$qemu_exe" -machine "$mach" -nographic \
 				-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device e1000,id=devlan,netdev=lan,mac="$MAC_LAN" \
 				-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device e1000,id=devwan,netdev=wan,mac="$MAC_WAN" \
 				-device ide-drive,drive=drv0 \
@@ -255,7 +261,7 @@ start_qemu_x86() {
 				"${o_qemu_extra[@]}"
 			;;
 		generic|64)
-			"$qemu_exe" -nographic \
+			"$qemu_exe" -machine "$mach" -nographic \
 				-netdev bridge,id=lan,br="$BR_LAN,helper=$HELPER" -device virtio-net-pci,id=devlan,netdev=lan,mac="$MAC_LAN" \
 				-netdev bridge,id=wan,br="$BR_WAN,helper=$HELPER" -device virtio-net-pci,id=devwan,netdev=wan,mac="$MAC_WAN" \
 				-drive "file=$rootfs,format=raw,if=virtio" \

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ynezz at true.cz  Wed Feb 20 01:19:43 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Wed, 20 Feb 2019 07:19:43 +0100
Subject: [OpenWrt-Devel] [PATCH] libevent2: Add -Wl,
 --gc-sections to reduce size a little.
In-Reply-To: <20190219210157.2177-1-rosenp@gmail.com>
References: <20190219210157.2177-1-rosenp@gmail.com>
Message-ID: <20190220061943.GA38601@meh.true.cz>

Rosen Penev <rosenp at gmail.com> [2019-02-19 13:01:57]:

> -TARGET_CFLAGS += $(FPIC)

Why did you removed this? I can see, that you've added --with-pic configure
option, but I'm wondering if it's going to provide same result on all
platforms.

> +TARGET_LDFLAGS += -Wl,--gc-sections

I'm not sure whether this is a good idea on library, or is it?

> +	--disable-libevent-regress \

I'm wondering how this might reduce the binary size. It might be enabled by
default for some reason, so I'm not sure if disabling regression tests for
saving some build time (BTW how much?) is a good idea.

You've forget to add on which platforms you've build and run tested this
change, and mainly on which platform you're seeing this 4KB size reduction.

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Wed Feb 20 01:45:37 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Tue, 19 Feb 2019 22:45:37 -0800
Subject: [OpenWrt-Devel] [PATCH] libevent2: Add -Wl,
 --gc-sections to reduce size a little.
In-Reply-To: <20190220061943.GA38601@meh.true.cz>
References: <20190219210157.2177-1-rosenp@gmail.com>
 <20190220061943.GA38601@meh.true.cz>
Message-ID: <CAKxU2N9Xpanb6k7xwVz03wLwBFwyscXn7Sgr+h_8MXsru0E00g@mail.gmail.com>

On Tue, Feb 19, 2019 at 10:19 PM Petr ?tetiar <ynezz at true.cz> wrote:
>
> Rosen Penev <rosenp at gmail.com> [2019-02-19 13:01:57]:
>
> > -TARGET_CFLAGS += $(FPIC)
>
> Why did you removed this? I can see, that you've added --with-pic configure
> option, but I'm wondering if it's going to provide same result on all
> platforms.
Don't see why not. it adds fPIC and dPIC
>
> > +TARGET_LDFLAGS += -Wl,--gc-sections
>
> I'm not sure whether this is a good idea on library, or is it?
Doesn't have any negative effects on other packages from what I've seen.
>
> > +     --disable-libevent-regress \
>
> I'm wondering how this might reduce the binary size. It might be enabled by
> default for some reason, so I'm not sure if disabling regression tests for
> saving some build time (BTW how much?) is a good idea.
Seems to also be done elsewhere.
>
> You've forget to add on which platforms you've build and run tested this
> change, and mainly on which platform you're seeing this 4KB size reduction.
ramips. I doubt it's much different elsewhere.
>
> -- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ynezz at true.cz  Wed Feb 20 03:45:26 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Wed, 20 Feb 2019 09:45:26 +0100
Subject: [OpenWrt-Devel] [PATCH] libevent2: Add -Wl,
 --gc-sections to reduce size a little.
In-Reply-To: <CAKxU2N9Xpanb6k7xwVz03wLwBFwyscXn7Sgr+h_8MXsru0E00g@mail.gmail.com>
References: <20190219210157.2177-1-rosenp@gmail.com>
 <20190220061943.GA38601@meh.true.cz>
 <CAKxU2N9Xpanb6k7xwVz03wLwBFwyscXn7Sgr+h_8MXsru0E00g@mail.gmail.com>
Message-ID: <20190220084526.GB38601@meh.true.cz>

Rosen Penev <rosenp at gmail.com> [2019-02-19 22:45:37]:

> On Tue, Feb 19, 2019 at 10:19 PM Petr ?tetiar <ynezz at true.cz> wrote:
> >
> > Rosen Penev <rosenp at gmail.com> [2019-02-19 13:01:57]:
> >
> > > -TARGET_CFLAGS += $(FPIC)
> >
> > Why did you removed this? I can see, that you've added --with-pic configure
> > option, but I'm wondering if it's going to provide same result on all
> > platforms.
>
> Don't see why not. it adds fPIC and dPIC

Just that there's following in rules.mk:

 ifeq ($(ARCH),powerpc)
   FPIC:=-fPIC
 else
   FPIC:=-fpic
 endif

so let's hope it's handled properly in autofoo stuff.

> > > +     --disable-libevent-regress \
> >
> > I'm wondering how this might reduce the binary size. It might be enabled by
> > default for some reason, so I'm not sure if disabling regression tests for
> > saving some build time (BTW how much?) is a good idea.
>
> Seems to also be done elsewhere.

Ok, what does it mean elsewhere? Why do you think, that it's a good idea to
disable the regression tests which might be actually a poor man's Q&A during
toolchain/binutils bumps.  Isn't it better to catch any potential issues
during build phase, then later on the device?

> > You've forget to add on which platforms you've build and run tested this
> > change, and mainly on which platform you're seeing this 4KB size reduction.
>
> ramips. I doubt it's much different elsewhere.

I would expect, that you've at least tried to build all the packages which
depends on the libevent2, and ideally tried to run them as well. The list
isn't that small:

package/network/services/lldpd admin/zabbix lang/php7-pecl-http
lang/php7-pecl-libevent libs/libevhtp net/addrwatch net/memcached
net/nfs-kernel-server net/ntpd net/ratechecker net/redsocks net/seafile-ccnet
net/seafile-server net/sstp-client net/tor net/transmission sound/forked-daapd
utils/tmux

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From rosenp at gmail.com  Wed Feb 20 03:48:52 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Wed, 20 Feb 2019 00:48:52 -0800
Subject: [OpenWrt-Devel] [PATCH] libevent2: Add -Wl,
 --gc-sections to reduce size a little.
In-Reply-To: <20190220084526.GB38601@meh.true.cz>
References: <20190219210157.2177-1-rosenp@gmail.com>
 <20190220061943.GA38601@meh.true.cz>
 <CAKxU2N9Xpanb6k7xwVz03wLwBFwyscXn7Sgr+h_8MXsru0E00g@mail.gmail.com>
 <20190220084526.GB38601@meh.true.cz>
Message-ID: <CAKxU2N-mhej+=tO75Q+cCZSBd=O4ovNnhqsH-B24=+peYDrtcg@mail.gmail.com>

On Wed, Feb 20, 2019 at 12:45 AM Petr ?tetiar <ynezz at true.cz> wrote:
>
> Rosen Penev <rosenp at gmail.com> [2019-02-19 22:45:37]:
>
> > On Tue, Feb 19, 2019 at 10:19 PM Petr ?tetiar <ynezz at true.cz> wrote:
> > >
> > > Rosen Penev <rosenp at gmail.com> [2019-02-19 13:01:57]:
> > >
> > > > -TARGET_CFLAGS += $(FPIC)
> > >
> > > Why did you removed this? I can see, that you've added --with-pic configure
> > > option, but I'm wondering if it's going to provide same result on all
> > > platforms.
> >
> > Don't see why not. it adds fPIC and dPIC
>
> Just that there's following in rules.mk:
>
>  ifeq ($(ARCH),powerpc)
>    FPIC:=-fPIC
>  else
>    FPIC:=-fpic
>  endif
>
> so let's hope it's handled properly in autofoo stuff.
>
> > > > +     --disable-libevent-regress \
> > >
> > > I'm wondering how this might reduce the binary size. It might be enabled by
> > > default for some reason, so I'm not sure if disabling regression tests for
> > > saving some build time (BTW how much?) is a good idea.
> >
> > Seems to also be done elsewhere.
>
> Ok, what does it mean elsewhere? Why do you think, that it's a good idea to
> disable the regression tests which might be actually a poor man's Q&A during
> toolchain/binutils bumps.  Isn't it better to catch any potential issues
> during build phase, then later on the device?
Usually they get disabled as they cause issues when cross compiling.
Not here though.
>
> > > You've forget to add on which platforms you've build and run tested this
> > > change, and mainly on which platform you're seeing this 4KB size reduction.
> >
> > ramips. I doubt it's much different elsewhere.
>
> I would expect, that you've at least tried to build all the packages which
> depends on the libevent2, and ideally tried to run them as well. The list
> isn't that small:
I've only tested transmission. It works fine.
>
> package/network/services/lldpd admin/zabbix lang/php7-pecl-http
> lang/php7-pecl-libevent libs/libevhtp net/addrwatch net/memcached
> net/nfs-kernel-server net/ntpd net/ratechecker net/redsocks net/seafile-ccnet
> net/seafile-server net/sstp-client net/tor net/transmission sound/forked-daapd
> utils/tmux
>
> -- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From thess at kitschensync.net  Wed Feb 20 10:05:08 2019
From: thess at kitschensync.net (Ted Hess)
Date: Wed, 20 Feb 2019 10:05:08 -0500
Subject: [OpenWrt-Devel] bugs.openwrt.org
Message-ID: <DD18C4D680C642029124386BBD6D1A64@fortmeadow.com>

I am in the process of moving our Flyspray system to a new host on DO. 
It is currently
hosted on our download server and occasionally gets bogged down due to 
download
activity. I plan on taking the site offline for about an hour to move 
the database
starting about 18:00 UTC/13:00 EST tomorrow (Feb 21). After the move, 
the new site
should be exactly the same as before the move - all data and accounts 
preserved.

I am not anticipating any problems that won't sort out in a day or 2 due 
to DNS
name changes and obtaining new SSL certs. The interim plan is to 
re-direct the
old site to the new using existing certs and after the DNS changes are 
settled, we
can re-provision the new site. Please report any problems reaching the 
new site,
SSO using Github or email issues here and I will handle them as time 
permits.

/ted


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From e9hack at gmail.com  Wed Feb 20 11:27:34 2019
From: e9hack at gmail.com (e9hack)
Date: Wed, 20 Feb 2019 17:27:34 +0100
Subject: [OpenWrt-Devel] 5GHz wifi is broken
In-Reply-To: <244a74cf-f9a1-680c-82e5-115c454ce701@gmail.com>
References: <a64777db-2e0b-09e2-7cc2-cf5cf7dc17b0@gmail.com>
 <244a74cf-f9a1-680c-82e5-115c454ce701@gmail.com>
Message-ID: <ac5c6b05-880b-4c19-9ab4-3603829a5abc@gmail.com>

Am 18.02.2019 um 22:38 schrieb Hartmut Birr:
> Hi,
> 
> this is my wireless configuration. I build hostapd with the internal radius server enabled and set the expected
> configuration for the internal radius server for hostapd if config value for auth_server isn't given or empty.
> 
> config wifi-device 'radio0'
> 	option type 'mac80211'
> 	option channel 'auto'
> 	option channels '36-140'
> 	option hwmode '11a'
> 	option path 'pci0000:00/0000:00:00.0'
> 	option htmode 'VHT80'
> 	option country 'DE'
> 	option disassoc_low_ack '0'
> 	option log_level '0'
> 
> config wifi-iface
> 	option device 'radio0'
> 	option mode 'ap'
> #	option encryption 'wpa2+ccmp'
> 	option encryption 'wpa3-mixed'
> 	option ssid 'Wxxxxxxb-radius'
> 	option ca_cert '/etc/certs/ca-d171225.crt'
> 	option server_cert '/etc/certs/crt-d170807.crt'
> 	option private_key '/etc/certs/key-d170807.key'
> 	option dh_file '/etc/certs/hostapd.dh4096.pem'
> 	option eap_user_file '/etc/config/haprad.eap_user'
> 	option network 'lan'
> 	option eapol_version '2'
> 	option ieee80211w '1'
> 	option wpa_group_rekey '3600'
> 
> config wifi-iface
> 	option device 'radio0'
> 	option network 'lan'
> 	option mode 'ap'
> 	option ssid 'Wxxxxxxb'
> #	option encryption 'psk2+ccmp'
> 	option encryption 'sae-mixed'
> 	option wpa_psk_file '/etc/config/hostapd.wpa_psk'
> 	option disassoc_low_ack '0'
> 	option ieee80211w '1'
> 	option wpa_group_rekey '3600'
> 
> config wifi-iface
> 	option device 'radio0'
> 	option mode 'ap'
> 	option ssid 'Txxxxxx'
> #	option encryption 'psk2+ccmp'
> 	option encryption 'sae-mixed'
> 	option key 'xxxxxxxxxxxxxxxxxxxxxxxx'
> 	option network 'tor'
> 	option macaddr '00:xx:xx:xx:xx:xx'
> 	option disassoc_low_ack '0'
> 	option ieee80211w '1'
> 	option wpa_group_rekey '3600'
> 

If I change the configuration, that the entry for using radius isn't the first one, the issue doesn't appear. I don't 
relay understand:
why this occurs with ath10k AC only
why the version of openssl does trigger the issue and
why the error is 'Failed to set beacon parameters'

Regards,
Hartmut

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at adrianschmutzler.de  Wed Feb 20 12:00:35 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 20 Feb 2019 18:00:35 +0100
Subject: [OpenWrt-Devel] [PATCH] openwrt-18.06: ar71xx: Fix 5 GHz MAC
 address for Archer C60 v2
In-Reply-To: <390965e1-1470-6505-5340-192b87cf4e5f@wwsnet.net>
References: <1548521985-17401-1-git-send-email-freifunk@adrianschmutzler.de>
 <390965e1-1470-6505-5340-192b87cf4e5f@wwsnet.net>
Message-ID: <001601d4c93d$cc2bfd50$6483f7f0$@adrianschmutzler.de>

Hi,

the equivalent patch has been merged into master:

https://github.com/openwrt/openwrt/commit/319c5d7c49503d1afbfb3164b18cf966e11fac6a

So maybe this one can be reconsidered for openwrt-18.06 ...

Best

Adrian


> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> Behalf Of Jo-Philipp Wich
> Sent: Mittwoch, 30. Januar 2019 10:20
> To: openwrt-devel at lists.openwrt.org
> Subject: Re: [OpenWrt-Devel] [PATCH] openwrt-18.06: ar71xx: Fix 5 GHz MAC
> address for Archer C60 v2
> 
> Hi,
> 
> this patch should go through master first. It currently does not apply
> there.
> 
> ~ Jo
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190220/4b92a988/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From chunkeey at gmail.com  Wed Feb 20 12:02:21 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Wed, 20 Feb 2019 18:02:21 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ipq40xx: add support for
 FritzBox 7530
In-Reply-To: <20190218225834.28100-3-mail@david-bauer.net>
References: <20190218225834.28100-1-mail@david-bauer.net>
 <20190218225834.28100-3-mail@david-bauer.net>
Message-ID: <9345949.jyftc2i2ua@debian64>

On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> new file mode 100644
> index 0000000000..b2a33468bb
> --- /dev/null
> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> @@ -0,0 +1,305 @@
> +&pcie0 {
> +	status = "okay";
> +
> +	ranges = <0x81000000 0 0x40200000 0x40200000
> +			0 0x00100000   /* downstream I/O */
> +			0x82000000 0 0x48000000 0x48000000
> +			0 0x10000000>; /* non-prefetchable memory */

Let me dig out my MR33 (will have to wait until the Weekend) and see if this
should be put into the qcom-ipq4019.dtsi as well.

> +
> +	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
> +	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
> +
> +	bridge at 0,0 {
> +		reg = <0x00000000 0 0 0 0>;
> +		#address-cells = <3>;
> +		#size-cells = <2>;
> +		ranges;
> +
> +		dsl at 1,0 {
> +			compatible = "intel,vrx518";
> +			status = "okay";
> +			reg = <0x00010000 0 0 0 0>;
> +		};
> +	};
> +};






_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Wed Feb 20 12:54:31 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Wed, 20 Feb 2019 18:54:31 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: fix wmac memory region for
 qca953x
In-Reply-To: <20190219062708.10475-1-gch981213@gmail.com>
References: <20190219062708.10475-1-gch981213@gmail.com>
Message-ID: <3473585.TshxUL93nU@debian64>

On Tuesday, February 19, 2019 7:27:08 AM CET Chuanhong Guo wrote:
> According to /arch/mips/include/asm/mach-ath79/ar71xx_regs.h
> the size of wmac register range for qca953x is only 0x20000.
> 
> Signed-off-by: Chuanhong Guo <gch981213 at gmail.com>
> ---
>  target/linux/ath79/dts/qca953x.dtsi | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/linux/ath79/dts/qca953x.dtsi b/target/linux/ath79/dts/qca953x.dtsi
> index 4ce5bfe0a2..669e3fb851 100644
> --- a/target/linux/ath79/dts/qca953x.dtsi
> +++ b/target/linux/ath79/dts/qca953x.dtsi
> @@ -173,7 +173,7 @@
>  
>  			wmac: wmac at 18100000 {
>  				compatible = "qca,qca9530-wmac";
> -				reg = <0x18100000 0x230000>;
> +				reg = <0x18100000 0x20000>;

The ath9k driver would just need like 0x10000 (in fact qca9557.dtsi 's
wmac node uses this value and I know it works). But this is pretty much
"splitting hairs" at this point.

Cheers,
Christian




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at adrianschmutzler.de  Wed Feb 20 13:26:55 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 20 Feb 2019 19:26:55 +0100
Subject: [OpenWrt-Devel] speed up ath10k-caldata extraction for non-ipq40xx
Message-ID: <005c01d4c949$dbbcb500$93361f00$@adrianschmutzler.de>

Hi,

 

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 || \

[?]

 

etc.

 

?

 

Best

 

Adrian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190220/63956cf0/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190220/63956cf0/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From yszhou4tech at gmail.com  Wed Feb 20 22:52:28 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Thu, 21 Feb 2019 03:52:28 +0000
Subject: [OpenWrt-Devel] [PATCH] dnsmasq: prefer localuse over resolvfile
 guesswork
Message-ID: <20190221035228.5145-1-yszhou4tech@gmail.com>

This makes it clear that localuse when explicitly specified in the
config will have its final say on whether or not the initscript should
touch /etc/resolv.conf, no matter whatever the result of previous
guesswork would be

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 package/network/services/dnsmasq/Makefile           | 2 +-
 package/network/services/dnsmasq/files/dnsmasq.init | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index d874296ea7..8c8427f6c1 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=dnsmasq
 PKG_UPSTREAM_VERSION:=2.80
 PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
-PKG_RELEASE:=9
+PKG_RELEASE:=10
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index f65736e268..4ae71e438b 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -733,7 +733,7 @@ dnsmasq_start()
 {
 	local cfg="$1"
 	local disabled user_dhcpscript
-	local resolvfile localuse
+	local resolvfile localuse=0
 
 	config_get_bool disabled "$cfg" disabled 0
 	[ "$disabled" -gt 0 ] && return 0
@@ -884,13 +884,13 @@ dnsmasq_start()
 	config_get_bool cachelocal "$cfg" cachelocal 1
 
 	config_get_bool noresolv "$cfg" noresolv 0
-	config_get_bool localuse "$cfg" localuse 0
 	if [ "$noresolv" != "1" ]; then
 		config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
 		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
 		xappend "--resolv-file=$resolvfile"
 		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
 	fi
+	config_get_bool localuse "$cfg" localuse "$localuse"
 
 	config_get hostsfile "$cfg" dhcphostsfile
 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
@@ -1040,13 +1040,13 @@ dnsmasq_start()
 dnsmasq_stop()
 {
 	local cfg="$1"
-	local noresolv resolvfile localuse
+	local noresolv resolvfile localuse=0
 
 	config_get_bool noresolv "$cfg" noresolv 0
-	config_get_bool localuse "$cfg" localuse 0
 	config_get resolvfile "$cfg" "resolvfile"
 
 	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
+	config_get_bool localuse "$cfg" localuse "$localuse"
 	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
 
 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Thu Feb 21 07:42:29 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Thu, 21 Feb 2019 20:42:29 +0800
Subject: [OpenWrt-Devel] [PATCH] [ubox] kmodloader: increase module name
 length
In-Reply-To: <1550495056-1906-1-git-send-email-sakib@darkstar.site>
References: <1550495056-1906-1-git-send-email-sakib@darkstar.site>
Message-ID: <CAECwjAghCh-hB7Ktn=+MXM0Vk8h0MJZPtLLJg5Ld9dYLgDUMdQ@mail.gmail.com>

On Mon, 18 Feb 2019 at 21:15, Sergiy Kibrik <sakib at darkstar.site> wrote:
>
> Otherwise modules with long names, e.g. lttng (>32 chars) can't be loaded.
>
> Signed-off-by: Sergiy Kibrik <sakib at darkstar.site>
> ---
>  kmodloader.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kmodloader.c b/kmodloader.c
> index 3196deb..67e3706 100644
> --- a/kmodloader.c
> +++ b/kmodloader.c
> @@ -157,7 +157,7 @@ static char* get_module_path(char *name)
>
>  static char* get_module_name(char *path)
>  {
> -       static char name[33];
> +       static char name[NAME_MAX];
>         char *t;
>
>         strncpy(name, basename(path), sizeof(name) - 1);

Note that NAME_MAX does not count the trailing null char.  It's 255 on
CentOS 7.  Personally I think it's okay to use NAME_MAX here.  The
macro is well-documented and size of file names also apply to names of
kmod files.

                yousong

> --
> 2.7.4
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From por at oranjevos.nl  Thu Feb 21 09:14:24 2019
From: por at oranjevos.nl (Paul Oranje)
Date: Thu, 21 Feb 2019 15:14:24 +0100
Subject: [OpenWrt-Devel] [PATCH] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <20190221035228.5145-1-yszhou4tech@gmail.com>
References: <20190221035228.5145-1-yszhou4tech@gmail.com>
Message-ID: <67BC4388-5B1F-464A-8339-88B73E8EE320@oranjevos.nl>



> Op 21 feb. 2019, om 04:52 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> 
> This makes it clear that localuse when explicitly specified in the
> config will have its final say on whether or not the initscript should
> touch /etc/resolv.conf, no matter whatever the result of previous
> guesswork would be
> 
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> ---
> package/network/services/dnsmasq/Makefile           | 2 +-
> package/network/services/dnsmasq/files/dnsmasq.init | 8 ++++----
> 2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> index d874296ea7..8c8427f6c1 100644
> --- a/package/network/services/dnsmasq/Makefile
> +++ b/package/network/services/dnsmasq/Makefile
> @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
> PKG_NAME:=dnsmasq
> PKG_UPSTREAM_VERSION:=2.80
> PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
> -PKG_RELEASE:=9
> +PKG_RELEASE:=10
> 
> PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
> PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index f65736e268..4ae71e438b 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -733,7 +733,7 @@ dnsmasq_start()
> {
> 	local cfg="$1"
> 	local disabled user_dhcpscript
> -	local resolvfile localuse
> +	local resolvfile localuse=0
> 
> 	config_get_bool disabled "$cfg" disabled 0
> 	[ "$disabled" -gt 0 ] && return 0
> @@ -884,13 +884,13 @@ dnsmasq_start()
> 	config_get_bool cachelocal "$cfg" cachelocal 1
> 
> 	config_get_bool noresolv "$cfg" noresolv 0
> -	config_get_bool localuse "$cfg" localuse 0
> 	if [ "$noresolv" != "1" ]; then
> 		config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
> 		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> 		xappend "--resolv-file=$resolvfile"
> 		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> 	fi
> +	config_get_bool localuse "$cfg" localuse "$localuse"
> 
> 	config_get hostsfile "$cfg" dhcphostsfile
> 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
> @@ -1040,13 +1040,13 @@ dnsmasq_start()
> dnsmasq_stop()
> {
> 	local cfg="$1"
> -	local noresolv resolvfile localuse
> +	local noresolv resolvfile localuse=0
> 
> 	config_get_bool noresolv "$cfg" noresolv 0
> -	config_get_bool localuse "$cfg" localuse 0
> 	config_get resolvfile "$cfg" "resolvfile"
> 
> 	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> +	config_get_bool localuse "$cfg" localuse "$localuse"
> 	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
> 
> 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Tested this patch (8f16fba501) and the previous patch (ec2a2a2aea) on top of 18.06.2.

The patches apply cleanly and the patched file works as expected:

- localuse=1 and noresolv and resolvfile not set => dnsmasq writes resolv.conf 
- localuse and noresolv and resolvfile not set => dnsmasq writes resolv.conf
- localuse=0 and noresolv and resolvfile not set => dnsmasq leaves resolv.conf untouched
- localuse not set and noresolv=1 and resolvfile='/tmp/resolv.conf.auto' => dnsmasq leaves resolv.conf untouched.

The latter two scenario's work well with Unbound (where dnsmasq handles DHCP and DNS of lan host names).
Thanks.

Tested-by: Paul Oranje <por at oranjevos.nl>

Sitenotes:
Would also writing "nameserver ::1" to resolv.conf be a good idea ? (Unbound does)
When dnsmasq does not listen on port 53, then it cannot serve as the nameserver for the localhost (resolv.conf does not allow specifying a port) unless some clever DNAT rule is in place.


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From openwrt-devel at lists.openwrt.org  Thu Feb 21 14:00:05 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Thu, 21 Feb 2019 19:00:05 +0000
Subject: [OpenWrt-Devel] [PATCH] openssl: fix devcrypto engine md blocksize
Message-ID: <mailman.23078.1550775600.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH] openssl: fix devcrypto engine md blocksize
Date: Thu, 21 Feb 2019 15:59:31 -0300
Size: 7912
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190221/a331e83f/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Thu Feb 21 14:30:29 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Thu, 21 Feb 2019 19:30:29 +0000
Subject: [OpenWrt-Devel] [PATCH v2] openssl: backport devcrypto changes from
 master
In-Reply-To: <mailman.21680.1550270139.2376.openwrt-devel@lists.openwrt.org>
References: <mailman.21680.1550270139.2376.openwrt-devel@lists.openwrt.org>
Message-ID: <mailman.23089.1550777428.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH v2] openssl: backport devcrypto changes from master
Date: Thu, 21 Feb 2019 16:30:08 -0300
Size: 58104
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190221/fd369454/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From yszhou4tech at gmail.com  Thu Feb 21 20:54:37 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Fri, 22 Feb 2019 09:54:37 +0800
Subject: [OpenWrt-Devel] [PATCH] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <67BC4388-5B1F-464A-8339-88B73E8EE320@oranjevos.nl>
References: <20190221035228.5145-1-yszhou4tech@gmail.com>
 <67BC4388-5B1F-464A-8339-88B73E8EE320@oranjevos.nl>
Message-ID: <CAECwjAhNGr7_LBgzQdC+Bz4NM+CQP_kqnsKSSZRWEpAc8qtrqg@mail.gmail.com>

On Thu, 21 Feb 2019 at 22:14, Paul Oranje <por at oranjevos.nl> wrote:
>
>
>
> > Op 21 feb. 2019, om 04:52 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> >
> > This makes it clear that localuse when explicitly specified in the
> > config will have its final say on whether or not the initscript should
> > touch /etc/resolv.conf, no matter whatever the result of previous
> > guesswork would be
> >
> > Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>

<snipped>

>
> Tested this patch (8f16fba501) and the previous patch (ec2a2a2aea) on top of 18.06.2.
>
> The patches apply cleanly and the patched file works as expected:
>
> - localuse=1 and noresolv and resolvfile not set => dnsmasq writes resolv.conf
> - localuse and noresolv and resolvfile not set => dnsmasq writes resolv.conf
> - localuse=0 and noresolv and resolvfile not set => dnsmasq leaves resolv.conf untouched
> - localuse not set and noresolv=1 and resolvfile='/tmp/resolv.conf.auto' => dnsmasq leaves resolv.conf untouched.
>
> The latter two scenario's work well with Unbound (where dnsmasq handles DHCP and DNS of lan host names).
> Thanks.
>
> Tested-by: Paul Oranje <por at oranjevos.nl>

Thanks ;)

>
> Sitenotes:
> Would also writing "nameserver ::1" to resolv.conf be a good idea ? (Unbound does)

The 127.0.0.1 address always works so there is no need for ::1 plus
the possibility that people may use a build without ipv6.

> When dnsmasq does not listen on port 53, then it cannot serve as the nameserver for the localhost (resolv.conf does not allow specifying a port) unless some clever DNAT rule is in place.

Yes, I got the same conclusion last time I tried to find ways to
specify port in resolv.conf ;)

                yousong

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Thu Feb 21 21:05:07 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Fri, 22 Feb 2019 10:05:07 +0800
Subject: [OpenWrt-Devel] [PATCH v2] dnsmasq: allow using dnsmasq as the
 sole resolver
In-Reply-To: <38A885F2-49AA-4715-BBB7-A07B41998428@oranjevos.nl>
References: <20190218141801.7502-1-yszhou4tech@gmail.com>
 <CAJLcKsH0f8ZERD9pfxy8_62Kxmweo8jiP913rAGR8yabPEUwEg@mail.gmail.com>
 <38A885F2-49AA-4715-BBB7-A07B41998428@oranjevos.nl>
Message-ID: <CAECwjAhZAnz2uv_3eTe+K9uNRqeQd+cVvRRxgLUNC7p-_wvjMA@mail.gmail.com>

On Tue, 19 Feb 2019 at 23:02, Paul Oranje <por at oranjevos.nl> wrote:
>
> Op 18 feb. 2019, om 21:50 heeft Hans Dedecker <dedeckeh at gmail.com> het volgende geschreven:
> >
> > On Mon, Feb 18, 2019 at 3:18 PM Yousong Zhou <yszhou4tech at gmail.com> wrote:
> >>
> >> Currently it seems impossible to configure /etc/config/dhcp to achieve
> >> the following use case
> >>
> >> - run dnsmasq with no-resolv
> >> - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"
> >>
> >> Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
> >> to achive the 2nd effect above, but setting resolvfile requires noresolv
> >> being false.
> >>
> >> A new boolean option "localuse" is added to indicate that we intend to
> >> use dnsmasq as the local dns resolver.  It's false by default and to
> >> align with old behaviour it will be true automatically if resolvfile is
> >> set to /tmp/resolv.conf.auto
> >>
> >> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> > Acked-by: Hans Dedecker <dedeckeh at gmail.com>
> >> ---
> >> v2 <- v1
> >>
> >> - retain /tmp/resolv.conf.auto as the default value of resolvfile when
> >>   doing config_get, i.e. 2nd patch in the 1st version is now dropped
> >> - retain the old behavior of rewriting /tmp/resolv.conf when resolvfile
> >>   is /tmp/resolv.conf.auto
> >>
> >> .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
> >> 1 file changed, 15 insertions(+), 15 deletions(-)
> >>
> >> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> >> index f3066627d6..f65736e268 100644
> >> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> >> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> >> @@ -731,7 +731,9 @@ dhcp_relay_add() {
> >>
> >> dnsmasq_start()
> >> {
> >> -       local cfg="$1" disabled resolvfile user_dhcpscript
> >> +       local cfg="$1"
> >> +       local disabled user_dhcpscript
> >> +       local resolvfile localuse
> >>
> >>        config_get_bool disabled "$cfg" disabled 0
> >>        [ "$disabled" -gt 0 ] && return 0
> >> @@ -882,14 +884,14 @@ dnsmasq_start()
> >>        config_get_bool cachelocal "$cfg" cachelocal 1
> >>
> >>        config_get_bool noresolv "$cfg" noresolv 0
> >> +       config_get_bool localuse "$cfg" localuse 0
> >>        if [ "$noresolv" != "1" ]; then
> >> -               config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
> >> -               # So jail doesn't complain if file missing
> >> -               [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
> >> +               config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
> >> +               [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> >> +               xappend "--resolv-file=$resolvfile"
> >> +               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> >>        fi
> >>
> >> -       [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
> >> -
> >>        config_get hostsfile "$cfg" dhcphostsfile
> >>        [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
> >>
> >> @@ -1011,7 +1013,7 @@ dnsmasq_start()
> >>        mv -f $CONFIGFILE_TMP $CONFIGFILE
> >>        mv -f $HOSTFILE_TMP $HOSTFILE
> >>
> >> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> >> +       [ "$localuse" -gt 0 ] && {
> >>                rm -f /tmp/resolv.conf
> >>                [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
> >>                        echo "search $DOMAIN" >> /tmp/resolv.conf
> >> @@ -1037,17 +1039,15 @@ dnsmasq_start()
> >>
> >> dnsmasq_stop()
> >> {
> >> -       local cfg="$1" resolvfile
> >> +       local cfg="$1"
> >> +       local noresolv resolvfile localuse
> >>
> >> +       config_get_bool noresolv "$cfg" noresolv 0
> >> +       config_get_bool localuse "$cfg" localuse 0
> >>        config_get resolvfile "$cfg" "resolvfile"
> >>
> >> -       #relink /tmp/resolve.conf only for main instance
> >> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> >> -               [ -f /tmp/resolv.conf ] && {
> >> -                       rm -f /tmp/resolv.conf
> >> -                       ln -s "$resolvfile" /tmp/resolv.conf
> >> -               }
> >> -       }
> >> +       [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> >> +       [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
> >>
> >>        rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
> >> }
> >
>
> Hi,
>
> In 2017 I submitted a patch to deal with having resolv.conf (used by the CLIB local resolver) being set correctly, see [1] and [2].
> For the problem it sets out to solve (partially) an issue was opened [3].
> The use-case concerned having Unbound as nameserver with dnsmasq handling DNS for the local lan domain and DHCP.
> The patch was not merged since it was deemed that setting resolv.conf requires atomicity which would imply extending netifd with the functionality to handle this instead as my patch could not offer this atomic setting of resolv.conf.
>
> Currently with the use-case (Unbound with "option dhcp_link 'dnsmasq'" set) still requires restarting Unbound manually after a restart of dnsmasq since dnsmasq.init will reset resol.conf to /etc/resolv.conf.auto.
>
> I wonder, did you see that patch and could that patch still be relevant ?
>
> [1] http://lists.openwrt.org/pipermail/openwrt-devel/2017-June/007923.html
> [2] https://patchwork.ozlabs.org/patch/780353/
> [3] https://bugs.openwrt.org/index.php?do=details&task_id=785
>
> Regards,
> Paul

Hi, Paul

I think scripting action by guessing users' intention is not a good
approach here.  dnsmasq can be very flexible and OpenWrt/Linux is a
highly-customizable system.  It's very hard to cover all cases to
fulfill the original intention of the guess logic itself.  And the
result of that is people may find the smart thing stand in their way
when doing customizations.  That's my first impression on the "if
dnsmasq listens on port 53 then touch /etc/resolv.conf"
implementation.

Regards,
                yousong

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hua.zhang1974 at hotmail.com  Thu Feb 21 23:05:28 2019
From: hua.zhang1974 at hotmail.com (zh h)
Date: Fri, 22 Feb 2019 04:05:28 +0000
Subject: [OpenWrt-Devel] [PATCH] MIPS64: add support for MIPS64R6
Message-ID: <HK0PR01MB283492B3DE00F92B419897D9EC7F0@HK0PR01MB2834.apcprd01.prod.exchangelabs.com>

From: Hua Zhang <hua.zhang1974 at hotmail.com>

1. add support for MIPS64R6 in target.mk
2. add support for MIPS64R6 in target malta
3. add support for MIPS64R6 in gcc configuration

Signed-off-by: Hua Zhang <hua.zhang1974 at hotmail.com>
---
 include/target.mk                        |  1 +
 target/linux/malta/Makefile              |  2 +-
 target/linux/malta/README                |  6 ++++
 target/linux/malta/be64r6/config-default | 38 ++++++++++++++++++++++++
 target/linux/malta/be64r6/target.mk      | 10 +++++++
 target/linux/malta/le64r6/config-default | 38 ++++++++++++++++++++++++
 target/linux/malta/le64r6/target.mk      | 10 +++++++
 toolchain/gcc/common.mk                  | 10 +++++--
 8 files changed, 112 insertions(+), 3 deletions(-)
 create mode 100644 target/linux/malta/be64r6/config-default
 create mode 100644 target/linux/malta/be64r6/target.mk
 create mode 100644 target/linux/malta/le64r6/config-default
 create mode 100644 target/linux/malta/le64r6/target.mk

diff --git a/include/target.mk b/include/target.mk
index 1d6888fde3..181aba9b3a 100644
--- a/include/target.mk
+++ b/include/target.mk
@@ -174,6 +174,7 @@ ifeq ($(DUMP),1)
     CPU_CFLAGS_mips64 = -mips64 -mtune=mips64 -mabi=64
     CPU_CFLAGS_24kc = -mips32r2 -mtune=24kc
     CPU_CFLAGS_74kc = -mips32r2 -mtune=74kc
+    CPU_CFLAGS_mips64r6 = -mips64r6 -mtune=mips64r6 -mabi=64
     CPU_CFLAGS_octeonplus = -march=octeon+ -mabi=64
   endif
   ifeq ($(ARCH),i386)
diff --git a/target/linux/malta/Makefile b/target/linux/malta/Makefile
index c71f34d109..5e1e745ba5 100644
--- a/target/linux/malta/Makefile
+++ b/target/linux/malta/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 BOARD:=malta
 BOARDNAME:=MIPS Malta CoreLV board (qemu)
 CPU_TYPE:=24kc
-SUBTARGETS:=le be le64 be64
+SUBTARGETS:=le be le64 be64 le64r6 be64r6
 INITRAMFS_EXTRA_FILES:=
 MAINTAINER:=Florian Fainelli <florian at openwrt.org>
 FEATURES:=ramdisk
diff --git a/target/linux/malta/README b/target/linux/malta/README
index 0bb1a1e35a..f631007fcb 100644
--- a/target/linux/malta/README
+++ b/target/linux/malta/README
@@ -16,4 +16,10 @@ qemu-system-mips64el -kernel bin/targets/malta/le64/openwrt-malta-le64-vmlinux-i
 For the 64 bit big-endian image:
 qemu-system-mips64 -kernel bin/targets/malta/be64/openwrt-malta-be64-vmlinux-initramfs.elf -nographic -m 256
 
+For the 64 bit r6 little-endian image:
+qemu-system-mips64el -cpu I6400-kernel bin/targets/malta/le64r6/openwrt-malta-le64r6-vmlinux-initramfs.elf -nographic -m 256
+
+For the 64 bit r6 big-endian image:
+qemu-system-mips64 -cpu I6400 -kernel bin/targets/malta/be64r6/openwrt-malta-be64r6-vmlinux-initramfs.elf -nographic -m 256
+
 and enjoy the system bootin.
diff --git a/target/linux/malta/be64r6/config-default b/target/linux/malta/be64r6/config-default
new file mode 100644
index 0000000000..3097d15cbf
--- /dev/null
+++ b/target/linux/malta/be64r6/config-default
@@ -0,0 +1,38 @@
+# CONFIG_32BIT is not set
+CONFIG_64BIT=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_MMAP_RND_BITS=12
+CONFIG_ARCH_MMAP_RND_BITS_MAX=18
+CONFIG_ARCH_MMAP_RND_BITS_MIN=12
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
+CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
+CONFIG_BINFMT_ELF32=y
+CONFIG_BLOCK_COMPAT=y
+CONFIG_COMPAT=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+CONFIG_CPU_BIG_ENDIAN=y
+# CONFIG_CPU_LITTLE_ENDIAN is not set
+CONFIG_CPU_MIPS64=y
+CONFIG_CPU_MIPS64_R6=y
+CONFIG_CPU_MIPSR1=y
+CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
+CONFIG_CPU_SUPPORTS_HUGEPAGES=y
+CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_EBPF_JIT=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+# CONFIG_HUGETLBFS is not set
+CONFIG_MIPS32_COMPAT=y
+CONFIG_MIPS32_N32=y
+CONFIG_MIPS32_O32=y
+# CONFIG_MIPS_VA_BITS_48 is not set
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
+CONFIG_PGTABLE_LEVELS=3
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_ZONE_DMA32=y
diff --git a/target/linux/malta/be64r6/target.mk b/target/linux/malta/be64r6/target.mk
new file mode 100644
index 0000000000..a645d01de3
--- /dev/null
+++ b/target/linux/malta/be64r6/target.mk
@@ -0,0 +1,10 @@
+ARCH:=mips64
+CPU_TYPE:=mips64r6
+SUBTARGET:=be64r6
+FEATURES+=source-only
+BOARDNAME:=Big Endian R6 (64-bits-r6)
+
+define Target/Description
+	Build BE firmware images for MIPS Malta CoreLV board running in
+	big-endian and 64-bits-r6 mode
+endef
diff --git a/target/linux/malta/le64r6/config-default b/target/linux/malta/le64r6/config-default
new file mode 100644
index 0000000000..37de98817e
--- /dev/null
+++ b/target/linux/malta/le64r6/config-default
@@ -0,0 +1,38 @@
+# CONFIG_32BIT is not set
+CONFIG_64BIT=y
+CONFIG_ARCH_DMA_ADDR_T_64BIT=y
+CONFIG_ARCH_MMAP_RND_BITS=12
+CONFIG_ARCH_MMAP_RND_BITS_MAX=18
+CONFIG_ARCH_MMAP_RND_BITS_MIN=12
+CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
+CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
+CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
+CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
+CONFIG_BINFMT_ELF32=y
+CONFIG_BLOCK_COMPAT=y
+CONFIG_COMPAT=y
+CONFIG_COMPAT_NETLINK_MESSAGES=y
+# CONFIG_CPU_BIG_ENDIAN is not set
+CONFIG_CPU_LITTLE_ENDIAN=y
+CONFIG_CPU_MIPS64=y
+CONFIG_CPU_MIPS64_R6=y
+CONFIG_CPU_MIPSR1=y
+CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
+CONFIG_CPU_SUPPORTS_HUGEPAGES=y
+CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
+CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
+CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
+CONFIG_HAVE_EBPF_JIT=y
+CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
+# CONFIG_HUGETLBFS is not set
+CONFIG_MIPS32_COMPAT=y
+CONFIG_MIPS32_N32=y
+CONFIG_MIPS32_O32=y
+# CONFIG_MIPS_VA_BITS_48 is not set
+CONFIG_MODULES_USE_ELF_RELA=y
+CONFIG_PCI_BUS_ADDR_T_64BIT=y
+CONFIG_PGTABLE_LEVELS=3
+CONFIG_PHYS_ADDR_T_64BIT=y
+CONFIG_SYSVIPC_COMPAT=y
+CONFIG_SYS_SUPPORTS_HUGETLBFS=y
+CONFIG_ZONE_DMA32=y
diff --git a/target/linux/malta/le64r6/target.mk b/target/linux/malta/le64r6/target.mk
new file mode 100644
index 0000000000..392c46dbdd
--- /dev/null
+++ b/target/linux/malta/le64r6/target.mk
@@ -0,0 +1,10 @@
+ARCH:=mips64el
+CPU_TYPE:=mips64r6
+SUBTARGET:=le64r6
+FEATURES+=source-only
+BOARDNAME:=Little Endian R6 (64-bits-r6)
+
+define Target/Description
+	Build LE firmware images for MIPS Malta CoreLV board running in
+	little-endian and 64-bits-r6 mode
+endef
diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk
index b75fce57ef..225bf27de0 100644
--- a/toolchain/gcc/common.mk
+++ b/toolchain/gcc/common.mk
@@ -117,13 +117,19 @@ GCC_CONFIGURE:= \
 		--with-host-libstdcxx=-lstdc++ \
 		$(SOFT_FLOAT_CONFIG_OPTION) \
 		$(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
-		$(if $(CONFIG_mips64)$(CONFIG_mips64el),--with-arch=mips64 \
-			--with-abi=$(call qstrip,$(CONFIG_MIPS64_ABI))) \
 		$(if $(CONFIG_arc),--with-cpu=$(CONFIG_CPU_TYPE)) \
 		--with-gmp=$(TOPDIR)/staging_dir/host \
 		--with-mpfr=$(TOPDIR)/staging_dir/host \
 		--with-mpc=$(TOPDIR)/staging_dir/host \
 		--disable-decimal-float
+ifneq ($(CONFIG_mips64)$(CONFIG_mips64el),)
+  ifeq ($(CONFIG_CPU_TYPE), "mips64r6")
+    GCC_CONFIGURE += --with-arch=mips64r6  --with-abi=$(call qstrip,$(CONFIG_MIPS64_ABI))
+  else
+    GCC_CONFIGURE += --with-arch=mips64  --with-abi=$(call qstrip,$(CONFIG_MIPS64_ABI))
+  endif
+endif
+
 ifneq ($(CONFIG_mips)$(CONFIG_mipsel),)
   GCC_CONFIGURE += --with-mips-plt
 endif
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Fri Feb 22 01:29:49 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Fri, 22 Feb 2019 14:29:49 +0800
Subject: [OpenWrt-Devel] [PATCH] MIPS64: add support for MIPS64R6
In-Reply-To: <HK0PR01MB283492B3DE00F92B419897D9EC7F0@HK0PR01MB2834.apcprd01.prod.exchangelabs.com>
References: <HK0PR01MB283492B3DE00F92B419897D9EC7F0@HK0PR01MB2834.apcprd01.prod.exchangelabs.com>
Message-ID: <CAECwjAgGJXT88DZsf=K9d2rcjtBGnmy7x2VS0VU0+jiYjWqu7A@mail.gmail.com>

On Fri, 22 Feb 2019 at 12:05, zh h <hua.zhang1974 at hotmail.com> wrote:
>
> From: Hua Zhang <hua.zhang1974 at hotmail.com>
>
> 1. add support for MIPS64R6 in target.mk
> 2. add support for MIPS64R6 in target malta
> 3. add support for MIPS64R6 in gcc configuration
>
> Signed-off-by: Hua Zhang <hua.zhang1974 at hotmail.com>

I just checked the code and it looks like the malta mips64 subtargets
are on their own with no other targets sharing the same cpu type.

Virtual targets are mainly for development purposes and as such they
should not exist on its own.  Do you plan to add new target support
into OpenWrt that also uses mips64r6 cpu type?

We can consider just converting existing malta 64 subtargets into
using mips64r6 arch.

                yousong

> ---
>  include/target.mk                        |  1 +
>  target/linux/malta/Makefile              |  2 +-
>  target/linux/malta/README                |  6 ++++
>  target/linux/malta/be64r6/config-default | 38 ++++++++++++++++++++++++
>  target/linux/malta/be64r6/target.mk      | 10 +++++++
>  target/linux/malta/le64r6/config-default | 38 ++++++++++++++++++++++++
>  target/linux/malta/le64r6/target.mk      | 10 +++++++
>  toolchain/gcc/common.mk                  | 10 +++++--
>  8 files changed, 112 insertions(+), 3 deletions(-)
>  create mode 100644 target/linux/malta/be64r6/config-default
>  create mode 100644 target/linux/malta/be64r6/target.mk
>  create mode 100644 target/linux/malta/le64r6/config-default
>  create mode 100644 target/linux/malta/le64r6/target.mk
>
> diff --git a/include/target.mk b/include/target.mk
> index 1d6888fde3..181aba9b3a 100644
> --- a/include/target.mk
> +++ b/include/target.mk
> @@ -174,6 +174,7 @@ ifeq ($(DUMP),1)
>      CPU_CFLAGS_mips64 = -mips64 -mtune=mips64 -mabi=64
>      CPU_CFLAGS_24kc = -mips32r2 -mtune=24kc
>      CPU_CFLAGS_74kc = -mips32r2 -mtune=74kc
> +    CPU_CFLAGS_mips64r6 = -mips64r6 -mtune=mips64r6 -mabi=64
>      CPU_CFLAGS_octeonplus = -march=octeon+ -mabi=64
>    endif
>    ifeq ($(ARCH),i386)
> diff --git a/target/linux/malta/Makefile b/target/linux/malta/Makefile
> index c71f34d109..5e1e745ba5 100644
> --- a/target/linux/malta/Makefile
> +++ b/target/linux/malta/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>  BOARD:=malta
>  BOARDNAME:=MIPS Malta CoreLV board (qemu)
>  CPU_TYPE:=24kc
> -SUBTARGETS:=le be le64 be64
> +SUBTARGETS:=le be le64 be64 le64r6 be64r6
>  INITRAMFS_EXTRA_FILES:=
>  MAINTAINER:=Florian Fainelli <florian at openwrt.org>
>  FEATURES:=ramdisk
> diff --git a/target/linux/malta/README b/target/linux/malta/README
> index 0bb1a1e35a..f631007fcb 100644
> --- a/target/linux/malta/README
> +++ b/target/linux/malta/README
> @@ -16,4 +16,10 @@ qemu-system-mips64el -kernel bin/targets/malta/le64/openwrt-malta-le64-vmlinux-i
>  For the 64 bit big-endian image:
>  qemu-system-mips64 -kernel bin/targets/malta/be64/openwrt-malta-be64-vmlinux-initramfs.elf -nographic -m 256
>
> +For the 64 bit r6 little-endian image:
> +qemu-system-mips64el -cpu I6400-kernel bin/targets/malta/le64r6/openwrt-malta-le64r6-vmlinux-initramfs.elf -nographic -m 256
> +
> +For the 64 bit r6 big-endian image:
> +qemu-system-mips64 -cpu I6400 -kernel bin/targets/malta/be64r6/openwrt-malta-be64r6-vmlinux-initramfs.elf -nographic -m 256
> +
>  and enjoy the system bootin.
> diff --git a/target/linux/malta/be64r6/config-default b/target/linux/malta/be64r6/config-default
> new file mode 100644
> index 0000000000..3097d15cbf
> --- /dev/null
> +++ b/target/linux/malta/be64r6/config-default
> @@ -0,0 +1,38 @@
> +# CONFIG_32BIT is not set
> +CONFIG_64BIT=y
> +CONFIG_ARCH_DMA_ADDR_T_64BIT=y
> +CONFIG_ARCH_MMAP_RND_BITS=12
> +CONFIG_ARCH_MMAP_RND_BITS_MAX=18
> +CONFIG_ARCH_MMAP_RND_BITS_MIN=12
> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
> +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
> +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
> +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
> +CONFIG_BINFMT_ELF32=y
> +CONFIG_BLOCK_COMPAT=y
> +CONFIG_COMPAT=y
> +CONFIG_COMPAT_NETLINK_MESSAGES=y
> +CONFIG_CPU_BIG_ENDIAN=y
> +# CONFIG_CPU_LITTLE_ENDIAN is not set
> +CONFIG_CPU_MIPS64=y
> +CONFIG_CPU_MIPS64_R6=y
> +CONFIG_CPU_MIPSR1=y
> +CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
> +CONFIG_CPU_SUPPORTS_HUGEPAGES=y
> +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
> +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
> +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
> +CONFIG_HAVE_EBPF_JIT=y
> +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
> +# CONFIG_HUGETLBFS is not set
> +CONFIG_MIPS32_COMPAT=y
> +CONFIG_MIPS32_N32=y
> +CONFIG_MIPS32_O32=y
> +# CONFIG_MIPS_VA_BITS_48 is not set
> +CONFIG_MODULES_USE_ELF_RELA=y
> +CONFIG_PCI_BUS_ADDR_T_64BIT=y
> +CONFIG_PGTABLE_LEVELS=3
> +CONFIG_PHYS_ADDR_T_64BIT=y
> +CONFIG_SYSVIPC_COMPAT=y
> +CONFIG_SYS_SUPPORTS_HUGETLBFS=y
> +CONFIG_ZONE_DMA32=y
> diff --git a/target/linux/malta/be64r6/target.mk b/target/linux/malta/be64r6/target.mk
> new file mode 100644
> index 0000000000..a645d01de3
> --- /dev/null
> +++ b/target/linux/malta/be64r6/target.mk
> @@ -0,0 +1,10 @@
> +ARCH:=mips64
> +CPU_TYPE:=mips64r6
> +SUBTARGET:=be64r6
> +FEATURES+=source-only
> +BOARDNAME:=Big Endian R6 (64-bits-r6)
> +
> +define Target/Description
> +       Build BE firmware images for MIPS Malta CoreLV board running in
> +       big-endian and 64-bits-r6 mode
> +endef
> diff --git a/target/linux/malta/le64r6/config-default b/target/linux/malta/le64r6/config-default
> new file mode 100644
> index 0000000000..37de98817e
> --- /dev/null
> +++ b/target/linux/malta/le64r6/config-default
> @@ -0,0 +1,38 @@
> +# CONFIG_32BIT is not set
> +CONFIG_64BIT=y
> +CONFIG_ARCH_DMA_ADDR_T_64BIT=y
> +CONFIG_ARCH_MMAP_RND_BITS=12
> +CONFIG_ARCH_MMAP_RND_BITS_MAX=18
> +CONFIG_ARCH_MMAP_RND_BITS_MIN=12
> +CONFIG_ARCH_MMAP_RND_COMPAT_BITS=8
> +CONFIG_ARCH_USE_CMPXCHG_LOCKREF=y
> +CONFIG_ARCH_WANT_COMPAT_IPC_PARSE_VERSION=y
> +CONFIG_ARCH_WANT_OLD_COMPAT_IPC=y
> +CONFIG_BINFMT_ELF32=y
> +CONFIG_BLOCK_COMPAT=y
> +CONFIG_COMPAT=y
> +CONFIG_COMPAT_NETLINK_MESSAGES=y
> +# CONFIG_CPU_BIG_ENDIAN is not set
> +CONFIG_CPU_LITTLE_ENDIAN=y
> +CONFIG_CPU_MIPS64=y
> +CONFIG_CPU_MIPS64_R6=y
> +CONFIG_CPU_MIPSR1=y
> +CONFIG_CPU_SUPPORTS_64BIT_KERNEL=y
> +CONFIG_CPU_SUPPORTS_HUGEPAGES=y
> +CONFIG_HAVE_64BIT_ALIGNED_ACCESS=y
> +CONFIG_HAVE_ARCH_MMAP_RND_COMPAT_BITS=y
> +CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE=y
> +CONFIG_HAVE_EBPF_JIT=y
> +CONFIG_HAVE_VIRT_CPU_ACCOUNTING_GEN=y
> +# CONFIG_HUGETLBFS is not set
> +CONFIG_MIPS32_COMPAT=y
> +CONFIG_MIPS32_N32=y
> +CONFIG_MIPS32_O32=y
> +# CONFIG_MIPS_VA_BITS_48 is not set
> +CONFIG_MODULES_USE_ELF_RELA=y
> +CONFIG_PCI_BUS_ADDR_T_64BIT=y
> +CONFIG_PGTABLE_LEVELS=3
> +CONFIG_PHYS_ADDR_T_64BIT=y
> +CONFIG_SYSVIPC_COMPAT=y
> +CONFIG_SYS_SUPPORTS_HUGETLBFS=y
> +CONFIG_ZONE_DMA32=y
> diff --git a/target/linux/malta/le64r6/target.mk b/target/linux/malta/le64r6/target.mk
> new file mode 100644
> index 0000000000..392c46dbdd
> --- /dev/null
> +++ b/target/linux/malta/le64r6/target.mk
> @@ -0,0 +1,10 @@
> +ARCH:=mips64el
> +CPU_TYPE:=mips64r6
> +SUBTARGET:=le64r6
> +FEATURES+=source-only
> +BOARDNAME:=Little Endian R6 (64-bits-r6)
> +
> +define Target/Description
> +       Build LE firmware images for MIPS Malta CoreLV board running in
> +       little-endian and 64-bits-r6 mode
> +endef
> diff --git a/toolchain/gcc/common.mk b/toolchain/gcc/common.mk
> index b75fce57ef..225bf27de0 100644
> --- a/toolchain/gcc/common.mk
> +++ b/toolchain/gcc/common.mk
> @@ -117,13 +117,19 @@ GCC_CONFIGURE:= \
>                 --with-host-libstdcxx=-lstdc++ \
>                 $(SOFT_FLOAT_CONFIG_OPTION) \
>                 $(call qstrip,$(CONFIG_EXTRA_GCC_CONFIG_OPTIONS)) \
> -               $(if $(CONFIG_mips64)$(CONFIG_mips64el),--with-arch=mips64 \
> -                       --with-abi=$(call qstrip,$(CONFIG_MIPS64_ABI))) \
>                 $(if $(CONFIG_arc),--with-cpu=$(CONFIG_CPU_TYPE)) \
>                 --with-gmp=$(TOPDIR)/staging_dir/host \
>                 --with-mpfr=$(TOPDIR)/staging_dir/host \
>                 --with-mpc=$(TOPDIR)/staging_dir/host \
>                 --disable-decimal-float
> +ifneq ($(CONFIG_mips64)$(CONFIG_mips64el),)
> +  ifeq ($(CONFIG_CPU_TYPE), "mips64r6")
> +    GCC_CONFIGURE += --with-arch=mips64r6  --with-abi=$(call qstrip,$(CONFIG_MIPS64_ABI))
> +  else
> +    GCC_CONFIGURE += --with-arch=mips64  --with-abi=$(call qstrip,$(CONFIG_MIPS64_ABI))
> +  endif
> +endif
> +
>  ifneq ($(CONFIG_mips)$(CONFIG_mipsel),)
>    GCC_CONFIGURE += --with-mips-plt
>  endif
> --
> 2.17.1
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From openwrt-devel at lists.openwrt.org  Fri Feb 22 01:57:52 2019
From: openwrt-devel at lists.openwrt.org (Sergiy Kibrik via openwrt-devel)
Date: Fri, 22 Feb 2019 06:57:52 +0000
Subject: [OpenWrt-Devel] [PATCH v2] [ubox] kmodloader: increase module name
 length
Message-ID: <mailman.23141.1550818672.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Sergiy Kibrik <sakib at ubnt.com>
Subject: [PATCH v2] [ubox] kmodloader: increase module name length
Date: Fri, 22 Feb 2019 08:57:38 +0200
Size: 3255
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190222/752eb8f6/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From dedeckeh at gmail.com  Fri Feb 22 02:23:23 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Fri, 22 Feb 2019 08:23:23 +0100
Subject: [OpenWrt-Devel] [PATCH] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <20190221035228.5145-1-yszhou4tech@gmail.com>
References: <20190221035228.5145-1-yszhou4tech@gmail.com>
Message-ID: <CAJLcKsG_Fz+U6ZUAKiLVFUOWPMoAtrV6ox7zt1o7kBqrvWV3TA@mail.gmail.com>

On Thu, Feb 21, 2019 at 4:52 AM Yousong Zhou <yszhou4tech at gmail.com> wrote:
>
> This makes it clear that localuse when explicitly specified in the
> config will have its final say on whether or not the initscript should
> touch /etc/resolv.conf, no matter whatever the result of previous
> guesswork would be
>
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
Acked by: Hans Dedecker <dedeckeh at gmail.com>
> ---
>  package/network/services/dnsmasq/Makefile           | 2 +-
>  package/network/services/dnsmasq/files/dnsmasq.init | 8 ++++----
>  2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> index d874296ea7..8c8427f6c1 100644
> --- a/package/network/services/dnsmasq/Makefile
> +++ b/package/network/services/dnsmasq/Makefile
> @@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
>  PKG_NAME:=dnsmasq
>  PKG_UPSTREAM_VERSION:=2.80
>  PKG_VERSION:=$(subst test,~~test,$(subst rc,~rc,$(PKG_UPSTREAM_VERSION)))
> -PKG_RELEASE:=9
> +PKG_RELEASE:=10
>
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_UPSTREAM_VERSION).tar.xz
>  PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index f65736e268..4ae71e438b 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -733,7 +733,7 @@ dnsmasq_start()
>  {
>         local cfg="$1"
>         local disabled user_dhcpscript
> -       local resolvfile localuse
> +       local resolvfile localuse=0
>
>         config_get_bool disabled "$cfg" disabled 0
>         [ "$disabled" -gt 0 ] && return 0
> @@ -884,13 +884,13 @@ dnsmasq_start()
>         config_get_bool cachelocal "$cfg" cachelocal 1
>
>         config_get_bool noresolv "$cfg" noresolv 0
> -       config_get_bool localuse "$cfg" localuse 0
>         if [ "$noresolv" != "1" ]; then
>                 config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
>                 [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
>                 xappend "--resolv-file=$resolvfile"
>                 [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>         fi
> +       config_get_bool localuse "$cfg" localuse "$localuse"
>
>         config_get hostsfile "$cfg" dhcphostsfile
>         [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
> @@ -1040,13 +1040,13 @@ dnsmasq_start()
>  dnsmasq_stop()
>  {
>         local cfg="$1"
> -       local noresolv resolvfile localuse
> +       local noresolv resolvfile localuse=0
>
>         config_get_bool noresolv "$cfg" noresolv 0
> -       config_get_bool localuse "$cfg" localuse 0
>         config_get resolvfile "$cfg" "resolvfile"
>
>         [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> +       config_get_bool localuse "$cfg" localuse "$localuse"
>         [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
>
>         rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mt at i3o.de  Fri Feb 22 03:17:28 2019
From: mt at i3o.de (Martin Tippmann)
Date: Fri, 22 Feb 2019 09:17:28 +0100
Subject: [OpenWrt-Devel] netifd: DEVICE= always empty for ACTION=ifdown for
 scripts in /etc/hotplug.d/iface
Message-ID: <CABL_Pd9MqJbv_DsKtdbbkLoJ427Xj9+M+A+8qZDDUoHNLUe1Rg@mail.gmail.com>

Hi,

I'm calling some iptables rules from a scripts in /etc/hotplug.d/iface
and these failed because there seems to be no $DEVICE variable for
ACTION=ifdown events.

It's not really obvious that the device is not populated for ifdown
events, is there a reason for this? I guess the data about the device
must be there and existing.

I'm confused wether this behavoir is intented or a bug, it looks like
this was never working/implemented:
https://git.openwrt.org/?p=project/netifd.git;a=blob;f=interface.c;h=b21d2345bfc9577884e76aaf006dcdb39e330d5b;hb=HEAD#l227

There is also a related bug:
https://bugs.openwrt.org/index.php?do=details&task_id=1741

Thanks,
Martin

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mt at i3o.de  Fri Feb 22 03:43:35 2019
From: mt at i3o.de (Martin Tippmann)
Date: Fri, 22 Feb 2019 09:43:35 +0100
Subject: [OpenWrt-Devel] netifd: DEVICE= always empty for ACTION=ifdown
 for scripts in /etc/hotplug.d/iface
In-Reply-To: <CABL_Pd9MqJbv_DsKtdbbkLoJ427Xj9+M+A+8qZDDUoHNLUe1Rg@mail.gmail.com>
References: <CABL_Pd9MqJbv_DsKtdbbkLoJ427Xj9+M+A+8qZDDUoHNLUe1Rg@mail.gmail.com>
Message-ID: <CABL_Pd8WFApXJ62tAATznD8L_KtRz1Huhke4nu_sQ4hm2peNdQ@mail.gmail.com>

On Fri, Feb 22, 2019 at 9:17 AM Martin Tippmann <mt at i3o.de> wrote:
>
> Hi,
>
> I'm calling some iptables rules from a scripts in /etc/hotplug.d/iface
> and these failed because there seems to be no $DEVICE variable for
> ACTION=ifdown events.
>
> It's not really obvious that the device is not populated for ifdown
> events, is there a reason for this? I guess the data about the device
> must be there and existing.
>
> I'm confused wether this behavoir is intented or a bug, it looks like
> this was never working/implemented:
> https://git.openwrt.org/?p=project/netifd.git;a=blob;f=interface.c;h=b21d2345bfc9577884e76aaf006dcdb39e330d5b;hb=HEAD#l227

Sorry, wrong link to the source - I guess it's this code here:
https://git.openwrt.org/?p=project/netifd.git;a=blob;f=interface-event.c;h=a40f6dc883d3a3654d73d0592cd7eb65c2a8de85;hb=HEAD#l95

if ((current_ev == IFEV_UP || current_ev == IFEV_UPDATE) && current->l3_dev.dev)
 device = current->l3_dev.dev->ifname;

so for ifdown events device is always NULL in run_cmd:

run_cmd(current->name, device, current_ev, current->updated);

and the variable is not populated.

regards
Martin

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Fri Feb 22 05:08:51 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Fri, 22 Feb 2019 11:08:51 +0100
Subject: [OpenWrt-Devel] speed up ath10k-caldata extraction for
 non-ipq40xx
In-Reply-To: <005c01d4c949$dbbcb500$93361f00$@adrianschmutzler.de>
References: <005c01d4c949$dbbcb500$93361f00$@adrianschmutzler.de>
Message-ID: <2072149.MX9HEkfFXr@debian64>

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

From hanipouspilot at gmail.com  Fri Feb 22 06:32:41 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Fri, 22 Feb 2019 14:32:41 +0300
Subject: [OpenWrt-Devel] speed up ath10k-caldata extraction for
 non-ipq40xx
In-Reply-To: <2072149.MX9HEkfFXr@debian64>
References: <005c01d4c949$dbbcb500$93361f00$@adrianschmutzler.de>
 <2072149.MX9HEkfFXr@debian64>
Message-ID: <CANoib0Hnqc9bob90sghzAtLqmc=HhHWbGGB25=UDuabAkMhpxg@mail.gmail.com>

This is useful for ath9k extraction as well.

??, 22 ????. 2019 ?. ? 13:09, Christian Lamparter <chunkeey at gmail.com>:
>
> 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

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From luochongjun at gl-inet.com  Fri Feb 22 06:46:37 2019
From: luochongjun at gl-inet.com (Luochongjun)
Date: Fri, 22 Feb 2019 19:46:37 +0800
Subject: [OpenWrt-Devel] [PATCH] Modify glinet x750 and AR300m MAC address
 offsets
Message-ID: <1550835997-12863-1-git-send-email-luochongjun@gl-inet.com>

In the production of glinet, the MAC address of ethernet port is only written
at the position where the ART area offset address is 0, and the MAC address of
eth1 is added 1 on the basis of eth0.

Signed-off-by: Luochongjun <luochongjun at gl-inet.com>
---
 target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi | 3 ++-
 target/linux/ath79/dts/qca9531_glinet_gl-x750.dts    | 3 ++-
 2 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
index fe986bd..55002b4 100644
--- a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
+++ b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
@@ -84,7 +84,8 @@
 };
 
 &eth1 {
-	mtd-mac-address = <&art 0x6>;
+	mtd-mac-address = <&art 0x0>;
+	mtd-mac-address-increment = <1>;
 };
 
 &wmac {
diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-x750.dts b/target/linux/ath79/dts/qca9531_glinet_gl-x750.dts
index f8a5119..79cd516 100644
--- a/target/linux/ath79/dts/qca9531_glinet_gl-x750.dts
+++ b/target/linux/ath79/dts/qca9531_glinet_gl-x750.dts
@@ -126,7 +126,8 @@
 };
 
 &eth1 {
-	mtd-mac-address = <&art 0x6>;
+	mtd-mac-address = <&art 0x0>;
+	mtd-mac-address-increment = <1>;
 };
 
 &wmac {
-- 
2.7.4




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From por at oranjevos.nl  Fri Feb 22 07:00:07 2019
From: por at oranjevos.nl (Paul Oranje)
Date: Fri, 22 Feb 2019 13:00:07 +0100
Subject: [OpenWrt-Devel] [PATCH v2] dnsmasq: allow using dnsmasq as the
 sole resolver
In-Reply-To: <CAECwjAhZAnz2uv_3eTe+K9uNRqeQd+cVvRRxgLUNC7p-_wvjMA@mail.gmail.com>
References: <20190218141801.7502-1-yszhou4tech@gmail.com>
 <CAJLcKsH0f8ZERD9pfxy8_62Kxmweo8jiP913rAGR8yabPEUwEg@mail.gmail.com>
 <38A885F2-49AA-4715-BBB7-A07B41998428@oranjevos.nl>
 <CAECwjAhZAnz2uv_3eTe+K9uNRqeQd+cVvRRxgLUNC7p-_wvjMA@mail.gmail.com>
Message-ID: <8369CE83-4BA3-4198-B4E9-EF9F405D1EBE@oranjevos.nl>



> Op 22 feb. 2019, om 03:05 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> 
> On Tue, 19 Feb 2019 at 23:02, Paul Oranje <por at oranjevos.nl> wrote:
>> 
>> Op 18 feb. 2019, om 21:50 heeft Hans Dedecker <dedeckeh at gmail.com> het volgende geschreven:
>>> 
>>> On Mon, Feb 18, 2019 at 3:18 PM Yousong Zhou <yszhou4tech at gmail.com> wrote:
>>>> 
>>>> Currently it seems impossible to configure /etc/config/dhcp to achieve
>>>> the following use case
>>>> 
>>>> - run dnsmasq with no-resolv
>>>> - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"
>>>> 
>>>> Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
>>>> to achive the 2nd effect above, but setting resolvfile requires noresolv
>>>> being false.
>>>> 
>>>> A new boolean option "localuse" is added to indicate that we intend to
>>>> use dnsmasq as the local dns resolver.  It's false by default and to
>>>> align with old behaviour it will be true automatically if resolvfile is
>>>> set to /tmp/resolv.conf.auto
>>>> 
>>>> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
>>> Acked-by: Hans Dedecker <dedeckeh at gmail.com>
>>>> ---
>>>> v2 <- v1
>>>> 
>>>> - retain /tmp/resolv.conf.auto as the default value of resolvfile when
>>>>  doing config_get, i.e. 2nd patch in the 1st version is now dropped
>>>> - retain the old behavior of rewriting /tmp/resolv.conf when resolvfile
>>>>  is /tmp/resolv.conf.auto
>>>> 
>>>> .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
>>>> 1 file changed, 15 insertions(+), 15 deletions(-)
>>>> 
>>>> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
>>>> index f3066627d6..f65736e268 100644
>>>> --- a/package/network/services/dnsmasq/files/dnsmasq.init
>>>> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
>>>> @@ -731,7 +731,9 @@ dhcp_relay_add() {
>>>> 
>>>> dnsmasq_start()
>>>> {
>>>> -       local cfg="$1" disabled resolvfile user_dhcpscript
>>>> +       local cfg="$1"
>>>> +       local disabled user_dhcpscript
>>>> +       local resolvfile localuse
>>>> 
>>>>       config_get_bool disabled "$cfg" disabled 0
>>>>       [ "$disabled" -gt 0 ] && return 0
>>>> @@ -882,14 +884,14 @@ dnsmasq_start()
>>>>       config_get_bool cachelocal "$cfg" cachelocal 1
>>>> 
>>>>       config_get_bool noresolv "$cfg" noresolv 0
>>>> +       config_get_bool localuse "$cfg" localuse 0
>>>>       if [ "$noresolv" != "1" ]; then
>>>> -               config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
>>>> -               # So jail doesn't complain if file missing
>>>> -               [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
>>>> +               config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
>>>> +               [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
>>>> +               xappend "--resolv-file=$resolvfile"
>>>> +               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>>>>       fi
>>>> 
>>>> -       [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
>>>> -
>>>>       config_get hostsfile "$cfg" dhcphostsfile
>>>>       [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
>>>> 
>>>> @@ -1011,7 +1013,7 @@ dnsmasq_start()
>>>>       mv -f $CONFIGFILE_TMP $CONFIGFILE
>>>>       mv -f $HOSTFILE_TMP $HOSTFILE
>>>> 
>>>> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
>>>> +       [ "$localuse" -gt 0 ] && {
>>>>               rm -f /tmp/resolv.conf
>>>>               [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
>>>>                       echo "search $DOMAIN" >> /tmp/resolv.conf
>>>> @@ -1037,17 +1039,15 @@ dnsmasq_start()
>>>> 
>>>> dnsmasq_stop()
>>>> {
>>>> -       local cfg="$1" resolvfile
>>>> +       local cfg="$1"
>>>> +       local noresolv resolvfile localuse
>>>> 
>>>> +       config_get_bool noresolv "$cfg" noresolv 0
>>>> +       config_get_bool localuse "$cfg" localuse 0
>>>>       config_get resolvfile "$cfg" "resolvfile"
>>>> 
>>>> -       #relink /tmp/resolve.conf only for main instance
>>>> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
>>>> -               [ -f /tmp/resolv.conf ] && {
>>>> -                       rm -f /tmp/resolv.conf
>>>> -                       ln -s "$resolvfile" /tmp/resolv.conf
>>>> -               }
>>>> -       }
>>>> +       [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>>>> +       [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
>>>> 
>>>>       rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
>>>> }
>>> 
>> 
>> Hi,
>> 
>> In 2017 I submitted a patch to deal with having resolv.conf (used by the CLIB local resolver) being set correctly, see [1] and [2].
>> For the problem it sets out to solve (partially) an issue was opened [3].
>> The use-case concerned having Unbound as nameserver with dnsmasq handling DNS for the local lan domain and DHCP.
>> The patch was not merged since it was deemed that setting resolv.conf requires atomicity which would imply extending netifd with the functionality to handle this instead as my patch could not offer this atomic setting of resolv.conf.
>> 
>> Currently with the use-case (Unbound with "option dhcp_link 'dnsmasq'" set) still requires restarting Unbound manually after a restart of dnsmasq since dnsmasq.init will reset resol.conf to /etc/resolv.conf.auto.
>> 
>> I wonder, did you see that patch and could that patch still be relevant ?
>> 
>> [1] http://lists.openwrt.org/pipermail/openwrt-devel/2017-June/007923.html
>> [2] https://patchwork.ozlabs.org/patch/780353/
>> [3] https://bugs.openwrt.org/index.php?do=details&task_id=785
>> 
>> Regards,
>> Paul
> 
> Hi, Paul
> 
> I think scripting action by guessing users' intention is not a good
> approach here.  dnsmasq can be very flexible and OpenWrt/Linux is a
> highly-customizable system.  It's very hard to cover all cases to
> fulfill the original intention of the guess logic itself.  And the
> result of that is people may find the smart thing stand in their way
> when doing customizations.  That's my first impression on the "if
> dnsmasq listens on port 53 then touch /etc/resolv.conf"
> implementation.
> 
> Regards,
>                yousong
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

I agree, in the end "intelligent solutions" **alway** bite.
Paul
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From por at oranjevos.nl  Fri Feb 22 07:13:34 2019
From: por at oranjevos.nl (Paul Oranje)
Date: Fri, 22 Feb 2019 13:13:34 +0100
Subject: [OpenWrt-Devel] [PATCH] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <CAECwjAhNGr7_LBgzQdC+Bz4NM+CQP_kqnsKSSZRWEpAc8qtrqg@mail.gmail.com>
References: <20190221035228.5145-1-yszhou4tech@gmail.com>
 <67BC4388-5B1F-464A-8339-88B73E8EE320@oranjevos.nl>
 <CAECwjAhNGr7_LBgzQdC+Bz4NM+CQP_kqnsKSSZRWEpAc8qtrqg@mail.gmail.com>
Message-ID: <8149E2CE-F289-4DD9-8427-B12A2359A5F5@oranjevos.nl>


> Op 22 feb. 2019, om 02:54 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> 
> On Thu, 21 Feb 2019 at 22:14, Paul Oranje <por at oranjevos.nl> wrote:
>> 
>> 
>> 
>>> Op 21 feb. 2019, om 04:52 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
>>> 
>>> This makes it clear that localuse when explicitly specified in the
>>> config will have its final say on whether or not the initscript should
>>> touch /etc/resolv.conf, no matter whatever the result of previous
>>> guesswork would be
>>> 
>>> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> 
> <snipped>
> 
>> 
>> Tested this patch (8f16fba501) and the previous patch (ec2a2a2aea) on top of 18.06.2.
>> 
>> The patches apply cleanly and the patched file works as expected:
>> 
>> - localuse=1 and noresolv and resolvfile not set => dnsmasq writes resolv.conf
>> - localuse and noresolv and resolvfile not set => dnsmasq writes resolv.conf
>> - localuse=0 and noresolv and resolvfile not set => dnsmasq leaves resolv.conf untouched
>> - localuse not set and noresolv=1 and resolvfile='/tmp/resolv.conf.auto' => dnsmasq leaves resolv.conf untouched.
>> 
>> The latter two scenario's work well with Unbound (where dnsmasq handles DHCP and DNS of lan host names).
>> Thanks.
>> 
>> Tested-by: Paul Oranje <por at oranjevos.nl>
> 
> Thanks ;)
Can these patches also be applied against the openwrt-18.06 branch or must they be submitted separately for that end ?

> 
>> 
>> Sitenotes:
>> Would also writing "nameserver ::1" to resolv.conf be a good idea ? (Unbound does)
> 
> The 127.0.0.1 address always works so there is no need for ::1 plus
> the possibility that people may use a build without ipv6.
> 
>> When dnsmasq does not listen on port 53, then it cannot serve as the nameserver for the localhost (resolv.conf does not allow specifying a port) unless some clever DNAT rule is in place.
> 
> Yes, I got the same conclusion last time I tried to find ways to
> specify port in resolv.conf ;)
> 
>                yousong


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hanipouspilot at gmail.com  Fri Feb 22 07:30:39 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Fri, 22 Feb 2019 15:30:39 +0300
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
Message-ID: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>

This is a simple copy of ipq40xx: speed up ath10k-caldata extraction commit /a69e101ed1169f562fc030a783cd997d3f066b16

Tested on DIR-825-B1

3768+0 records in
3768+0 records out
real	0m 11.90s
user	0m 0.03s
sys	0m 9.94s

1+0 records in
1+0 records out
real	0m 0.03s
user	0m 0.00s
sys	0m 0.03s

With this change eeprom extraction is fast enough to get working Wi-Fi after initial install.

Signed-off-by: Dmitry Tunin <hanipouspilot at gmail.com>
---
 target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 8b217d1..84e4d07 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
 	[ -n "$mtd" ] || \
 		ath9k_eeprom_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 || \
 		ath9k_eeprom_die "failed to extract from $mtd"
 }
 
-- 
2.7.4


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ynezz at true.cz  Fri Feb 22 07:52:57 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Fri, 22 Feb 2019 13:52:57 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
Message-ID: <20190222125257.GC38601@meh.true.cz>

Dmitry Tunin <hanipouspilot at gmail.com> [2019-02-22 15:30:39]:

Hi,

> Signed-off-by: Dmitry Tunin <hanipouspilot at gmail.com>
> ---
>  target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> index 8b217d1..84e4d07 100644
> --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> @@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
>  	[ -n "$mtd" ] || \
>  		ath9k_eeprom_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 || \
>  		ath9k_eeprom_die "failed to extract from $mtd"
>  }

I'm wondering if this isn't a good opportunity to simply generalize this copy&paste galore:

apm821xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom:        dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom:  dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata:        dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom:   dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata: dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
brcm63xx/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom:       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count || \
ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata:       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata:       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom: dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \

as a bonus all the platforms using the common code base couldn't benefit from this speed up.

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hanipouspilot at gmail.com  Fri Feb 22 08:13:52 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Fri, 22 Feb 2019 16:13:52 +0300
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <20190222125257.GC38601@meh.true.cz>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222125257.GC38601@meh.true.cz>
Message-ID: <CANoib0Fo9m3CF0UDEf=n-2qo1TkugbcyWay-FSsOwbV6gga_Tw@mail.gmail.com>

??, 22 ????. 2019 ?. ? 15:53, Petr ?tetiar <ynezz at true.cz>:
>
> Dmitry Tunin <hanipouspilot at gmail.com> [2019-02-22 15:30:39]:
>
> Hi,
>
> > Signed-off-by: Dmitry Tunin <hanipouspilot at gmail.com>
> > ---
> >  target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> > index 8b217d1..84e4d07 100644
> > --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> > +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> > @@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
> >       [ -n "$mtd" ] || \
> >               ath9k_eeprom_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 || \
> >               ath9k_eeprom_die "failed to extract from $mtd"
> >  }
>
> I'm wondering if this isn't a good opportunity to simply generalize this copy&paste galore:

What do you mean by "generalize"? Fix it on all platforms, or having
common 10-ath9k-eeprom, 11-ath10k-caldata, etc files., or common code
that will be used on all platforms in some other file?
The first approach is obviously simple enough, but the second is not
that easy, but doable.

>
> apm821xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom:        dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom:  dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata:        dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom:   dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata: dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> brcm63xx/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom:       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count || \
> ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata:       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> ipq806x/base-files/etc/hotplug.d/firmware/11-ath10k-caldata:       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom: dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
>
> as a bonus all the platforms using the common code base couldn't benefit from this speed up.
>
> -- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ynezz at true.cz  Fri Feb 22 08:57:36 2019
From: ynezz at true.cz (Petr =?utf-8?Q?=C5=A0tetiar?=)
Date: Fri, 22 Feb 2019 14:57:36 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <CANoib0Fo9m3CF0UDEf=n-2qo1TkugbcyWay-FSsOwbV6gga_Tw@mail.gmail.com>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222125257.GC38601@meh.true.cz>
 <CANoib0Fo9m3CF0UDEf=n-2qo1TkugbcyWay-FSsOwbV6gga_Tw@mail.gmail.com>
Message-ID: <20190222135736.GD38601@meh.true.cz>

Dmitry Tunin <hanipouspilot at gmail.com> [2019-02-22 16:13:52]:

> What do you mean by "generalize"? Fix it on all platforms, or having
> common 10-ath9k-eeprom, 11-ath10k-caldata, etc files., or common code
> that will be used on all platforms in some other file?
> The first approach is obviously simple enough, but the second is not
> that easy, but doable.

Simply moving common bits to some generic file which could be shared by all
platforms. Something like this for ar71xx, ath79 and ramips, untested. 

---
 package/base-files/files/lib/functions/eeprom.sh   | 54 ++++++++++++
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 97 +++++-----------------
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 84 +++++--------------
 .../etc/hotplug.d/firmware/10-rt2x00-eeprom        | 32 ++-----
 4 files changed, 106 insertions(+), 161 deletions(-)
 create mode 100644 package/base-files/files/lib/functions/eeprom.sh

diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh
new file mode 100644
index 0000000..3b585da
--- /dev/null
+++ b/package/base-files/files/lib/functions/eeprom.sh
@@ -0,0 +1,54 @@
+. /lib/functions.sh
+. /lib/functions/system.sh
+
+eeprom_die() {
+	echo "eeprom: " "$*"
+	exit 1
+}
+
+mtd_eeprom_extract() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local mtd
+
+	mtd=$(find_mtd_chardev $part)
+	[ -n "$mtd" ] || \
+		eeprom_die "no mtd device found for partition $part"
+
+	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+		eeprom_die "failed to extract from $mtd"
+}
+
+mtd_eeprom_extract_reverse() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local mtd
+	local reversed
+	local caldata
+
+	mtd=$(find_mtd_chardev "$part")
+	reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
+
+	for byte in $reversed; do
+		caldata="\x${byte}${caldata}"
+	done
+
+	printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
+}
+
+ubi_eeprom_extract() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local ubidev=$(nand_find_ubi $CI_UBIPART)
+	local ubi
+
+	ubi=$(nand_find_volume $ubidev $part)
+	[ -n "$ubi" ] || \
+		eeprom_die "no UBI volume found for $part"
+
+	dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+		eeprom_die "failed to extract from $ubi"
+}
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 94bce7d..21808fb 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -2,60 +2,7 @@
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-ath9k_eeprom_die() {
-	echo "ath9k eeprom: " "$*"
-	exit 1
-}
-
-ath9k_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath9k_eeprom_die "no mtd device found for partition $part"
-
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		ath9k_eeprom_die "failed to extract from $mtd"
-}
-
-ath9k_ubi_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local ubidev=$(nand_find_ubi $CI_UBIPART)
-	local ubi
-
-	ubi=$(nand_find_volume $ubidev $part)
-	[ -n "$ubi" ] || \
-		ath9k_eeprom_die "no UBI volume found for $part"
-
-	dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		ath9k_eeprom_die "failed to extract from $ubi"
-}
-
-ath9k_eeprom_extract_reverse() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-	local reversed
-	local caldata
-
-	mtd=$(find_mtd_chardev "$part")
-	reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
-
-	for byte in $reversed; do
-		caldata="\x${byte}${caldata}"
-	done
-
-	printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
-}
+. /lib/functions/eeprom.sh
 
 ath9k_patch_firmware_mac() {
 	local mac=$1
@@ -72,48 +19,48 @@ case "$FIRMWARE" in
 	case $board in
 	c-55|\
 	c-60)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +1)
 		;;
 	fritz4020|\
 	fritz450e)
-		ath9k_eeprom_extract_reverse "urlader" 5441 1088
+		mtd_eeprom_extract_reverse "urlader" 5441 1088
 		;;
 	mr18)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 4096 2048
+			ubi_eeprom_extract "caldata" 4096 2048
 		else
-			ath9k_eeprom_extract "odm-caldata" 4096 2048
+			mtd_eeprom_extract "odm-caldata" 4096 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +1)
 		;;
 	r6100 | \
 	wndr3700v4 | \
 	wndr4300)
-		ath9k_eeprom_extract "caldata" 4096 2048
+		mtd_eeprom_extract "caldata" 4096 2048
 		ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0)
 		;;
 	rambutan)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		;;
 	wlr8100)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		ath9k_patch_firmware_mac $(mtd_get_mac_ascii u-boot-env "ethaddr")
 		;;
 	z1)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 4096 2048
+			ubi_eeprom_extract "caldata" 4096 2048
 		else
-			ath9k_eeprom_extract "origcaldata" 4096 2048
+			mtd_eeprom_extract "origcaldata" 4096 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -121,39 +68,39 @@ case "$FIRMWARE" in
 "pci_wmac0.eeprom")
 	case $board in
 	c-55)
-		ath9k_eeprom_extract "art" 20480 2048
+		mtd_eeprom_extract "art" 20480 2048
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +2)
 		;;
 	fritz300e)
-		ath9k_eeprom_extract_reverse "urloader" 5441 1088
+		mtd_eeprom_extract_reverse "urloader" 5441 1088
 		;;
 	mr18)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 20480 2048
+			ubi_eeprom_extract "caldata" 20480 2048
 		else
-			ath9k_eeprom_extract "odm-caldata" 20480 2048
+			mtd_eeprom_extract "odm-caldata" 20480 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
 		;;
 	wndr3700v4 | \
 	wndr4300)
-		ath9k_eeprom_extract "caldata" 20480 2048
+		mtd_eeprom_extract "caldata" 20480 2048
 		ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 12)
 		;;
 	z1)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 86016 4096
+			ubi_eeprom_extract "caldata" 86016 4096
 		else
-			ath9k_eeprom_extract "origcaldata" 86016 4096
+			mtd_eeprom_extract "origcaldata" 86016 4096
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -164,14 +111,14 @@ case "$FIRMWARE" in
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 36864 2048
+			ubi_eeprom_extract "caldata" 36864 2048
 		else
-			ath9k_eeprom_extract "odm-caldata" 36864 2048
+			mtd_eeprom_extract "odm-caldata" 36864 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 8b217d1..8979075 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -2,45 +2,7 @@
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-ath9k_eeprom_die() {
-	echo "ath9k eeprom: " "$*"
-	exit 1
-}
-
-ath9k_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath9k_eeprom_die "no mtd device found for partition $part"
-
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		ath9k_eeprom_die "failed to extract from $mtd"
-}
-
-ath9k_eeprom_extract_reverse() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-	local reversed
-	local caldata
-
-	mtd=$(find_mtd_chardev "$part")
-	reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
-
-	for byte in $reversed; do
-		caldata="\x${byte}${caldata}"
-	done
-
-	printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
-}
+. /lib/functions/eeprom.sh
 
 xor() {
 	local val
@@ -98,50 +60,50 @@ case "$FIRMWARE" in
 "ath9k-eeprom-ahb-18100000.wmac.bin")
 	case $board in
 	avm,fritz4020)
-		ath9k_eeprom_extract_reverse "urlader" 5441 1088
+		mtd_eeprom_extract_reverse "urlader" 5441 1088
 		;;
 	dlink,dir-825-c1|\
 	dlink,dir-835-a1)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac_crc $(mtd_get_mac_text "mac" 4) 2
 		;;
 	dlink,dir-859-a1)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac $(mtd_get_mac_ascii devdata "wlan24mac") 2
 		;;
 	iodata,wn-ac1167dgr|\
 	iodata,wn-ac1600dgr|\
 	iodata,wn-ac1600dgr2|\
 	iodata,wn-ag300dgr)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac $(mtd_get_mac_ascii u-boot-env ethaddr) 2
 		;;
 	nec,wg800hp)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac $(mtd_get_mac_text board_data 1664) 2
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
 "ath9k-eeprom-pci-0000:00:00.0.bin")
 	case $board in
 	avm,fritz300e)
-		ath9k_eeprom_extract_reverse "urloader" 5441 1088
+		mtd_eeprom_extract_reverse "urloader" 5441 1088
 		;;
 	buffalo,whr-g301n|\
 	buffalo,wzr-hp-g302h-a1a0|\
 	tplink,tl-wr841-v5|\
 	tplink,tl-wr941-v4)
-		ath9k_eeprom_extract "art" 4096 3768
+		mtd_eeprom_extract "art" 4096 3768
 		;;
 	buffalo,wzr-hp-g450h)
-		ath9k_eeprom_extract "ART" 4096 1088
+		mtd_eeprom_extract "ART" 4096 1088
 		;;
 	dlink,dir-825-c1|\
 	dlink,dir-835-a1)
-		ath9k_eeprom_extract "art" 20480 1088
+		mtd_eeprom_extract "art" 20480 1088
 		ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "mac" 24) 1) 2
 		;;
 	ocedo,raccoon|\
@@ -149,7 +111,7 @@ case "$FIRMWARE" in
 	tplink,tl-wdr4300|\
 	tplink,tl-wdr4900-v2|\
 	winchannel,wb2000)
-		ath9k_eeprom_extract "art" 20480 1088
+		mtd_eeprom_extract "art" 20480 1088
 		;;
 	netgear,wnr612-v2|\
 	on,n150r|\
@@ -167,20 +129,20 @@ case "$FIRMWARE" in
 	ubnt,bullet-m|\
 	ubnt,nano-m|\
 	ubnt,rocket-m)
-		ath9k_eeprom_extract "art" 4096 4096
+		mtd_eeprom_extract "art" 4096 4096
 		;;
 	pqi,air-pen)
-		ath9k_eeprom_extract "art" 4096 2002
+		mtd_eeprom_extract "art" 4096 2002
 		;;
 	ubnt,unifi)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		;;
 	wd,mynet-wifi-rangeextender)
-		ath9k_eeprom_extract "art" 4096 4096
+		mtd_eeprom_extract "art" 4096 4096
 		ath9k_patch_fw_mac_crc $(nvram get wl0_hwaddr) "$mac" 2
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -190,14 +152,14 @@ case "$FIRMWARE" in
 	netgear,wndr3700|\
 	netgear,wndr3700v2|\
 	netgear,wndr3800)
-		ath9k_eeprom_extract "art" 4096 3768
+		mtd_eeprom_extract "art" 4096 3768
 		;;
 	dlink,dir-825-b1)
-		ath9k_eeprom_extract "caldata" 4096 3768
+		mtd_eeprom_extract "caldata" 4096 3768
 		ath9k_patch_fw_mac_crc $(mtd_get_mac_text "caldata" 65440) 524
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -207,14 +169,14 @@ case "$FIRMWARE" in
 	netgear,wndr3700|\
 	netgear,wndr3700v2|\
 	netgear,wndr3800)
-		ath9k_eeprom_extract "art" 20480 3768
+		mtd_eeprom_extract "art" 20480 3768
 		;;
 	dlink,dir-825-b1)
-		ath9k_eeprom_extract "caldata" 20480 3768
+		mtd_eeprom_extract "caldata" 20480 3768
 		ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "caldata" 65460) 1) 524
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index 13a4687..60b0e68 100644
--- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -1,24 +1,5 @@
 #!/bin/sh
 
-rt2x00_eeprom_die() {
-	echo "rt2x00 eeprom: " "$*"
-	exit 1
-}
-
-rt2x00_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_part $part)
-	[ -n "$mtd" ] || \
-		rt2x00_eeprom_die "no mtd device found for partition $part"
-
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		rt2x00_eeprom_die "failed to extract from $mtd"
-}
-
 jboot_eeprom_extract() {
 	local part=$1
 	local offset=$2
@@ -26,21 +7,21 @@ jboot_eeprom_extract() {
 
 	mtd=$(find_mtd_part $part)
 	[ -n "$mtd" ] || \
-		rt2x00_eeprom_die "no mtd device found for partition $part"
+		eeprom_die "no mtd device found for partition $part"
 
 	jboot_config_read -i $mtd -o $offset -e /lib/firmware/$FIRMWARE  2>/dev/null || \
-		rt2x00_eeprom_die "failed to extract from $mtd"
+		eeprom_die "failed to extract from $mtd"
 }
 
 rt2x00_eeprom_set_macaddr() {
 	local macaddr=$1
 
 	[ -n "$macaddr" ] || \
-		rt2x00_eeprom_die "invalid wlan mac address"
+		eeprom_die "invalid wlan mac address"
 
 	macaddr_2bin $macaddr | dd of=/lib/firmware/$FIRMWARE \
 				conv=notrunc bs=1 seek=4 count=6 2>/dev/null || \
-		rt2x00_eeprom_die "failed to write mac address to eeprom file"
+		eeprom_die "failed to write mac address to eeprom file"
 }
 
 FW="/lib/firmware/$FIRMWARE"
@@ -48,6 +29,7 @@ FW="/lib/firmware/$FIRMWARE"
 
 . /lib/functions.sh
 . /lib/functions/system.sh
+. /lib/functions/eeprom.sh
 
 board=$(board_name)
 
@@ -67,11 +49,11 @@ case "$FIRMWARE" in
 		;;
 	tiny-ac)
 		wifi_mac=$(mtd_get_mac_ascii u-boot-env INIC_MAC_ADDR)
-		rt2x00_eeprom_extract "factory" 0 512
+		mtd_eeprom_extract "factory" 0 512
 		rt2x00_eeprom_set_macaddr $wifi_mac
 		;;
 	*)
-		rt2x00_eeprom_die "Please define mtd-eeprom in $board DTS file!"
+		eeprom_die "Please define mtd-eeprom in $board DTS file!"
 		;;
 	esac
 	;;

-- ynezz

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hanipouspilot at gmail.com  Fri Feb 22 09:32:03 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Fri, 22 Feb 2019 17:32:03 +0300
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <20190222135736.GD38601@meh.true.cz>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222125257.GC38601@meh.true.cz>
 <CANoib0Fo9m3CF0UDEf=n-2qo1TkugbcyWay-FSsOwbV6gga_Tw@mail.gmail.com>
 <20190222135736.GD38601@meh.true.cz>
Message-ID: <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>

??, 22 ????. 2019 ?. ? 16:57, Petr ?tetiar <ynezz at true.cz>:
>
> Dmitry Tunin <hanipouspilot at gmail.com> [2019-02-22 16:13:52]:
>
> > What do you mean by "generalize"? Fix it on all platforms, or having
> > common 10-ath9k-eeprom, 11-ath10k-caldata, etc files., or common code
> > that will be used on all platforms in some other file?
> > The first approach is obviously simple enough, but the second is not
> > that easy, but doable.
>
> Simply moving common bits to some generic file which could be shared by all
> platforms. Something like this for ar71xx, ath79 and ramips, untested.
>
> ---
>  package/base-files/files/lib/functions/eeprom.sh   | 54 ++++++++++++
>  .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 97 +++++-----------------
>  .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 84 +++++--------------
>  .../etc/hotplug.d/firmware/10-rt2x00-eeprom        | 32 ++-----
>  4 files changed, 106 insertions(+), 161 deletions(-)
>  create mode 100644 package/base-files/files/lib/functions/eeprom.sh
>
> diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh
> new file mode 100644
> index 0000000..3b585da
> --- /dev/null
> +++ b/package/base-files/files/lib/functions/eeprom.sh
> @@ -0,0 +1,54 @@
> +. /lib/functions.sh
> +. /lib/functions/system.sh
> +
> +eeprom_die() {
> +       echo "eeprom: " "$*"
> +       exit 1
> +}
> +
> +mtd_eeprom_extract() {
> +       local part=$1
> +       local offset=$2
> +       local count=$3
> +       local mtd
> +
> +       mtd=$(find_mtd_chardev $part)
> +       [ -n "$mtd" ] || \
> +               eeprom_die "no mtd device found for partition $part"
> +
> +       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> +               eeprom_die "failed to extract from $mtd"
> +}
> +
> +mtd_eeprom_extract_reverse() {
> +       local part=$1
> +       local offset=$2
> +       local count=$3
> +       local mtd
> +       local reversed
> +       local caldata
> +
> +       mtd=$(find_mtd_chardev "$part")
> +       reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
> +
> +       for byte in $reversed; do
> +               caldata="\x${byte}${caldata}"
> +       done
> +
> +       printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
> +}
> +
> +ubi_eeprom_extract() {
> +       local part=$1
> +       local offset=$2
> +       local count=$3
> +       local ubidev=$(nand_find_ubi $CI_UBIPART)
> +       local ubi
> +
> +       ubi=$(nand_find_volume $ubidev $part)
> +       [ -n "$ubi" ] || \
> +               eeprom_die "no UBI volume found for $part"
> +
> +       dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> +               eeprom_die "failed to extract from $ubi"
> +}
> diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> index 94bce7d..21808fb 100644
> --- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> +++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> @@ -2,60 +2,7 @@
>
>  [ -e /lib/firmware/$FIRMWARE ] && exit 0
>
> -. /lib/functions.sh
> -. /lib/functions/system.sh
> -
> -ath9k_eeprom_die() {
> -       echo "ath9k eeprom: " "$*"
> -       exit 1
> -}
> -
> -ath9k_eeprom_extract() {
> -       local part=$1
> -       local offset=$2
> -       local count=$3
> -       local mtd
> -
> -       mtd=$(find_mtd_chardev $part)
> -       [ -n "$mtd" ] || \
> -               ath9k_eeprom_die "no mtd device found for partition $part"
> -
> -       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> -               ath9k_eeprom_die "failed to extract from $mtd"
> -}
> -
> -ath9k_ubi_eeprom_extract() {
> -       local part=$1
> -       local offset=$2
> -       local count=$3
> -       local ubidev=$(nand_find_ubi $CI_UBIPART)
> -       local ubi
> -
> -       ubi=$(nand_find_volume $ubidev $part)
> -       [ -n "$ubi" ] || \
> -               ath9k_eeprom_die "no UBI volume found for $part"
> -
> -       dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> -               ath9k_eeprom_die "failed to extract from $ubi"
> -}
> -
> -ath9k_eeprom_extract_reverse() {
> -       local part=$1
> -       local offset=$2
> -       local count=$3
> -       local mtd
> -       local reversed
> -       local caldata
> -
> -       mtd=$(find_mtd_chardev "$part")
> -       reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
> -
> -       for byte in $reversed; do
> -               caldata="\x${byte}${caldata}"
> -       done
> -
> -       printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
> -}
> +. /lib/functions/eeprom.sh
>
>  ath9k_patch_firmware_mac() {
>         local mac=$1
> @@ -72,48 +19,48 @@ case "$FIRMWARE" in
>         case $board in
>         c-55|\
>         c-60)
> -               ath9k_eeprom_extract "art" 4096 2048
> +               mtd_eeprom_extract "art" 4096 2048
>                 ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +1)
>                 ;;
>         fritz4020|\
>         fritz450e)
> -               ath9k_eeprom_extract_reverse "urlader" 5441 1088
> +               mtd_eeprom_extract_reverse "urlader" 5441 1088
>                 ;;
>         mr18)
>                 . /lib/upgrade/nand.sh
>
>                 if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
> -                       ath9k_ubi_eeprom_extract "caldata" 4096 2048
> +                       ubi_eeprom_extract "caldata" 4096 2048
>                 else
> -                       ath9k_eeprom_extract "odm-caldata" 4096 2048
> +                       mtd_eeprom_extract "odm-caldata" 4096 2048
>                 fi
>                 ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +1)
>                 ;;
>         r6100 | \
>         wndr3700v4 | \
>         wndr4300)
> -               ath9k_eeprom_extract "caldata" 4096 2048
> +               mtd_eeprom_extract "caldata" 4096 2048
>                 ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0)
>                 ;;
>         rambutan)
> -               ath9k_eeprom_extract "art" 4096 2048
> +               mtd_eeprom_extract "art" 4096 2048
>                 ;;
>         wlr8100)
> -               ath9k_eeprom_extract "art" 4096 2048
> +               mtd_eeprom_extract "art" 4096 2048
>                 ath9k_patch_firmware_mac $(mtd_get_mac_ascii u-boot-env "ethaddr")
>                 ;;
>         z1)
>                 . /lib/upgrade/nand.sh
>
>                 if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
> -                       ath9k_ubi_eeprom_extract "caldata" 4096 2048
> +                       ubi_eeprom_extract "caldata" 4096 2048
>                 else
> -                       ath9k_eeprom_extract "origcaldata" 4096 2048
> +                       mtd_eeprom_extract "origcaldata" 4096 2048
>                 fi
>                 ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
>                 ;;
>         *)
> -               ath9k_eeprom_die "board $board is not supported yet"
> +               eeprom_die "board $board is not supported yet"
>                 ;;
>         esac
>         ;;
> @@ -121,39 +68,39 @@ case "$FIRMWARE" in
>  "pci_wmac0.eeprom")
>         case $board in
>         c-55)
> -               ath9k_eeprom_extract "art" 20480 2048
> +               mtd_eeprom_extract "art" 20480 2048
>                 ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +2)
>                 ;;
>         fritz300e)
> -               ath9k_eeprom_extract_reverse "urloader" 5441 1088
> +               mtd_eeprom_extract_reverse "urloader" 5441 1088
>                 ;;
>         mr18)
>                 . /lib/upgrade/nand.sh
>
>                 if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
> -                       ath9k_ubi_eeprom_extract "caldata" 20480 2048
> +                       ubi_eeprom_extract "caldata" 20480 2048
>                 else
> -                       ath9k_eeprom_extract "odm-caldata" 20480 2048
> +                       mtd_eeprom_extract "odm-caldata" 20480 2048
>                 fi
>                 ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
>                 ;;
>         wndr3700v4 | \
>         wndr4300)
> -               ath9k_eeprom_extract "caldata" 20480 2048
> +               mtd_eeprom_extract "caldata" 20480 2048
>                 ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 12)
>                 ;;
>         z1)
>                 . /lib/upgrade/nand.sh
>
>                 if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
> -                       ath9k_ubi_eeprom_extract "caldata" 86016 4096
> +                       ubi_eeprom_extract "caldata" 86016 4096
>                 else
> -                       ath9k_eeprom_extract "origcaldata" 86016 4096
> +                       mtd_eeprom_extract "origcaldata" 86016 4096
>                 fi
>                 ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
>                 ;;
>         *)
> -               ath9k_eeprom_die "board $board is not supported yet"
> +               eeprom_die "board $board is not supported yet"
>                 ;;
>         esac
>         ;;
> @@ -164,14 +111,14 @@ case "$FIRMWARE" in
>                 . /lib/upgrade/nand.sh
>
>                 if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
> -                       ath9k_ubi_eeprom_extract "caldata" 36864 2048
> +                       ubi_eeprom_extract "caldata" 36864 2048
>                 else
> -                       ath9k_eeprom_extract "odm-caldata" 36864 2048
> +                       mtd_eeprom_extract "odm-caldata" 36864 2048
>                 fi
>                 ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
>                 ;;
>         *)
> -               ath9k_eeprom_die "board $board is not supported yet"
> +               eeprom_die "board $board is not supported yet"
>                 ;;
>         esac
>         ;;
> diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> index 8b217d1..8979075 100644
> --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> @@ -2,45 +2,7 @@
>
>  [ -e /lib/firmware/$FIRMWARE ] && exit 0
>
> -. /lib/functions.sh
> -. /lib/functions/system.sh
> -
> -ath9k_eeprom_die() {
> -       echo "ath9k eeprom: " "$*"
> -       exit 1
> -}
> -
> -ath9k_eeprom_extract() {
> -       local part=$1
> -       local offset=$2
> -       local count=$3
> -       local mtd
> -
> -       mtd=$(find_mtd_chardev $part)
> -       [ -n "$mtd" ] || \
> -               ath9k_eeprom_die "no mtd device found for partition $part"
> -
> -       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> -               ath9k_eeprom_die "failed to extract from $mtd"
> -}
> -
> -ath9k_eeprom_extract_reverse() {
> -       local part=$1
> -       local offset=$2
> -       local count=$3
> -       local mtd
> -       local reversed
> -       local caldata
> -
> -       mtd=$(find_mtd_chardev "$part")
> -       reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
> -
> -       for byte in $reversed; do
> -               caldata="\x${byte}${caldata}"
> -       done
> -
> -       printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
> -}
> +. /lib/functions/eeprom.sh
>
>  xor() {
>         local val
> @@ -98,50 +60,50 @@ case "$FIRMWARE" in
>  "ath9k-eeprom-ahb-18100000.wmac.bin")
>         case $board in
>         avm,fritz4020)
> -               ath9k_eeprom_extract_reverse "urlader" 5441 1088
> +               mtd_eeprom_extract_reverse "urlader" 5441 1088
>                 ;;
>         dlink,dir-825-c1|\
>         dlink,dir-835-a1)
> -               ath9k_eeprom_extract "art" 4096 1088
> +               mtd_eeprom_extract "art" 4096 1088
>                 ath9k_patch_fw_mac_crc $(mtd_get_mac_text "mac" 4) 2
>                 ;;
>         dlink,dir-859-a1)
> -               ath9k_eeprom_extract "art" 4096 1088
> +               mtd_eeprom_extract "art" 4096 1088
>                 ath9k_patch_fw_mac $(mtd_get_mac_ascii devdata "wlan24mac") 2
>                 ;;
>         iodata,wn-ac1167dgr|\
>         iodata,wn-ac1600dgr|\
>         iodata,wn-ac1600dgr2|\
>         iodata,wn-ag300dgr)
> -               ath9k_eeprom_extract "art" 4096 1088
> +               mtd_eeprom_extract "art" 4096 1088
>                 ath9k_patch_fw_mac $(mtd_get_mac_ascii u-boot-env ethaddr) 2
>                 ;;
>         nec,wg800hp)
> -               ath9k_eeprom_extract "art" 4096 1088
> +               mtd_eeprom_extract "art" 4096 1088
>                 ath9k_patch_fw_mac $(mtd_get_mac_text board_data 1664) 2
>                 ;;
>         *)
> -               ath9k_eeprom_die "board $board is not supported yet"
> +               eeprom_die "board $board is not supported yet"
>                 ;;
>         esac
>         ;;
>  "ath9k-eeprom-pci-0000:00:00.0.bin")
>         case $board in
>         avm,fritz300e)
> -               ath9k_eeprom_extract_reverse "urloader" 5441 1088
> +               mtd_eeprom_extract_reverse "urloader" 5441 1088
>                 ;;
>         buffalo,whr-g301n|\
>         buffalo,wzr-hp-g302h-a1a0|\
>         tplink,tl-wr841-v5|\
>         tplink,tl-wr941-v4)
> -               ath9k_eeprom_extract "art" 4096 3768
> +               mtd_eeprom_extract "art" 4096 3768
>                 ;;
>         buffalo,wzr-hp-g450h)
> -               ath9k_eeprom_extract "ART" 4096 1088
> +               mtd_eeprom_extract "ART" 4096 1088
>                 ;;
>         dlink,dir-825-c1|\
>         dlink,dir-835-a1)
> -               ath9k_eeprom_extract "art" 20480 1088
> +               mtd_eeprom_extract "art" 20480 1088
>                 ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "mac" 24) 1) 2
>                 ;;
>         ocedo,raccoon|\
> @@ -149,7 +111,7 @@ case "$FIRMWARE" in
>         tplink,tl-wdr4300|\
>         tplink,tl-wdr4900-v2|\
>         winchannel,wb2000)
> -               ath9k_eeprom_extract "art" 20480 1088
> +               mtd_eeprom_extract "art" 20480 1088
>                 ;;
>         netgear,wnr612-v2|\
>         on,n150r|\
> @@ -167,20 +129,20 @@ case "$FIRMWARE" in
>         ubnt,bullet-m|\
>         ubnt,nano-m|\
>         ubnt,rocket-m)
> -               ath9k_eeprom_extract "art" 4096 4096
> +               mtd_eeprom_extract "art" 4096 4096
>                 ;;
>         pqi,air-pen)
> -               ath9k_eeprom_extract "art" 4096 2002
> +               mtd_eeprom_extract "art" 4096 2002
>                 ;;
>         ubnt,unifi)
> -               ath9k_eeprom_extract "art" 4096 2048
> +               mtd_eeprom_extract "art" 4096 2048
>                 ;;
>         wd,mynet-wifi-rangeextender)
> -               ath9k_eeprom_extract "art" 4096 4096
> +               mtd_eeprom_extract "art" 4096 4096
>                 ath9k_patch_fw_mac_crc $(nvram get wl0_hwaddr) "$mac" 2
>                 ;;
>         *)
> -               ath9k_eeprom_die "board $board is not supported yet"
> +               eeprom_die "board $board is not supported yet"
>                 ;;
>         esac
>         ;;
> @@ -190,14 +152,14 @@ case "$FIRMWARE" in
>         netgear,wndr3700|\
>         netgear,wndr3700v2|\
>         netgear,wndr3800)
> -               ath9k_eeprom_extract "art" 4096 3768
> +               mtd_eeprom_extract "art" 4096 3768
>                 ;;
>         dlink,dir-825-b1)
> -               ath9k_eeprom_extract "caldata" 4096 3768
> +               mtd_eeprom_extract "caldata" 4096 3768
>                 ath9k_patch_fw_mac_crc $(mtd_get_mac_text "caldata" 65440) 524
>                 ;;
>         *)
> -               ath9k_eeprom_die "board $board is not supported yet"
> +               eeprom_die "board $board is not supported yet"
>                 ;;
>         esac
>         ;;
> @@ -207,14 +169,14 @@ case "$FIRMWARE" in
>         netgear,wndr3700|\
>         netgear,wndr3700v2|\
>         netgear,wndr3800)
> -               ath9k_eeprom_extract "art" 20480 3768
> +               mtd_eeprom_extract "art" 20480 3768
>                 ;;
>         dlink,dir-825-b1)
> -               ath9k_eeprom_extract "caldata" 20480 3768
> +               mtd_eeprom_extract "caldata" 20480 3768
>                 ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "caldata" 65460) 1) 524
>                 ;;
>         *)
> -               ath9k_eeprom_die "board $board is not supported yet"
> +               eeprom_die "board $board is not supported yet"
>                 ;;
>         esac
>         ;;
> diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
> index 13a4687..60b0e68 100644
> --- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
> +++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
> @@ -1,24 +1,5 @@
>  #!/bin/sh
>
> -rt2x00_eeprom_die() {
> -       echo "rt2x00 eeprom: " "$*"
> -       exit 1
> -}
> -
> -rt2x00_eeprom_extract() {
> -       local part=$1
> -       local offset=$2
> -       local count=$3
> -       local mtd
> -
> -       mtd=$(find_mtd_part $part)
> -       [ -n "$mtd" ] || \
> -               rt2x00_eeprom_die "no mtd device found for partition $part"
> -
> -       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> -               rt2x00_eeprom_die "failed to extract from $mtd"
> -}
> -
>  jboot_eeprom_extract() {
>         local part=$1
>         local offset=$2
> @@ -26,21 +7,21 @@ jboot_eeprom_extract() {
>
>         mtd=$(find_mtd_part $part)
>         [ -n "$mtd" ] || \
> -               rt2x00_eeprom_die "no mtd device found for partition $part"
> +               eeprom_die "no mtd device found for partition $part"
>
>         jboot_config_read -i $mtd -o $offset -e /lib/firmware/$FIRMWARE  2>/dev/null || \
> -               rt2x00_eeprom_die "failed to extract from $mtd"
> +               eeprom_die "failed to extract from $mtd"
>  }
>
>  rt2x00_eeprom_set_macaddr() {
>         local macaddr=$1
>
>         [ -n "$macaddr" ] || \
> -               rt2x00_eeprom_die "invalid wlan mac address"
> +               eeprom_die "invalid wlan mac address"
>
>         macaddr_2bin $macaddr | dd of=/lib/firmware/$FIRMWARE \
>                                 conv=notrunc bs=1 seek=4 count=6 2>/dev/null || \
> -               rt2x00_eeprom_die "failed to write mac address to eeprom file"
> +               eeprom_die "failed to write mac address to eeprom file"
>  }
>
>  FW="/lib/firmware/$FIRMWARE"
> @@ -48,6 +29,7 @@ FW="/lib/firmware/$FIRMWARE"
>
>  . /lib/functions.sh
>  . /lib/functions/system.sh
> +. /lib/functions/eeprom.sh
>
>  board=$(board_name)
>
> @@ -67,11 +49,11 @@ case "$FIRMWARE" in
>                 ;;
>         tiny-ac)
>                 wifi_mac=$(mtd_get_mac_ascii u-boot-env INIC_MAC_ADDR)
> -               rt2x00_eeprom_extract "factory" 0 512
> +               mtd_eeprom_extract "factory" 0 512
>                 rt2x00_eeprom_set_macaddr $wifi_mac
>                 ;;
>         *)
> -               rt2x00_eeprom_die "Please define mtd-eeprom in $board DTS file!"
> +               eeprom_die "Please define mtd-eeprom in $board DTS file!"
>                 ;;
>         esac
>         ;;
>
> -- ynezz

The only problem here is that not all platforms need it.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Fri Feb 22 12:24:31 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Fri, 22 Feb 2019 09:24:31 -0800
Subject: [OpenWrt-Devel] ARM: Overriding Specific bootargs
Message-ID: <e40ad579-2f25-6519-4bd4-509776e01f51@wagsky.com>

I could use some guidance to either a solution or an approach to
wresting the OEM bootloader args into an "OpenWrt-compatible" form.

(ARM; ipq40xx, in particular)

TL;DR

 ??? What's the "best" way to override `root=ubi0:ubifs` from the
 ??? bootloader to `root=/dev/ubiblock0_0` or otherwise make the
 ??? OpenWrt kernel boot without changing the U-Boot environment?

 ??? and/or

 ??? How can I configure an OpenWrt build to have the kernel be able to
 ??? boot with `root=ubi0:ubifs` (and not break everything that might
 ??? expect the UBI volume be named `rootfs`)?


While I could control the U-Boot environment from an installed OpenWrt
Instance, that doesn't seem like it could provide a "serial-less"
OEM-to-OpenWrt transition.

That the device (Linksys EA8300) is a dual-firmware device and could
be booting from either partition, at least as far as I can tell, makes
a hard-coded kernel command line an unsuitable approach.


What I'm looking for is how to get from the information provided by
the bootloader about which partition is "active" into the kernel's
command line so that it can mount the proper root.

 From the OEM U-Boot:

 ??? init=/sbin/init rootfstype=ubifs ubi.mtd=NN,2048 root=ubi0:ubifs
 ??? rootwait rw

where NN is 11 or 13, depending on selected firmware version.


What my current build is looking for:

 ??? ubi.mtd=NN root=/dev/ubiblock0_0



Apparently, for ARM architectures, "the bootloader is always
right" [1][2][3], adding additional challenges.

Using chosen/bootargs was confirmed to be "ignored" if the bootloader
provided bootargs.



Using chosen/bootargs-append didn't help as the result still tries to
boot from ubi0:ubifs

 ??? init=/sbin/init rootfstype=ubifs ubi.mtd=11,2048 root=ubi0:ubifs
 ??? rootwait rw root=/dev/ubiblock0_0 clk_ignore_unused



Testing from the boot loader with

 ??? ubi.mtd=NN root=ubi0:rootfs

didn't boot, as apparently the kernel isn't finding the UBI volume by
name, at least as I have it configured.



I've looked at a few of the ARM Kconfig options as a "quick hack", but
none seemed to be able to get the "right" bootargs to the kernel:

* ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND
* CMDLINE_EXTEND
* CONFIG_MANGLE_BOOTARGS

This kind of "heavy handed" approach has problems with impacting other
devices on the same target, or maintenance problems as there doesn't
seem to be a way to "patch" the kernel .config for a single device.



I found, looked at, and tried

target/linux/ipq806x/patches-4.14/0067-generic-Mangle-bootloader-s-kernel-arguments.patch

which provides

* ARM_ATAG_DTB_COMPAT_CMDLINE_FROM_BOOTLOADER

but it extracts a number from the `root=` argument from the bootloader
command line and doesn't *remove* the `root=` argument.

(The three variants of this patch are all similar in function.)



=====

I can see a couple ways forward with this that allow end users to
install/revert OpenWrt without cracking the case and installing a
serial connection:

* Modify the UBI bundle to change the name of the volume from "rootfs"
 ? to "ubifs" (and all kernel and downstream changes needed)

* Consider the task of adding arg /removal/ to something like
 ? "Mangle-bootloader-s-kernel-arguments.patch" (which would allow
 ? "replacement" from chosen/bootargs-append)


Suggestions of the path to explore first, or other approaches, are welcome


Jeff


=====

DTS using `append-rootblock` in `master`
from `fgrep -r append-rootblock target`:

armada-385-linksys-venom.dts?? append-rootblock = "root=/dev/mtdblock"
qcom-ipq8065-nbg6817.dts?????? append-rootblock = "root=/dev/mmcblk0p";
qcom-ipq8064-ea8500.dts??????? append-rootblock = "ubi.mtd="


<https://openwrt.org/toh/linksys/linksys_ea6350_v3>
is not directly applicable, as its U-Boot environment has the "right" root=

 ??? init=/sbin/init rootfstype=squashfs
 ??? ubi.mtd=11,2048 ubi.block=0,0 root=/dev/ubiblock0_0 rootwait ro


=====

[1] 
<https://stackoverflow.com/questions/48801998/passing-bootargs-via-chosen-node-in-device-tree-not-working-for-beaglebone-black>

[2] 
<https://lists.linaro.org/pipermail/linaro-dev/2011-February/002860.html>

[3] arch/arm/boot/compressed/atags_to_fdt.c


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hauke at hauke-m.de  Fri Feb 22 12:36:36 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Fri, 22 Feb 2019 18:36:36 +0100
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
Message-ID: <8fddcb7f-1710-6c41-f1af-1e6f699e4d11@hauke-m.de>

Hi,

We missed January to branching off the next release, but we plan to do
this in March now. ;-)

The next release is planned to be branched off between 7. and 17. March
and 19.03-rc3 should be released between 2 and 4 weeks later, the final
release will then probably happen sometime in April.

I think all release critical features we want to have in the next
release are merged, I am not aware of any release critical parts
missing, except probably many bug fixes.

This release will only use kernel 4.14, the following targets which were
included in the 18.06 release will not be included in the next release
if no one proposes a patch to bring them to kernel 4.14:
* ar7
* orion
* at91

In addition I would like to remove support for kernel 3.18 and move all
targets which still depend on kernel 3.18, to this github repository:
https://github.com/openwrt/targets and remove them from master before
the release.

Here is the list of targets not on kernel 4.14:
$ grep KERNEL_PATCHVER target/linux/ -r |grep 4.14 -v
target/linux/ar7/Makefile:KERNEL_PATCHVER:=4.9
target/linux/omap24xx/Makefile:KERNEL_PATCHVER:=4.1
target/linux/adm5120/Makefile:KERNEL_PATCHVER:=3.18
target/linux/orion/Makefile:KERNEL_PATCHVER:=4.9
target/linux/au1000/Makefile:KERNEL_PATCHVER:=3.18
target/linux/ixp4xx/Makefile:KERNEL_PATCHVER:=4.9
target/linux/xburst/Makefile:KERNEL_PATCHVER:=3.18
target/linux/ppc40x/Makefile:KERNEL_PATCHVER:=3.18
target/linux/adm8668/Makefile:KERNEL_PATCHVER:=3.18
target/linux/mcs814x/Makefile:KERNEL_PATCHVER:=3.18
target/linux/at91/Makefile:KERNEL_PATCHVER:=4.9
target/linux/ppc44x/Makefile:KERNEL_PATCHVER:=3.18

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at adrianschmutzler.de  Fri Feb 22 12:44:12 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 18:44:12 +0100
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <8fddcb7f-1710-6c41-f1af-1e6f699e4d11@hauke-m.de>
References: <8fddcb7f-1710-6c41-f1af-1e6f699e4d11@hauke-m.de>
Message-ID: <011101d4cad6$3950b670$abf22350$@adrianschmutzler.de>

Hi,

thanks for driving this forward.

What will be the status of the ath79 target in the release? Will it 1) be held back until the next release or 2) allowed to coexist with ar71xx in the openwrt-19.xx branch as far as it has been developed so far?

Best

Adrian

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> Behalf Of Hauke Mehrtens
> Sent: Freitag, 22. Februar 2019 18:37
> To: LEDE Development List <openwrt-devel at lists.openwrt.org>
> Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
> 
> Hi,
> 
> We missed January to branching off the next release, but we plan to do
> this in March now. ;-)
> 
> The next release is planned to be branched off between 7. and 17. March
> and 19.03-rc3 should be released between 2 and 4 weeks later, the final
> release will then probably happen sometime in April.
> 
> I think all release critical features we want to have in the next
> release are merged, I am not aware of any release critical parts
> missing, except probably many bug fixes.
> 
> This release will only use kernel 4.14, the following targets which were
> included in the 18.06 release will not be included in the next release
> if no one proposes a patch to bring them to kernel 4.14:
> * ar7
> * orion
> * at91
> 
> In addition I would like to remove support for kernel 3.18 and move all
> targets which still depend on kernel 3.18, to this github repository:
> https://github.com/openwrt/targets and remove them from master before
> the release.
> 
> Here is the list of targets not on kernel 4.14:
> $ grep KERNEL_PATCHVER target/linux/ -r |grep 4.14 -v
> target/linux/ar7/Makefile:KERNEL_PATCHVER:=4.9
> target/linux/omap24xx/Makefile:KERNEL_PATCHVER:=4.1
> target/linux/adm5120/Makefile:KERNEL_PATCHVER:=3.18
> target/linux/orion/Makefile:KERNEL_PATCHVER:=4.9
> target/linux/au1000/Makefile:KERNEL_PATCHVER:=3.18
> target/linux/ixp4xx/Makefile:KERNEL_PATCHVER:=4.9
> target/linux/xburst/Makefile:KERNEL_PATCHVER:=3.18
> target/linux/ppc40x/Makefile:KERNEL_PATCHVER:=3.18
> target/linux/adm8668/Makefile:KERNEL_PATCHVER:=3.18
> target/linux/mcs814x/Makefile:KERNEL_PATCHVER:=3.18
> target/linux/at91/Makefile:KERNEL_PATCHVER:=4.9
> target/linux/ppc44x/Makefile:KERNEL_PATCHVER:=3.18
> 
> Hauke
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190222/e601eff6/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From freifunk at adrianschmutzler.de  Fri Feb 22 13:39:20 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:39:20 +0100
Subject: [OpenWrt-Devel] [PATCH 0/3] Speed up caldata/eeprom handling for
 ar71xx/ath79
Message-ID: <20190222183923.393-1-freifunk@adrianschmutzler.de>

Based on the ipq40xx commit from chunkeey, I tried to do the same for
ar71xx/ath79.

This does NOT cover ramips as suggested in an alternate patch.

Note that I am in favor of the unified code library proposed on the
devel list, but until this has been decided this patch will fix the
target-specific files.

Adrian Schmutzler (3):
  ath79: Speed up caldata/eeprom handling
  ar71xx: Speed up caldata/eeprom handling
  ar71xx: Speed up mtd extraction in ar71xx.sh

 .../linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom  | 6 +++---
 .../ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata      | 6 +++---
 target/linux/ar71xx/base-files/lib/ar71xx.sh                        | 4 ++--
 .../linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom   | 4 ++--
 .../linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 6 +++---
 5 files changed, 13 insertions(+), 13 deletions(-)

-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Fri Feb 22 13:39:21 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:39:21 +0100
Subject: [OpenWrt-Devel] [PATCH 1/3] ath79: Speed up caldata/eeprom handling
In-Reply-To: <20190222183923.393-1-freifunk@adrianschmutzler.de>
References: <20190222183923.393-1-freifunk@adrianschmutzler.de>
Message-ID: <20190222183923.393-2-freifunk@adrianschmutzler.de>

Reading and writing to and from flash storage is slow and currently,
especially since some scripts 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 in possibly one big block.

This is based on the initial commit a69e101 for ipq40xx by
Christian Lamparter <chunkeey at gmail.com>.

Speed comparison @ UBNT AC-Mesh (just manually) results in a time
reduction of 99.9 %.

4096+0 records in
4096+0 records out
real    0m 16.84s
user    0m 0.07s
sys     0m 13.54s

1+0 records in
1+0 records out
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom   | 4 ++--
 .../linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 8b217d12c0..4bb2c28bac 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
 	[ -n "$mtd" ] || \
 		ath9k_eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath9k_eeprom_die "failed to extract from $mtd"
 }
 
@@ -81,7 +81,7 @@ ath9k_patch_fw_mac() {
 			dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
 	}
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$mac_offset count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=$mac_offset count=1 oflag=seek_bytes
 }
 
 ath9k_patch_fw_mac_crc() {
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index f4741fa3eb..e0d28dfabe 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -28,7 +28,7 @@ ath10kcal_from_file() {
 	local offset=$2
 	local count=$3
 
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$source of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $source"
 }
 
@@ -42,7 +42,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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $mtd"
 }
 
@@ -51,7 +51,7 @@ ath10kcal_patch_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=6 count=1 oflag=seek_bytes
 }
 
 ath10kcal_patch_mac_crc() {
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Fri Feb 22 13:39:22 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:39:22 +0100
Subject: [OpenWrt-Devel] [PATCH 2/3] ar71xx: Speed up caldata/eeprom handling
In-Reply-To: <20190222183923.393-1-freifunk@adrianschmutzler.de>
References: <20190222183923.393-1-freifunk@adrianschmutzler.de>
Message-ID: <20190222183923.393-3-freifunk@adrianschmutzler.de>

Reading and writing to and from flash storage is slow and currently,
especially since some scripts 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 in possibly one big block.

This is based on the initial commit a69e101 for ipq40xx by
Christian Lamparter <chunkeey at gmail.com>.

Speed comparison @ TP-Link TL-WDR4300 (just manually) results in a time
reduction of 99.9 %.

4096+0 records in
4096+0 records out
real    0m 15.85s
user    0m 0.06s
sys     0m 13.28s

1+0 records in
1+0 records out
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom  | 6 +++---
 .../ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata      | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 94bce7d335..1e2267e223 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
 	[ -n "$mtd" ] || \
 		ath9k_eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath9k_eeprom_die "failed to extract from $mtd"
 }
 
@@ -35,7 +35,7 @@ ath9k_ubi_eeprom_extract() {
 	[ -n "$ubi" ] || \
 		ath9k_eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath9k_eeprom_die "failed to extract from $ubi"
 }
 
@@ -62,7 +62,7 @@ ath9k_patch_firmware_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=2 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=2 count=1 oflag=seek_bytes
 }
 
 board=$(board_name)
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 3450819630..8c3b54e542 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -10,7 +10,7 @@ ath10kcal_from_file() {
 	local offset=$2
 	local count=$3
 
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$source of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $source"
 }
 
@@ -30,7 +30,7 @@ ath10kcal_extract() {
 	[ "$count" = "$cal_size" ] || \
 		ath10kcal_die "no calibration data found in $part"
 
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $mtd"
 }
 
@@ -39,7 +39,7 @@ ath10kcal_patch_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=6 count=1 oflag=seek_bytes
 }
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Fri Feb 22 13:39:23 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:39:23 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ar71xx: Speed up mtd extraction in
 ar71xx.sh
In-Reply-To: <20190222183923.393-1-freifunk@adrianschmutzler.de>
References: <20190222183923.393-1-freifunk@adrianschmutzler.de>
Message-ID: <20190222183923.393-4-freifunk@adrianschmutzler.de>

Although the amount of data read here is smaller than for the
caldata, there still might be some speed gain compared to reading
bytewise.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 target/linux/ar71xx/base-files/lib/ar71xx.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 95fa247f4b..b312e80f7b 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -16,7 +16,7 @@ ar71xx_get_mtd_offset_size_format() {
 	dev=$(find_mtd_part $mtd)
 	[ -z "$dev" ] && return
 
-	dd if=$dev bs=1 skip=$offset count=$size 2>/dev/null | hexdump -v -e "1/1 \"$format\""
+	dd if=$dev bs=$size skip=$offset count=1 iflag=skip_bytes 2>/dev/null | hexdump -v -e "1/1 \"$format\""
 }
 
 ar71xx_get_mtd_part_magic() {
@@ -390,7 +390,7 @@ tplink_pharos_v2_get_model_string() {
 	part=$(find_mtd_part 'product-info')
 	[ -z "$part" ] && return 1
 
-	dd if=$part bs=1 skip=4360 count=64 2>/dev/null | tr -d '\r\0' | head -n 1
+	dd if=$part bs=64 skip=4360 count=1 iflag=skip_bytes 2>/dev/null | tr -d '\r\0' | head -n 1
 }
 
 ar71xx_board_detect() {
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Fri Feb 22 13:48:33 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:48:33 +0100
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling for
 ar71xx/ath79
Message-ID: <20190222184836.1047-1-freifunk@adrianschmutzler.de>

Based on the ipq40xx commit from chunkeey, I tried to do the same for
ar71xx/ath79.

This does NOT cover ramips as suggested in an alternate patch.

Note that I am in favor of the unified code library proposed on the
devel list, but until this has been decided this patch will fix the
target-specific files.

Version 2:
Just changed the commit messages, since obviously prefixing statements with
hash is not such a good idea ...
Sorry for the resend.

BTW: The 99.9 % speed improvement seems really unbelievable. Did I do it right?

Adrian Schmutzler (3):
  ath79: Speed up caldata/eeprom handling
  ar71xx: Speed up caldata/eeprom handling
  ar71xx: Speed up mtd extraction in ar71xx.sh

 .../linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom  | 6 +++---
 .../ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata      | 6 +++---
 target/linux/ar71xx/base-files/lib/ar71xx.sh                        | 4 ++--
 .../linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom   | 4 ++--
 .../linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 6 +++---
 5 files changed, 13 insertions(+), 13 deletions(-)

-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Fri Feb 22 13:48:34 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:48:34 +0100
Subject: [OpenWrt-Devel] [PATCH v2 1/3] ath79: Speed up caldata/eeprom
 handling
In-Reply-To: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
Message-ID: <20190222184836.1047-2-freifunk@adrianschmutzler.de>

Reading and writing to and from flash storage is slow and currently,
especially since some scripts 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 in possibly one big block.

This is based on the initial commit a69e101 for ipq40xx by
Christian Lamparter <chunkeey at gmail.com>.

Speed comparison @ UBNT AC-Mesh (just manually) results in a time
reduction of 99.9 %.

> time dd if=/dev/mtd6 of=/lib/firmware/test-slow bs=1 count=4096 skip=4096
4096+0 records in
4096+0 records out
real    0m 16.84s
user    0m 0.07s
sys     0m 13.54s

> time 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
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom   | 4 ++--
 .../linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 8b217d12c0..4bb2c28bac 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
 	[ -n "$mtd" ] || \
 		ath9k_eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath9k_eeprom_die "failed to extract from $mtd"
 }
 
@@ -81,7 +81,7 @@ ath9k_patch_fw_mac() {
 			dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
 	}
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$mac_offset count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=$mac_offset count=1 oflag=seek_bytes
 }
 
 ath9k_patch_fw_mac_crc() {
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index f4741fa3eb..e0d28dfabe 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -28,7 +28,7 @@ ath10kcal_from_file() {
 	local offset=$2
 	local count=$3
 
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$source of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $source"
 }
 
@@ -42,7 +42,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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $mtd"
 }
 
@@ -51,7 +51,7 @@ ath10kcal_patch_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=6 count=1 oflag=seek_bytes
 }
 
 ath10kcal_patch_mac_crc() {
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Fri Feb 22 13:48:35 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:48:35 +0100
Subject: [OpenWrt-Devel] [PATCH v2 2/3] ar71xx: Speed up caldata/eeprom
 handling
In-Reply-To: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
Message-ID: <20190222184836.1047-3-freifunk@adrianschmutzler.de>

Reading and writing to and from flash storage is slow and currently,
especially since some scripts 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 in possibly one big block.

This is based on the initial commit a69e101 for ipq40xx by
Christian Lamparter <chunkeey at gmail.com>.

Speed comparison @ TP-Link TL-WDR4300 (just manually) results in a time
reduction of 99.9 %.

> time dd if=/dev/mtd3 of=/lib/firmware/test-slow bs=1 count=4096 skip=4096
4096+0 records in
4096+0 records out
real    0m 15.85s
user    0m 0.06s
sys     0m 13.28s

> time dd if=/dev/mtd3 of=/lib/firmware/test-fast bs=4096 count=1 skip=4096 iflag=skip_bytes
1+0 records in
1+0 records out
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 .../linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom  | 6 +++---
 .../ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata      | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 94bce7d335..1e2267e223 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
 	[ -n "$mtd" ] || \
 		ath9k_eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath9k_eeprom_die "failed to extract from $mtd"
 }
 
@@ -35,7 +35,7 @@ ath9k_ubi_eeprom_extract() {
 	[ -n "$ubi" ] || \
 		ath9k_eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath9k_eeprom_die "failed to extract from $ubi"
 }
 
@@ -62,7 +62,7 @@ ath9k_patch_firmware_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=2 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=2 count=1 oflag=seek_bytes
 }
 
 board=$(board_name)
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 3450819630..8c3b54e542 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -10,7 +10,7 @@ ath10kcal_from_file() {
 	local offset=$2
 	local count=$3
 
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$source of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $source"
 }
 
@@ -30,7 +30,7 @@ ath10kcal_extract() {
 	[ "$count" = "$cal_size" ] || \
 		ath10kcal_die "no calibration data found in $part"
 
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $mtd"
 }
 
@@ -39,7 +39,7 @@ ath10kcal_patch_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=6 count=1 oflag=seek_bytes
 }
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Fri Feb 22 13:48:36 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Fri, 22 Feb 2019 19:48:36 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ar71xx: Speed up mtd extraction in
 ar71xx.sh
In-Reply-To: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
Message-ID: <20190222184836.1047-4-freifunk@adrianschmutzler.de>

Although the amount of data read here is smaller than for the
caldata, there still might be some speed gain compared to reading
bytewise.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 target/linux/ar71xx/base-files/lib/ar71xx.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 95fa247f4b..b312e80f7b 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -16,7 +16,7 @@ ar71xx_get_mtd_offset_size_format() {
 	dev=$(find_mtd_part $mtd)
 	[ -z "$dev" ] && return
 
-	dd if=$dev bs=1 skip=$offset count=$size 2>/dev/null | hexdump -v -e "1/1 \"$format\""
+	dd if=$dev bs=$size skip=$offset count=1 iflag=skip_bytes 2>/dev/null | hexdump -v -e "1/1 \"$format\""
 }
 
 ar71xx_get_mtd_part_magic() {
@@ -390,7 +390,7 @@ tplink_pharos_v2_get_model_string() {
 	part=$(find_mtd_part 'product-info')
 	[ -z "$part" ] && return 1
 
-	dd if=$part bs=1 skip=4360 count=64 2>/dev/null | tr -d '\r\0' | head -n 1
+	dd if=$part bs=64 skip=4360 count=1 iflag=skip_bytes 2>/dev/null | tr -d '\r\0' | head -n 1
 }
 
 ar71xx_board_detect() {
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hanipouspilot at gmail.com  Fri Feb 22 13:52:37 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Fri, 22 Feb 2019 21:52:37 +0300
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
Message-ID: <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>

??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler <freifunk at adrianschmutzler.de>:
>
> Based on the ipq40xx commit from chunkeey, I tried to do the same for
> ar71xx/ath79.
>
I want to add that without this patch firmware extraction is not fast
enough to get it in time after a flash. That's why wireless needs a
restart.
I don't think it's crucial to change it also for crc, etc, but it won't harm.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From champetier.etienne at gmail.com  Fri Feb 22 13:59:40 2019
From: champetier.etienne at gmail.com (Etienne Champetier)
Date: Fri, 22 Feb 2019 10:59:40 -0800
Subject: [OpenWrt-Devel] speed up ath10k-caldata extraction for
 non-ipq40xx
In-Reply-To: <CANoib0Hnqc9bob90sghzAtLqmc=HhHWbGGB25=UDuabAkMhpxg@mail.gmail.com>
References: <005c01d4c949$dbbcb500$93361f00$@adrianschmutzler.de>
 <2072149.MX9HEkfFXr@debian64>
 <CANoib0Hnqc9bob90sghzAtLqmc=HhHWbGGB25=UDuabAkMhpxg@mail.gmail.com>
Message-ID: <CAOdf3goHdosSW2yXe_Xt8JH-hruk+PztoTWvyUkTsAhBCz5UZw@mail.gmail.com>

Hi All,

Le ven. 22 f?vr. 2019 ? 03:33, Dmitry Tunin <hanipouspilot at gmail.com> a ?crit :
>
> This is useful for ath9k extraction as well.
>
> ??, 22 ????. 2019 ?. ? 13:09, Christian Lamparter <chunkeey at gmail.com>:
> >
> > 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 || \

If you don't have skip_bytes option, you can also do something like:
tail -c +$offset $mtd | head -c $count
(maybe i'm of by 1 bytes for the tail, to be tested)

Regards
Etienne

>
> > >
> > > [?]
> > >
> >
> > 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
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hauke at hauke-m.de  Fri Feb 22 16:18:08 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Fri, 22 Feb 2019 22:18:08 +0100
Subject: [OpenWrt-Devel] [PATCH] mac80211: update to version 4.19.23-1
In-Reply-To: <20190217182006.GA1109@makrotopia.org>
References: <20190215203847.18350-1-hauke@hauke-m.de>
 <20190217182006.GA1109@makrotopia.org>
Message-ID: <e77cb41c-0390-3b08-2ae3-c0430456d2cf@hauke-m.de>

On 2/17/19 7:47 PM, Daniel Golle wrote:
> Thank you! I've tested this today and works great (and was little work
> to re-base my clean-up of rt2x00 on top of it, so you got my thumbs up)

I plan to create a new backports release every 2 to 3 months mostly to
get the new RC kernel in and also update the stable versions.

I plan to update OpenWrt to the wireless system from Linux kernel 5.1
after the 19.03 release.

Hauke

> 
> On Fri, Feb 15, 2019 at 09:38:47PM +0100, Hauke Mehrtens wrote:
>> This updates mac80211 to backports version 4.19.23-1 which includes all
>> the stable fixes from kernel 4.19.23.
>> The removed patches are included in this version.
>>
>> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>> ---
>>  package/kernel/mac80211/Makefile              |   8 +-
>>  ...fix-tx99-with-monitor-mode-interface.patch |   2 +-
>>  ...upport-for-using-active-monitor-inte.patch |   2 +-
>>  ...-authentication-messages-for-late-ac.patch |  27 ----
>>  ...ve-debug-log-after-buffer-increments.patch |  14 +-
>>  ...ck-da-enabled-first-in-sampling-rout.patch |  33 -----
>>  ...k-dynack-make-ewma-estimation-faster.patch | 139 ------------------
>>  ...21-ath10k_init_devices_synchronously.patch |   2 +-
>>  ...rolling-support-for-various-chipsets.patch |   6 +-
>>  ...fix-decoding-channel-info-for-160-MH.patch |  41 ------
>>  ...-of-bounds-memory-access-during-fw-l.patch | 110 --------------
>>  ...frameburst-mode-in-default-firmware-.patch |   2 +-
>>  ...c-handle-compressed-tx-status-signal.patch |  36 ++---
>>  ...0001-brcmfmac-fix-roamoff-1-modparam.patch |  68 ---------
>>  .../patches/build/060-no_local_ssb_bcma.patch |   4 +-
>>  .../602-rt2x00-introduce-rt2x00eeprom.patch   |   2 +-
>>  ...-rt2x00-add-rf-self-txdc-calibration.patch |   2 +-
>>  .../rt2x00/983-rt2x00-add-r-calibration.patch |   2 +-
>>  .../984-rt2x00-add-rxdcoc-calibration.patch   |   2 +-
>>  .../985-rt2x00-add-rxiq-calibration.patch     |   2 +-
>>  .../986-rt2x00-add-TX-LOFT-calibration.patch  |   2 +-
>>  .../subsys/140-tweak-TSQ-setting.patch        |   2 +-
>>  .../subsys/150-disable_addr_notifier.patch    |   4 +-
>>  ...-skb-fraglist-before-freeing-the-skb.patch |  31 ----
>>  ...0211-add-hdrlen-to-ieee80211_tx_data.patch |   4 +-
>>  ...80211-add-NEED_ALIGNED4_SKBS-hw-flag.patch |  14 +-
>>  ...l-merge-with-minstrel_ht-always-enab.patch |   4 +-
>>  ...ory-accounting-with-A-MSDU-aggregati.patch |   6 +-
>>  ...tx-status-for-PS-stations-in-ieee802.patch |  26 ----
>>  ...rdering-of-buffered-broadcast-packet.patch |  28 ----
>>  ...ernel-panic-when-TXing-after-TXQ-tea.patch |  60 --------
>>  ...ry-leak-if-validate_pae_over_nl80211.patch |  29 ----
>>  ...l_ht-add-flag-to-indicate-missing-in.patch |   4 +-
>>  ...that-management-tx-skbs-have-encrypt.patch |  48 ------
>>  34 files changed, 64 insertions(+), 702 deletions(-)
>>  delete mode 100644 package/kernel/mac80211/patches/ath/553-ath9k-dynack-use-authentication-messages-for-late-ac.patch
>>  delete mode 100644 package/kernel/mac80211/patches/ath/555-ath9k-dynack-check-da-enabled-first-in-sampling-rout.patch
>>  delete mode 100644 package/kernel/mac80211/patches/ath/556-ath9k-dynack-make-ewma-estimation-faster.patch
>>  delete mode 100644 package/kernel/mac80211/patches/brcm/307-v4.20-0001-brcmutil-really-fix-decoding-channel-info-for-160-MH.patch
>>  delete mode 100644 package/kernel/mac80211/patches/brcm/327-v5.0-brcmfmac-Fix-out-of-bounds-memory-access-during-fw-l.patch
>>  delete mode 100644 package/kernel/mac80211/patches/brcm/331-v5.0-0001-brcmfmac-fix-roamoff-1-modparam.patch
>>  delete mode 100644 package/kernel/mac80211/patches/subsys/351-mac80211-free-skb-fraglist-before-freeing-the-skb.patch
>>  delete mode 100644 package/kernel/mac80211/patches/subsys/379-mac80211-ignore-tx-status-for-PS-stations-in-ieee802.patch
>>  delete mode 100644 package/kernel/mac80211/patches/subsys/380-mac80211-fix-reordering-of-buffered-broadcast-packet.patch
>>  delete mode 100644 package/kernel/mac80211/patches/subsys/381-mac80211-fix-a-kernel-panic-when-TXing-after-TXQ-tea.patch
>>  delete mode 100644 package/kernel/mac80211/patches/subsys/382-nl80211-fix-memory-leak-if-validate_pae_over_nl80211.patch
>>  delete mode 100644 package/kernel/mac80211/patches/subsys/384-mac80211-ensure-that-management-tx-skbs-have-encrypt.patch

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Fri Feb 22 18:25:07 2019
From: mail at david-bauer.net (David Bauer)
Date: Sat, 23 Feb 2019 00:25:07 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: fix support-list for TP-Link WDR3600
Message-ID: <20190222232507.1608-1-mail@david-bauer.net>

The TP-Link WDR3600 shares the same machine-code in the ar71xx target,
thus expecting "tl-wdr4300" not "tl-wdr3600" in the support-list
metadata to allow non-forced sysupgrades from ar71xx to ath79.

With this, it is possible to flash a WDR4300 image on the WDR3600. It
is no problem however, as the only difference is the 5GHz WiFi chip
which has 3SS instead of 2SS. Both work with either image.

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 target/linux/ath79/image/generic-tp-link.mk | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
index 2e8897396b..db11a6f4ba 100644
--- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -122,7 +122,7 @@ define Device/tplink_tl-wdr3600
   DEVICE_TITLE := TP-Link TL-WDR3600
   DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
   TPLINK_HWID := 0x36000001
-  SUPPORTED_DEVICES += tl-wdr3600
+  SUPPORTED_DEVICES += tl-wdr4300
 endef
 TARGET_DEVICES += tplink_tl-wdr3600
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Fri Feb 22 18:40:18 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Sat, 23 Feb 2019 00:40:18 +0100
Subject: [OpenWrt-Devel] [PATCH] build: Activate ASLR PIE by default
In-Reply-To: <a8a1fa14-6afb-032b-4e14-86b9d8229078@nbd.name>
References: <20190213221541.10882-1-hauke@hauke-m.de>
 <a8a1fa14-6afb-032b-4e14-86b9d8229078@nbd.name>
Message-ID: <c2fb2800-f6cd-bd0b-1ecd-d8c7eebd0b94@hauke-m.de>

On 2/13/19 11:51 PM, Felix Fietkau wrote:
> On 2019-02-13 23:15, Hauke Mehrtens wrote:
>> This will build all executable as Position Independent Executables (PIE)
>> by default. PIE executable can make full use of Address Space Layout
>> Randomization (ASLR) because all sections can be placed at random
>> offsets of the executed program. This makes it harder to exploit bugs
>> in our binaries.
>>
>> This will increase the size of executable, libraries are already build
>> position independent and their size will not change.
>>
>> This increases the size of the resulting images by about 3% on MIPS BE.
>> I tested this with the default configuration for the lantiq xrx200
>> target.
>>
>> The size of the initramfs binaries increased by 2.88%:
>> Without PIE:
>> 5.303.716 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
>> With PIE:
>> 5.456.339 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
>>
>> With PIE activated the executable are getting bigger, here are some
>> examples from the lantiq mips_24kc target:
>>
>> Without PIE:
>> 112.309 /bin/opkg
>> 299.061 /bin/busybox
>> 456.549 /usr/sbin/wpad
>>
>> With PIE:
>> 142.496 /bin/opkg       (26.87% increase)
>> 388.404 /bin/busybox    (29.87% increase)
>> 580.128 /usr/sbin/wpad  (27.06% increase)
>>
>> With PIE activated the sections of the binaries are loaded to
>> different offsets for each program instance like shown here:
>>
>> root at OpenWrt:/# cat /proc/self/maps
>> 555c4000-55622000 r-xp 00000000 00:02 1030       /bin/busybox
>> 55631000-55632000 r-xp 0005d000 00:02 1030       /bin/busybox
>> 55632000-55633000 rwxp 0005e000 00:02 1030       /bin/busybox
>> 55633000-55634000 rwxp 00000000 00:00 0
>> 77ee2000-77f04000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
>> 77f04000-77f05000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
>> 77f05000-77f06000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
>> 77f06000-77f9a000 r-xp 00000000 00:02 329        /lib/libc.so
>> 77fa9000-77fab000 rwxp 00093000 00:02 329        /lib/libc.so
>> 77fab000-77fad000 rwxp 00000000 00:00 0
>> 7fb26000-7fb47000 rw-p 00000000 00:00 0          [stack]
>> 7fefb000-7fefc000 r-xp 00000000 00:00 0
>> 7ff0a000-7ff0b000 r--p 00000000 00:00 0          [vvar]
>> 7ff0b000-7ff0c000 r-xp 00000000 00:00 0          [vdso]
>> root at OpenWrt:/# cat /proc/self/maps
>> 5561d000-5567b000 r-xp 00000000 00:02 1030       /bin/busybox
>> 5568a000-5568b000 r-xp 0005d000 00:02 1030       /bin/busybox
>> 5568b000-5568c000 rwxp 0005e000 00:02 1030       /bin/busybox
>> 5568c000-5568d000 rwxp 00000000 00:00 0
>> 77e8e000-77eb0000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
>> 77eb0000-77eb1000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
>> 77eb1000-77eb2000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
>> 77eb2000-77f46000 r-xp 00000000 00:02 329        /lib/libc.so
>> 77f55000-77f57000 rwxp 00093000 00:02 329        /lib/libc.so
>> 77f57000-77f59000 rwxp 00000000 00:00 0
>> 7fd1c000-7fd3d000 rw-p 00000000 00:00 0          [stack]
>> 7fefb000-7fefc000 r-xp 00000000 00:00 0
>> 7ff60000-7ff61000 r--p 00000000 00:00 0          [vvar]
>> 7ff61000-7ff62000 r-xp 00000000 00:00 0          [vdso]
>> root at OpenWrt:/#
>>
>> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>> ---
>>
>> I would like to get some comments if we should activate PIE by default.
>> The advantage is that it will be harder to exploit OpenWrt, but on the 
>> other hand the binaries are getting bigger. We could also restrict this 
>> to some CPU types, but as targets share the binaries it is not really 
>> possible to do this based on the target.
>>
>> I am not sure if this should go into the next release or wait for later.
>>
>> This could also break some packages, as it is possible to activate PIE 
>> by default for some time many bugs are already fixed, but probably not 
>> all of them.
> I think this is a lot of extra bloat. Maybe we can add a restricted PIE
> mode where packages can opt-in individually?

So we should probably make it a chose with 3 options:
1. No PIE
2. Use PIE for exposed binaries
3. Use PIE for all binaries

Then we need something in addition to the existing PKG_ASLR_PIE we
already have to deactivate it.

Do we want a generic name like this:
PKG_CRITICAL
or something specific to PIE:
PKG_ASLR_PIE_PREFERED

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Fri Feb 22 21:17:30 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Sat, 23 Feb 2019 02:17:30 +0000
Subject: [OpenWrt-Devel] [PATCH 18.06 1/2] dnsmasq: allow using dnsmasq as
 the sole resolver
Message-ID: <20190223021732.7210-1-yszhou4tech@gmail.com>

Currently it seems impossible to configure /etc/config/dhcp to achieve
the following use case

 - run dnsmasq with no-resolv
 - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"

Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
to achive the 2nd effect above, but setting resolvfile requires noresolv
being false.

A new boolean option "localuse" is added to indicate that we intend to
use dnsmasq as the local dns resolver.  It's false by default and to
align with old behaviour it will be true automatically if resolvfile is
set to /tmp/resolv.conf.auto

(cherry picked from 2aea1ada65f050d74a064e74466bbe4e8d)
Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 package/network/services/dnsmasq/Makefile     |  2 +-
 .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
 2 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index e89ad19f5c..c50717d091 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.80
-PKG_RELEASE:=1.2
+PKG_RELEASE:=1.3
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index 9c922eec6c..b119981cb8 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -731,7 +731,9 @@ dhcp_relay_add() {
 
 dnsmasq_start()
 {
-	local cfg="$1" disabled resolvfile user_dhcpscript
+	local cfg="$1"
+	local disabled user_dhcpscript
+	local resolvfile localuse
 
 	config_get_bool disabled "$cfg" disabled 0
 	[ "$disabled" -gt 0 ] && return 0
@@ -881,14 +883,14 @@ dnsmasq_start()
 	config_get_bool cachelocal "$cfg" cachelocal 1
 
 	config_get_bool noresolv "$cfg" noresolv 0
+	config_get_bool localuse "$cfg" localuse 0
 	if [ "$noresolv" != "1" ]; then
-		config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
-		# So jail doesn't complain if file missing
-		[ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
+		config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
+		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
+		xappend "--resolv-file=$resolvfile"
+		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
 	fi
 
-	[ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
-
 	config_get hostsfile "$cfg" dhcphostsfile
 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
 
@@ -1010,7 +1012,7 @@ dnsmasq_start()
 	mv -f $CONFIGFILE_TMP $CONFIGFILE
 	mv -f $HOSTFILE_TMP $HOSTFILE
 
-	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
+	[ "$localuse" -gt 0 ] && {
 		rm -f /tmp/resolv.conf
 		[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
 			echo "search $DOMAIN" >> /tmp/resolv.conf
@@ -1036,17 +1038,15 @@ dnsmasq_start()
 
 dnsmasq_stop()
 {
-	local cfg="$1" resolvfile
+	local cfg="$1"
+	local noresolv resolvfile localuse
 
+	config_get_bool noresolv "$cfg" noresolv 0
+	config_get_bool localuse "$cfg" localuse 0
 	config_get resolvfile "$cfg" "resolvfile"
 
-	#relink /tmp/resolve.conf only for main instance
-	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
-		[ -f /tmp/resolv.conf ] && {
-			rm -f /tmp/resolv.conf
-			ln -s "$resolvfile" /tmp/resolv.conf
-		}
-	}
+	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
+	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
 
 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
 }

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Fri Feb 22 21:17:31 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Sat, 23 Feb 2019 02:17:31 +0000
Subject: [OpenWrt-Devel] [PATCH 18.06 2/2] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <20190223021732.7210-1-yszhou4tech@gmail.com>
References: <20190223021732.7210-1-yszhou4tech@gmail.com>
Message-ID: <20190223021732.7210-2-yszhou4tech@gmail.com>

This makes it clear that localuse when explicitly specified in the
config will have its final say on whether or not the initscript should
touch /etc/resolv.conf, no matter whatever the result of previous
guesswork would be

(cherry picked from c17a68cc61a0f8a28e19c7f60b24beaf1a1a402d)
Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 package/network/services/dnsmasq/Makefile           | 2 +-
 package/network/services/dnsmasq/files/dnsmasq.init | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
index c50717d091..eff9cfea24 100644
--- a/package/network/services/dnsmasq/Makefile
+++ b/package/network/services/dnsmasq/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=dnsmasq
 PKG_VERSION:=2.80
-PKG_RELEASE:=1.3
+PKG_RELEASE:=1.4
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
index b119981cb8..33ef98ce56 100644
--- a/package/network/services/dnsmasq/files/dnsmasq.init
+++ b/package/network/services/dnsmasq/files/dnsmasq.init
@@ -733,7 +733,7 @@ dnsmasq_start()
 {
 	local cfg="$1"
 	local disabled user_dhcpscript
-	local resolvfile localuse
+	local resolvfile localuse=0
 
 	config_get_bool disabled "$cfg" disabled 0
 	[ "$disabled" -gt 0 ] && return 0
@@ -883,13 +883,13 @@ dnsmasq_start()
 	config_get_bool cachelocal "$cfg" cachelocal 1
 
 	config_get_bool noresolv "$cfg" noresolv 0
-	config_get_bool localuse "$cfg" localuse 0
 	if [ "$noresolv" != "1" ]; then
 		config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
 		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
 		xappend "--resolv-file=$resolvfile"
 		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
 	fi
+	config_get_bool localuse "$cfg" localuse "$localuse"
 
 	config_get hostsfile "$cfg" dhcphostsfile
 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
@@ -1039,13 +1039,13 @@ dnsmasq_start()
 dnsmasq_stop()
 {
 	local cfg="$1"
-	local noresolv resolvfile localuse
+	local noresolv resolvfile localuse=0
 
 	config_get_bool noresolv "$cfg" noresolv 0
-	config_get_bool localuse "$cfg" localuse 0
 	config_get resolvfile "$cfg" "resolvfile"
 
 	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
+	config_get_bool localuse "$cfg" localuse "$localuse"
 	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
 
 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Fri Feb 22 21:22:24 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Sat, 23 Feb 2019 10:22:24 +0800
Subject: [OpenWrt-Devel] [PATCH] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <8149E2CE-F289-4DD9-8427-B12A2359A5F5@oranjevos.nl>
References: <20190221035228.5145-1-yszhou4tech@gmail.com>
 <67BC4388-5B1F-464A-8339-88B73E8EE320@oranjevos.nl>
 <CAECwjAhNGr7_LBgzQdC+Bz4NM+CQP_kqnsKSSZRWEpAc8qtrqg@mail.gmail.com>
 <8149E2CE-F289-4DD9-8427-B12A2359A5F5@oranjevos.nl>
Message-ID: <CAECwjAgWyr=+NuXZEYmB5=-9Ti-sAxvfrWhvoQMhQ0r-GQg8Uw@mail.gmail.com>

On Fri, 22 Feb 2019 at 20:13, Paul Oranje <por at oranjevos.nl> wrote:
>
>
> > Op 22 feb. 2019, om 02:54 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> >
> > On Thu, 21 Feb 2019 at 22:14, Paul Oranje <por at oranjevos.nl> wrote:
> >>
> >>
> >>
> >>> Op 21 feb. 2019, om 04:52 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> >>>
> >>> This makes it clear that localuse when explicitly specified in the
> >>> config will have its final say on whether or not the initscript should
> >>> touch /etc/resolv.conf, no matter whatever the result of previous
> >>> guesswork would be
> >>>
> >>> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
> >
> > <snipped>
> >
> >>
> >> Tested this patch (8f16fba501) and the previous patch (ec2a2a2aea) on top of 18.06.2.
> >>
> >> The patches apply cleanly and the patched file works as expected:
> >>
> >> - localuse=1 and noresolv and resolvfile not set => dnsmasq writes resolv.conf
> >> - localuse and noresolv and resolvfile not set => dnsmasq writes resolv.conf
> >> - localuse=0 and noresolv and resolvfile not set => dnsmasq leaves resolv.conf untouched
> >> - localuse not set and noresolv=1 and resolvfile='/tmp/resolv.conf.auto' => dnsmasq leaves resolv.conf untouched.
> >>
> >> The latter two scenario's work well with Unbound (where dnsmasq handles DHCP and DNS of lan host names).
> >> Thanks.
> >>
> >> Tested-by: Paul Oranje <por at oranjevos.nl>
> >
> > Thanks ;)
> Can these patches also be applied against the openwrt-18.06 branch or must they be submitted separately for that end ?

I just did the cherry-pick and sent the result to the devel list.
Skimmed through past history of release branch, I think this acked-by
process is needed as these patches are with new options for feature
changes, not just fixes.

Regards,
                yousong

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Sat Feb 23 07:12:49 2019
From: mail at david-bauer.net (David Bauer)
Date: Sat, 23 Feb 2019 13:12:49 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: add ar71xx support-list entry for
 Fritz4020
Message-ID: <20190223121249.11715-1-mail@david-bauer.net>

This adds the support-list entry the AVM FRITZ!Box 4020 expects in the
ar71xx target to allow non-forced sysupgrades from ar71xx to ath79.

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 target/linux/ath79/image/generic.mk | 1 +
 1 file changed, 1 insertion(+)

diff --git a/target/linux/ath79/image/generic.mk b/target/linux/ath79/image/generic.mk
index 889321867a..d3978629fd 100644
--- a/target/linux/ath79/image/generic.mk
+++ b/target/linux/ath79/image/generic.mk
@@ -92,6 +92,7 @@ define Device/avm_fritz4020
       append-squashfs-fakeroot-be | pad-to 256 | \
       append-rootfs | pad-rootfs | append-metadata | check-size $$$$(IMAGE_SIZE)
   DEVICE_PACKAGES := fritz-tffs
+  SUPPORTED_DEVICES += fritz4020
 endef
 TARGET_DEVICES += avm_fritz4020
 
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dedeckeh at gmail.com  Sat Feb 23 07:24:10 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Sat, 23 Feb 2019 13:24:10 +0100
Subject: [OpenWrt-Devel] [PATCH 18.06 1/2] dnsmasq: allow using dnsmasq
 as the sole resolver
In-Reply-To: <20190223021732.7210-1-yszhou4tech@gmail.com>
References: <20190223021732.7210-1-yszhou4tech@gmail.com>
Message-ID: <CAJLcKsGMqDKwddLcHTAU9ZsZiYEXm7Ha-pC5FXN1b7NAOn1+hQ@mail.gmail.com>

On Sat, Feb 23, 2019 at 3:17 AM Yousong Zhou <yszhou4tech at gmail.com> wrote:
>
> Currently it seems impossible to configure /etc/config/dhcp to achieve
> the following use case
>
>  - run dnsmasq with no-resolv
>  - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"
>
> Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
> to achive the 2nd effect above, but setting resolvfile requires noresolv
> being false.
>
> A new boolean option "localuse" is added to indicate that we intend to
> use dnsmasq as the local dns resolver.  It's false by default and to
> align with old behaviour it will be true automatically if resolvfile is
> set to /tmp/resolv.conf.auto
>
> (cherry picked from 2aea1ada65f050d74a064e74466bbe4e8d)
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
Acked-by: Hans Dedecker <dedeckeh at gmail.com>
> ---
>  package/network/services/dnsmasq/Makefile     |  2 +-
>  .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
>  2 files changed, 16 insertions(+), 16 deletions(-)
>
> diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> index e89ad19f5c..c50717d091 100644
> --- a/package/network/services/dnsmasq/Makefile
> +++ b/package/network/services/dnsmasq/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>
>  PKG_NAME:=dnsmasq
>  PKG_VERSION:=2.80
> -PKG_RELEASE:=1.2
> +PKG_RELEASE:=1.3
>
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
>  PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index 9c922eec6c..b119981cb8 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -731,7 +731,9 @@ dhcp_relay_add() {
>
>  dnsmasq_start()
>  {
> -       local cfg="$1" disabled resolvfile user_dhcpscript
> +       local cfg="$1"
> +       local disabled user_dhcpscript
> +       local resolvfile localuse
>
>         config_get_bool disabled "$cfg" disabled 0
>         [ "$disabled" -gt 0 ] && return 0
> @@ -881,14 +883,14 @@ dnsmasq_start()
>         config_get_bool cachelocal "$cfg" cachelocal 1
>
>         config_get_bool noresolv "$cfg" noresolv 0
> +       config_get_bool localuse "$cfg" localuse 0
>         if [ "$noresolv" != "1" ]; then
> -               config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
> -               # So jail doesn't complain if file missing
> -               [ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
> +               config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
> +               [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> +               xappend "--resolv-file=$resolvfile"
> +               [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>         fi
>
> -       [ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
> -
>         config_get hostsfile "$cfg" dhcphostsfile
>         [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
>
> @@ -1010,7 +1012,7 @@ dnsmasq_start()
>         mv -f $CONFIGFILE_TMP $CONFIGFILE
>         mv -f $HOSTFILE_TMP $HOSTFILE
>
> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> +       [ "$localuse" -gt 0 ] && {
>                 rm -f /tmp/resolv.conf
>                 [ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
>                         echo "search $DOMAIN" >> /tmp/resolv.conf
> @@ -1036,17 +1038,15 @@ dnsmasq_start()
>
>  dnsmasq_stop()
>  {
> -       local cfg="$1" resolvfile
> +       local cfg="$1"
> +       local noresolv resolvfile localuse
>
> +       config_get_bool noresolv "$cfg" noresolv 0
> +       config_get_bool localuse "$cfg" localuse 0
>         config_get resolvfile "$cfg" "resolvfile"
>
> -       #relink /tmp/resolve.conf only for main instance
> -       [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> -               [ -f /tmp/resolv.conf ] && {
> -                       rm -f /tmp/resolv.conf
> -                       ln -s "$resolvfile" /tmp/resolv.conf
> -               }
> -       }
> +       [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> +       [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
>
>         rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
>  }

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dedeckeh at gmail.com  Sat Feb 23 07:25:05 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Sat, 23 Feb 2019 13:25:05 +0100
Subject: [OpenWrt-Devel] [PATCH 18.06 2/2] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <20190223021732.7210-2-yszhou4tech@gmail.com>
References: <20190223021732.7210-1-yszhou4tech@gmail.com>
 <20190223021732.7210-2-yszhou4tech@gmail.com>
Message-ID: <CAJLcKsELh6wRmEgWtWhTU7yQo-V_UmOS6Tu4CM0oGh9Qf2yrtQ@mail.gmail.com>

On Sat, Feb 23, 2019 at 3:17 AM Yousong Zhou <yszhou4tech at gmail.com> wrote:
>
> This makes it clear that localuse when explicitly specified in the
> config will have its final say on whether or not the initscript should
> touch /etc/resolv.conf, no matter whatever the result of previous
> guesswork would be
>
> (cherry picked from c17a68cc61a0f8a28e19c7f60b24beaf1a1a402d)
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
Acked-by: Hans Dedecker <dedeckeh at gmail.com>
> ---
>  package/network/services/dnsmasq/Makefile           | 2 +-
>  package/network/services/dnsmasq/files/dnsmasq.init | 8 ++++----
>  2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> index c50717d091..eff9cfea24 100644
> --- a/package/network/services/dnsmasq/Makefile
> +++ b/package/network/services/dnsmasq/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
>
>  PKG_NAME:=dnsmasq
>  PKG_VERSION:=2.80
> -PKG_RELEASE:=1.3
> +PKG_RELEASE:=1.4
>
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
>  PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index b119981cb8..33ef98ce56 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -733,7 +733,7 @@ dnsmasq_start()
>  {
>         local cfg="$1"
>         local disabled user_dhcpscript
> -       local resolvfile localuse
> +       local resolvfile localuse=0
>
>         config_get_bool disabled "$cfg" disabled 0
>         [ "$disabled" -gt 0 ] && return 0
> @@ -883,13 +883,13 @@ dnsmasq_start()
>         config_get_bool cachelocal "$cfg" cachelocal 1
>
>         config_get_bool noresolv "$cfg" noresolv 0
> -       config_get_bool localuse "$cfg" localuse 0
>         if [ "$noresolv" != "1" ]; then
>                 config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
>                 [ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
>                 xappend "--resolv-file=$resolvfile"
>                 [ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
>         fi
> +       config_get_bool localuse "$cfg" localuse "$localuse"
>
>         config_get hostsfile "$cfg" dhcphostsfile
>         [ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
> @@ -1039,13 +1039,13 @@ dnsmasq_start()
>  dnsmasq_stop()
>  {
>         local cfg="$1"
> -       local noresolv resolvfile localuse
> +       local noresolv resolvfile localuse=0
>
>         config_get_bool noresolv "$cfg" noresolv 0
> -       config_get_bool localuse "$cfg" localuse 0
>         config_get resolvfile "$cfg" "resolvfile"
>
>         [ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> +       config_get_bool localuse "$cfg" localuse "$localuse"
>         [ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
>
>         rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dave at taht.net  Sat Feb 23 10:36:29 2019
From: dave at taht.net (Dave Taht)
Date: Sat, 23 Feb 2019 07:36:29 -0800
Subject: [OpenWrt-Devel] [PATCH] build: Activate ASLR PIE by default
In-Reply-To: <c2fb2800-f6cd-bd0b-1ecd-d8c7eebd0b94@hauke-m.de> (Hauke
 Mehrtens's message of "Sat, 23 Feb 2019 00:40:18 +0100")
References: <20190213221541.10882-1-hauke@hauke-m.de>
 <a8a1fa14-6afb-032b-4e14-86b9d8229078@nbd.name>
 <c2fb2800-f6cd-bd0b-1ecd-d8c7eebd0b94@hauke-m.de>
Message-ID: <87pnri4iv6.fsf@taht.net>

Hauke Mehrtens <hauke at hauke-m.de> writes:

> On 2/13/19 11:51 PM, Felix Fietkau wrote:
>> On 2019-02-13 23:15, Hauke Mehrtens wrote:
>>> This will build all executable as Position Independent Executables (PIE)
>>> by default. PIE executable can make full use of Address Space Layout
>>> Randomization (ASLR) because all sections can be placed at random
>>> offsets of the executed program. This makes it harder to exploit bugs
>>> in our binaries.
>>>
>>> This will increase the size of executable, libraries are already build
>>> position independent and their size will not change.
>>>
>>> This increases the size of the resulting images by about 3% on MIPS BE.
>>> I tested this with the default configuration for the lantiq xrx200
>>> target.
>>>
>>> The size of the initramfs binaries increased by 2.88%:
>>> Without PIE:
>>> 5.303.716 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
>>> With PIE:
>>> 5.456.339 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
>>>
>>> With PIE activated the executable are getting bigger, here are some
>>> examples from the lantiq mips_24kc target:
>>>
>>> Without PIE:
>>> 112.309 /bin/opkg
>>> 299.061 /bin/busybox
>>> 456.549 /usr/sbin/wpad
>>>
>>> With PIE:
>>> 142.496 /bin/opkg       (26.87% increase)
>>> 388.404 /bin/busybox    (29.87% increase)
>>> 580.128 /usr/sbin/wpad  (27.06% increase)
>>>
>>> With PIE activated the sections of the binaries are loaded to
>>> different offsets for each program instance like shown here:
>>>
>>> root at OpenWrt:/# cat /proc/self/maps
>>> 555c4000-55622000 r-xp 00000000 00:02 1030       /bin/busybox
>>> 55631000-55632000 r-xp 0005d000 00:02 1030       /bin/busybox
>>> 55632000-55633000 rwxp 0005e000 00:02 1030       /bin/busybox
>>> 55633000-55634000 rwxp 00000000 00:00 0
>>> 77ee2000-77f04000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
>>> 77f04000-77f05000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
>>> 77f05000-77f06000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
>>> 77f06000-77f9a000 r-xp 00000000 00:02 329        /lib/libc.so
>>> 77fa9000-77fab000 rwxp 00093000 00:02 329        /lib/libc.so
>>> 77fab000-77fad000 rwxp 00000000 00:00 0
>>> 7fb26000-7fb47000 rw-p 00000000 00:00 0          [stack]
>>> 7fefb000-7fefc000 r-xp 00000000 00:00 0
>>> 7ff0a000-7ff0b000 r--p 00000000 00:00 0          [vvar]
>>> 7ff0b000-7ff0c000 r-xp 00000000 00:00 0          [vdso]
>>> root at OpenWrt:/# cat /proc/self/maps
>>> 5561d000-5567b000 r-xp 00000000 00:02 1030       /bin/busybox
>>> 5568a000-5568b000 r-xp 0005d000 00:02 1030       /bin/busybox
>>> 5568b000-5568c000 rwxp 0005e000 00:02 1030       /bin/busybox
>>> 5568c000-5568d000 rwxp 00000000 00:00 0
>>> 77e8e000-77eb0000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
>>> 77eb0000-77eb1000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
>>> 77eb1000-77eb2000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
>>> 77eb2000-77f46000 r-xp 00000000 00:02 329        /lib/libc.so
>>> 77f55000-77f57000 rwxp 00093000 00:02 329        /lib/libc.so
>>> 77f57000-77f59000 rwxp 00000000 00:00 0
>>> 7fd1c000-7fd3d000 rw-p 00000000 00:00 0          [stack]
>>> 7fefb000-7fefc000 r-xp 00000000 00:00 0
>>> 7ff60000-7ff61000 r--p 00000000 00:00 0          [vvar]
>>> 7ff61000-7ff62000 r-xp 00000000 00:00 0          [vdso]
>>> root at OpenWrt:/#
>>>
>>> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>> ---
>>>
>>> I would like to get some comments if we should activate PIE by default.
>>> The advantage is that it will be harder to exploit OpenWrt, but on the 
>>> other hand the binaries are getting bigger. We could also restrict this 
>>> to some CPU types, but as targets share the binaries it is not really 
>>> possible to do this based on the target.
>>>
>>> I am not sure if this should go into the next release or wait for later.
>>>
>>> This could also break some packages, as it is possible to activate PIE 
>>> by default for some time many bugs are already fixed, but probably not 
>>> all of them.
>> I think this is a lot of extra bloat. Maybe we can add a restricted PIE
>> mode where packages can opt-in individually?
>
> So we should probably make it a chose with 3 options:
> 1. No PIE
> 2. Use PIE for exposed binaries
> 3. Use PIE for all binaries

I hate that we have to make choices like this for space reasons. Option
2 will help but means attackers will try to go after something else.
By exposed, you mean "on the network", I guess? 


>
> Then we need something in addition to the existing PKG_ASLR_PIE we
> already have to deactivate it.
>
> Do we want a generic name like this:
> PKG_CRITICAL
> or something specific to PIE:
> PKG_ASLR_PIE_PREFERED
>
> Hauke
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Sat Feb 23 10:46:36 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Sat, 23 Feb 2019 16:46:36 +0100
Subject: [OpenWrt-Devel] [PATCH] build: Activate ASLR PIE by default
In-Reply-To: <87pnri4iv6.fsf@taht.net>
References: <20190213221541.10882-1-hauke@hauke-m.de>
 <a8a1fa14-6afb-032b-4e14-86b9d8229078@nbd.name>
 <c2fb2800-f6cd-bd0b-1ecd-d8c7eebd0b94@hauke-m.de> <87pnri4iv6.fsf@taht.net>
Message-ID: <06357152-4989-20bd-c7af-329fff64b67d@hauke-m.de>

On 2/23/19 4:36 PM, Dave Taht wrote:
> Hauke Mehrtens <hauke at hauke-m.de> writes:
> 
>> On 2/13/19 11:51 PM, Felix Fietkau wrote:
>>> On 2019-02-13 23:15, Hauke Mehrtens wrote:
>>>> This will build all executable as Position Independent Executables (PIE)
>>>> by default. PIE executable can make full use of Address Space Layout
>>>> Randomization (ASLR) because all sections can be placed at random
>>>> offsets of the executed program. This makes it harder to exploit bugs
>>>> in our binaries.
>>>>
>>>> This will increase the size of executable, libraries are already build
>>>> position independent and their size will not change.
>>>>
>>>> This increases the size of the resulting images by about 3% on MIPS BE.
>>>> I tested this with the default configuration for the lantiq xrx200
>>>> target.
>>>>
>>>> The size of the initramfs binaries increased by 2.88%:
>>>> Without PIE:
>>>> 5.303.716 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
>>>> With PIE:
>>>> 5.456.339 openwrt-lantiq-xrx200-bt_homehub-v5a-initramfs-kernel.bin
>>>>
>>>> With PIE activated the executable are getting bigger, here are some
>>>> examples from the lantiq mips_24kc target:
>>>>
>>>> Without PIE:
>>>> 112.309 /bin/opkg
>>>> 299.061 /bin/busybox
>>>> 456.549 /usr/sbin/wpad
>>>>
>>>> With PIE:
>>>> 142.496 /bin/opkg       (26.87% increase)
>>>> 388.404 /bin/busybox    (29.87% increase)
>>>> 580.128 /usr/sbin/wpad  (27.06% increase)
>>>>
>>>> With PIE activated the sections of the binaries are loaded to
>>>> different offsets for each program instance like shown here:
>>>>
>>>> root at OpenWrt:/# cat /proc/self/maps
>>>> 555c4000-55622000 r-xp 00000000 00:02 1030       /bin/busybox
>>>> 55631000-55632000 r-xp 0005d000 00:02 1030       /bin/busybox
>>>> 55632000-55633000 rwxp 0005e000 00:02 1030       /bin/busybox
>>>> 55633000-55634000 rwxp 00000000 00:00 0
>>>> 77ee2000-77f04000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
>>>> 77f04000-77f05000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
>>>> 77f05000-77f06000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
>>>> 77f06000-77f9a000 r-xp 00000000 00:02 329        /lib/libc.so
>>>> 77fa9000-77fab000 rwxp 00093000 00:02 329        /lib/libc.so
>>>> 77fab000-77fad000 rwxp 00000000 00:00 0
>>>> 7fb26000-7fb47000 rw-p 00000000 00:00 0          [stack]
>>>> 7fefb000-7fefc000 r-xp 00000000 00:00 0
>>>> 7ff0a000-7ff0b000 r--p 00000000 00:00 0          [vvar]
>>>> 7ff0b000-7ff0c000 r-xp 00000000 00:00 0          [vdso]
>>>> root at OpenWrt:/# cat /proc/self/maps
>>>> 5561d000-5567b000 r-xp 00000000 00:02 1030       /bin/busybox
>>>> 5568a000-5568b000 r-xp 0005d000 00:02 1030       /bin/busybox
>>>> 5568b000-5568c000 rwxp 0005e000 00:02 1030       /bin/busybox
>>>> 5568c000-5568d000 rwxp 00000000 00:00 0
>>>> 77e8e000-77eb0000 r-xp 00000000 00:02 331        /lib/libgcc_s.so.1
>>>> 77eb0000-77eb1000 r-xp 00012000 00:02 331        /lib/libgcc_s.so.1
>>>> 77eb1000-77eb2000 rwxp 00013000 00:02 331        /lib/libgcc_s.so.1
>>>> 77eb2000-77f46000 r-xp 00000000 00:02 329        /lib/libc.so
>>>> 77f55000-77f57000 rwxp 00093000 00:02 329        /lib/libc.so
>>>> 77f57000-77f59000 rwxp 00000000 00:00 0
>>>> 7fd1c000-7fd3d000 rw-p 00000000 00:00 0          [stack]
>>>> 7fefb000-7fefc000 r-xp 00000000 00:00 0
>>>> 7ff60000-7ff61000 r--p 00000000 00:00 0          [vvar]
>>>> 7ff61000-7ff62000 r-xp 00000000 00:00 0          [vdso]
>>>> root at OpenWrt:/#
>>>>
>>>> Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
>>>> ---
>>>>
>>>> I would like to get some comments if we should activate PIE by default.
>>>> The advantage is that it will be harder to exploit OpenWrt, but on the 
>>>> other hand the binaries are getting bigger. We could also restrict this 
>>>> to some CPU types, but as targets share the binaries it is not really 
>>>> possible to do this based on the target.
>>>>
>>>> I am not sure if this should go into the next release or wait for later.
>>>>
>>>> This could also break some packages, as it is possible to activate PIE 
>>>> by default for some time many bugs are already fixed, but probably not 
>>>> all of them.
>>> I think this is a lot of extra bloat. Maybe we can add a restricted PIE
>>> mode where packages can opt-in individually?
>>
>> So we should probably make it a chose with 3 options:
>> 1. No PIE
>> 2. Use PIE for exposed binaries
>> 3. Use PIE for all binaries
> 
> I hate that we have to make choices like this for space reasons. Option
> 2 will help but means attackers will try to go after something else.

We could also make this depended n the architecture, I think device with
ARM64 or x86 CPU normally also have much RAM and flash, while many MIPS
based devices are constrained.

> By exposed, you mean "on the network", I guess? 

Yes with exposed applications I meant exposed from the network like
dnsmasq, dropbear and so on.

>> Then we need something in addition to the existing PKG_ASLR_PIE we
>> already have to deactivate it.
>>
>> Do we want a generic name like this:
>> PKG_CRITICAL
>> or something specific to PIE:
>> PKG_ASLR_PIE_PREFERED
>>
>> Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From por at oranjevos.nl  Sat Feb 23 11:11:40 2019
From: por at oranjevos.nl (Paul Oranje)
Date: Sat, 23 Feb 2019 17:11:40 +0100
Subject: [OpenWrt-Devel] [PATCH 18.06 1/2] dnsmasq: allow using dnsmasq
 as the sole resolver
In-Reply-To: <20190223021732.7210-1-yszhou4tech@gmail.com>
References: <20190223021732.7210-1-yszhou4tech@gmail.com>
Message-ID: <715D79C8-42EB-493A-ADD8-0A6D24E66A0D@oranjevos.nl>



> Op 23 feb. 2019, om 03:17 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> 
> Currently it seems impossible to configure /etc/config/dhcp to achieve
> the following use case
> 
> - run dnsmasq with no-resolv
> - re-generate /etc/resolv.conf with "nameserver 127.0.0.1"
> 
> Before this change, we have to set resolvfile to /tmp/resolv.conf.auto
> to achive the 2nd effect above, but setting resolvfile requires noresolv
> being false.
> 
> A new boolean option "localuse" is added to indicate that we intend to
> use dnsmasq as the local dns resolver.  It's false by default and to
> align with old behaviour it will be true automatically if resolvfile is
> set to /tmp/resolv.conf.auto
> 
> (cherry picked from 2aea1ada65f050d74a064e74466bbe4e8d)
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
Tested-by: Paul Oranje <por at oranjevos.nl>

> ---
> package/network/services/dnsmasq/Makefile     |  2 +-
> .../services/dnsmasq/files/dnsmasq.init       | 30 +++++++++----------
> 2 files changed, 16 insertions(+), 16 deletions(-)
> 
> diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> index e89ad19f5c..c50717d091 100644
> --- a/package/network/services/dnsmasq/Makefile
> +++ b/package/network/services/dnsmasq/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
> 
> PKG_NAME:=dnsmasq
> PKG_VERSION:=2.80
> -PKG_RELEASE:=1.2
> +PKG_RELEASE:=1.3
> 
> PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
> PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index 9c922eec6c..b119981cb8 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -731,7 +731,9 @@ dhcp_relay_add() {
> 
> dnsmasq_start()
> {
> -	local cfg="$1" disabled resolvfile user_dhcpscript
> +	local cfg="$1"
> +	local disabled user_dhcpscript
> +	local resolvfile localuse
> 
> 	config_get_bool disabled "$cfg" disabled 0
> 	[ "$disabled" -gt 0 ] && return 0
> @@ -881,14 +883,14 @@ dnsmasq_start()
> 	config_get_bool cachelocal "$cfg" cachelocal 1
> 
> 	config_get_bool noresolv "$cfg" noresolv 0
> +	config_get_bool localuse "$cfg" localuse 0
> 	if [ "$noresolv" != "1" ]; then
> -		config_get resolvfile "$cfg" resolvfile "/tmp/resolv.conf.auto"
> -		# So jail doesn't complain if file missing
> -		[ -n "$resolvfile" -a \! -e "$resolvfile" ] && touch "$resolvfile"
> +		config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
> +		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> +		xappend "--resolv-file=$resolvfile"
> +		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> 	fi
> 
> -	[ -n "$resolvfile" ] && xappend "--resolv-file=$resolvfile"
> -
> 	config_get hostsfile "$cfg" dhcphostsfile
> 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
> 
> @@ -1010,7 +1012,7 @@ dnsmasq_start()
> 	mv -f $CONFIGFILE_TMP $CONFIGFILE
> 	mv -f $HOSTFILE_TMP $HOSTFILE
> 
> -	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> +	[ "$localuse" -gt 0 ] && {
> 		rm -f /tmp/resolv.conf
> 		[ $ADD_LOCAL_DOMAIN -eq 1 ] && [ -n "$DOMAIN" ] && {
> 			echo "search $DOMAIN" >> /tmp/resolv.conf
> @@ -1036,17 +1038,15 @@ dnsmasq_start()
> 
> dnsmasq_stop()
> {
> -	local cfg="$1" resolvfile
> +	local cfg="$1"
> +	local noresolv resolvfile localuse
> 
> +	config_get_bool noresolv "$cfg" noresolv 0
> +	config_get_bool localuse "$cfg" localuse 0
> 	config_get resolvfile "$cfg" "resolvfile"
> 
> -	#relink /tmp/resolve.conf only for main instance
> -	[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && {
> -		[ -f /tmp/resolv.conf ] && {
> -			rm -f /tmp/resolv.conf
> -			ln -s "$resolvfile" /tmp/resolv.conf
> -		}
> -	}
> +	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> +	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
> 
> 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp
> }


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From por at oranjevos.nl  Sat Feb 23 11:14:28 2019
From: por at oranjevos.nl (Paul Oranje)
Date: Sat, 23 Feb 2019 17:14:28 +0100
Subject: [OpenWrt-Devel] [PATCH 18.06 2/2] dnsmasq: prefer localuse over
 resolvfile guesswork
In-Reply-To: <20190223021732.7210-2-yszhou4tech@gmail.com>
References: <20190223021732.7210-1-yszhou4tech@gmail.com>
 <20190223021732.7210-2-yszhou4tech@gmail.com>
Message-ID: <E8B34B58-D19B-4554-B0C8-7385CF2C3A2C@oranjevos.nl>



> Op 23 feb. 2019, om 03:17 heeft Yousong Zhou <yszhou4tech at gmail.com> het volgende geschreven:
> 
> This makes it clear that localuse when explicitly specified in the
> config will have its final say on whether or not the initscript should
> touch /etc/resolv.conf, no matter whatever the result of previous
> guesswork would be
> 
> (cherry picked from c17a68cc61a0f8a28e19c7f60b24beaf1a1a402d)
> Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
Tested-by: Paul Oranje <por at oranjevos.nl>

> ---
> package/network/services/dnsmasq/Makefile           | 2 +-
> package/network/services/dnsmasq/files/dnsmasq.init | 8 ++++----
> 2 files changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/package/network/services/dnsmasq/Makefile b/package/network/services/dnsmasq/Makefile
> index c50717d091..eff9cfea24 100644
> --- a/package/network/services/dnsmasq/Makefile
> +++ b/package/network/services/dnsmasq/Makefile
> @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
> 
> PKG_NAME:=dnsmasq
> PKG_VERSION:=2.80
> -PKG_RELEASE:=1.3
> +PKG_RELEASE:=1.4
> 
> PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
> PKG_SOURCE_URL:=http://thekelleys.org.uk/dnsmasq
> diff --git a/package/network/services/dnsmasq/files/dnsmasq.init b/package/network/services/dnsmasq/files/dnsmasq.init
> index b119981cb8..33ef98ce56 100644
> --- a/package/network/services/dnsmasq/files/dnsmasq.init
> +++ b/package/network/services/dnsmasq/files/dnsmasq.init
> @@ -733,7 +733,7 @@ dnsmasq_start()
> {
> 	local cfg="$1"
> 	local disabled user_dhcpscript
> -	local resolvfile localuse
> +	local resolvfile localuse=0
> 
> 	config_get_bool disabled "$cfg" disabled 0
> 	[ "$disabled" -gt 0 ] && return 0
> @@ -883,13 +883,13 @@ dnsmasq_start()
> 	config_get_bool cachelocal "$cfg" cachelocal 1
> 
> 	config_get_bool noresolv "$cfg" noresolv 0
> -	config_get_bool localuse "$cfg" localuse 0
> 	if [ "$noresolv" != "1" ]; then
> 		config_get resolvfile "$cfg" resolvfile /tmp/resolv.conf.auto
> 		[ -n "$resolvfile" -a ! -e "$resolvfile" ] && touch "$resolvfile"
> 		xappend "--resolv-file=$resolvfile"
> 		[ "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> 	fi
> +	config_get_bool localuse "$cfg" localuse "$localuse"
> 
> 	config_get hostsfile "$cfg" dhcphostsfile
> 	[ -e "$hostsfile" ] && xappend "--dhcp-hostsfile=$hostsfile"
> @@ -1039,13 +1039,13 @@ dnsmasq_start()
> dnsmasq_stop()
> {
> 	local cfg="$1"
> -	local noresolv resolvfile localuse
> +	local noresolv resolvfile localuse=0
> 
> 	config_get_bool noresolv "$cfg" noresolv 0
> -	config_get_bool localuse "$cfg" localuse 0
> 	config_get resolvfile "$cfg" "resolvfile"
> 
> 	[ "$noresolv" = 0 -a "$resolvfile" = "/tmp/resolv.conf.auto" ] && localuse=1
> +	config_get_bool localuse "$cfg" localuse "$localuse"
> 	[ "$localuse" -gt 0 ] && ln -sf "/tmp/resolv.conf.auto" /tmp/resolv.conf
> 
> 	rm -f ${BASEDHCPSTAMPFILE}.${cfg}.*.dhcp


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From ericluehrsen at gmail.com  Sun Feb 24 01:05:42 2019
From: ericluehrsen at gmail.com (Eric Luehrsen)
Date: Sun, 24 Feb 2019 01:05:42 -0500
Subject: [OpenWrt-Devel] [PATCH] odhcpd: add network dependent start trigger
Message-ID: <893bbd8f-683a-0382-feff-ce0f7b38019f@gmail.com>

Recent (20190207) changes to odhcpd makee it dependent on OpenWrt
logical interfaces. Boot time race conditions may make odhcpd binding
a challenge. Intermittent or inconsistent problems can occur with DHCP
requests until odhcpd is restarted. Change start up scripts to use
procd interface triggers such as dnsmasq and others have already.

Signed-off-by: Eric Luehrsen <ericluehrsen at gmail.com>
---
  .../network/services/odhcpd/files/odhcpd.init | 20 +++++++++++++++++--
  1 file changed, 18 insertions(+), 2 deletions(-)

--- a/package/network/services/odhcpd/files/odhcpd.init
+++ b/package/network/services/odhcpd/files/odhcpd.init
@@ -1,10 +1,20 @@
  #!/bin/sh /etc/rc.common

-START=35
+START=19
  STOP=85
  USE_PROCD=1

+boot() {
+	ODHCPD_BOOT=1
+	start "$@"
+}
+
  start_service() {
+	if [ -n "$ODHCPD_BOOT" ] ; then
+		# odhcpd needs to wait for OpenWrt logical interfaces
+		return 0
+	fi
+
  	procd_open_instance
  	procd_set_param command /usr/sbin/odhcpd
  	procd_set_param respawn
@@ -17,6 +27,12 @@ reload_service() {

  service_triggers()
  {
-	procd_add_reload_trigger "dhcp"
+	if [ -n "$ODHCPD_BOOT" ] ; then
+		# one time trigger at boot to wait for logical interface setup
+		procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/odhcpd restart
+	else
+		# reload odhcpd also for network reconfiguration
+		procd_add_reload_trigger "dhcp" "network"
+	fi
  }

-- 
2.20.1

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sgruszka at redhat.com  Sun Feb 24 04:23:18 2019
From: sgruszka at redhat.com (Stanislaw Gruszka)
Date: Sun, 24 Feb 2019 10:23:18 +0100
Subject: [OpenWrt-Devel] [PATCH] mac80211: rt2x00: fix crash on
 release_firmware
Message-ID: <1551000198-30901-1-git-send-email-sgruszka@redhat.com>

Fix crash due to passing invalid r2x00dev->eeprom_file pointer to
release_firmware(). Since we copy eeprom data with EEPROM_SIZE
in rt2800_read_eeprom() we can use eeprom_file->size as marker
if the file was crated by request_firmware().

Cc: Felix Fietkau <nbd at nbd.name>,
Cc: Daniel Golle <daniel at makrotopia.org>
Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>
---
 .../mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch  | 5 +++--
 .../604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch   | 5 ++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
index ab31d8485d7d..c6d4862e41ec 100644
--- a/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
+++ b/package/kernel/mac80211/patches/rt2x00/602-rt2x00-introduce-rt2x00eeprom.patch
@@ -152,7 +152,7 @@
  
 --- /dev/null
 +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
-@@ -0,0 +1,105 @@
+@@ -0,0 +1,106 @@
 +/*
 +	Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn at gmail.com>
 +	Copyright (C) 2004 - 2009 Gertjan van Wingerde <gwingerde at gmail.com>
@@ -255,7 +255,8 @@
 +
 +void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev)
 +{
-+	release_firmware(rt2x00dev->eeprom_file);
++	if (rt2x00dev->eeprom_file && rt2x00dev->eeprom_file->size)
++		release_firmware(rt2x00dev->eeprom_file);
 +	rt2x00dev->eeprom_file = NULL;
 +}
 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00lib.h
diff --git a/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch b/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
index a98b49c541f5..b3e1220b601a 100644
--- a/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
+++ b/package/kernel/mac80211/patches/rt2x00/604-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch
@@ -22,7 +22,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  	  Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352.
 --- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
 +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
-@@ -26,11 +26,73 @@
+@@ -26,11 +26,72 @@
  
  #include <linux/kernel.h>
  #include <linux/module.h>
@@ -84,7 +84,6 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
 +			rt2x00dev->eeprom[i] = swab16(rt2x00dev->eeprom[i]);
 +
 +	rt2x00dev->eeprom_file = &mtd_fw;
-+	mtd_fw.size = len;
 +	mtd_fw.data = (const u8 *) rt2x00dev->eeprom;
 +
 +	dev_info(rt2x00dev->dev, "loaded eeprom from mtd device \"%s\"\n", part);
@@ -96,7 +95,7 @@ Signed-off-by: John Crispin <blogic at openwrt.org>
  static const char *
  rt2x00lib_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev)
  {
-@@ -58,6 +120,9 @@ static int rt2x00lib_request_eeprom_file
+@@ -58,6 +119,9 @@ static int rt2x00lib_request_eeprom_file
  	const char *ee_name;
  	int retval;
  
-- 
2.7.5


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sven at narfation.org  Sun Feb 24 11:51:13 2019
From: sven at narfation.org (Sven Eckelmann)
Date: Sun, 24 Feb 2019 17:51:13 +0100
Subject: [OpenWrt-Devel] [RFC openwrt-routing] batman-adv: Split batadv
 proto in meshif and hardif part
Message-ID: <20190224165113.15726-1-sven@narfation.org>

batman-adv allows to configure three different objects:

* batadv hardif

  - network interface used by batadv meshif to transport the batman-adv
    packets
  - its master interface is set to the batadv meshif

* batadv (meshif/softif)

  - virtual interface that emulates a normal 802.3 interface on top
  - encapsulates traffic and forwards it via the batadv hardifs

* batadv vlan

  - potential VLAN ID on top of batadv meshif
  - allows filtering of traffic from specific VIDs

While batadv vlan objects were already represented as an own proto
"batadv_vlan", the batadv meshif could never be fully configured using
/etc/config/network. Instead, parts of its configuration were stored in
/etc/config/batman_adv and some in the interfaces with the "batadv" proto.

To increase the confusion, the "batadv" proto wasn't used to define the
batadv meshif but to identify batadv (slave) hardifs. The batman-adv
meshifs were also never created directly but only when a hardif was
configured. The actual modification of the configuration settings was then
applied using a hotplug script hack. The batadv meshif network interface
could therefore only be created when an hardif was available and not
manipulated with ifup/ifdown. Also `/etc/init.d/network reload` didn't
modify the batadv meshif interface configuration correctly.

The "batadv" is now renamed to "batadv_hardif" and a new "batadv" proto is
used to configure the main (meshif) network interface with all its
configuration.

A simple network configuration with WiFi & ethernet interfaces and static
IP on top of bat0 would look like:

  # batadv meshif bat0
  config interface 'bat0'
  	option proto 'batadv'
  	option routing_algo 'BATMAN_IV'
  	option aggregated_ogms 1
  	option ap_isolation 0
  	option bonding 0
  	option fragmentation 1
  	#option gw_bandwidth '10000/2000'
  	option gw_mode 'off'
  	#option gw_sel_class 20
  	option log_level 0
  	option orig_interval 1000
  	option bridge_loop_avoidance 1
  	option distributed_arp_table 1
  	option multicast_mode 1
  	option network_coding 0
  	option hop_penalty 30
  	option isolation_mark '0x00000000/0x00000000'

  # add *single* wifi-iface with network bat0_hardif_wlan as hardif to bat0
  config interface 'bat0_hardif_wlan'
  	option mtu '1536'
  	option proto 'batadv_hardif'
  	option master 'bat0'
  	# option ifname is filled out by the wifi-iface

  # add eth0 as hardif to bat0
  config interface 'bat0_hardif_eth0'
  	option proto 'batadv_hardif'
  	option master 'bat0'
  	option ifname 'eth0'
  	option mtu '1536'

  # configure IP on bat0
  config interface 'bat0_lan'
  	option ifname 'bat0'
  	option proto 'static'
  	option ipaddr '192.168.1.1'
  	option netmask '255.255.255.0'
  	option ip6assign '60'

Signed-off-by: Sven Eckelmann <sven at narfation.org>
---
Cc: Matthias Schiffer <mschiffer at universe-factory.net>
Cc: openwrt-devel at lists.openwrt.org
Cc: Gui Iribarren <gui at altermundi.net>
Cc: Moritz Warning <moritzwarning at web.de>

Changes depend on https://github.com/openwrt-routing/packages/pull/451
---
 batman-adv/Makefile                           |   2 +-
 batman-adv/files/etc/config/batman-adv        |  20 ----
 .../files/etc/hotplug.d/net/99-batman-adv     |  12 --
 .../etc/uci-defaults/99-migrate-batadv_hardif |  97 +++++++++++++++
 batman-adv/files/lib/batman-adv/config.sh     |  69 -----------
 batman-adv/files/lib/netifd/proto/batadv.sh   | 112 +++++++++++++++---
 .../files/lib/netifd/proto/batadv_hardif.sh   |  40 +++++++
 7 files changed, 235 insertions(+), 117 deletions(-)
 delete mode 100644 batman-adv/files/etc/config/batman-adv
 delete mode 100644 batman-adv/files/etc/hotplug.d/net/99-batman-adv
 create mode 100755 batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif
 delete mode 100644 batman-adv/files/lib/batman-adv/config.sh
 create mode 100755 batman-adv/files/lib/netifd/proto/batadv_hardif.sh

diff --git a/batman-adv/Makefile b/batman-adv/Makefile
index 82af6c7..b250888 100644
--- a/batman-adv/Makefile
+++ b/batman-adv/Makefile
@@ -10,7 +10,7 @@ include $(TOPDIR)/rules.mk
 PKG_NAME:=batman-adv
 
 PKG_VERSION:=2019.0
-PKG_RELEASE:=2
+PKG_RELEASE:=3
 PKG_HASH:=3e97d8a771cdbd7b2df42c52b88e071eaa58b5d28eb4e17a4b13b6698debbdc0
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
diff --git a/batman-adv/files/etc/config/batman-adv b/batman-adv/files/etc/config/batman-adv
deleted file mode 100644
index 21138cb..0000000
--- a/batman-adv/files/etc/config/batman-adv
+++ /dev/null
@@ -1,20 +0,0 @@
-
-config 'mesh' 'bat0'
-	#option 'aggregated_ogms' 1
-	#option 'ap_isolation' 0
-	#option 'bonding' 0
-	#option 'fragmentation' 1
-	#option 'gw_bandwidth' '10000/2000'
-	#option 'gw_mode' 'off'
-	#option 'gw_sel_class' 20
-	#option 'log_level' 0
-	#option 'orig_interval' 1000
-	#option 'bridge_loop_avoidance' 1
-	#option 'distributed_arp_table' 1
-	#option 'multicast_mode' 1
-	#option 'network_coding' 0
-	#option 'hop_penalty' 30
-	#option 'isolation_mark' '0x00000000/0x00000000'
-
-# yet another batX instance
-# config 'mesh' 'bat5'
diff --git a/batman-adv/files/etc/hotplug.d/net/99-batman-adv b/batman-adv/files/etc/hotplug.d/net/99-batman-adv
deleted file mode 100644
index f0c391f..0000000
--- a/batman-adv/files/etc/hotplug.d/net/99-batman-adv
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-. /lib/batman-adv/config.sh
-
-bat_load_module
-config_load batman-adv
-
-case "$ACTION" in
-	add)
-		[ -d /sys/class/net/$INTERFACE/mesh/ ] && bat_config "$INTERFACE"
-		;;
-esac
diff --git a/batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif b/batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif
new file mode 100755
index 0000000..156a33f
--- /dev/null
+++ b/batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif
@@ -0,0 +1,97 @@
+#!/bin/sh
+
+# This UCI-Defaults script will split the batadv proto network interfaces
+# in batadv_hardif and batadv proto. The configuration options from
+# /etc/config/batman-adv will be moved to the latter.
+
+. /lib/functions.sh
+
+proto_batadv_to_batadv_hardif() {
+    local section="$1"
+    local proto
+    local mesh
+    local routing_algo
+
+    config_get proto "${section}" proto
+    config_get mesh "${section}" mesh
+    config_get routing_algo "${section}" routing_algo
+
+    if [ -z "$mesh" -o "${proto}" != "batadv" ]; then
+        continue
+    fi
+
+    uci set network."${section}".proto="batadv_hardif"
+    uci rename network."${section}".mesh="master"
+    uci delete network."${section}".routing_algo
+
+    # create new section or adjust existing one
+    uci set network."${mesh}"=interface
+    uci set network."${mesh}".proto=batadv
+    [ -n "${routing_algo}" ]  && uci set network."${mesh}".routing_algo="${routing_algo}"
+}
+
+mv_batadv_config_section() {
+    local section="$1"
+    local aggregated_ogms
+    local ap_isolation
+    local bonding
+    local bridge_loop_avoidance
+    local distributed_arp_table
+    local fragmentation
+    local gw_bandwidth
+    local gw_mode
+    local gw_sel_class
+    local hop_penalty
+    local isolation_mark
+    local log_level
+    local multicast_mode
+    local network_coding
+    local orig_interval
+
+    config_get aggregated_ogms "${section}" aggregated_ogms
+    config_get ap_isolation "${section}" ap_isolation
+    config_get bonding "${section}" bonding
+    config_get bridge_loop_avoidance "${section}" bridge_loop_avoidance
+    config_get distributed_arp_table "${section}" distributed_arp_table
+    config_get fragmentation "${section}" fragmentation
+    config_get gw_bandwidth "${section}" gw_bandwidth
+    config_get gw_mode "${section}" gw_mode
+    config_get gw_sel_class "${section}" gw_sel_class
+    config_get hop_penalty "${section}" hop_penalty
+    config_get isolation_mark "${section}" isolation_mark
+    config_get log_level "${section}" log_level
+    config_get multicast_mode "${section}" multicast_mode
+    config_get network_coding "${section}" network_coding
+    config_get orig_interval "${section}" orig_interval
+
+    # update section in case it exists
+    [ -n "${aggregated_ogms}" ]  && uci set network."${section}".aggregated_ogms="${aggregated_ogms}"
+    [ -n "${ap_isolation}" ]  && uci set network."${section}".ap_isolation="${ap_isolation}"
+    [ -n "${bonding}" ]  && uci set network."${section}".bonding="${bonding}"
+    [ -n "${bridge_loop_avoidance}" ]  && uci set network."${section}".bridge_loop_avoidance="${bridge_loop_avoidance}"
+    [ -n "${distributed_arp_table}" ]  && uci set network."${section}".distributed_arp_table="${distributed_arp_table}"
+    [ -n "${fragmentation}" ]  && uci set network."${section}".fragmentation="${fragmentation}"
+    [ -n "${gw_bandwidth}" ]  && uci set network."${section}".gw_bandwidth="${gw_bandwidth}"
+    [ -n "${gw_mode}" ]  && uci set network."${section}".gw_mode="${gw_mode}"
+    [ -n "${gw_sel_class}" ]  && uci set network."${section}".gw_sel_class="${gw_sel_class}"
+    [ -n "${hop_penalty}" ]  && uci set network."${section}".hop_penalty="${hop_penalty}"
+    [ -n "${isolation_mark}" ]  && uci set network."${section}".isolation_mark="${isolation_mark}"
+    [ -n "${log_level}" ]  && uci set network."${section}".log_level="${log_level}"
+    [ -n "${multicast_mode}" ]  && uci set network."${section}".multicast_mode="${multicast_mode}"
+    [ -n "${network_coding}" ]  && uci set network."${section}".network_coding="${network_coding}"
+    [ -n "${orig_interval}" ]  && uci set network."${section}".orig_interval="${orig_interval}"
+}
+
+if [ -f /etc/config/batman-adv ]; then
+    config_load network
+    config_foreach proto_batadv_to_batadv_hardif 'interface'
+    uci commit network
+
+    config_load batman-adv
+    config_foreach mv_batadv_config_section 'mesh'
+    uci commit batman-adv
+
+    rm -f /etc/config/batman-adv
+fi
+
+exit 0
diff --git a/batman-adv/files/lib/batman-adv/config.sh b/batman-adv/files/lib/batman-adv/config.sh
deleted file mode 100644
index 952f93e..0000000
--- a/batman-adv/files/lib/batman-adv/config.sh
+++ /dev/null
@@ -1,69 +0,0 @@
-#!/bin/sh
-
-bat_load_module()
-{
-	[ -d "/sys/module/batman_adv/" ] && return
-
-	. /lib/functions.sh
-	load_modules /etc/modules.d/*-crc16 /etc/modules.d/*-crypto* /etc/modules.d/*-lib-crc* /etc/modules.d/*-batman-adv*
-}
-
-bat_config()
-{
-	local mesh="$1"
-	local aggregated_ogms ap_isolation bonding bridge_loop_avoidance distributed_arp_table fragmentation
-	local gw_bandwidth gw_mode gw_sel_class isolation_mark hop_penalty multicast_mode network_coding log_level
-	local orig_interval
-
-	config_get aggregated_ogms "$mesh" aggregated_ogms
-	config_get ap_isolation "$mesh" ap_isolation
-	config_get bonding "$mesh" bonding
-	config_get bridge_loop_avoidance "$mesh" bridge_loop_avoidance
-	config_get distributed_arp_table "$mesh" distributed_arp_table
-	config_get fragmentation "$mesh" fragmentation
-	config_get gw_bandwidth "$mesh" gw_bandwidth
-	config_get gw_mode "$mesh" gw_mode
-	config_get gw_sel_class "$mesh" gw_sel_class
-	config_get hop_penalty "$mesh" hop_penalty
-	config_get isolation_mark "$mesh" isolation_mark
-	config_get multicast_mode "$mesh" multicast_mode
-	config_get network_coding "$mesh" network_coding
-	config_get log_level "$mesh" log_level
-	config_get orig_interval "$mesh" orig_interval
-
-	[ ! -f "/sys/class/net/$mesh/mesh/orig_interval" ] && echo "batman-adv mesh $mesh does not exist - check your interface configuration" && return 1
-
-	[ -n "$aggregated_ogms" ] && batctl -m "$mesh" aggregation "$aggregated_ogms"
-	[ -n "$ap_isolation" ] && batctl -m "$mesh" ap_isolation "$ap_isolation"
-	[ -n "$bonding" ] && batctl -m "$mesh" bonding "$bonding"
-	[ -n "$bridge_loop_avoidance" ] &&  batctl -m "$mesh" bridge_loop_avoidance "$bridge_loop_avoidance" 2>&-
-	[ -n "$distributed_arp_table" ] && batctl -m "$mesh" distributed_arp_table "$distributed_arp_table" 2>&-
-	[ -n "$fragmentation" ] && batctl -m "$mesh" fragmentation "$fragmentation"
-
-	case "$gw_mode" in
-	server)
-		if [ -n "$gw_bandwidth" ]; then
-			batctl -m "$mesh" gw_mode "server" "$gw_bandwidth"
-		else
-			batctl -m "$mesh" gw_mode "server"
-		fi
-		;;
-	client)
-		if [ -n "$gw_sel_class" ]; then
-			batctl -m "$mesh" gw_mode "client" "$gw_sel_class"
-		else
-			batctl -m "$mesh" gw_mode "client"
-		fi
-		;;
-	*)
-		batctl -m "$mesh" gw_mode "off"
-		;;
-	esac
-
-	[ -n "$hop_penalty" ] && batctl -m "$mesh" hop_penalty "$hop_penalty"
-	[ -n "$isolation_mark" ] && batctl -m "$mesh" isolation_mark "$isolation_mark"
-	[ -n "$multicast_mode" ] && batctl -m "$mesh" multicast_mode "$multicast_mode" 2>&-
-	[ -n "$network_coding" ] && batctl -m "$mesh" network_coding "$network_coding" 2>&-
-	[ -n "$log_level" ] && batctl -m "$mesh" loglevel "$log_level" 2>&-
-	[ -n "$orig_interval" ] && batctl -m "$mesh" orig_interval "$orig_interval"
-}
diff --git a/batman-adv/files/lib/netifd/proto/batadv.sh b/batman-adv/files/lib/netifd/proto/batadv.sh
index 2233091..eb8153c 100755
--- a/batman-adv/files/lib/netifd/proto/batadv.sh
+++ b/batman-adv/files/lib/netifd/proto/batadv.sh
@@ -1,37 +1,119 @@
 #!/bin/sh
 
-. /lib/functions.sh
-. ../netifd-proto.sh
-init_proto "$@"
+[ -n "$INCLUDE_ONLY" ] || {
+	. /lib/functions.sh
+	. ../netifd-proto.sh
+	init_proto "$@"
+}
 
 proto_batadv_init_config() {
-	proto_config_add_string "mesh"
-	proto_config_add_string "routing_algo"
+	no_device=1
+	available=1
+
+	proto_config_add_boolean 'aggregated_ogms:bool'
+	proto_config_add_boolean 'ap_isolation:bool'
+	proto_config_add_boolean 'bonding:bool'
+	proto_config_add_boolean 'bridge_loop_avoidance:bool'
+	proto_config_add_boolean 'distributed_arp_table:bool'
+	proto_config_add_boolean 'fragmentation:bool'
+	proto_config_add_string 'gw_bandwidth'
+	proto_config_add_string 'gw_mode'
+	proto_config_add_int 'gw_sel_class'
+	proto_config_add_int 'hop_penalty'
+	proto_config_add_string 'isolation_mark'
+	proto_config_add_string 'log_level'
+	proto_config_add_boolean 'multicast_mode:bool'
+	proto_config_add_boolean 'network_coding:bool'
+	proto_config_add_int 'orig_interval'
+	proto_config_add_string 'routing_algo'
 }
 
 proto_batadv_setup() {
 	local config="$1"
-	local iface="$2"
+	local iface="$config"
+
+	local aggregated_ogms
+	local ap_isolation
+	local bonding
+	local bridge_loop_avoidance
+	local distributed_arp_table
+	local fragmentation
+	local gw_bandwidth
+	local gw_mode
+	local gw_sel_class
+	local hop_penalty
+	local isolation_mark
+	local log_level
+	local multicast_mode
+	local network_coding
+	local orig_interval
+	local routing_algo
+
+	json_get_vars aggregated_ogms
+	json_get_vars ap_isolation
+	json_get_vars bonding
+	json_get_vars bridge_loop_avoidance
+	json_get_vars distributed_arp_table
+	json_get_vars fragmentation
+	json_get_vars gw_bandwidth
+	json_get_vars gw_mode
+	json_get_vars gw_sel_class
+	json_get_vars hop_penalty
+	json_get_vars isolation_mark
+	json_get_vars log_level
+	json_get_vars multicast_mode
+	json_get_vars network_coding
+	json_get_vars orig_interval
+	json_get_vars routing_algo
 
-	local mesh routing_algo
-	json_get_vars mesh routing_algo
+	set_default routing_algo 'BATMAN_IV'
 
-	[ -n "$routing_algo" ] || routing_algo="BATMAN_IV"
 	batctl routing_algo "$routing_algo"
+	batctl -m "$iface" interface create
+
+	[ -n "$aggregated_ogms" ] && batctl -m "$iface" aggregation "$aggregated_ogms"
+	[ -n "$ap_isolation" ] && batctl -m "$iface" ap_isolation "$ap_isolation"
+	[ -n "$bonding" ] && batctl -m "$iface" bonding "$bonding"
+	[ -n "$bridge_loop_avoidance" ] &&  batctl -m "$iface" bridge_loop_avoidance "$bridge_loop_avoidance" 2>&-
+	[ -n "$distributed_arp_table" ] && batctl -m "$iface" distributed_arp_table "$distributed_arp_table" 2>&-
+	[ -n "$fragmentation" ] && batctl -m "$iface" fragmentation "$fragmentation"
+
+	case "$gw_mode" in
+	server)
+		if [ -n "$gw_bandwidth" ]; then
+			batctl -m "$iface" gw_mode "server" "$gw_bandwidth"
+		else
+			batctl -m "$iface" gw_mode "server"
+		fi
+		;;
+	client)
+		if [ -n "$gw_sel_class" ]; then
+			batctl -m "$iface" gw_mode "client" "$gw_sel_class"
+		else
+			batctl -m "$iface" gw_mode "client"
+		fi
+		;;
+	*)
+		batctl -m "$iface" gw_mode "off"
+		;;
+	esac
+
+	[ -n "$hop_penalty" ] && batctl -m "$iface" hop_penalty "$hop_penalty"
+	[ -n "$isolation_mark" ] && batctl -m "$iface" isolation_mark "$isolation_mark"
+	[ -n "$multicast_mode" ] && batctl -m "$iface" multicast_mode "$multicast_mode" 2>&-
+	[ -n "$network_coding" ] && batctl -m "$iface" network_coding "$network_coding" 2>&-
+	[ -n "$log_level" ] && batctl -m "$iface" loglevel "$log_level" 2>&-
+	[ -n "$orig_interval" ] && batctl -m "$iface" orig_interval "$orig_interval"
 
-	batctl -m "$mesh" interface add "$iface"
 	proto_init_update "$iface" 1
 	proto_send_update "$config"
 }
 
 proto_batadv_teardown() {
 	local config="$1"
-	local iface="$2"
-
-	local mesh
-	json_get_vars mesh
+	local iface="$config"
 
-	batctl -m "$mesh" interface del "$iface" || true
+	batctl -m "$iface" interface destroy
 }
 
 add_protocol batadv
diff --git a/batman-adv/files/lib/netifd/proto/batadv_hardif.sh b/batman-adv/files/lib/netifd/proto/batadv_hardif.sh
new file mode 100755
index 0000000..9283d2b
--- /dev/null
+++ b/batman-adv/files/lib/netifd/proto/batadv_hardif.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+
+[ -n "$INCLUDE_ONLY" ] || {
+	. /lib/functions.sh
+	. ../netifd-proto.sh
+	init_proto "$@"
+}
+
+proto_batadv_hardif_init_config() {
+	proto_config_add_string "master"
+}
+
+proto_batadv_hardif_setup() {
+	local config="$1"
+	local iface="$2"
+
+	local master
+
+	json_get_vars master
+
+	( proto_add_host_dependency "$config" '' "$master" )
+
+	batctl -m "$master" interface -M add "$iface"
+
+	proto_init_update "$iface" 1
+	proto_send_update "$config"
+}
+
+proto_batadv_hardif_teardown() {
+	local config="$1"
+	local iface="$2"
+
+	local master
+
+	json_get_vars master
+
+	batctl -m "$master" interface -M del "$iface" || true
+}
+
+add_protocol batadv_hardif
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From noreply at github.com  Sun Feb 24 12:02:35 2019
From: noreply at github.com (Stephen Walker)
Date: Sun, 24 Feb 2019 09:02:35 -0800
Subject: [OpenWrt-Devel] [sdwalker/sdwalker.github.io] cdf1fd: This week's
 update
Message-ID: <sdwalker/sdwalker.github.io/push/refs/heads/master/06e365-cdf1fd@github.com>

  Branch: refs/heads/master
  Home:   https://github.com/sdwalker/sdwalker.github.io
  Commit: cdf1fd80183e56db9d5ccabdaa35f9aa449846a6
      https://github.com/sdwalker/sdwalker.github.io/commit/cdf1fd80183e56db9d5ccabdaa35f9aa449846a6
  Author: Stephen Walker <stephendwalker+github at gmail.com>
  Date:   2019-02-24 (Sun, 24 Feb 2019)

  Changed paths:
    M uscan/index-18.06.html
    M uscan/index.html

  Log Message:
  -----------
  This week's update



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From joe at ayerscasa.com  Sun Feb 24 15:32:41 2019
From: joe at ayerscasa.com (Joe Ayers)
Date: Sun, 24 Feb 2019 12:32:41 -0800
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
Message-ID: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>

First of all, thanks for contributing this fix.   I've incorporated
into the http://www.arednmesh.org project, just getting into our
nightly builds now.   A comment and a couple questions...

The MAX_DELAY was way too short for our community, had to increase
that significantly.  We commonly have long distance links over 50km.

One of our common scenarios is a P2MP -- tower or cell site with
multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
calculation is based on the furthest station.  What happens when the
furthest station is quiet for long periods of time, nothing but
beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
be any acks received back?  Would it drop out of the ack_to
calculation, until user data is active?  Thus, distance would tune to
a shorter distance for another STA with user data being transferred?
What is the behavior in this scenario?

I made a small change so that '0' in /etc/config/wireless distance
setting ended up being auto for ath9k.  Did I miss an upstream patch
to incorporate?

Regards,
Joe AE6XE

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at david-bauer.net  Sun Feb 24 18:13:51 2019
From: mail at david-bauer.net (David Bauer)
Date: Mon, 25 Feb 2019 00:13:51 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: make TP-Link revision naming
 consistent
Message-ID: <20190224231351.1010-1-mail@david-bauer.net>

This commit makes the TP-Link hardware-revision naming consistent to
match the one used by the vendor. TP-Link refers to the different
revisions as "vX" not "Version X".

Signed-off-by: David Bauer <mail at david-bauer.net>
---
 target/linux/ath79/dts/ar9132_tplink_tl-wr1043nd-v1.dts  | 2 +-
 target/linux/ath79/dts/qca9533_tplink_tl-wr841-v11.dts   | 2 +-
 target/linux/ath79/dts/qca9533_tplink_tl-wr841-v9.dts    | 2 +-
 target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts   | 2 +-
 target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts   | 2 +-
 target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v2.dts | 2 +-
 target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v3.dts | 2 +-
 target/linux/ath79/dts/qca9563_tplink_archer-c2-v3.dts   | 2 +-
 target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts | 2 +-
 9 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/target/linux/ath79/dts/ar9132_tplink_tl-wr1043nd-v1.dts b/target/linux/ath79/dts/ar9132_tplink_tl-wr1043nd-v1.dts
index 23eba5bb30..f617d89c5b 100644
--- a/target/linux/ath79/dts/ar9132_tplink_tl-wr1043nd-v1.dts
+++ b/target/linux/ath79/dts/ar9132_tplink_tl-wr1043nd-v1.dts
@@ -8,7 +8,7 @@
 
 / {
 	compatible = "tplink,tl-wr1043nd-v1", "qca,ar9132";
-	model = "TP-Link TL-WR1043ND Version 1";
+	model = "TP-Link TL-WR1043ND v1";
 
 	aliases {
 		led-boot = &system;
diff --git a/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v11.dts b/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v11.dts
index e451b7d67d..29fca8b3a9 100644
--- a/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v11.dts
+++ b/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v11.dts
@@ -8,7 +8,7 @@
 
 / {
 	compatible = "tplink,tl-wr841-v11", "qca,qca9533";
-	model = "TP-Link TL-WR841N/ND Version 11";
+	model = "TP-Link TL-WR841N/ND v11";
 
 	aliases {
 		led-boot = &system_led;
diff --git a/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v9.dts b/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v9.dts
index ac069eed27..a3284226a0 100644
--- a/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v9.dts
+++ b/target/linux/ath79/dts/qca9533_tplink_tl-wr841-v9.dts
@@ -8,7 +8,7 @@
 
 / {
 	compatible = "tplink,tl-wr841-v9", "qca,qca9533";
-	model = "TP-Link TL-WR841N/ND Version 9";
+	model = "TP-Link TL-WR841N/ND v9";
 
 	aliases {
 		led-boot = &qss_led;
diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts
index 7334a6e7ee..c26695d248 100644
--- a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v1.dts
@@ -8,7 +8,7 @@
 
 / {
 	compatible = "tplink,archer-c7-v1", "qca,qca9558";
-	model = "TP-Link Archer C7 Version 1";
+	model = "TP-Link Archer C7 v1";
 };
 
 &gpio_keys {
diff --git a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts
index f168a17796..afc1b14b8a 100644
--- a/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_archer-c7-v2.dts
@@ -8,7 +8,7 @@
 
 / {
 	compatible = "tplink,archer-c7-v2", "qca,qca9558";
-	model = "TP-Link Archer C7 Version 2";
+	model = "TP-Link Archer C7 v2";
 };
 
 &gpio_keys {
diff --git a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v2.dts b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v2.dts
index a2992c10fe..f49f143d14 100644
--- a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v2.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v2.dts
@@ -8,5 +8,5 @@
 
 / {
 	compatible = "tplink,tl-wr1043nd-v2", "qca,qca9557";
-	model = "TP-Link TL-WR1043ND Version 2";
+	model = "TP-Link TL-WR1043ND v2";
 };
diff --git a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v3.dts b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v3.dts
index a473cf42ea..5efa417216 100644
--- a/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v3.dts
+++ b/target/linux/ath79/dts/qca9558_tplink_tl-wr1043nd-v3.dts
@@ -8,5 +8,5 @@
 
 / {
 	compatible = "tplink,tl-wr1043nd-v3", "qca,qca9557";
-	model = "TP-Link TL-WR1043ND Version 3";
+	model = "TP-Link TL-WR1043ND v3";
 };
diff --git a/target/linux/ath79/dts/qca9563_tplink_archer-c2-v3.dts b/target/linux/ath79/dts/qca9563_tplink_archer-c2-v3.dts
index 9686290e73..c106a63eb8 100644
--- a/target/linux/ath79/dts/qca9563_tplink_archer-c2-v3.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_archer-c2-v3.dts
@@ -8,7 +8,7 @@
 
 / {
 	compatible = "tplink,archer-c2-v3", "qca,qca9563";
-	model = "TP-Link Archer C2 Version 3";
+	model = "TP-Link Archer C2 v3";
 
 	chosen {
 		bootargs = "console=ttyS0,115200n8";
diff --git a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
index 5a4c4e588e..e51bb7f834 100644
--- a/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
+++ b/target/linux/ath79/dts/qca9563_tplink_tl-wr1043nd-v4.dts
@@ -8,7 +8,7 @@
 
 / {
 	compatible = "tplink,tl-wr1043nd-v4", "qca,qca9563";
-	model = "TP-Link TL-WR1043ND Version 4";
+	model = "TP-Link TL-WR1043ND v4";
 };
 
 &gpio_leds {
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dev at andreas-ziegler.de  Sun Feb 24 19:19:59 2019
From: dev at andreas-ziegler.de (Andreas Ziegler)
Date: Mon, 25 Feb 2019 01:19:59 +0100
Subject: [OpenWrt-Devel] [PATCH] ar71xx: GL.iNet AR300M family: correct LED
 definitions
Message-ID: <20190225001959.472-1-dev@andreas-ziegler.de>

remove USB as this is no LED but power control
rename WiFi LED with correct color red (like in stock firmware)
set middle LED to be used for LAN link/activity

Signed-off-by: Andreas Ziegler <dev at andreas-ziegler.de>
---
 target/linux/ar71xx/base-files/etc/board.d/01_leds       | 1 +
 .../linux/ar71xx/files/arch/mips/ath79/mach-gl-ar300m.c  | 9 +--------
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds
index 170adaa7a2..183495e57f 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds
@@ -412,6 +412,7 @@ fritz450e)
 	;;
 gl-ar300m)
 	ucidef_set_led_wlan "wlan" "WLAN" "$board:red:wlan" "phy0tpt"
+	ucidef_set_led_netdev "lan" "LAN" "$board:green:lan" "eth1"
 	;;
 gl-ar750)
 	ucidef_set_led_wlan "wlan2g" "WLAN2G" "$board:white:wlan2g" "phy1tpt"
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar300m.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar300m.c
index 2a2d2702bc..d10a910129 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar300m.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-gl-ar300m.c
@@ -29,7 +29,6 @@
 #include "machtypes.h"
 #include "pci.h"
 
-#define GL_AR300M_GPIO_LED_USB		2
 #define GL_AR300M_GPIO_LED_WLAN		14
 #define GL_AR300M_GPIO_LED_LAN		13
 #define GL_AR300M_GPIO_LED_SYSTEM	12
@@ -47,13 +46,7 @@
 
 static struct gpio_led gl_ar300m_leds_gpio[] __initdata = {
 	{
-		.name = "gl-ar300m:green:usb",
-		.gpio = GL_AR300M_GPIO_LED_USB,
-		.active_low = 0,
-		.default_state = 1,
-	},
-	{
-		.name = "gl-ar300m:green:wlan",
+		.name = "gl-ar300m:red:wlan",
 		.gpio = GL_AR300M_GPIO_LED_WLAN,
 		.active_low = 1,
 	},
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dev at andreas-ziegler.de  Sun Feb 24 19:21:52 2019
From: dev at andreas-ziegler.de (Andreas Ziegler)
Date: Mon, 25 Feb 2019 01:21:52 +0100
Subject: [OpenWrt-Devel] [PATCH 2/2] ath79: GL.iNet AR300M family:
 Correct DTS LED definitions
In-Reply-To: <d1b1acea-7608-2f82-7ff3-d33e71b03057@wagsky.com>
References: <d1b1acea-7608-2f82-7ff3-d33e71b03057@wagsky.com>
Message-ID: <f727c600-a701-7615-ee28-6ff475b49af5@andreas-ziegler.de>

Hi Jeff,

thanks for your suggested change!
Although i agree with your change regarding USB GPIO, i don't with the
other part.

Using stock/vendor firmware, GPIO 12 is a green system/status LED and
GPIO 14 is a red wifi LED.

I just sent a patch to the list which fixes this in ar71xx target, maybe
you can update your patch for ath79, too.
see "[PATCH] ar71xx: GL.iNet AR300M family: correct LED definitions"

Regards

Andreas


Jeff Kletsky schrieb am 28.01.19 um 03:54:
> Resend as per M. Kreskin
> 
> 
> From f485678e7f37b3f2995fefc1e7c41794091bd73e Mon Sep 17 00:00:00 2001
> From: Jeff Kletsky <git-commits at allycomm.com>
> Date: Sun, 20 Jan 2019 14:48:09 -0800
> Subject: [PATCH 2/2] ath79: GL.iNet AR300M family: Correct DTS LED
> definitions
> 
> Change the "status" LED to proper GPIO 12 and "red" naming.
> 
> Remove GPIO 2 from definition as a USB LED.
> 
> GPIO 2 is used to control power to the USB socket, not an LED.
> As such, PWM on the line or typical LED triggers are inappropriate.
> Users who wish to control the USB power for custom applications
> can manipulate the GPIO through code, or for example, export it
> through /sys/class/gpio/export.
> 
> Runtime-tested:? GL.iNet AR300M-Lite
> 
> Signed-off-by: Jeff Kletsky <git-commits at allycomm.com>
> ---
> ?target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi | 11 ++---------
> ?1 file changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
> b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
> index 2a0c4385cd..9baa6235b2 100644
> --- a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
> +++ b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
> @@ -41,13 +41,6 @@
> ???? leds {
> ???? ??? compatible = "gpio-leds";
> 
> -??? ??? usb {
> -??? ??? ??? label = "gl-ar300m:green:usb";
> -??? ??? ??? gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
> -??? ??? ??? trigger-sources = <&hub_port>;
> -??? ??? ??? linux,default-trigger = "usbport";
> -??? ??? };
> -
> ???? ??? wlan {
> ???? ??? ??? label = "gl-ar300m:green:wlan";
> ???? ??? ??? gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
> @@ -60,8 +53,8 @@
> ???? ??? };
> 
> ???? ??? led_status: status {
> -??? ??? ??? label = "gl-ar300m:green:status";
> -??? ??? ??? gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
> +??? ??? ??? label = "gl-ar300m:red:status";
> +??? ??? ??? gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
> ???? ??? };
> ???? };
> ?};

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Sun Feb 24 20:22:33 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Sun, 24 Feb 2019 17:22:33 -0800
Subject: [OpenWrt-Devel] [PATCH 2/2] ath79: GL.iNet AR300M family:
 Correct DTS LED definitions
In-Reply-To: <f727c600-a701-7615-ee28-6ff475b49af5@andreas-ziegler.de>
References: <d1b1acea-7608-2f82-7ff3-d33e71b03057@wagsky.com>
 <f727c600-a701-7615-ee28-6ff475b49af5@andreas-ziegler.de>
Message-ID: <45e051dc-e6df-b4ab-2f20-b8de3e883ef8@wagsky.com>


On 2/24/19 4:21 PM, Andreas Ziegler wrote:
> Hi Jeff,
>
> thanks for your suggested change!
> Although i agree with your change regarding USB GPIO, i don't with the
> other part.
>
> Using stock/vendor firmware, GPIO 12 is a green system/status LED and
> GPIO 14 is a red wifi LED.
>
> I just sent a patch to the list which fixes this in ar71xx target, maybe
> you can update your patch for ath79, too.
> see "[PATCH] ar71xx: GL.iNet AR300M family: correct LED definitions"
>
> Regards
>
> Andreas


Thank you for taking care of the ar71xx target.


I agree that the device has a red LED and have confirmed
with the manufacturer on this.? Alas, I'm behind in
updating the patch.


Jeff


>
> Jeff Kletsky schrieb am 28.01.19 um 03:54:
>> Resend as per M. Kreskin
>>
>>
>>  From f485678e7f37b3f2995fefc1e7c41794091bd73e Mon Sep 17 00:00:00 2001
>> From: Jeff Kletsky <git-commits at allycomm.com>
>> Date: Sun, 20 Jan 2019 14:48:09 -0800
>> Subject: [PATCH 2/2] ath79: GL.iNet AR300M family: Correct DTS LED
>> definitions
>>
>> Change the "status" LED to proper GPIO 12 and "red" naming.
>>
>> Remove GPIO 2 from definition as a USB LED.
>>
>> GPIO 2 is used to control power to the USB socket, not an LED.
>> As such, PWM on the line or typical LED triggers are inappropriate.
>> Users who wish to control the USB power for custom applications
>> can manipulate the GPIO through code, or for example, export it
>> through /sys/class/gpio/export.
>>
>> Runtime-tested:? GL.iNet AR300M-Lite
>>
>> Signed-off-by: Jeff Kletsky <git-commits at allycomm.com>
>> ---
>>  ?target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi | 11 ++---------
>>  ?1 file changed, 2 insertions(+), 9 deletions(-)
>>
>> diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
>> b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
>> index 2a0c4385cd..9baa6235b2 100644
>> --- a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
>> +++ b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
>> @@ -41,13 +41,6 @@
>>  ???? leds {
>>  ???? ??? compatible = "gpio-leds";
>>
>> -??? ??? usb {
>> -??? ??? ??? label = "gl-ar300m:green:usb";
>> -??? ??? ??? gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
>> -??? ??? ??? trigger-sources = <&hub_port>;
>> -??? ??? ??? linux,default-trigger = "usbport";
>> -??? ??? };
>> -
>>  ???? ??? wlan {
>>  ???? ??? ??? label = "gl-ar300m:green:wlan";
>>  ???? ??? ??? gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
>> @@ -60,8 +53,8 @@
>>  ???? ??? };
>>
>>  ???? ??? led_status: status {
>> -??? ??? ??? label = "gl-ar300m:green:status";
>> -??? ??? ??? gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
>> +??? ??? ??? label = "gl-ar300m:red:status";
>> +??? ??? ??? gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
>>  ???? ??? };
>>  ???? };
>>  ?};

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Sun Feb 24 20:32:47 2019
From: openwrt-devel at lists.openwrt.org (Gui Iribarren via openwrt-devel)
Date: Mon, 25 Feb 2019 01:32:47 +0000
Subject: [OpenWrt-Devel] [RFC openwrt-routing] batman-adv: Split batadv
 proto in meshif and hardif part
In-Reply-To: <20190224165113.15726-1-sven@narfation.org>
References: <20190224165113.15726-1-sven@narfation.org>
Message-ID: <mailman.23539.1551058366.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Gui Iribarren <gui at altermundi.net>
Subject: Re: [RFC openwrt-routing] batman-adv: Split batadv proto in meshif and hardif part
Date: Sun, 24 Feb 2019 22:24:56 -0300
Size: 24975
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/7e2905c9/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From sven at narfation.org  Mon Feb 25 02:35:52 2019
From: sven at narfation.org (Sven Eckelmann)
Date: Mon, 25 Feb 2019 08:35:52 +0100
Subject: [OpenWrt-Devel] [RFC openwrt-routing] batman-adv: Split batadv
 proto in meshif and hardif part
In-Reply-To: <037B7BA7-8D64-4B46-BDA8-C4D45AC9E61A@altermundi.net>
References: <20190224165113.15726-1-sven@narfation.org>
 <037B7BA7-8D64-4B46-BDA8-C4D45AC9E61A@altermundi.net>
Message-ID: <2667717.mmYbNj13ue@bentobox>

On Monday, 25 February 2019 02:24:56 CET Gui Iribarren wrote:
> have you considered, to simplify backwards compatibility, to keep proto 
> "batadv" as it currently is (hardif) and naming "batadv_mesh" the new proto?

It was one of the goals to *not* name the batadv hardif interface proto 
"batadv". And I wanted to have the batman-adv interface proto named "batadv" 
because this is the rtnl kind string. So you actually create batman-adv 
meshifs using:

   ip link add dev bat0 type batadv

But we can call this proto also "batadv_meshif" if there is a strong 
preference for this name.

Kind regards,
	Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/44736c89/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From dedeckeh at gmail.com  Mon Feb 25 02:46:03 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Mon, 25 Feb 2019 08:46:03 +0100
Subject: [OpenWrt-Devel] [PATCH] odhcpd: add network dependent start
 trigger
In-Reply-To: <893bbd8f-683a-0382-feff-ce0f7b38019f@gmail.com>
References: <893bbd8f-683a-0382-feff-ce0f7b38019f@gmail.com>
Message-ID: <CAJLcKsFQcJ1YH8bCxPkNUcRPNdQ_5DOBzLDuUE3nuUXJujAnGQ@mail.gmail.com>

Hi,
On Sun, Feb 24, 2019 at 7:06 AM Eric Luehrsen <ericluehrsen at gmail.com> wrote:
>
> Recent (20190207) changes to odhcpd makee it dependent on OpenWrt
> logical interfaces. Boot time race conditions may make odhcpd binding

Even before the most recent changes odhcpd was dependent on OpenWRT logical
interfaces nothing has changed in that sense
> a challenge. Intermittent or inconsistent problems can occur with DHCP
> requests until odhcpd is restarted. Change start up scripts to use

Can you elaborate a bit more on what issues you're observing and provide odhcpd
tracing  (loglevel 7) when you observe issues ?
> procd interface triggers such as dnsmasq and others have already.

This does not really make sense to me as odhcpd is subscribed to ubus
network event
messages triggering config reload logic in case the network state of
an interface changes

Hans
>
> Signed-off-by: Eric Luehrsen <ericluehrsen at gmail.com>
> ---
>   .../network/services/odhcpd/files/odhcpd.init | 20 +++++++++++++++++--
>   1 file changed, 18 insertions(+), 2 deletions(-)
>
> --- a/package/network/services/odhcpd/files/odhcpd.init
> +++ b/package/network/services/odhcpd/files/odhcpd.init
> @@ -1,10 +1,20 @@
>   #!/bin/sh /etc/rc.common
>
> -START=35
> +START=19
>   STOP=85
>   USE_PROCD=1
>
> +boot() {
> +       ODHCPD_BOOT=1
> +       start "$@"
> +}
> +
>   start_service() {
> +       if [ -n "$ODHCPD_BOOT" ] ; then
> +               # odhcpd needs to wait for OpenWrt logical interfaces
> +               return 0
> +       fi
> +
>         procd_open_instance
>         procd_set_param command /usr/sbin/odhcpd
>         procd_set_param respawn
> @@ -17,6 +27,12 @@ reload_service() {
>
>   service_triggers()
>   {
> -       procd_add_reload_trigger "dhcp"
> +       if [ -n "$ODHCPD_BOOT" ] ; then
> +               # one time trigger at boot to wait for logical interface setup
> +               procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/odhcpd restart
> +       else
> +               # reload odhcpd also for network reconfiguration
> +               procd_add_reload_trigger "dhcp" "network"
> +       fi
>   }
>
> --
> 2.20.1
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From klukonin at gmail.com  Mon Feb 25 03:03:52 2019
From: klukonin at gmail.com (=?UTF-8?B?0JrQuNGA0LjQu9C7INCb0YPQutC+0L3QuNC9?=)
Date: Mon, 25 Feb 2019 13:03:52 +0500
Subject: [OpenWrt-Devel] [B.A.T.M.A.N.] [RFC openwrt-routing]
 batman-adv: Split batadv proto in meshif and hardif part
In-Reply-To: <2667717.mmYbNj13ue@bentobox>
References: <20190224165113.15726-1-sven@narfation.org>
 <037B7BA7-8D64-4B46-BDA8-C4D45AC9E61A@altermundi.net>
 <2667717.mmYbNj13ue@bentobox>
Message-ID: <CALYz8yqCAkcrvjcBhgf-2YYTrejhEXnnbRWP3bCtv-joXfP3jA@mail.gmail.com>

Hello.


That looks pretty cool.
But what about ELP interval parameter?
As I think, it should be covered by UCI config too.


Best Regards,
Lukonin Kirill

??, 25 ????. 2019 ?. ? 12:36, Sven Eckelmann <sven at narfation.org>:
>
> On Monday, 25 February 2019 02:24:56 CET Gui Iribarren wrote:
> > have you considered, to simplify backwards compatibility, to keep proto
> > "batadv" as it currently is (hardif) and naming "batadv_mesh" the new proto?
>
> It was one of the goals to *not* name the batadv hardif interface proto
> "batadv". And I wanted to have the batman-adv interface proto named "batadv"
> because this is the rtnl kind string. So you actually create batman-adv
> meshifs using:
>
>    ip link add dev bat0 type batadv
>
> But we can call this proto also "batadv_meshif" if there is a strong
> preference for this name.
>
> Kind regards,
>         Sven

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From sven at narfation.org  Mon Feb 25 03:22:53 2019
From: sven at narfation.org (Sven Eckelmann)
Date: Mon, 25 Feb 2019 09:22:53 +0100
Subject: [OpenWrt-Devel] [B.A.T.M.A.N.] [RFC openwrt-routing]
 batman-adv: Split batadv proto in meshif and hardif part
In-Reply-To: <CALYz8yqCAkcrvjcBhgf-2YYTrejhEXnnbRWP3bCtv-joXfP3jA@mail.gmail.com>
References: <20190224165113.15726-1-sven@narfation.org>
 <2667717.mmYbNj13ue@bentobox>
 <CALYz8yqCAkcrvjcBhgf-2YYTrejhEXnnbRWP3bCtv-joXfP3jA@mail.gmail.com>
Message-ID: <50037565.hLq9mJvEzh@bentobox>

On Monday, 25 February 2019 09:03:52 CET ?????? ??????? wrote:
> But what about ELP interval parameter?
> As I think, it should be covered by UCI config too.

Please first provide a batctl patch to support this setting. Then we can 
discuss the uci integration.

Kind regards,
	Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/d0b7f08d/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From koen.vandeputte at ncentric.com  Mon Feb 25 04:31:02 2019
From: koen.vandeputte at ncentric.com (Koen Vandeputte)
Date: Mon, 25 Feb 2019 10:31:02 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
Message-ID: <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>


On 24.02.19 21:32, Joe Ayers wrote:
> First of all, thanks for contributing this fix.   I've incorporated
> into the http://www.arednmesh.org project, just getting into our
> nightly builds now.   A comment and a couple questions...
>
> The MAX_DELAY was way too short for our community, had to increase
> that significantly.  We commonly have long distance links over 50km.
>
> One of our common scenarios is a P2MP -- tower or cell site with
> multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
> calculation is based on the furthest station.  What happens when the
> furthest station is quiet for long periods of time, nothing but
> beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
> be any acks received back?  Would it drop out of the ack_to
> calculation, until user data is active?  Thus, distance would tune to
> a shorter distance for another STA with user data being transferred?
> What is the behavior in this scenario?
>
> I made a small change so that '0' in /etc/config/wireless distance
> setting ended up being auto for ath9k.  Did I miss an upstream patch
> to incorporate?
>
> Regards,
> Joe AE6XE


Hi Lorenzo,

Ensuring that Joe gets the best possible answer, could you please reply 
on above comments/questions?


Highly appreciated,

Koen


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From lorenzo.bianconi at redhat.com  Mon Feb 25 04:56:02 2019
From: lorenzo.bianconi at redhat.com (Lorenzo Bianconi)
Date: Mon, 25 Feb 2019 10:56:02 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
Message-ID: <20190225095601.GA6186@localhost.localdomain>

> 
> On 24.02.19 21:32, Joe Ayers wrote:

Hi Joe,

> > First of all, thanks for contributing this fix.   I've incorporated
> > into the http://www.arednmesh.org project, just getting into our
> > nightly builds now.   A comment and a couple questions...
> > 
> > The MAX_DELAY was way too short for our community, had to increase
> > that significantly.  We commonly have long distance links over 50km.

according to ath9k max configurable value in AR_TIME_OUT for acktimeout
is 0x3fff. The max ack_to we can configure (assuming clockrate set to
ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
works properly I can post a patch (or you can take care of it, up to you)

> > 
> > One of our common scenarios is a P2MP -- tower or cell site with
> > multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
> > calculation is based on the furthest station.  What happens when the
> > furthest station is quiet for long periods of time, nothing but
> > beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
> > be any acks received back?  Would it drop out of the ack_to
> > calculation, until user data is active?  Thus, distance would tune to
> > a shorter distance for another STA with user data being transferred?
> > What is the behavior in this scenario?

nope, we always take into account furthest station (even if it does not tx
any data frame) otherwise it will be kicked out (we need to wait it leaves
the network)

Regards,
Lorenzo

> > 
> > I made a small change so that '0' in /etc/config/wireless distance
> > setting ended up being auto for ath9k.  Did I miss an upstream patch
> > to incorporate?
> > 
> > Regards,
> > Joe AE6XE
> 
> 
> Hi Lorenzo,
> 
> Ensuring that Joe gets the best possible answer, could you please reply on
> above comments/questions?
> 
> 
> Highly appreciated,
> 
> Koen
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From daniel.engberg.lists at pyret.net  Mon Feb 25 06:10:51 2019
From: daniel.engberg.lists at pyret.net (Daniel Engberg)
Date: Mon, 25 Feb 2019 12:10:51 +0100
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
Message-ID: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>

Hi,

Just a few things to take into consideration for 19.XX release

Oversized ethernet frames on ipq806x causes crashes
https://bugs.openwrt.org/index.php?do=details&task_id=2026

Overall ethernet performance on ipq806x isn't great,
perhaps add a note in the release about it

f2fs wonkyness on several (?) platforms?
https://github.com/openwrt/openwrt/pull/1575 (scroll down)
https://github.com/openwrt/openwrt/pull/1714

USB is half-broken on several devices (ath79)
https://forum.openwrt.org/t/ath79-target-status/18614/27 (and below)

TL-WDR4900 is currently broken
https://github.com/openwrt/openwrt/pull/1773

Zyxel P-2812HNU-F is currently broken
https://bugs.openwrt.org/index.php?do=details&task_id=2124

Mesh is broken using ath10k-ct?
https://bugs.openwrt.org/index.php?do=details&task_id=2123

mac80211: rt2x00: fix crash on release_firmware
https://patchwork.ozlabs.org/patch/1047485/

openssl: backport devcrypto changes from master
https://patchwork.ozlabs.org/patch/1046426/

openssl: fix devcrypto engine md blocksize
https://patchwork.ozlabs.org/patch/1046380/

Make sure NFS v3, v4 and client/server works on release
https://bugs.openwrt.org/index.php?do=details&task_id=2105

Possible performance regressions regarding mt76
https://bugs.openwrt.org/index.php?do=details&task_id=2090

USB seems to be broken on WRT1900AC v1
https://bugs.openwrt.org/index.php?do=details&task_id=2091

syscall getrandom() hangs on Turris Omnia
https://bugs.openwrt.org/index.php?do=details&task_id=1979

Worth considering:

fstools: Disable lazy init for ext4 overlay
https://github.com/openwrt/openwrt/pull/1847

ipset: size optimizations
https://github.com/openwrt/openwrt/pull/1852

iputils: update to 20151218 (might be worth jumping to official repo?)
https://github.com/openwrt/openwrt/pull/1804

package/libs/libevent: Update to 2.1.9-beta (get 2.1.9 in before 
branching)
https://github.com/openwrt/openwrt/pull/1853

dropbear: bump to 2018.76 (just switch to master/head branch in worst 
case?)
https://github.com/openwrt/openwrt/pull/915

Import the following and make default for ARC:
toolchain: Update to GCC 8.3.0
https://github.com/openwrt/openwrt/pull/1846
toolchain/binutils: Add binutils 2.32
https://github.com/openwrt/openwrt/pull/1803

ath79: make TP-Link revision naming consistent
https://patchwork.ozlabs.org/patch/1047544/

Might be risky?

octeon: Generate writable and ext4 images for ERL
https://github.com/openwrt/openwrt/pull/1813

(octeon:) Allow sysupgrade restore on ER
https://patchwork.ozlabs.org/patch/1008841/

(octeon:) Evaluate board names in alphabetical order
https://patchwork.ozlabs.org/patch/1008838/

There are quite many PRs and patches for adding devices which probably 
have to wait

Best regards,
Daniel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From wong.syrone at gmail.com  Mon Feb 25 06:18:00 2019
From: wong.syrone at gmail.com (Syrone Wong)
Date: Mon, 25 Feb 2019 19:18:00 +0800
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
References: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
Message-ID: <CAEaqfoZLwnGVfHJc+UbOm95MTWX8D6=vTvNPqiNytA5a0-n7YA@mail.gmail.com>

Can someone check https://github.com/openwrt/openwrt/pull/1637?

It works well for GCC 8.3, and should work for 7.4 as well.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From zefir.kurtisi at neratec.com  Mon Feb 25 08:31:05 2019
From: zefir.kurtisi at neratec.com (Zefir Kurtisi)
Date: Mon, 25 Feb 2019 14:31:05 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
Message-ID: <20190225133105.5305-1-zefir.kurtisi@neratec.com>

Some kernel modules have colliding symbol naming and
can't be loaded at the same time. This was observed
e.g. with qcawifi and mac80211, where function names
overlap. Therefore, the decision which kernel modules
to use has to be made at build time, resulting in
different FW variants.

An alternative approach would be to include both
drivers in an unified FW and to remove / disable
kernel modules within the uci-default processing.

This is working as is, alas since in the boot phase
the uci_apply_defaults is called after kmodloader,
the kernel module remove / disable does not take
effect at the first boot after FW upgrade but at
the next - which in worst case might leave a stale
system.

This commit moves the kmodloader execution after
uci_apply_defaults is done.

Signed-off-by: Zefir Kurtisi <zefir.kurtisi at neratec.com>
---
 package/base-files/files/etc/init.d/boot | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot
index 31f245ffc7..ab5ca452d2 100755
--- a/package/base-files/files/etc/init.d/boot
+++ b/package/base-files/files/etc/init.d/boot
@@ -36,8 +36,6 @@ boot() {
 	grep -q debugfs /proc/filesystems && /bin/mount -o noatime -t debugfs debugfs /sys/kernel/debug
 	[ "$FAILSAFE" = "true" ] && touch /tmp/.failsafe
 
-	/sbin/kmodloader
-
 	[ ! -f /etc/config/wireless ] && {
 		# compat for brcm47xx and mvebu
 		sleep 1
@@ -46,6 +44,8 @@ boot() {
 	/bin/config_generate
 	uci_apply_defaults
 	
+	/sbin/kmodloader
+
 	# temporary hack until configd exists
 	/sbin/reload_config
 }
-- 
2.17.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sbrown at ewol.com  Mon Feb 25 08:32:29 2019
From: sbrown at ewol.com (Steve Brown)
Date: Mon, 25 Feb 2019 08:32:29 -0500
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
References: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
Message-ID: <e70db0bed3bf4654ee356f19fb1923e08387456c.camel@ewol.com>

On Mon, 2019-02-25 at 12:10 +0100, Daniel Engberg wrote:
> Hi,
> 
> 
> Mesh is broken using ath10k-ct?
> https://bugs.openwrt.org/index.php?do=details&task_id=2123
> 
The combination of ath10k-ct and firmware ver 10.2.4-1.0-00043 works on
my QCA9880 (tp-link archer a7 v5).

According to debugfs, ath10k/wmi_services claims the ath10k-ct firmware
(10.1-ct-8x-__fW-022-1bbfa151) doesn't support mesh.

"WMI_SERVICE_MESH_11S                     -"

Steve


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From bjorn at mork.no  Mon Feb 25 08:52:37 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Mon, 25 Feb 2019 14:52:37 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <20190225133105.5305-1-zefir.kurtisi@neratec.com> (Zefir
 Kurtisi's message of "Mon, 25 Feb 2019 14:31:05 +0100")
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
Message-ID: <87o970gel6.fsf@miraculix.mork.no>

Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:

> Some kernel modules have colliding symbol naming

This is not true.


Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lede at allycomm.com  Mon Feb 25 09:08:15 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Mon, 25 Feb 2019 06:08:15 -0800
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <e70db0bed3bf4654ee356f19fb1923e08387456c.camel@ewol.com>
References: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
 <e70db0bed3bf4654ee356f19fb1923e08387456c.camel@ewol.com>
Message-ID: <37ff9171-dfad-392d-db14-ba06beb7140a@wagsky.com>


On 2/25/19 5:32 AM, Steve Brown wrote:
> On Mon, 2019-02-25 at 12:10 +0100, Daniel Engberg wrote:
>> Hi,
>>
>>
>> Mesh is broken using ath10k-ct?
>> https://bugs.openwrt.org/index.php?do=details&task_id=2123
>>
> The combination of ath10k-ct and firmware ver 10.2.4-1.0-00043 works on
> my QCA9880 (tp-link archer a7 v5).
>
> According to debugfs, ath10k/wmi_services claims the ath10k-ct firmware
> (10.1-ct-8x-__fW-022-1bbfa151) doesn't support mesh.
>
> "WMI_SERVICE_MESH_11S                     -"
>
> Steve
>

Two pieces of breakage there, only the second is the showstopper for me:

* The CT drivers/firmware do not support mesh, as confirmed above

* The "classic" drivers/firmware fail on or after the indicated commit

 ??? CONFIG_PACKAGE_ath10k-firmware-qca9887=y
 ??? CONFIG_PACKAGE_kmod-ath10k=y
 ??? # CONFIG_PACKAGE_kmod-ath10k-ct is not set


That the CT drivers/firmware don't support 802.11s mesh
isn't really an OpenWrt issue.

That there is a regression in overall system capability
that "kills" connectivity is a signficant concern.


Jeff



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From zefir.kurtisi at neratec.com  Mon Feb 25 09:08:58 2019
From: zefir.kurtisi at neratec.com (Zefir Kurtisi)
Date: Mon, 25 Feb 2019 15:08:58 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <87o970gel6.fsf@miraculix.mork.no>
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
Message-ID: <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>

re-post, missed CC

On 2/25/19 2:52 PM, Bj?rn Mork wrote:
> Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:
> 
>> Some kernel modules have colliding symbol naming
> 
> This is not true.
> 
> 
> Bj?rn
> 

Hm, I gave an example in the commit message and if it helps, I can post the
related log-output to prove my claim. But you might mean something else?

Zefir

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From pepe2k at gmail.com  Mon Feb 25 09:23:23 2019
From: pepe2k at gmail.com (Piotr Dymacz)
Date: Mon, 25 Feb 2019 15:23:23 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
 <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
Message-ID: <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>

Hello Zefir,

On 25.02.2019 15:08, Zefir Kurtisi wrote:
> re-post, missed CC
> 
> On 2/25/19 2:52 PM, Bj?rn Mork wrote:
>> Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:
>> 
>>> Some kernel modules have colliding symbol naming
>> 
>> This is not true.
>> 
>> 
>> Bj?rn
>> 
> 
> Hm, I gave an example in the commit message and if it helps, I can post the
> related log-output to prove my claim. But you might mean something else?

But the 'qcawifi' is not part of the kernel and OpenWrt project.

-- 
Cheers,
Piotr

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From zefir.kurtisi at neratec.com  Mon Feb 25 10:06:55 2019
From: zefir.kurtisi at neratec.com (Zefir Kurtisi)
Date: Mon, 25 Feb 2019 16:06:55 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
 <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
 <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>
Message-ID: <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com>

On 2/25/19 3:23 PM, Piotr Dymacz wrote:
> Hello Zefir,
> 
> On 25.02.2019 15:08, Zefir Kurtisi wrote:
>> re-post, missed CC
>>
>> On 2/25/19 2:52 PM, Bj?rn Mork wrote:
>>> Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:
>>>
>>>> Some kernel modules have colliding symbol naming
>>>
>>> This is not true.
>>>
>>>
>>> Bj?rn
>>>
>>
>> Hm, I gave an example in the commit message and if it helps, I can post the
>> related log-output to prove my claim. But you might mean something else?
> 
> But the 'qcawifi' is not part of the kernel and OpenWrt project.
> 
The QSDK [1] is based on OpenWRT and is open source. During development of ath10k
(and earlier ath9k), qca-wifi code has been ported to the other side (and maybe
vice-versa). That's why some exported kernel symbols in the drivers overlap.

If the argument to not consider the proposed change is based on politics (i.e. 'it
is for something not being part of OpenWRT core'), I'm fine dropping it and
keeping the change privately. But I'm pretty sure there are use cases where it
would be helpful to disable kernel-modules in the uci-default processing - as an
example of fully supported by OpenWRT, think of selecting mainline or
Candelatech's ath10k driver based on installed HW.


Cheers,
Zefir


[1] https://www.codeaurora.org/project/qsdk

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From joe at ayerscasa.com  Mon Feb 25 11:33:15 2019
From: joe at ayerscasa.com (Joe Ayers)
Date: Mon, 25 Feb 2019 08:33:15 -0800
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <20190225095601.GA6186@localhost.localdomain>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
Message-ID: <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>

On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
<lorenzo.bianconi at redhat.com> wrote:
>
> >
> > On 24.02.19 21:32, Joe Ayers wrote:
>
> Hi Joe,
>
> > > First of all, thanks for contributing this fix.   I've incorporated
> > > into the http://www.arednmesh.org project, just getting into our
> > > nightly builds now.   A comment and a couple questions...
> > >
> > > The MAX_DELAY was way too short for our community, had to increase
> > > that significantly.  We commonly have long distance links over 50km.
>
> according to ath9k max configurable value in AR_TIME_OUT for acktimeout
> is 0x3fff. The max ack_to we can configure (assuming clockrate set to
> ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
> We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
> works properly I can post a patch (or you can take care of it, up to you)
>

I have a current link in Southern California with settings of:

distance 60000m  ( "463 S" )
channel width = 10MHz
channel = 176 (5880) Amateur Radio licensing
Ubiquiti Rocket M w/ RocketDish
xmit power 27dBm

It is rock solid and streams multiple HD videos and voip calls
(without drop outs in the call) achieving 30db SNR and MCS15 rates.
It's been live for a couple years in this mode.  I don't understand
how this link could operate with the performance we see if the  ack_to
max was 372 -- the voip quality would be terrible.

I have tested (limited tests) dynack on a link showing upwards of
~"400 A", but the real distance to farthest node was about ~20km.
Was wondering the discrepancy (fading, etc.?)?   I had changed the
starting point to 20km to work, otherwise it was stuck on the original
starting point, "96 A", and didn't move.

I just loaded dynack on this 60km link and it doesn't move from my new
starting point of "196 A".   Something in the calculation somewhere
goes out of bound--to big a jump?   I'll do some testing to get the
dynack working on this 60km link, then lets see what it tunes to.
Based on my earlier results, I'm wondering if it will push past 500.
  Maybe the vendor specs are only to the limit of what was tested,
does not appear to be a true physical limit?

> > >
> > > One of our common scenarios is a P2MP -- tower or cell site with
> > > multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
> > > calculation is based on the furthest station.  What happens when the
> > > furthest station is quiet for long periods of time, nothing but
> > > beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
> > > be any acks received back?  Would it drop out of the ack_to
> > > calculation, until user data is active?  Thus, distance would tune to
> > > a shorter distance for another STA with user data being transferred?
> > > What is the behavior in this scenario?
>
> nope, we always take into account furthest station (even if it does not tx
> any data frame) otherwise it will be kicked out (we need to wait it leaves
> the network)
>

Possibly an option to further optimize?   For multi-point stations,
maybe it is possible to tune the time out based on the max distance
station actively sending user data.

> Regards,
> Lorenzo
>
> > >
> > > I made a small change so that '0' in /etc/config/wireless distance
> > > setting ended up being auto for ath9k.  Did I miss an upstream patch
> > > to incorporate?
> > >
> > > Regards,
> > > Joe AE6XE
> >
> >
> > Hi Lorenzo,
> >
> > Ensuring that Joe gets the best possible answer, could you please reply on
> > above comments/questions?
> >
> >
> > Highly appreciated,
> >
> > Koen
> >

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From koen.vandeputte at ncentric.com  Mon Feb 25 11:42:04 2019
From: koen.vandeputte at ncentric.com (Koen Vandeputte)
Date: Mon, 25 Feb 2019 17:42:04 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
Message-ID: <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>


On 25.02.19 17:33, Joe Ayers wrote:
> On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
> <lorenzo.bianconi at redhat.com> wrote:
>>> On 24.02.19 21:32, Joe Ayers wrote:
>> Hi Joe,
Hi Joe,
>>>> First of all, thanks for contributing this fix.   I've incorporated
>>>> into the http://www.arednmesh.org project, just getting into our
>>>> nightly builds now.   A comment and a couple questions...
>>>>
>>>> The MAX_DELAY was way too short for our community, had to increase
>>>> that significantly.  We commonly have long distance links over 50km.
>> according to ath9k max configurable value in AR_TIME_OUT for acktimeout
>> is 0x3fff. The max ack_to we can configure (assuming clockrate set to
>> ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
>> We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
>> works properly I can post a patch (or you can take care of it, up to you)
>>
> I have a current link in Southern California with settings of:
>
> distance 60000m  ( "463 S" )
> channel width = 10MHz
> channel = 176 (5880) Amateur Radio licensing
> Ubiquiti Rocket M w/ RocketDish
> xmit power 27dBm
>
> It is rock solid and streams multiple HD videos and voip calls
> (without drop outs in the call) achieving 30db SNR and MCS15 rates.
> It's been live for a couple years in this mode.  I don't understand
> how this link could operate with the performance we see if the  ack_to
> max was 372 -- the voip quality would be terrible.
>
> I have tested (limited tests) dynack on a link showing upwards of
> ~"400 A", but the real distance to farthest node was about ~20km.
> Was wondering the discrepancy (fading, etc.?)?   I had changed the
> starting point to 20km to work, otherwise it was stuck on the original
> starting point, "96 A", and didn't move.
>
> I just loaded dynack on this 60km link and it doesn't move from my new
> starting point of "196 A".   Something in the calculation somewhere
> goes out of bound--to big a jump?   I'll do some testing to get the
> dynack working on this 60km link, then lets see what it tunes to.
> Based on my earlier results, I'm wondering if it will push past 500.
>    Maybe the vendor specs are only to the limit of what was tested,
> does not appear to be a true physical limit?

Could you add some debug logs from Dynack?


Thanks,

Koen

>
>>>> One of our common scenarios is a P2MP -- tower or cell site with
>>>> multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
>>>> calculation is based on the furthest station.  What happens when the
>>>> furthest station is quiet for long periods of time, nothing but
>>>> beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
>>>> be any acks received back?  Would it drop out of the ack_to
>>>> calculation, until user data is active?  Thus, distance would tune to
>>>> a shorter distance for another STA with user data being transferred?
>>>> What is the behavior in this scenario?
>> nope, we always take into account furthest station (even if it does not tx
>> any data frame) otherwise it will be kicked out (we need to wait it leaves
>> the network)
>>
> Possibly an option to further optimize?   For multi-point stations,
> maybe it is possible to tune the time out based on the max distance
> station actively sending user data.
>
>> Regards,
>> Lorenzo
>>
>>>> I made a small change so that '0' in /etc/config/wireless distance
>>>> setting ended up being auto for ath9k.  Did I miss an upstream patch
>>>> to incorporate?
>>>>
>>>> Regards,
>>>> Joe AE6XE
>>>
>>> Hi Lorenzo,
>>>
>>> Ensuring that Joe gets the best possible answer, could you please reply on
>>> above comments/questions?
>>>
>>>
>>> Highly appreciated,
>>>
>>> Koen
>>>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From pepe2k at gmail.com  Mon Feb 25 12:18:09 2019
From: pepe2k at gmail.com (Piotr Dymacz)
Date: Mon, 25 Feb 2019 18:18:09 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com>
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
 <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
 <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>
 <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com>
Message-ID: <81323014-ef5f-aacc-43e4-61156aa200a8@gmail.com>

Hello Zefir,

On 25.02.2019 16:06, Zefir Kurtisi wrote:

[snip]

>>> Hm, I gave an example in the commit message and if it helps, I can post the
>>> related log-output to prove my claim. But you might mean something else?
>> 
>> But the 'qcawifi' is not part of the kernel and OpenWrt project.
>> 
> The QSDK [1] is based on OpenWRT and is open source. During development of ath10k
> (and earlier ath9k), qca-wifi code has been ported to the other side (and maybe
> vice-versa). That's why some exported kernel symbols in the drivers overlap.

The 'qca-wifi' driver is closed source.

> If the argument to not consider the proposed change is based on politics (i.e. 'it
> is for something not being part of OpenWRT core'), I'm fine dropping it and
> keeping the change privately. But I'm pretty sure there are use cases where it
> would be helpful to disable kernel-modules in the uci-default processing - as an
> example of fully supported by OpenWRT, think of selecting mainline or
> Candelatech's ath10k driver based on installed HW.

I'm more worried here about breaking existing {users, downstream 
projects, etc.} code and how the things have been working for years.
I believe, kernel modules were always (or at least since 2013~2014 when 
the kmodloader was introduced) loaded _before_ applying default UCI 
configuration (please, correct me if I'm wrong here).

Based on above, your change should be considered as a major and a 
potential reason for regressions and breaking a "well known" boot 
sequence/order.

-- 
Cheers,
Piotr

> 
> 
> Cheers,
> Zefir
> 
> 
> [1] https://www.codeaurora.org/project/qsdk
> 


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Mon Feb 25 12:27:57 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Mon, 25 Feb 2019 18:27:57 +0100
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
 <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
Message-ID: <4119860.PcH9TCvqHk@debian64>

Hello,

On Friday, February 22, 2019 7:52:37 PM CET Dmitry Tunin wrote:
> ??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler <freifunk at adrianschmutzler.de>:
> >
> > Based on the ipq40xx commit from chunkeey, I tried to do the same for
> > ar71xx/ath79.
> >
> I want to add that without this patch firmware extraction is not fast
> enough to get it in time after a flash. That's why wireless needs a
> restart.

I have a question for you too. There are currently two competing patches
for the ath79 10-ath9k-eeprom extraction:

https://patchwork.ozlabs.org/patch/1046790/

https://patchwork.ozlabs.org/patch/1047062/

Now, Dmitry' was faster with his version, but Adrian's version
patches everything so which one should it be?

(I'll write some more about the future of the extraction in the
other thread).

Cheers
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at adrianschmutzler.de  Mon Feb 25 13:00:17 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Mon, 25 Feb 2019 19:00:17 +0100
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <4119860.PcH9TCvqHk@debian64>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
 <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
 <4119860.PcH9TCvqHk@debian64>
Message-ID: <018e01d4cd33$f73a8260$e5af8720$@adrianschmutzler.de>

Hi,

I like Dmitry's approach as it will reduce duplicate code.

I would be happy to send patches for the "rest" (what I did more than him) based on his patch.

I just interpreted the comment

> The only problem here is that not all platforms need it.

as an objection to the unified approach, so I sent my patches representing a "smaller" change.

Best

Adrian

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> Behalf Of Christian Lamparter
> Sent: Montag, 25. Februar 2019 18:28
> To: openwrt-devel at lists.openwrt.org
> Cc: Dmitry Tunin <hanipouspilot at gmail.com>; Adrian Schmutzler
> <freifunk at adrianschmutzler.de>
> Subject: Re: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom
> handling for ar71xx/ath79
> 
> Hello,
> 
> On Friday, February 22, 2019 7:52:37 PM CET Dmitry Tunin wrote:
> > ??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler
> <freifunk at adrianschmutzler.de>:
> > >
> > > Based on the ipq40xx commit from chunkeey, I tried to do the same for
> > > ar71xx/ath79.
> > >
> > I want to add that without this patch firmware extraction is not fast
> > enough to get it in time after a flash. That's why wireless needs a
> > restart.
> 
> I have a question for you too. There are currently two competing patches
> for the ath79 10-ath9k-eeprom extraction:
> 
> https://patchwork.ozlabs.org/patch/1046790/
> 
> https://patchwork.ozlabs.org/patch/1047062/
> 
> Now, Dmitry' was faster with his version, but Adrian's version
> patches everything so which one should it be?
> 
> (I'll write some more about the future of the extraction in the
> other thread).
> 
> Cheers
> Christian
> 
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/7b9e7a78/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hanipouspilot at gmail.com  Mon Feb 25 13:01:05 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Mon, 25 Feb 2019 21:01:05 +0300
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <4119860.PcH9TCvqHk@debian64>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
 <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
 <4119860.PcH9TCvqHk@debian64>
Message-ID: <CANoib0HX9xtEpzS0XQDc+B2UGyptLRdd+uZQes6TBBhdsuNR7Q@mail.gmail.com>

I suggest Adrian's. I was too lazy to patch them all. Only merging
this what matters.

??, 25 ????. 2019 ?. ? 20:27, Christian Lamparter <chunkeey at gmail.com>:
>
> Hello,
>
> On Friday, February 22, 2019 7:52:37 PM CET Dmitry Tunin wrote:
> > ??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler <freifunk at adrianschmutzler.de>:
> > >
> > > Based on the ipq40xx commit from chunkeey, I tried to do the same for
> > > ar71xx/ath79.
> > >
> > I want to add that without this patch firmware extraction is not fast
> > enough to get it in time after a flash. That's why wireless needs a
> > restart.
>
> I have a question for you too. There are currently two competing patches
> for the ath79 10-ath9k-eeprom extraction:
>
> https://patchwork.ozlabs.org/patch/1046790/
>
> https://patchwork.ozlabs.org/patch/1047062/
>
> Now, Dmitry' was faster with his version, but Adrian's version
> patches everything so which one should it be?
>
> (I'll write some more about the future of the extraction in the
> other thread).
>
> Cheers
> Christian
>
>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Mon Feb 25 13:01:21 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Mon, 25 Feb 2019 18:01:21 +0000
Subject: [OpenWrt-Devel] [PATCH v3] openssl: backport devcrypto changes from
 master
In-Reply-To: <mailman.23089.1550777428.2376.openwrt-devel@lists.openwrt.org>
References: <mailman.23089.1550777428.2376.openwrt-devel@lists.openwrt.org>
Message-ID: <mailman.23692.1551117680.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH v3] openssl: backport devcrypto changes from master
Date: Mon, 25 Feb 2019 15:00:58 -0300
Size: 58424
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/62a7e27e/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hanipouspilot at gmail.com  Mon Feb 25 13:04:04 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Mon, 25 Feb 2019 21:04:04 +0300
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <CANoib0HX9xtEpzS0XQDc+B2UGyptLRdd+uZQes6TBBhdsuNR7Q@mail.gmail.com>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
 <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
 <4119860.PcH9TCvqHk@debian64>
 <CANoib0HX9xtEpzS0XQDc+B2UGyptLRdd+uZQes6TBBhdsuNR7Q@mail.gmail.com>
Message-ID: <CANoib0ErfHNkLv+WB=YueZEVO9cbzk+g-xfOgVsHgvtOy2ZyXw@mail.gmail.com>

??, 25 ????. 2019 ?. ? 21:01, Dmitry Tunin <hanipouspilot at gmail.com>:
>
> I suggest Adrian's. I was too lazy to patch them all. Only merging
> this what matters.
>
> ??, 25 ????. 2019 ?. ? 20:27, Christian Lamparter <chunkeey at gmail.com>:
> >
> > Hello,
> >
> > On Friday, February 22, 2019 7:52:37 PM CET Dmitry Tunin wrote:
> > > ??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler <freifunk at adrianschmutzler.de>:
> > > >
> > > > Based on the ipq40xx commit from chunkeey, I tried to do the same for
> > > > ar71xx/ath79.
> > > >
> > > I want to add that without this patch firmware extraction is not fast
> > > enough to get it in time after a flash. That's why wireless needs a
> > > restart.
> >
> > I have a question for you too. There are currently two competing patches
> > for the ath79 10-ath9k-eeprom extraction:
> >
> > https://patchwork.ozlabs.org/patch/1046790/
> >
> > https://patchwork.ozlabs.org/patch/1047062/
> >
> > Now, Dmitry' was faster with his version, but Adrian's version
> > patches everything so which one should it be?
> >
> > (I'll write some more about the future of the extraction in the
> > other thread).
> >
> > Cheers
> > Christian
> >
> >

Sry for upcommenting. I think that speeding up mac patching is not
really important, because it isn't too slow for a few bytes. But there
is no harm.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hanipouspilot at gmail.com  Mon Feb 25 13:06:38 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Mon, 25 Feb 2019 21:06:38 +0300
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <018e01d4cd33$f73a8260$e5af8720$@adrianschmutzler.de>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
 <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
 <4119860.PcH9TCvqHk@debian64>
 <018e01d4cd33$f73a8260$e5af8720$@adrianschmutzler.de>
Message-ID: <CANoib0E2X3We4B_rWQoNwApsuZNnrOd12=C6odA3x42-sy1Ojg@mail.gmail.com>

??, 25 ????. 2019 ?. ? 21:00, Adrian Schmutzler <mail at adrianschmutzler.de>:
>
> Hi,
>
> I like Dmitry's approach as it will reduce duplicate code.

That was not my approach ;-)
>
> I would be happy to send patches for the "rest" (what I did more than him) based on his patch.
>
> I just interpreted the comment
>
> > The only problem here is that not all platforms need it.
>
> as an objection to the unified approach, so I sent my patches representing a "smaller" change.

Well IMHO it is a matter of "taste" in this case. Save some bytes vs
unification.
>
> Best
>
> Adrian
>
> > -----Original Message-----
> > From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> > Behalf Of Christian Lamparter
> > Sent: Montag, 25. Februar 2019 18:28
> > To: openwrt-devel at lists.openwrt.org
> > Cc: Dmitry Tunin <hanipouspilot at gmail.com>; Adrian Schmutzler
> > <freifunk at adrianschmutzler.de>
> > Subject: Re: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom
> > handling for ar71xx/ath79
> >
> > Hello,
> >
> > On Friday, February 22, 2019 7:52:37 PM CET Dmitry Tunin wrote:
> > > ??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler
> > <freifunk at adrianschmutzler.de>:
> > > >
> > > > Based on the ipq40xx commit from chunkeey, I tried to do the same for
> > > > ar71xx/ath79.
> > > >
> > > I want to add that without this patch firmware extraction is not fast
> > > enough to get it in time after a flash. That's why wireless needs a
> > > restart.
> >
> > I have a question for you too. There are currently two competing patches
> > for the ath79 10-ath9k-eeprom extraction:
> >
> > https://patchwork.ozlabs.org/patch/1046790/
> >
> > https://patchwork.ozlabs.org/patch/1047062/
> >
> > Now, Dmitry' was faster with his version, but Adrian's version
> > patches everything so which one should it be?
> >
> > (I'll write some more about the future of the extraction in the
> > other thread).
> >
> > Cheers
> > Christian
> >
> >
> >
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel at lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at adrianschmutzler.de  Mon Feb 25 13:08:14 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Mon, 25 Feb 2019 19:08:14 +0100
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <CANoib0HX9xtEpzS0XQDc+B2UGyptLRdd+uZQes6TBBhdsuNR7Q@mail.gmail.com>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
 <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
 <4119860.PcH9TCvqHk@debian64>
 <CANoib0HX9xtEpzS0XQDc+B2UGyptLRdd+uZQes6TBBhdsuNR7Q@mail.gmail.com>
Message-ID: <01a901d4cd35$13f19ff0$3bd4dfd0$@adrianschmutzler.de>

So we both step back, same situation again ;-)

I only just read the "Something like this for ar71xx, ath79 and ramips, untested." in Dmitry's proposal, so I would do the following:

Merge my patches, so we have the speed-up (without much code change) quickly.

At some later point either Dmitry or I can/should take up a unified approach and test it thoroughly.

Best

Adrian

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> Behalf Of Dmitry Tunin
> Sent: Montag, 25. Februar 2019 19:01
> To: Christian Lamparter <chunkeey at gmail.com>
> Cc: Adrian Schmutzler <freifunk at adrianschmutzler.de>; openwrt-
> devel at lists.openwrt.org
> Subject: Re: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom
> handling for ar71xx/ath79
> 
> I suggest Adrian's. I was too lazy to patch them all. Only merging
> this what matters.
> 
> ??, 25 ????. 2019 ?. ? 20:27, Christian Lamparter <chunkeey at gmail.com>:
> >
> > Hello,
> >
> > On Friday, February 22, 2019 7:52:37 PM CET Dmitry Tunin wrote:
> > > ??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler
> <freifunk at adrianschmutzler.de>:
> > > >
> > > > Based on the ipq40xx commit from chunkeey, I tried to do the same for
> > > > ar71xx/ath79.
> > > >
> > > I want to add that without this patch firmware extraction is not fast
> > > enough to get it in time after a flash. That's why wireless needs a
> > > restart.
> >
> > I have a question for you too. There are currently two competing patches
> > for the ath79 10-ath9k-eeprom extraction:
> >
> > https://patchwork.ozlabs.org/patch/1046790/
> >
> > https://patchwork.ozlabs.org/patch/1047062/
> >
> > Now, Dmitry' was faster with his version, but Adrian's version
> > patches everything so which one should it be?
> >
> > (I'll write some more about the future of the extraction in the
> > other thread).
> >
> > Cheers
> > Christian
> >
> >
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/dd07435f/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From bjorn at mork.no  Mon Feb 25 13:13:12 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Mon, 25 Feb 2019 19:13:12 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com> (Zefir
 Kurtisi's message of "Mon, 25 Feb 2019 16:06:55 +0100")
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
 <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
 <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>
 <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com>
Message-ID: <875zt7hh3b.fsf@miraculix.mork.no>

Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:

> On 2/25/19 3:23 PM, Piotr Dymacz wrote:
>> Hello Zefir,
>> 
>> On 25.02.2019 15:08, Zefir Kurtisi wrote:
>>> re-post, missed CC
>>>
>>> On 2/25/19 2:52 PM, Bj?rn Mork wrote:
>>>> Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:
>>>>
>>>>> Some kernel modules have colliding symbol naming
>>>>
>>>> This is not true.
>>>>
>>>>
>>>> Bj?rn
>>>>
>>>
>>> Hm, I gave an example in the commit message and if it helps, I can post the
>>> related log-output to prove my claim. But you might mean something else?
>> 
>> But the 'qcawifi' is not part of the kernel and OpenWrt project.
>> 
> The QSDK [1] is based on OpenWRT and is open source. During development of ath10k
> (and earlier ath9k), qca-wifi code has been ported to the other side (and maybe
> vice-versa). That's why some exported kernel symbols in the drivers overlap.
>
> If the argument to not consider the proposed change is based on politics (i.e. 'it
> is for something not being part of OpenWRT core'), I'm fine dropping it and
> keeping the change privately. But I'm pretty sure there are use cases where it
> would be helpful to disable kernel-modules in the uci-default processing - as an
> example of fully supported by OpenWRT, think of selecting mainline or
> Candelatech's ath10k driver based on installed HW.

Sorry, I have no policy issues or anything like that.  I just pointed
out that your commit message started with a false statement.  And I am
sorry, but I tend to read such messages like a set of ANDed booleans, so
I usually stop at the first false statement.  Nothing following it can
make the message as a whole true.

OK?


Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hanipouspilot at gmail.com  Mon Feb 25 13:16:33 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Mon, 25 Feb 2019 21:16:33 +0300
Subject: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom handling
 for ar71xx/ath79
In-Reply-To: <01a901d4cd35$13f19ff0$3bd4dfd0$@adrianschmutzler.de>
References: <20190222184836.1047-1-freifunk@adrianschmutzler.de>
 <CANoib0E4r8EmGh+wECB_+fmpVa7QksKjs9AX=FeFp1GF1un5pw@mail.gmail.com>
 <4119860.PcH9TCvqHk@debian64>
 <CANoib0HX9xtEpzS0XQDc+B2UGyptLRdd+uZQes6TBBhdsuNR7Q@mail.gmail.com>
 <01a901d4cd35$13f19ff0$3bd4dfd0$@adrianschmutzler.de>
Message-ID: <CANoib0EHYHYVgreJGcrvksoCE8+JU-iwHzi5+gBtGsM9DrFWnQ@mail.gmail.com>

??, 25 ????. 2019 ?. ? 21:08, Adrian Schmutzler <mail at adrianschmutzler.de>:
>
> So we both step back, same situation again ;-)
>
> I only just read the "Something like this for ar71xx, ath79 and ramips, untested." in Dmitry's proposal, so I would do the following:
>
> Merge my patches, so we have the speed-up (without much code change) quickly.
>
> At some later point either Dmitry or I can/should take up a unified approach and test it thoroughly.
>
> Best
>
> Adrian
>

That was Petr ?tetiar approach to unify. I was a bit concerned that I
can't test it really well on multiple platforms, so I've sent the one
I could.


> > -----Original Message-----
> > From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> > Behalf Of Dmitry Tunin
> > Sent: Montag, 25. Februar 2019 19:01
> > To: Christian Lamparter <chunkeey at gmail.com>
> > Cc: Adrian Schmutzler <freifunk at adrianschmutzler.de>; openwrt-
> > devel at lists.openwrt.org
> > Subject: Re: [OpenWrt-Devel] [PATCH v2 0/3] Speed up caldata/eeprom
> > handling for ar71xx/ath79
> >
> > I suggest Adrian's. I was too lazy to patch them all. Only merging
> > this what matters.
> >
> > ??, 25 ????. 2019 ?. ? 20:27, Christian Lamparter <chunkeey at gmail.com>:
> > >
> > > Hello,
> > >
> > > On Friday, February 22, 2019 7:52:37 PM CET Dmitry Tunin wrote:
> > > > ??, 22 ????. 2019 ?. ? 21:48, Adrian Schmutzler
> > <freifunk at adrianschmutzler.de>:
> > > > >
> > > > > Based on the ipq40xx commit from chunkeey, I tried to do the same for
> > > > > ar71xx/ath79.
> > > > >
> > > > I want to add that without this patch firmware extraction is not fast
> > > > enough to get it in time after a flash. That's why wireless needs a
> > > > restart.
> > >
> > > I have a question for you too. There are currently two competing patches
> > > for the ath79 10-ath9k-eeprom extraction:
> > >
> > > https://patchwork.ozlabs.org/patch/1046790/
> > >
> > > https://patchwork.ozlabs.org/patch/1047062/
> > >
> > > Now, Dmitry' was faster with his version, but Adrian's version
> > > patches everything so which one should it be?
> > >
> > > (I'll write some more about the future of the extraction in the
> > > other thread).
> > >
> > > Cheers
> > > Christian
> > >
> > >
> >
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel at lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From zefir.kurtisi at neratec.com  Mon Feb 25 13:19:11 2019
From: zefir.kurtisi at neratec.com (Zefir Kurtisi)
Date: Mon, 25 Feb 2019 19:19:11 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <81323014-ef5f-aacc-43e4-61156aa200a8@gmail.com>
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
 <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
 <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>
 <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com>
 <81323014-ef5f-aacc-43e4-61156aa200a8@gmail.com>
Message-ID: <3c5f88af-0f25-3a5e-f3ff-8f9fa771c1a5@neratec.com>

On 2/25/19 6:18 PM, Piotr Dymacz wrote:
> [snip]
> 
> I'm more worried here about breaking existing {users, downstream projects, etc.}
> code and how the things have been working for years.
> I believe, kernel modules were always (or at least since 2013~2014 when the
> kmodloader was introduced) loaded _before_ applying default UCI configuration
> (please, correct me if I'm wrong here).
> 
> Based on above, your change should be considered as a major and a potential reason
> for regressions and breaking a "well known" boot sequence/order.
> 

Fair enough argument. I don't see how re-ordering those two would impact anything
in the boot process, alas I can't rule out for all platforms supported.

We'll keep the change as 'works-for-us'-private in our tree.

Thanks for the feedback,
Zefir

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Mon Feb 25 13:20:43 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Mon, 25 Feb 2019 19:20:43 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222135736.GD38601@meh.true.cz>
 <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>
Message-ID: <2289911.o2O57J6HAA@debian64>

On Friday, February 22, 2019 3:32:03 PM CET Dmitry Tunin wrote:
> ??, 22 ????. 2019 ?. ? 16:57, Petr ?tetiar <ynezz at true.cz>:
> >
> > Dmitry Tunin <hanipouspilot at gmail.com> [2019-02-22 16:13:52]:
> >
> > > What do you mean by "generalize"? Fix it on all platforms, or having
> > > common 10-ath9k-eeprom, 11-ath10k-caldata, etc files., or common code
> > > that will be used on all platforms in some other file?
> > > The first approach is obviously simple enough, but the second is not
> > > that easy, but doable.
> >
> > Simply moving common bits to some generic file which could be shared by all
> > platforms. Something like this for ar71xx, ath79 and ramips, untested.
> > [...]
> >
> > -- ynezz
> 

If I may add something to the discussion, that's probably not on everyone's
radar (apart from mtd-cal-data binding we all know). The plan for the future
is to make use of the upcoming mtd->nvmem provider brigde for both the
caldata and the mac-address update (interestingly enough, this started with
the ipq806x mac-patching thread:
<https://www.mail-archive.com/openwrt-devel at lists.openwrt.org/msg44616.html>
Only after playing with 950-call-of_get_mac_address-from-device.patch 
I stumbled onto the nvmem development).

Support for reading MTD via the nvmem API was added upstream by commit:
|commit c4dfa25ab307a277eafa7067cd927fbe4d9be4ba
|Author: Alban Bedel <albeu at free.fr>
|Date:   Tue Nov 13 15:01:10 2018 +0100
|
|    mtd: add support for reading MTD devices via the nvmem API
|    
|    Allow drivers that use the nvmem API to read data stored on MTD devices.
|    For this the mtd devices are registered as read-only NVMEM providers.
|    
|    We don't support device tree systems for now.

and

|commit 517f14d9cf3533d5ab4fded195ab6f80a92e378f
|Author: Bartosz Golaszewski <bgolaszewski at baylibre.com>
|Date:   Fri Nov 30 11:53:25 2018 +0000
|
|   nvmem: add new config option
|    
|   We want to add nvmem support for MTD. TI DaVinci is the first platform
|   that will be using it, but only in non-DT mode. In order not to
|   introduce any new interface to supporting of which we would have to
|   commit - add a new config option that tells nvmem not to use the DT
|   node of the parent device.
|    
|   This way we won't be creating nvmem devices corresponding with MTD
|   partitions defined in device tree. By default MTD will set this new
|   field to true.
|   
|   Once a set of bindings for MTD nvmem cells is agreed upon, we'll be
|   able to remove this option.

So the idea right now is that once upstream agreed upon whatever they want
to do with the binding, is to introduce that method and earmark it for new
devices (and people that want to convert their own device). The extraction
scripts will be left in place as a fallback mainly for devices that can't
use the nvmem provider (caldata in a ubi volume, reversed data, etc...).

> The only problem here is that not all platforms need it.
The problem I always have is more along the way that a patch should receive
some "on-device" testing. So I do look forward for patches that received a
"Tested-by:" tag or has positive replies from random/unlikely people. But
we sadly all know that this system has its limits.

Regards,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hanipouspilot at gmail.com  Mon Feb 25 13:31:16 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Mon, 25 Feb 2019 21:31:16 +0300
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <2289911.o2O57J6HAA@debian64>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222135736.GD38601@meh.true.cz>
 <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>
 <2289911.o2O57J6HAA@debian64>
Message-ID: <CANoib0HWUy5rUgpCMiDx-M4ExfvOcdNNpgOQ0Uogmsr0Bih3Hw@mail.gmail.com>

??, 25 ????. 2019 ?. ? 21:20, Christian Lamparter <chunkeey at gmail.com>:

> > The only problem here is that not all platforms need it.
> The problem I always have is more along the way that a patch should receive
> some "on-device" testing. So I do look forward for patches that received a
> "Tested-by:" tag or has positive replies from random/unlikely people. But
> we sadly all know that this system has its limits.

In this case mine is really tested on a device if that really matters
in this case;-)
I don't think there can be any problems with this simple approach.

Regarding "not all devices" I meant that that eeprom.sh when added to
global base-files, will be useless for many platforms.
I added DIR-825B1 to ath79 and it needed some hacks to get eeprom and
mac, there is no way to upstream this type of methods. But it is an
old device.

But without these patches many devices have disabled wireless on first
boot after flashing, because caldata is not ready in time. Fixing this
annoying behavior is important.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From zefir.kurtisi at neratec.com  Mon Feb 25 13:47:37 2019
From: zefir.kurtisi at neratec.com (Zefir Kurtisi)
Date: Mon, 25 Feb 2019 19:47:37 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <875zt7hh3b.fsf@miraculix.mork.no>
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
 <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
 <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>
 <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com>
 <875zt7hh3b.fsf@miraculix.mork.no>
Message-ID: <da5a0b52-0ceb-15ee-5438-50f47b530556@neratec.com>

On 2/25/19 7:13 PM, Bj?rn Mork wrote:
> Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:
> 
>> On 2/25/19 3:23 PM, Piotr Dymacz wrote:
>>> Hello Zefir,
>>>
>>> On 25.02.2019 15:08, Zefir Kurtisi wrote:
>>>> re-post, missed CC
>>>>
>>>> On 2/25/19 2:52 PM, Bj?rn Mork wrote:
>>>>> Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:
>>>>>
>>>>>> Some kernel modules have colliding symbol naming
>>>>>
>>>>> This is not true.
>>>>>
>>>>>
>>>>> Bj?rn
>>>>>
>>>>
>>>> Hm, I gave an example in the commit message and if it helps, I can post the
>>>> related log-output to prove my claim. But you might mean something else?
>>>
>>> But the 'qcawifi' is not part of the kernel and OpenWrt project.
>>>
>> The QSDK [1] is based on OpenWRT and is open source. During development of ath10k
>> (and earlier ath9k), qca-wifi code has been ported to the other side (and maybe
>> vice-versa). That's why some exported kernel symbols in the drivers overlap.
>>
>> If the argument to not consider the proposed change is based on politics (i.e. 'it
>> is for something not being part of OpenWRT core'), I'm fine dropping it and
>> keeping the change privately. But I'm pretty sure there are use cases where it
>> would be helpful to disable kernel-modules in the uci-default processing - as an
>> example of fully supported by OpenWRT, think of selecting mainline or
>> Candelatech's ath10k driver based on installed HW.
> 
> Sorry, I have no policy issues or anything like that.  I just pointed
> out that your commit message started with a false statement.  And I am
> sorry, but I tend to read such messages like a set of ANDed booleans, so
> I usually stop at the first false statement.  Nothing following it can
> make the message as a whole true.
> 
> OK?
> 
Hi Bj?rn,

sure, that's just the correct way to go and I fully agree that reading behind the
&& in 'if (0 && ...)' is a waste of time ;)

I already agreed Piotr's argumentation that such a core change might introduce
regressions and will therefore keep the commit in our private tree.

But to clarify your point: it is possible to have kernel modules with colliding
symbols. Just add two drivers which export 'foo()', both will be built and
installed, but loading the second will fail. At least this is my observation,
there are no mechanisms in place that prevent kernel symbols to be exported more
than once.


Cheers,
Zefir


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at adrianschmutzler.de  Mon Feb 25 14:00:23 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Mon, 25 Feb 2019 20:00:23 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <CANoib0HWUy5rUgpCMiDx-M4ExfvOcdNNpgOQ0Uogmsr0Bih3Hw@mail.gmail.com>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222135736.GD38601@meh.true.cz>
 <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>
 <2289911.o2O57J6HAA@debian64>
 <CANoib0HWUy5rUgpCMiDx-M4ExfvOcdNNpgOQ0Uogmsr0Bih3Hw@mail.gmail.com>
Message-ID: <01db01d4cd3c$5cca9860$165fc920$@adrianschmutzler.de>

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org] On
> Behalf Of Dmitry Tunin
> Sent: Montag, 25. Februar 2019 19:31
> To: Christian Lamparter <chunkeey at gmail.com>
> Cc: Adrian Schmutzler <freifunk at adrianschmutzler.de>; Petr ?tetiar
> <ynezz at true.cz>; openwrt-devel at lists.openwrt.org
> Subject: Re: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom
> extraction
> 
> ??, 25 ????. 2019 ?. ? 21:20, Christian Lamparter <chunkeey at gmail.com>:
> 
> > > The only problem here is that not all platforms need it.
> > The problem I always have is more along the way that a patch should receive
> > some "on-device" testing. So I do look forward for patches that received a
> > "Tested-by:" tag or has positive replies from random/unlikely people. But
> > we sadly all know that this system has its limits.
> 
> In this case mine is really tested on a device if that really matters
> in this case;-)
> I don't think there can be any problems with this simple approach.

Well, then let's take yours for the moment and I will build and test patches based on that during the week. (ar71xx/ath79)

Despite that, my patch 3/3 is platform-specific (and will thus not be subject to code merging) and might be merged right ahead, unless you want to wait for testing here, too.

BTW: Sorry for topposting, I'm not used to avoiding that.

Best

Adrian

> 
> Regarding "not all devices" I meant that that eeprom.sh when added to
> global base-files, will be useless for many platforms.
> I added DIR-825B1 to ath79 and it needed some hacks to get eeprom and
> mac, there is no way to upstream this type of methods. But it is an
> old device.
> 
> But without these patches many devices have disabled wireless on first
> boot after flashing, because caldata is not ready in time. Fixing this
> annoying behavior is important.
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/132ce209/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From bjorn at mork.no  Mon Feb 25 14:01:36 2019
From: bjorn at mork.no (=?utf-8?Q?Bj=C3=B8rn_Mork?=)
Date: Mon, 25 Feb 2019 20:01:36 +0100
Subject: [OpenWrt-Devel] [PATCH] base-files: move kmodloader below
 uci_apply_defaults
In-Reply-To: <da5a0b52-0ceb-15ee-5438-50f47b530556@neratec.com> (Zefir
 Kurtisi's message of "Mon, 25 Feb 2019 19:47:37 +0100")
References: <20190225133105.5305-1-zefir.kurtisi@neratec.com>
 <87o970gel6.fsf@miraculix.mork.no>
 <de1c4b0e-c873-7aba-6d3d-f9f13566f7bf@neratec.com>
 <0b39a1e2-acda-104f-2cee-3a1a2798fb33@gmail.com>
 <3d418e22-3017-a14c-7842-ba5bc649c347@neratec.com>
 <875zt7hh3b.fsf@miraculix.mork.no>
 <da5a0b52-0ceb-15ee-5438-50f47b530556@neratec.com>
Message-ID: <87zhqjg0a7.fsf@miraculix.mork.no>

Zefir Kurtisi <zefir.kurtisi at neratec.com> writes:

> But to clarify your point: it is possible to have kernel modules with colliding
> symbols. Just add two drivers which export 'foo()', both will be built and
> installed, but loading the second will fail. At least this is my observation,
> there are no mechanisms in place that prevent kernel symbols to be exported more
> than once.

It is possible to break anything. But I bet you can't get such breakage
into the kernel.  Not for very long, at least.


Bj?rn

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From rosenp at gmail.com  Mon Feb 25 14:09:27 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Mon, 25 Feb 2019 11:09:27 -0800
Subject: [OpenWrt-Devel] [PATCH v3] openssl: backport devcrypto changes
 from master
In-Reply-To: <mailman.23692.1551117680.2376.openwrt-devel@lists.openwrt.org>
References: <mailman.23089.1550777428.2376.openwrt-devel@lists.openwrt.org>
 <mailman.23692.1551117680.2376.openwrt-devel@lists.openwrt.org>
Message-ID: <CAKxU2N8yjPWhZF+cJmYg7NCQX5ZUu8DNy=wRfi3UfRKru3a1tA@mail.gmail.com>

On Mon, Feb 25, 2019 at 10:01 AM Eneas U de Queiroz via openwrt-devel
<openwrt-devel at lists.openwrt.org> wrote:
>
> The sender domain has a DMARC Reject/Quarantine policy which disallows
> sending mailing list messages using the original "From" header.
>
> To mitigate this problem, the original message has been wrapped
> automatically by the mailing list software.
>
>
> ---------- Forwarded message ----------
> From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> To: openwrt-devel at lists.openwrt.org
> Cc: Eneas U de Queiroz <cote2004-github at yahoo.com>
> Bcc:
> Date: Mon, 25 Feb 2019 15:00:58 -0300
> Subject: [PATCH v3] openssl: backport devcrypto changes from master
> The patches to the /dev/crypto engine were commited to openssl master,
> and will be in the next major version (3.0).
This version does not apply to master.
>
> Changes:
> - Optimization in computing a digest in one operation, saving an ioctl
> - Runtime configuration options for the choice of algorithms to use
> - Command to dump useful information about the algorithms supported by
>   the engine and the system.
> - Build the devcrypto engine as a dynamic module, like other engines.
>
> The devcrypto engine is built as a separate package by default, but
> options were added to allow building the engines into the main library.
>
> Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> ---
> This should only be merged after
> openssl: fix devcrypto engine md blocksize
>
> I forgot to mention it before, but this was run-tested on Linksys
> WRT3200ACM, WRT610N (software-only), & ASUS RT-N56U (software-only),
> running nginx, bind, unbound, and now openssh.
>
> Changes:
> v3: remove PKG_BUILD_DEPENDS:=cryptodev-linux, as it has been properly
>     added to DEPENDS now.
>
> v2: accommodate changes from openssl: fix devcrypto engine md blocksize
>     increased PKG_RELEASE
>
> diff --git a/package/libs/openssl/Config.in b/package/libs/openssl/Config.in
> index 3ad8a66b9e..235f38e787 100644
> --- a/package/libs/openssl/Config.in
> +++ b/package/libs/openssl/Config.in
> @@ -253,18 +253,41 @@ config OPENSSL_ENGINE
>                 Note that you need to enable KERNEL_AIO to be able to build the
>                 afalg engine package.
>
> -config OPENSSL_ENGINE_CRYPTO
> +config OPENSSL_ENGINE_BUILTIN
> +       bool "Build chosen engines into libcrypto"
> +       depends on OPENSSL_ENGINE
> +       help
> +               This builds all chosen engines into libcrypto.so, instead of building
> +               them as dynamic engines in separate packages.
> +               The benefit of building the engines into libcrypto is that they won't
> +               require any configuration to be used by default.
> +
> +config OPENSSL_ENGINE_BUILTIN_AFALG
>         bool
> -       select OPENSSL_ENGINE
> -       select PACKAGE_kmod-cryptodev
> +       prompt "Acceleration support through AF_ALG sockets engine"
> +       depends on OPENSSL_ENGINE_BUILTIN && KERNEL_AIO && !LINUX_3_18
>         select PACKAGE_libopenssl-conf
> +       help
> +               This enables use of hardware acceleration through the
> +               AF_ALG kenrel interface.
> +
> +config OPENSSL_ENGINE_BUILTIN_DEVCRYPTO
> +       bool
>         prompt "Acceleration support through /dev/crypto"
> +       depends on OPENSSL_ENGINE_BUILTIN
> +       select PACKAGE_libopenssl-conf
>         help
>                 This enables use of hardware acceleration through OpenBSD
>                 Cryptodev API (/dev/crypto) interface.
> -               You must install kmod-cryptodev (under Kernel modules, Cryptographic
> -               API modules) for /dev/crypto to show up and use hardware
> -               acceleration; otherwise it falls back to software.
> +
> +config OPENSSL_ENGINE_BUILTIN_PADLOCK
> +       bool
> +       prompt "VIA Padlock Acceleration support engine"
> +       depends on OPENSSL_ENGINE_BUILTIN && TARGET_x86
> +       select PACKAGE_libopenssl-conf
> +       help
> +               This enables use of hardware acceleration through the
> +               VIA Padlock module.
>
>  config OPENSSL_WITH_ASYNC
>         bool
> diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile
> index ab32668cb9..a7dbbae2b1 100644
> --- a/package/libs/openssl/Makefile
> +++ b/package/libs/openssl/Makefile
> @@ -11,12 +11,11 @@ PKG_NAME:=openssl
>  PKG_BASE:=1.1.1
>  PKG_BUGFIX:=a
>  PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX)
> -PKG_RELEASE:=3
> +PKG_RELEASE:=4
>  PKG_USE_MIPS16:=0
>  ENGINES_DIR=engines-1.1
>
>  PKG_BUILD_PARALLEL:=0
> -PKG_BUILD_DEPENDS:=cryptodev-linux
>
>  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
>  PKG_SOURCE_URL:= \
> @@ -32,7 +31,10 @@ PKG_LICENSE_FILES:=LICENSE
>  PKG_CPE_ID:=cpe:/a:openssl:openssl
>  PKG_CONFIG_DEPENDS:= \
>         CONFIG_OPENSSL_ENGINE \
> -       CONFIG_OPENSSL_ENGINE_CRYPTO \
> +       CONFIG_OPENSSL_ENGINE_BUILTIN \
> +       CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG \
> +       CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO \
> +       CONFIG_OPENSSL_ENGINE_BUILTIN_PADLOCK \
>         CONFIG_OPENSSL_NO_DEPRECATED \
>         CONFIG_OPENSSL_OPTIMIZE_SPEED \
>         CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM \
> @@ -89,7 +91,10 @@ endef
>  define Package/libopenssl
>  $(call Package/openssl/Default)
>    SUBMENU:=SSL
> -  DEPENDS:=+OPENSSL_WITH_COMPRESSION:zlib
> +  DEPENDS:=+OPENSSL_WITH_COMPRESSION:zlib \
> +          +OPENSSL_ENGINE_BUILTIN_AFALG:kmod-crypto-user \
> +          +OPENSSL_ENGINE_BUILTIN_DEVCRYPTO:kmod-cryptodev \
> +          +OPENSSL_ENGINE_BUILTIN_PADLOCK:kmod-crypto-hw-padlock
>    TITLE+= (libraries)
>    ABI_VERSION:=1.1
>    MENU:=1
> @@ -134,7 +139,7 @@ define Package/libopenssl-afalg
>    SUBMENU:=SSL
>    TITLE:=AFALG hardware acceleration engine
>    DEPENDS:=libopenssl @OPENSSL_ENGINE @KERNEL_AIO @!LINUX_3_18 +kmod-crypto-user \
> -          +libopenssl-conf
> +          +libopenssl-conf @!OPENSSL_ENGINE_BUILTIN
>  endef
>
>  define Package/libopenssl-afalg/description
> @@ -145,12 +150,28 @@ See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-
>  The engine_id is "afalg"
>  endef
>
> +define Package/libopenssl-devcrypto
> +  $(call Package/openssl/Default)
> +  SUBMENU:=SSL
> +  TITLE:=/dev/crypto hardware acceleration engine
> +  DEPENDS:=libopenssl @OPENSSL_ENGINE +kmod-cryptodev +libopenssl-conf \
> +          @!OPENSSL_ENGINE_BUILTIN
> +endef
> +
> +define Package/libopenssl-devcrypto/description
> +This package adds an engine that enables hardware acceleration
> +through the /dev/crypto kernel interface.
> +To use it, you need to configure the engine in /etc/ssl/openssl.cnf
> +See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-Module
> +The engine_id is "devcrypto"
> +endef
> +
>  define Package/libopenssl-padlock
>    $(call Package/openssl/Default)
>    SUBMENU:=SSL
>    TITLE:=VIA Padlock hardware acceleration engine
>    DEPENDS:=libopenssl @OPENSSL_ENGINE @TARGET_x86 +kmod-crypto-hw-padlock \
> -          +libopenssl-conf
> +          +libopenssl-conf @!OPENSSL_ENGINE_BUILTIN
>  endef
>
>  define Package/libopenssl-padlock/description
> @@ -241,14 +262,27 @@ else
>  endif
>
>  ifdef CONFIG_OPENSSL_ENGINE
> -  ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
> -    OPENSSL_OPTIONS += enable-devcryptoeng
> -  endif
> -  ifndef CONFIG_PACKAGE_libopenssl-afalg
> -    OPENSSL_OPTIONS += no-afalgeng
> -  endif
> -  ifndef CONFIG_PACKAGE_libopenssl-padlock
> -    OPENSSL_OPTIONS += no-hw-padlock
> +  ifdef CONFIG_OPENSSL_ENGINE_BUILTIN
> +    OPENSSL_OPTIONS += disable-dynamic-engine
> +    ifndef CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG
> +      OPENSSL_OPTIONS += no-afalgeng
> +    endif
> +    ifdef CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO
> +      OPENSSL_OPTIONS += enable-devcryptoeng
> +    endif
> +    ifndef CONFIG_OPENSSL_ENGINE_BUILTIN_PADLOCK
> +      OPENSSL_OPTIONS += no-hw-padlock
> +    endif
> +  else
> +    ifdef CONFIG_PACKAGE_libopenssl-devcrypto
> +      OPENSSL_OPTIONS += enable-devcryptoeng
> +    endif
> +    ifndef CONFIG_PACKAGE_libopenssl-afalg
> +      OPENSSL_OPTIONS += no-afalgeng
> +    endif
> +    ifndef CONFIG_PACKAGE_libopenssl-padlock
> +      OPENSSL_OPTIONS += no-hw-padlock
> +    endif
>    endif
>  else
>    OPENSSL_OPTIONS += no-engine
> @@ -364,6 +398,11 @@ define Package/libopenssl-afalg/install
>         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/afalg.so $(1)/usr/lib/$(ENGINES_DIR)
>  endef
>
> +define Package/libopenssl-devcrypto/install
> +       $(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
> +       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/devcrypto.so $(1)/usr/lib/$(ENGINES_DIR)
> +endef
> +
>  define Package/libopenssl-padlock/install
>         $(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
>         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/*padlock.so $(1)/usr/lib/$(ENGINES_DIR)
> @@ -372,5 +411,6 @@ endef
>  $(eval $(call BuildPackage,libopenssl))
>  $(eval $(call BuildPackage,libopenssl-conf))
>  $(eval $(call BuildPackage,libopenssl-afalg))
> +$(eval $(call BuildPackage,libopenssl-devcrypto))
>  $(eval $(call BuildPackage,libopenssl-padlock))
>  $(eval $(call BuildPackage,openssl-util))
> diff --git a/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch b/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch
> new file mode 100644
> index 0000000000..9ea3aef6ec
> --- /dev/null
> +++ b/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch
> @@ -0,0 +1,60 @@
> +From c50879688edc862213b19ae9993a4ac037af4781 Mon Sep 17 00:00:00 2001
> +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +Date: Mon, 5 Nov 2018 15:54:17 -0200
> +Subject: [PATCH 1/4] eng_devcrypto: save ioctl if EVP_MD_..FLAG_ONESHOT
> +
> +Since each ioctl causes a context switch, slowing things down, if
> +EVP_MD_CTX_FLAG_ONESHOT is set, then:
> + - call the ioctl in digest_update, saving the result; and
> + - just copy the result in digest_final, instead of using another ioctl.
> +
> +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +
> +Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
> +Reviewed-by: Richard Levitte <levitte at openssl.org>
> +(Merged from https://github.com/openssl/openssl/pull/7585)
> +
> +diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
> +index 11ec4393e7..f96cba70d7 100644
> +--- a/crypto/engine/eng_devcrypto.c
> ++++ b/crypto/engine/eng_devcrypto.c
> +@@ -460,6 +460,7 @@ struct digest_ctx {
> +     struct session_op sess;
> +     /* This signals that the init function was called, not that it succeeded. */
> +     int init_called;
> ++    unsigned char digest_res[HASH_MAX_LEN];
> + };
> +
> + static const struct digest_data_st {
> +@@ -562,12 +563,15 @@ static int digest_update(EVP_MD_CTX *ctx, const void *data, size_t count)
> +     if (digest_ctx == NULL)
> +         return 0;
> +
> +-    if (digest_op(digest_ctx, data, count, NULL, COP_FLAG_UPDATE) < 0) {
> +-        SYSerr(SYS_F_IOCTL, errno);
> +-        return 0;
> ++    if (EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_ONESHOT)) {
> ++        if (digest_op(digest_ctx, data, count, digest_ctx->digest_res, 0) >= 0)
> ++            return 1;
> ++    } else if (digest_op(digest_ctx, data, count, NULL, COP_FLAG_UPDATE) >= 0) {
> ++        return 1;
> +     }
> +
> +-    return 1;
> ++    SYSerr(SYS_F_IOCTL, errno);
> ++    return 0;
> + }
> +
> + static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
> +@@ -577,7 +581,10 @@ static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
> +
> +     if (md == NULL || digest_ctx == NULL)
> +         return 0;
> +-    if (digest_op(digest_ctx, NULL, 0, md, COP_FLAG_FINAL) < 0) {
> ++
> ++    if (EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_ONESHOT)) {
> ++        memcpy(md, digest_ctx->digest_res, EVP_MD_CTX_size(ctx));
> ++    } else if (digest_op(digest_ctx, NULL, 0, md, COP_FLAG_FINAL) < 0) {
> +         SYSerr(SYS_F_IOCTL, errno);
> +         return 0;
> +     }
> diff --git a/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch b/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch
> new file mode 100644
> index 0000000000..bc716a92e2
> --- /dev/null
> +++ b/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch
> @@ -0,0 +1,569 @@
> +From f9e4bf71b6ecff66a19a3594c870cd2f58e23af6 Mon Sep 17 00:00:00 2001
> +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +Date: Sat, 3 Nov 2018 15:41:10 -0300
> +Subject: [PATCH 2/4] eng_devcrypto: add configuration options
> +
> +USE_SOFTDRIVERS: whether to use software (not accelerated) drivers
> +CIPHERS: list of ciphers to enable
> +DIGESTS: list of digests to enable
> +
> +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +
> +Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
> +Reviewed-by: Richard Levitte <levitte at openssl.org>
> +(Merged from https://github.com/openssl/openssl/pull/7585)
> +
> +diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
> +index f96cba70d7..0f0aee6b57 100644
> +--- a/crypto/engine/eng_devcrypto.c
> ++++ b/crypto/engine/eng_devcrypto.c
> +@@ -16,6 +16,7 @@
> + #include <unistd.h>
> + #include <assert.h>
> +
> ++#include <openssl/conf.h>
> + #include <openssl/evp.h>
> + #include <openssl/err.h>
> + #include <openssl/engine.h>
> +@@ -34,6 +35,30 @@
> +  * saner...  why re-open /dev/crypto for every session?
> +  */
> + static int cfd;
> ++#define DEVCRYPTO_REQUIRE_ACCELERATED 0 /* require confirmation of acceleration */
> ++#define DEVCRYPTO_USE_SOFTWARE        1 /* allow software drivers */
> ++#define DEVCRYPTO_REJECT_SOFTWARE     2 /* only disallow confirmed software drivers */
> ++
> ++#define DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS DEVCRYPTO_REJECT_SOFTWARE
> ++static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
> ++
> ++/*
> ++ * cipher/digest status & acceleration definitions
> ++ * Make sure the defaults are set to 0
> ++ */
> ++struct driver_info_st {
> ++    enum devcrypto_status_t {
> ++        DEVCRYPTO_STATUS_UNUSABLE       = -1, /* session open failed */
> ++        DEVCRYPTO_STATUS_UNKNOWN        =  0, /* not tested yet */
> ++        DEVCRYPTO_STATUS_USABLE         =  1  /* algo can be used */
> ++    } status;
> ++
> ++    enum devcrypto_accelerated_t {
> ++        DEVCRYPTO_NOT_ACCELERATED       = -1, /* software implemented */
> ++        DEVCRYPTO_ACCELERATION_UNKNOWN  =  0, /* acceleration support unkown */
> ++        DEVCRYPTO_ACCELERATED           =  1  /* hardware accelerated */
> ++    } accelerated;
> ++};
> +
> + static int clean_devcrypto_session(struct session_op *sess) {
> +     if (ioctl(cfd, CIOCFSESSION, &sess->ses) < 0) {
> +@@ -117,13 +142,22 @@ static const struct cipher_data_st {
> + #endif
> + };
> +
> +-static size_t get_cipher_data_index(int nid)
> ++static size_t find_cipher_data_index(int nid)
> + {
> +     size_t i;
> +
> +     for (i = 0; i < OSSL_NELEM(cipher_data); i++)
> +         if (nid == cipher_data[i].nid)
> +             return i;
> ++    return (size_t)-1;
> ++}
> ++
> ++static size_t get_cipher_data_index(int nid)
> ++{
> ++    size_t i = find_cipher_data_index(nid);
> ++
> ++    if (i != (size_t)-1)
> ++        return i;
> +
> +     /*
> +      * Code further down must make sure that only NIDs in the table above
> +@@ -332,19 +366,40 @@ static int cipher_cleanup(EVP_CIPHER_CTX *ctx)
> + }
> +
> + /*
> +- * Keep a table of known nids and associated methods.
> ++ * Keep tables of known nids, associated methods, selected ciphers, and driver
> ++ * info.
> +  * Note that known_cipher_nids[] isn't necessarily indexed the same way as
> +- * cipher_data[] above, which known_cipher_methods[] is.
> ++ * cipher_data[] above, which the other tables are.
> +  */
> + static int known_cipher_nids[OSSL_NELEM(cipher_data)];
> + static int known_cipher_nids_amount = -1; /* -1 indicates not yet initialised */
> + static EVP_CIPHER *known_cipher_methods[OSSL_NELEM(cipher_data)] = { NULL, };
> ++static int selected_ciphers[OSSL_NELEM(cipher_data)];
> ++static struct driver_info_st cipher_driver_info[OSSL_NELEM(cipher_data)];
> ++
> ++
> ++static int devcrypto_test_cipher(size_t cipher_data_index)
> ++{
> ++    return (cipher_driver_info[cipher_data_index].status == DEVCRYPTO_STATUS_USABLE
> ++            && selected_ciphers[cipher_data_index] == 1
> ++            && (cipher_driver_info[cipher_data_index].accelerated
> ++                    == DEVCRYPTO_ACCELERATED
> ++                || use_softdrivers == DEVCRYPTO_USE_SOFTWARE
> ++                || (cipher_driver_info[cipher_data_index].accelerated
> ++                        != DEVCRYPTO_NOT_ACCELERATED
> ++                    && use_softdrivers == DEVCRYPTO_REJECT_SOFTWARE)));
> ++}
> +
> + static void prepare_cipher_methods(void)
> + {
> +     size_t i;
> +     struct session_op sess;
> +     unsigned long cipher_mode;
> ++#ifdef CIOCGSESSINFO
> ++    struct session_info_op siop;
> ++#endif
> ++
> ++    memset(&cipher_driver_info, 0, sizeof(cipher_driver_info));
> +
> +     memset(&sess, 0, sizeof(sess));
> +     sess.key = (void *)"01234567890123456789012345678901234567890123456789";
> +@@ -352,15 +407,16 @@ static void prepare_cipher_methods(void)
> +     for (i = 0, known_cipher_nids_amount = 0;
> +          i < OSSL_NELEM(cipher_data); i++) {
> +
> ++        selected_ciphers[i] = 1;
> +         /*
> +-         * Check that the algo is really availably by trying to open and close
> +-         * a session.
> ++         * Check that the cipher is usable
> +          */
> +         sess.cipher = cipher_data[i].devcryptoid;
> +         sess.keylen = cipher_data[i].keylen;
> +-        if (ioctl(cfd, CIOCGSESSION, &sess) < 0
> +-            || ioctl(cfd, CIOCFSESSION, &sess.ses) < 0)
> ++        if (ioctl(cfd, CIOCGSESSION, &sess) < 0) {
> ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> +             continue;
> ++        }
> +
> +         cipher_mode = cipher_data[i].flags & EVP_CIPH_MODE;
> +
> +@@ -386,15 +442,41 @@ static void prepare_cipher_methods(void)
> +                                             cipher_cleanup)
> +             || !EVP_CIPHER_meth_set_impl_ctx_size(known_cipher_methods[i],
> +                                                   sizeof(struct cipher_ctx))) {
> ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> +             EVP_CIPHER_meth_free(known_cipher_methods[i]);
> +             known_cipher_methods[i] = NULL;
> +         } else {
> ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
> ++#ifdef CIOCGSESSINFO
> ++            siop.ses = sess.ses;
> ++            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> ++                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> ++            else if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
> ++                cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> ++            else
> ++                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> ++#endif /* CIOCGSESSINFO */
> ++        }
> ++        ioctl(cfd, CIOCFSESSION, &sess.ses);
> ++        if (devcrypto_test_cipher(i)) {
> +             known_cipher_nids[known_cipher_nids_amount++] =
> +                 cipher_data[i].nid;
> +         }
> +     }
> + }
> +
> ++static void rebuild_known_cipher_nids(ENGINE *e)
> ++{
> ++    size_t i;
> ++
> ++    for (i = 0, known_cipher_nids_amount = 0; i < OSSL_NELEM(cipher_data); i++) {
> ++        if (devcrypto_test_cipher(i))
> ++            known_cipher_nids[known_cipher_nids_amount++] = cipher_data[i].nid;
> ++    }
> ++    ENGINE_unregister_ciphers(e);
> ++    ENGINE_register_ciphers(e);
> ++}
> ++
> + static const EVP_CIPHER *get_cipher_method(int nid)
> + {
> +     size_t i = get_cipher_data_index(nid);
> +@@ -437,6 +519,36 @@ static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
> +     return *cipher != NULL;
> + }
> +
> ++static void devcrypto_select_all_ciphers(int *cipher_list)
> ++{
> ++    size_t i;
> ++
> ++    for (i = 0; i < OSSL_NELEM(cipher_data); i++)
> ++        cipher_list[i] = 1;
> ++}
> ++
> ++static int cryptodev_select_cipher_cb(const char *str, int len, void *usr)
> ++{
> ++    int *cipher_list = (int *)usr;
> ++    char *name;
> ++    const EVP_CIPHER *EVP;
> ++    size_t i;
> ++
> ++    if (len == 0)
> ++        return 1;
> ++    if (usr == NULL || (name = OPENSSL_strndup(str, len)) == NULL)
> ++        return 0;
> ++    EVP = EVP_get_cipherbyname(name);
> ++    if (EVP == NULL)
> ++        fprintf(stderr, "devcrypto: unknown cipher %s\n", name);
> ++    else if ((i = find_cipher_data_index(EVP_CIPHER_nid(EVP))) != (size_t)-1)
> ++        cipher_list[i] = 1;
> ++    else
> ++        fprintf(stderr, "devcrypto: cipher %s not available\n", name);
> ++    OPENSSL_free(name);
> ++    return 1;
> ++}
> ++
> + /*
> +  * We only support digests if the cryptodev implementation supports multiple
> +  * data updates and session copying.  Otherwise, we would be forced to maintain
> +@@ -492,13 +604,22 @@ static const struct digest_data_st {
> + #endif
> + };
> +
> +-static size_t get_digest_data_index(int nid)
> ++static size_t find_digest_data_index(int nid)
> + {
> +     size_t i;
> +
> +     for (i = 0; i < OSSL_NELEM(digest_data); i++)
> +         if (nid == digest_data[i].nid)
> +             return i;
> ++    return (size_t)-1;
> ++}
> ++
> ++static size_t get_digest_data_index(int nid)
> ++{
> ++    size_t i = find_digest_data_index(nid);
> ++
> ++    if (i != (size_t)-1)
> ++        return i;
> +
> +     /*
> +      * Code further down must make sure that only NIDs in the table above
> +@@ -515,8 +636,8 @@ static const struct digest_data_st *get_digest_data(int nid)
> + }
> +
> + /*
> +- * Following are the four necessary functions to map OpenSSL functionality
> +- * with cryptodev.
> ++ * Following are the five necessary functions to map OpenSSL functionality
> ++ * with cryptodev: init, update, final, cleanup, and copy.
> +  */
> +
> + static int digest_init(EVP_MD_CTX *ctx)
> +@@ -628,52 +749,94 @@ static int digest_cleanup(EVP_MD_CTX *ctx)
> +     return clean_devcrypto_session(&digest_ctx->sess);
> + }
> +
> +-static int devcrypto_test_digest(size_t digest_data_index)
> +-{
> +-    struct session_op sess1, sess2;
> +-    struct cphash_op cphash;
> +-    int ret=0;
> +-
> +-    memset(&sess1, 0, sizeof(sess1));
> +-    memset(&sess2, 0, sizeof(sess2));
> +-    sess1.mac = digest_data[digest_data_index].devcryptoid;
> +-    if (ioctl(cfd, CIOCGSESSION, &sess1) < 0)
> +-        return 0;
> +-    /* Make sure the driver is capable of hash state copy */
> +-    sess2.mac = sess1.mac;
> +-    if (ioctl(cfd, CIOCGSESSION, &sess2) >= 0) {
> +-        cphash.src_ses = sess1.ses;
> +-        cphash.dst_ses = sess2.ses;
> +-        if (ioctl(cfd, CIOCCPHASH, &cphash) >= 0)
> +-            ret = 1;
> +-        ioctl(cfd, CIOCFSESSION, &sess2.ses);
> +-    }
> +-    ioctl(cfd, CIOCFSESSION, &sess1.ses);
> +-    return ret;
> +-}
> +-
> + /*
> +- * Keep a table of known nids and associated methods.
> ++ * Keep tables of known nids, associated methods, selected digests, and
> ++ * driver info.
> +  * Note that known_digest_nids[] isn't necessarily indexed the same way as
> +- * digest_data[] above, which known_digest_methods[] is.
> ++ * digest_data[] above, which the other tables are.
> +  */
> + static int known_digest_nids[OSSL_NELEM(digest_data)];
> + static int known_digest_nids_amount = -1; /* -1 indicates not yet initialised */
> + static EVP_MD *known_digest_methods[OSSL_NELEM(digest_data)] = { NULL, };
> ++static int selected_digests[OSSL_NELEM(digest_data)];
> ++static struct driver_info_st digest_driver_info[OSSL_NELEM(digest_data)];
> ++
> ++static int devcrypto_test_digest(size_t digest_data_index)
> ++{
> ++    return (digest_driver_info[digest_data_index].status == DEVCRYPTO_STATUS_USABLE
> ++            && selected_digests[digest_data_index] == 1
> ++            && (digest_driver_info[digest_data_index].accelerated
> ++                    == DEVCRYPTO_ACCELERATED
> ++                || use_softdrivers == DEVCRYPTO_USE_SOFTWARE
> ++                || (digest_driver_info[digest_data_index].accelerated
> ++                        != DEVCRYPTO_NOT_ACCELERATED
> ++                    && use_softdrivers == DEVCRYPTO_REJECT_SOFTWARE)));
> ++}
> ++
> ++static void rebuild_known_digest_nids(ENGINE *e)
> ++{
> ++    size_t i;
> ++
> ++    for (i = 0, known_digest_nids_amount = 0; i < OSSL_NELEM(digest_data); i++) {
> ++        if (devcrypto_test_digest(i))
> ++            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
> ++    }
> ++    ENGINE_unregister_digests(e);
> ++    ENGINE_register_digests(e);
> ++}
> +
> + static void prepare_digest_methods(void)
> + {
> +     size_t i;
> ++    struct session_op sess1, sess2;
> ++#ifdef CIOCGSESSINFO
> ++    struct session_info_op siop;
> ++#endif
> ++    struct cphash_op cphash;
> ++
> ++    memset(&digest_driver_info, 0, sizeof(digest_driver_info));
> ++
> ++    memset(&sess1, 0, sizeof(sess1));
> ++    memset(&sess2, 0, sizeof(sess2));
> +
> +     for (i = 0, known_digest_nids_amount = 0; i < OSSL_NELEM(digest_data);
> +          i++) {
> +
> ++        selected_digests[i] = 1;
> ++
> +         /*
> +-         * Check that the algo is usable
> ++         * Check that the digest is usable
> +          */
> +-        if (!devcrypto_test_digest(i))
> +-            continue;
> ++        sess1.mac = digest_data[i].devcryptoid;
> ++        sess2.ses = 0;
> ++        if (ioctl(cfd, CIOCGSESSION, &sess1) < 0) {
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            goto finish;
> ++        }
> +
> ++#ifdef CIOCGSESSINFO
> ++        /* gather hardware acceleration info from the driver */
> ++        siop.ses = sess1.ses;
> ++        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> ++            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> ++        else if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
> ++            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> ++        else
> ++            digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> ++#endif
> ++
> ++        /* digest must be capable of hash state copy */
> ++        sess2.mac = sess1.mac;
> ++        if (ioctl(cfd, CIOCGSESSION, &sess2) < 0) {
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            goto finish;
> ++        }
> ++        cphash.src_ses = sess1.ses;
> ++        cphash.dst_ses = sess2.ses;
> ++        if (ioctl(cfd, CIOCCPHASH, &cphash) < 0) {
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            goto finish;
> ++        }
> +         if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid,
> +                                                        NID_undef)) == NULL
> +             || !EVP_MD_meth_set_input_blocksize(known_digest_methods[i],
> +@@ -687,11 +850,18 @@ static void prepare_digest_methods(void)
> +             || !EVP_MD_meth_set_cleanup(known_digest_methods[i], digest_cleanup)
> +             || !EVP_MD_meth_set_app_datasize(known_digest_methods[i],
> +                                              sizeof(struct digest_ctx))) {
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> +             EVP_MD_meth_free(known_digest_methods[i]);
> +             known_digest_methods[i] = NULL;
> +-        } else {
> +-            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
> ++            goto finish;
> +         }
> ++        digest_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
> ++finish:
> ++        ioctl(cfd, CIOCFSESSION, &sess1.ses);
> ++        if (sess2.ses != 0)
> ++            ioctl(cfd, CIOCFSESSION, &sess2.ses);
> ++        if (devcrypto_test_digest(i))
> ++            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
> +     }
> + }
> +
> +@@ -737,8 +907,154 @@ static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
> +     return *digest != NULL;
> + }
> +
> ++static void devcrypto_select_all_digests(int *digest_list)
> ++{
> ++    size_t i;
> ++
> ++    for (i = 0; i < OSSL_NELEM(digest_data); i++)
> ++        digest_list[i] = 1;
> ++}
> ++
> ++static int cryptodev_select_digest_cb(const char *str, int len, void *usr)
> ++{
> ++    int *digest_list = (int *)usr;
> ++    char *name;
> ++    const EVP_MD *EVP;
> ++    size_t i;
> ++
> ++    if (len == 0)
> ++        return 1;
> ++    if (usr == NULL || (name = OPENSSL_strndup(str, len)) == NULL)
> ++        return 0;
> ++    EVP = EVP_get_digestbyname(name);
> ++    if (EVP == NULL)
> ++        fprintf(stderr, "devcrypto: unknown digest %s\n", name);
> ++    else if ((i = find_digest_data_index(EVP_MD_type(EVP))) != (size_t)-1)
> ++        digest_list[i] = 1;
> ++    else
> ++        fprintf(stderr, "devcrypto: digest %s not available\n", name);
> ++    OPENSSL_free(name);
> ++    return 1;
> ++}
> ++
> ++#endif
> ++
> ++/******************************************************************************
> ++ *
> ++ * CONTROL COMMANDS
> ++ *
> ++ *****/
> ++
> ++#define DEVCRYPTO_CMD_USE_SOFTDRIVERS ENGINE_CMD_BASE
> ++#define DEVCRYPTO_CMD_CIPHERS (ENGINE_CMD_BASE + 1)
> ++#define DEVCRYPTO_CMD_DIGESTS (ENGINE_CMD_BASE + 2)
> ++#define DEVCRYPTO_CMD_DUMP_INFO (ENGINE_CMD_BASE + 3)
> ++
> ++/* Helper macros for CPP string composition */
> ++#ifndef OPENSSL_MSTR
> ++# define OPENSSL_MSTR_HELPER(x) #x
> ++# define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x)
> ++#endif
> ++
> ++static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
> ++#ifdef CIOCGSESSINFO
> ++   {DEVCRYPTO_CMD_USE_SOFTDRIVERS,
> ++    "USE_SOFTDRIVERS",
> ++    "specifies whether to use software (not accelerated) drivers ("
> ++        OPENSSL_MSTR(DEVCRYPTO_REQUIRE_ACCELERATED) "=use only accelerated drivers, "
> ++        OPENSSL_MSTR(DEVCRYPTO_USE_SOFTWARE) "=allow all drivers, "
> ++        OPENSSL_MSTR(DEVCRYPTO_REJECT_SOFTWARE)
> ++        "=use if acceleration can't be determined) [default="
> ++        OPENSSL_MSTR(DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS) "]",
> ++    ENGINE_CMD_FLAG_NUMERIC},
> ++#endif
> ++
> ++   {DEVCRYPTO_CMD_CIPHERS,
> ++    "CIPHERS",
> ++    "either ALL, NONE, or a comma-separated list of ciphers to enable [default=ALL]",
> ++    ENGINE_CMD_FLAG_STRING},
> ++
> ++#ifdef IMPLEMENT_DIGEST
> ++   {DEVCRYPTO_CMD_DIGESTS,
> ++    "DIGESTS",
> ++    "either ALL, NONE, or a comma-separated list of digests to enable [default=ALL]",
> ++    ENGINE_CMD_FLAG_STRING},
> + #endif
> +
> ++   {0, NULL, NULL, 0}
> ++};
> ++
> ++static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
> ++{
> ++    int *new_list;
> ++    switch (cmd) {
> ++#ifdef CIOCGSESSINFO
> ++    case DEVCRYPTO_CMD_USE_SOFTDRIVERS:
> ++        switch (i) {
> ++        case DEVCRYPTO_REQUIRE_ACCELERATED:
> ++        case DEVCRYPTO_USE_SOFTWARE:
> ++        case DEVCRYPTO_REJECT_SOFTWARE:
> ++            break;
> ++        default:
> ++            fprintf(stderr, "devcrypto: invalid value (%ld) for USE_SOFTDRIVERS\n", i);
> ++            return 0;
> ++        }
> ++        if (use_softdrivers == i)
> ++            return 1;
> ++        use_softdrivers = i;
> ++#ifdef IMPLEMENT_DIGEST
> ++        rebuild_known_digest_nids(e);
> ++#endif
> ++        rebuild_known_cipher_nids(e);
> ++        return 1;
> ++#endif /* CIOCGSESSINFO */
> ++
> ++    case DEVCRYPTO_CMD_CIPHERS:
> ++        if (p == NULL)
> ++            return 1;
> ++        if (strcasecmp((const char *)p, "ALL") == 0) {
> ++            devcrypto_select_all_ciphers(selected_ciphers);
> ++        } else if (strcasecmp((const char*)p, "NONE") == 0) {
> ++            memset(selected_ciphers, 0, sizeof(selected_ciphers));
> ++        } else {
> ++            new_list=OPENSSL_zalloc(sizeof(selected_ciphers));
> ++            if (!CONF_parse_list(p, ',', 1, cryptodev_select_cipher_cb, new_list)) {
> ++                OPENSSL_free(new_list);
> ++                return 0;
> ++            }
> ++            memcpy(selected_ciphers, new_list, sizeof(selected_ciphers));
> ++            OPENSSL_free(new_list);
> ++        }
> ++        rebuild_known_cipher_nids(e);
> ++        return 1;
> ++
> ++#ifdef IMPLEMENT_DIGEST
> ++    case DEVCRYPTO_CMD_DIGESTS:
> ++        if (p == NULL)
> ++            return 1;
> ++        if (strcasecmp((const char *)p, "ALL") == 0) {
> ++            devcrypto_select_all_digests(selected_digests);
> ++        } else if (strcasecmp((const char*)p, "NONE") == 0) {
> ++            memset(selected_digests, 0, sizeof(selected_digests));
> ++        } else {
> ++            new_list=OPENSSL_zalloc(sizeof(selected_digests));
> ++            if (!CONF_parse_list(p, ',', 1, cryptodev_select_digest_cb, new_list)) {
> ++                OPENSSL_free(new_list);
> ++                return 0;
> ++            }
> ++            memcpy(selected_digests, new_list, sizeof(selected_digests));
> ++            OPENSSL_free(new_list);
> ++        }
> ++        rebuild_known_digest_nids(e);
> ++        return 1;
> ++#endif /* IMPLEMENT_DIGEST */
> ++
> ++    default:
> ++        break;
> ++    }
> ++    return 0;
> ++}
> ++
> + /******************************************************************************
> +  *
> +  * LOAD / UNLOAD
> +@@ -788,6 +1104,8 @@ void engine_load_devcrypto_int()
> +
> +     if (!ENGINE_set_id(e, "devcrypto")
> +         || !ENGINE_set_name(e, "/dev/crypto engine")
> ++        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
> ++        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl)
> +
> + /*
> +  * Asymmetric ciphers aren't well supported with /dev/crypto.  Among the BSD
> diff --git a/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch b/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch
> new file mode 100644
> index 0000000000..4e3b8597bb
> --- /dev/null
> +++ b/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch
> @@ -0,0 +1,275 @@
> +From 8cc22636b95de928f5abaebd0d19e2f040870953 Mon Sep 17 00:00:00 2001
> +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +Date: Tue, 6 Nov 2018 22:54:07 -0200
> +Subject: [PATCH 3/4] eng_devcrypto: add command to dump driver info
> +
> +This is useful to determine the kernel driver running each algorithm.
> +
> +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +
> +Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
> +Reviewed-by: Richard Levitte <levitte at openssl.org>
> +(Merged from https://github.com/openssl/openssl/pull/7585)
> +
> +diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
> +index 0f0aee6b57..44e60cbc7b 100644
> +--- a/crypto/engine/eng_devcrypto.c
> ++++ b/crypto/engine/eng_devcrypto.c
> +@@ -48,16 +48,20 @@ static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
> +  */
> + struct driver_info_st {
> +     enum devcrypto_status_t {
> +-        DEVCRYPTO_STATUS_UNUSABLE       = -1, /* session open failed */
> +-        DEVCRYPTO_STATUS_UNKNOWN        =  0, /* not tested yet */
> +-        DEVCRYPTO_STATUS_USABLE         =  1  /* algo can be used */
> ++        DEVCRYPTO_STATUS_FAILURE         = -3, /* unusable for other reason */
> ++        DEVCRYPTO_STATUS_NO_CIOCCPHASH   = -2, /* hash state copy not supported */
> ++        DEVCRYPTO_STATUS_NO_CIOCGSESSION = -1, /* session open failed */
> ++        DEVCRYPTO_STATUS_UNKNOWN         =  0, /* not tested yet */
> ++        DEVCRYPTO_STATUS_USABLE          =  1  /* algo can be used */
> +     } status;
> +
> +     enum devcrypto_accelerated_t {
> +-        DEVCRYPTO_NOT_ACCELERATED       = -1, /* software implemented */
> +-        DEVCRYPTO_ACCELERATION_UNKNOWN  =  0, /* acceleration support unkown */
> +-        DEVCRYPTO_ACCELERATED           =  1  /* hardware accelerated */
> ++        DEVCRYPTO_NOT_ACCELERATED        = -1, /* software implemented */
> ++        DEVCRYPTO_ACCELERATION_UNKNOWN   =  0, /* acceleration support unkown */
> ++        DEVCRYPTO_ACCELERATED            =  1  /* hardware accelerated */
> +     } accelerated;
> ++
> ++    char *driver_name;
> + };
> +
> + static int clean_devcrypto_session(struct session_op *sess) {
> +@@ -414,7 +418,7 @@ static void prepare_cipher_methods(void)
> +         sess.cipher = cipher_data[i].devcryptoid;
> +         sess.keylen = cipher_data[i].keylen;
> +         if (ioctl(cfd, CIOCGSESSION, &sess) < 0) {
> +-            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCGSESSION;
> +             continue;
> +         }
> +
> +@@ -442,19 +446,24 @@ static void prepare_cipher_methods(void)
> +                                             cipher_cleanup)
> +             || !EVP_CIPHER_meth_set_impl_ctx_size(known_cipher_methods[i],
> +                                                   sizeof(struct cipher_ctx))) {
> +-            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
> +             EVP_CIPHER_meth_free(known_cipher_methods[i]);
> +             known_cipher_methods[i] = NULL;
> +         } else {
> +             cipher_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
> + #ifdef CIOCGSESSINFO
> +             siop.ses = sess.ses;
> +-            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> ++            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0) {
> +                 cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> +-            else if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
> +-                cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> +-            else
> +-                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> ++            } else {
> ++                cipher_driver_info[i].driver_name =
> ++                    OPENSSL_strndup(siop.cipher_info.cra_driver_name,
> ++                                    CRYPTODEV_MAX_ALG_NAME);
> ++                if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
> ++                    cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> ++                else
> ++                    cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> ++            }
> + #endif /* CIOCGSESSINFO */
> +         }
> +         ioctl(cfd, CIOCFSESSION, &sess.ses);
> +@@ -504,8 +513,11 @@ static void destroy_all_cipher_methods(void)
> + {
> +     size_t i;
> +
> +-    for (i = 0; i < OSSL_NELEM(cipher_data); i++)
> ++    for (i = 0; i < OSSL_NELEM(cipher_data); i++) {
> +         destroy_cipher_method(cipher_data[i].nid);
> ++        OPENSSL_free(cipher_driver_info[i].driver_name);
> ++        cipher_driver_info[i].driver_name = NULL;
> ++    }
> + }
> +
> + static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
> +@@ -549,6 +561,40 @@ static int cryptodev_select_cipher_cb(const char *str, int len, void *usr)
> +     return 1;
> + }
> +
> ++static void dump_cipher_info(void)
> ++{
> ++    size_t i;
> ++    const char *name;
> ++
> ++    fprintf (stderr, "Information about ciphers supported by the /dev/crypto"
> ++             " engine:\n");
> ++#ifndef CIOCGSESSINFO
> ++    fprintf(stderr, "CIOCGSESSINFO (session info call) unavailable\n");
> ++#endif
> ++    for (i = 0; i < OSSL_NELEM(cipher_data); i++) {
> ++        name = OBJ_nid2sn(cipher_data[i].nid);
> ++        fprintf (stderr, "Cipher %s, NID=%d, /dev/crypto info: id=%d, ",
> ++                 name ? name : "unknown", cipher_data[i].nid,
> ++                 cipher_data[i].devcryptoid);
> ++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCGSESSION ) {
> ++            fprintf (stderr, "CIOCGSESSION (session open call) failed\n");
> ++            continue;
> ++        }
> ++        fprintf (stderr, "driver=%s ", cipher_driver_info[i].driver_name ?
> ++                 cipher_driver_info[i].driver_name : "unknown");
> ++        if (cipher_driver_info[i].accelerated == DEVCRYPTO_ACCELERATED)
> ++            fprintf(stderr, "(hw accelerated)");
> ++        else if (cipher_driver_info[i].accelerated == DEVCRYPTO_NOT_ACCELERATED)
> ++            fprintf(stderr, "(software)");
> ++        else
> ++            fprintf(stderr, "(acceleration status unknown)");
> ++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_FAILURE)
> ++            fprintf (stderr, ". Cipher setup failed");
> ++        fprintf(stderr, "\n");
> ++    }
> ++    fprintf(stderr, "\n");
> ++}
> ++
> + /*
> +  * We only support digests if the cryptodev implementation supports multiple
> +  * data updates and session copying.  Otherwise, we would be forced to maintain
> +@@ -810,31 +856,36 @@ static void prepare_digest_methods(void)
> +         sess1.mac = digest_data[i].devcryptoid;
> +         sess2.ses = 0;
> +         if (ioctl(cfd, CIOCGSESSION, &sess1) < 0) {
> +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCGSESSION;
> +             goto finish;
> +         }
> +
> + #ifdef CIOCGSESSINFO
> +         /* gather hardware acceleration info from the driver */
> +         siop.ses = sess1.ses;
> +-        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> ++        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0) {
> +             digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> +-        else if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
> +-            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> +-        else
> +-            digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> ++        } else {
> ++            digest_driver_info[i].driver_name =
> ++                OPENSSL_strndup(siop.hash_info.cra_driver_name,
> ++                                CRYPTODEV_MAX_ALG_NAME);
> ++            if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
> ++                digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> ++            else
> ++                digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> ++        }
> + #endif
> +
> +         /* digest must be capable of hash state copy */
> +         sess2.mac = sess1.mac;
> +         if (ioctl(cfd, CIOCGSESSION, &sess2) < 0) {
> +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
> +             goto finish;
> +         }
> +         cphash.src_ses = sess1.ses;
> +         cphash.dst_ses = sess2.ses;
> +         if (ioctl(cfd, CIOCCPHASH, &cphash) < 0) {
> +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCCPHASH;
> +             goto finish;
> +         }
> +         if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid,
> +@@ -850,7 +901,7 @@ static void prepare_digest_methods(void)
> +             || !EVP_MD_meth_set_cleanup(known_digest_methods[i], digest_cleanup)
> +             || !EVP_MD_meth_set_app_datasize(known_digest_methods[i],
> +                                              sizeof(struct digest_ctx))) {
> +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
> +             EVP_MD_meth_free(known_digest_methods[i]);
> +             known_digest_methods[i] = NULL;
> +             goto finish;
> +@@ -892,8 +943,11 @@ static void destroy_all_digest_methods(void)
> + {
> +     size_t i;
> +
> +-    for (i = 0; i < OSSL_NELEM(digest_data); i++)
> ++    for (i = 0; i < OSSL_NELEM(digest_data); i++) {
> +         destroy_digest_method(digest_data[i].nid);
> ++        OPENSSL_free(digest_driver_info[i].driver_name);
> ++        digest_driver_info[i].driver_name = NULL;
> ++    }
> + }
> +
> + static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
> +@@ -937,6 +991,43 @@ static int cryptodev_select_digest_cb(const char *str, int len, void *usr)
> +     return 1;
> + }
> +
> ++static void dump_digest_info(void)
> ++{
> ++    size_t i;
> ++    const char *name;
> ++
> ++    fprintf (stderr, "Information about digests supported by the /dev/crypto"
> ++             " engine:\n");
> ++#ifndef CIOCGSESSINFO
> ++    fprintf(stderr, "CIOCGSESSINFO (session info call) unavailable\n");
> ++#endif
> ++
> ++    for (i = 0; i < OSSL_NELEM(digest_data); i++) {
> ++        name = OBJ_nid2sn(digest_data[i].nid);
> ++        fprintf (stderr, "Digest %s, NID=%d, /dev/crypto info: id=%d, driver=%s",
> ++                 name ? name : "unknown", digest_data[i].nid,
> ++                 digest_data[i].devcryptoid,
> ++                 digest_driver_info[i].driver_name ? digest_driver_info[i].driver_name : "unknown");
> ++        if (digest_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCGSESSION) {
> ++            fprintf (stderr, ". CIOCGSESSION (session open) failed\n");
> ++            continue;
> ++        }
> ++        if (digest_driver_info[i].accelerated == DEVCRYPTO_ACCELERATED)
> ++            fprintf(stderr, " (hw accelerated)");
> ++        else if (digest_driver_info[i].accelerated == DEVCRYPTO_NOT_ACCELERATED)
> ++            fprintf(stderr, " (software)");
> ++        else
> ++            fprintf(stderr, " (acceleration status unknown)");
> ++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_FAILURE)
> ++            fprintf (stderr, ". Cipher setup failed\n");
> ++        else if (digest_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCCPHASH)
> ++            fprintf(stderr, ", CIOCCPHASH failed\n");
> ++        else
> ++            fprintf(stderr, ", CIOCCPHASH capable\n");
> ++    }
> ++    fprintf(stderr, "\n");
> ++}
> ++
> + #endif
> +
> + /******************************************************************************
> +@@ -981,6 +1072,11 @@ static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
> +     ENGINE_CMD_FLAG_STRING},
> + #endif
> +
> ++   {DEVCRYPTO_CMD_DUMP_INFO,
> ++    "DUMP_INFO",
> ++    "dump info about each algorithm to stderr; use 'openssl engine -pre DUMP_INFO devcrypto'",
> ++    ENGINE_CMD_FLAG_NO_INPUT},
> ++
> +    {0, NULL, NULL, 0}
> + };
> +
> +@@ -1049,6 +1145,13 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
> +         return 1;
> + #endif /* IMPLEMENT_DIGEST */
> +
> ++    case DEVCRYPTO_CMD_DUMP_INFO:
> ++        dump_cipher_info();
> ++#ifdef IMPLEMENT_DIGEST
> ++        dump_digest_info();
> ++#endif
> ++        return 1;
> ++
> +     default:
> +         break;
> +     }
> diff --git a/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch
> new file mode 100644
> index 0000000000..fa5e48f36a
> --- /dev/null
> +++ b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch
> @@ -0,0 +1,336 @@
> +From 9e0ca5fff3fa439fc36fa5374671b91dc5657b6a Mon Sep 17 00:00:00 2001
> +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +Date: Tue, 6 Nov 2018 10:57:03 -0200
> +Subject: [PATCH 4/4] e_devcrypto: make the /dev/crypto engine dynamic
> +
> +Engine has been moved from crypto/engine/eng_devcrypto.c to
> +engines/e_devcrypto.c.
> +
> +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> +
> +diff --git a/crypto/engine/build.info b/crypto/engine/build.info
> +index e00802a3fd..47fe948966 100644
> +--- a/crypto/engine/build.info
> ++++ b/crypto/engine/build.info
> +@@ -6,6 +6,3 @@ SOURCE[../../libcrypto]=\
> +         tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c tb_eckey.c \
> +         eng_openssl.c eng_cnf.c eng_dyn.c \
> +         eng_rdrand.c
> +-IF[{- !$disabled{devcryptoeng} -}]
> +-  SOURCE[../../libcrypto]=eng_devcrypto.c
> +-ENDIF
> +diff --git a/crypto/init.c b/crypto/init.c
> +index 209d1a483d..02c609535f 100644
> +--- a/crypto/init.c
> ++++ b/crypto/init.c
> +@@ -290,18 +290,6 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_openssl)
> +     engine_load_openssl_int();
> +     return 1;
> + }
> +-# ifndef OPENSSL_NO_DEVCRYPTOENG
> +-static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT;
> +-DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto)
> +-{
> +-#  ifdef OPENSSL_INIT_DEBUG
> +-    fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: "
> +-                    "engine_load_devcrypto_int()\n");
> +-#  endif
> +-    engine_load_devcrypto_int();
> +-    return 1;
> +-}
> +-# endif
> +
> + # ifndef OPENSSL_NO_RDRAND
> + static CRYPTO_ONCE engine_rdrand = CRYPTO_ONCE_STATIC_INIT;
> +@@ -326,6 +314,18 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_dynamic)
> +     return 1;
> + }
> + # ifndef OPENSSL_NO_STATIC_ENGINE
> ++#  ifndef OPENSSL_NO_DEVCRYPTOENG
> ++static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT;
> ++DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto)
> ++{
> ++#   ifdef OPENSSL_INIT_DEBUG
> ++    fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: "
> ++                    "engine_load_devcrypto_int()\n");
> ++#   endif
> ++    engine_load_devcrypto_int();
> ++    return 1;
> ++}
> ++#  endif
> + #  if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)
> + static CRYPTO_ONCE engine_padlock = CRYPTO_ONCE_STATIC_INIT;
> + DEFINE_RUN_ONCE_STATIC(ossl_init_engine_padlock)
> +@@ -645,11 +645,6 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
> +     if ((opts & OPENSSL_INIT_ENGINE_OPENSSL)
> +             && !RUN_ONCE(&engine_openssl, ossl_init_engine_openssl))
> +         return 0;
> +-# if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_DEVCRYPTOENG)
> +-    if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV)
> +-            && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto))
> +-        return 0;
> +-# endif
> + # ifndef OPENSSL_NO_RDRAND
> +     if ((opts & OPENSSL_INIT_ENGINE_RDRAND)
> +             && !RUN_ONCE(&engine_rdrand, ossl_init_engine_rdrand))
> +@@ -659,6 +654,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
> +             && !RUN_ONCE(&engine_dynamic, ossl_init_engine_dynamic))
> +         return 0;
> + # ifndef OPENSSL_NO_STATIC_ENGINE
> ++#  ifndef OPENSSL_NO_DEVCRYPTOENG
> ++    if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV)
> ++            && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto))
> ++        return 0;
> ++#  endif
> + #  if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)
> +     if ((opts & OPENSSL_INIT_ENGINE_PADLOCK)
> +             && !RUN_ONCE(&engine_padlock, ossl_init_engine_padlock))
> +diff --git a/engines/build.info b/engines/build.info
> +index df173ea69d..dc0cbeb0a3 100644
> +--- a/engines/build.info
> ++++ b/engines/build.info
> +@@ -10,6 +10,9 @@ IF[{- !$disabled{"engine"} -}]
> +     IF[{- !$disabled{afalgeng} -}]
> +       SOURCE[../libcrypto]=e_afalg.c
> +     ENDIF
> ++    IF[{- !$disabled{"devcryptoeng"} -}]
> ++      SOURCE[../libcrypto]=e_devcrypto.c
> ++    ENDIF
> +   ELSE
> +     ENGINES=padlock
> +     SOURCE[padlock]=e_padlock.c {- $target{padlock_asm_src} -}
> +@@ -27,6 +30,12 @@ IF[{- !$disabled{"engine"} -}]
> +       DEPEND[afalg]=../libcrypto
> +       INCLUDE[afalg]= ../include
> +     ENDIF
> ++    IF[{- !$disabled{"devcryptoeng"} -}]
> ++      ENGINES=devcrypto
> ++      SOURCE[devcrypto]=e_devcrypto.c
> ++      DEPEND[devcrypto]=../libcrypto
> ++      INCLUDE[devcrypto]=../include
> ++    ENDIF
> +
> +     ENGINES_NO_INST=ossltest dasync
> +     SOURCE[dasync]=e_dasync.c
> +diff --git a/crypto/engine/eng_devcrypto.c b/engines/e_devcrypto.c
> +similarity index 95%
> +rename from crypto/engine/eng_devcrypto.c
> +rename to engines/e_devcrypto.c
> +index 44e60cbc7b..9af2ce174a 100644
> +--- a/crypto/engine/eng_devcrypto.c
> ++++ b/engines/e_devcrypto.c
> +@@ -7,7 +7,7 @@
> +  * https://www.openssl.org/source/license.html
> +  */
> +
> +-#include "e_os.h"
> ++#include "../e_os.h"
> + #include <string.h>
> + #include <sys/types.h>
> + #include <sys/stat.h>
> +@@ -23,24 +23,24 @@
> + #include <openssl/objects.h>
> + #include <crypto/cryptodev.h>
> +
> +-#include "internal/engine.h"
> +-
> + #ifdef CRYPTO_ALGORITHM_MIN
> + # define CHECK_BSD_STYLE_MACROS
> + #endif
> +
> ++#define engine_devcrypto_id "devcrypto"
> ++
> + /*
> +  * ONE global file descriptor for all sessions.  This allows operations
> +  * such as digest session data copying (see digest_copy()), but is also
> +  * saner...  why re-open /dev/crypto for every session?
> +  */
> +-static int cfd;
> ++static int cfd = -1;
> + #define DEVCRYPTO_REQUIRE_ACCELERATED 0 /* require confirmation of acceleration */
> + #define DEVCRYPTO_USE_SOFTWARE        1 /* allow software drivers */
> + #define DEVCRYPTO_REJECT_SOFTWARE     2 /* only disallow confirmed software drivers */
> +
> +-#define DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS DEVCRYPTO_REJECT_SOFTWARE
> +-static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
> ++#define DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS DEVCRYPTO_REJECT_SOFTWARE
> ++static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS;
> +
> + /*
> +  * cipher/digest status & acceleration definitions
> +@@ -73,6 +73,10 @@ static int clean_devcrypto_session(struct session_op *sess) {
> +     return 1;
> + }
> +
> ++#ifdef OPENSSL_NO_DYNAMIC_ENGINE
> ++void engine_load_devcrypto_int(void);
> ++#endif
> ++
> + /******************************************************************************
> +  *
> +  * Ciphers
> +@@ -1164,6 +1168,37 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
> +  *
> +  *****/
> +
> ++/*
> ++ * Opens /dev/crypto
> ++ */
> ++static int open_devcrypto(void)
> ++{
> ++    if (cfd >= 0)
> ++        return 1;
> ++
> ++    if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
> ++        fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno));
> ++        return 0;
> ++    }
> ++
> ++    return 1;
> ++}
> ++
> ++static int close_devcrypto(void)
> ++{
> ++    int ret;
> ++
> ++    if (cfd < 0)
> ++        return 1;
> ++    ret = close(cfd);
> ++    cfd = -1;
> ++    if (ret != 0) {
> ++        fprintf(stderr, "Error closing /dev/crypto: %s\n", strerror(errno));
> ++        return 0;
> ++    }
> ++    return 1;
> ++}
> ++
> + static int devcrypto_unload(ENGINE *e)
> + {
> +     destroy_all_cipher_methods();
> +@@ -1171,45 +1206,29 @@ static int devcrypto_unload(ENGINE *e)
> +     destroy_all_digest_methods();
> + #endif
> +
> +-    close(cfd);
> ++    close_devcrypto();
> +
> +     return 1;
> + }
> +-/*
> +- * This engine is always built into libcrypto, so it doesn't offer any
> +- * ability to be dynamically loadable.
> +- */
> +-void engine_load_devcrypto_int()
> +-{
> +-    ENGINE *e = NULL;
> +
> +-    if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
> +-        fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno));
> +-        return;
> +-    }
> ++static int bind_devcrypto(ENGINE *e) {
> +
> +-    if ((e = ENGINE_new()) == NULL
> +-        || !ENGINE_set_destroy_function(e, devcrypto_unload)) {
> +-        ENGINE_free(e);
> +-        /*
> +-         * We know that devcrypto_unload() won't be called when one of the
> +-         * above two calls have failed, so we close cfd explicitly here to
> +-         * avoid leaking resources.
> +-         */
> +-        close(cfd);
> +-        return;
> +-    }
> ++    if (!ENGINE_set_id(e, engine_devcrypto_id)
> ++        || !ENGINE_set_name(e, "/dev/crypto engine")
> ++        || !ENGINE_set_destroy_function(e, devcrypto_unload)
> ++        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
> ++        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl))
> ++        return 0;
> +
> +     prepare_cipher_methods();
> + #ifdef IMPLEMENT_DIGEST
> +     prepare_digest_methods();
> + #endif
> +
> +-    if (!ENGINE_set_id(e, "devcrypto")
> +-        || !ENGINE_set_name(e, "/dev/crypto engine")
> +-        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
> +-        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl)
> +-
> ++    return (ENGINE_set_ciphers(e, devcrypto_ciphers)
> ++#ifdef IMPLEMENT_DIGEST
> ++        && ENGINE_set_digests(e, devcrypto_digests)
> ++#endif
> + /*
> +  * Asymmetric ciphers aren't well supported with /dev/crypto.  Among the BSD
> +  * implementations, it seems to only exist in FreeBSD, and regarding the
> +@@ -1232,23 +1251,36 @@ void engine_load_devcrypto_int()
> +  */
> + #if 0
> + # ifndef OPENSSL_NO_RSA
> +-        || !ENGINE_set_RSA(e, devcrypto_rsa)
> ++        && ENGINE_set_RSA(e, devcrypto_rsa)
> + # endif
> + # ifndef OPENSSL_NO_DSA
> +-        || !ENGINE_set_DSA(e, devcrypto_dsa)
> ++        && ENGINE_set_DSA(e, devcrypto_dsa)
> + # endif
> + # ifndef OPENSSL_NO_DH
> +-        || !ENGINE_set_DH(e, devcrypto_dh)
> ++        && ENGINE_set_DH(e, devcrypto_dh)
> + # endif
> + # ifndef OPENSSL_NO_EC
> +-        || !ENGINE_set_EC(e, devcrypto_ec)
> ++        && ENGINE_set_EC(e, devcrypto_ec)
> + # endif
> + #endif
> +-        || !ENGINE_set_ciphers(e, devcrypto_ciphers)
> +-#ifdef IMPLEMENT_DIGEST
> +-        || !ENGINE_set_digests(e, devcrypto_digests)
> +-#endif
> +-        ) {
> ++        );
> ++}
> ++
> ++#ifdef OPENSSL_NO_DYNAMIC_ENGINE
> ++/*
> ++ * In case this engine is built into libcrypto, then it doesn't offer any
> ++ * ability to be dynamically loadable.
> ++ */
> ++void engine_load_devcrypto_int(void)
> ++{
> ++    ENGINE *e = NULL;
> ++
> ++    if (!open_devcrypto())
> ++        return;
> ++
> ++    if ((e = ENGINE_new()) == NULL
> ++        || !bind_devcrypto(e)) {
> ++        close_devcrypto();
> +         ENGINE_free(e);
> +         return;
> +     }
> +@@ -1257,3 +1289,22 @@ void engine_load_devcrypto_int()
> +     ENGINE_free(e);          /* Loose our local reference */
> +     ERR_clear_error();
> + }
> ++
> ++#else
> ++
> ++static int bind_helper(ENGINE *e, const char *id)
> ++{
> ++    if ((id && (strcmp(id, engine_devcrypto_id) != 0))
> ++        || !open_devcrypto())
> ++        return 0;
> ++    if (!bind_devcrypto(e)) {
> ++        close_devcrypto();
> ++        return 0;
> ++    }
> ++    return 1;
> ++}
> ++
> ++IMPLEMENT_DYNAMIC_CHECK_FN()
> ++IMPLEMENT_DYNAMIC_BIND_FN(bind_helper)
> ++
> ++#endif
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Mon Feb 25 14:17:04 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Mon, 25 Feb 2019 11:17:04 -0800
Subject: [OpenWrt-Devel] [PATCH 1/3] ath79: Speed up caldata/eeprom
 handling
In-Reply-To: <20190222183923.393-2-freifunk@adrianschmutzler.de>
References: <20190222183923.393-1-freifunk@adrianschmutzler.de>
 <20190222183923.393-2-freifunk@adrianschmutzler.de>
Message-ID: <CAKxU2N_xao_60OFzyMx7eGMOR_1fiNiOJNra6nuWjvz7fpP8HA@mail.gmail.com>

On Fri, Feb 22, 2019 at 10:39 AM Adrian Schmutzler
<freifunk at adrianschmutzler.de> wrote:
>
> Reading and writing to and from flash storage is slow and currently,
> especially since some scripts 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 in possibly one big block.
>
> This is based on the initial commit a69e101 for ipq40xx by
> Christian Lamparter <chunkeey at gmail.com>.
>
> Speed comparison @ UBNT AC-Mesh (just manually) results in a time
> reduction of 99.9 %.
>
> 4096+0 records in
> 4096+0 records out
> real    0m 16.84s
> user    0m 0.07s
> sys     0m 13.54s
>
> 1+0 records in
> 1+0 records out
> real    0m 0.02s
> user    0m 0.00s
> sys     0m 0.02s
>
> Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
Tested-by: Rosen Penev <rosenp at gmail.com>
> ---
>  .../linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom   | 4 ++--
>  .../linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 6 +++---
>  2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> index 8b217d12c0..4bb2c28bac 100644
> --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
> @@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
>         [ -n "$mtd" ] || \
>                 ath9k_eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
>                 ath9k_eeprom_die "failed to extract from $mtd"
>  }
>
> @@ -81,7 +81,7 @@ ath9k_patch_fw_mac() {
>                         dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
>         }
>
> -       macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$mac_offset count=6
> +       macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=$mac_offset count=1 oflag=seek_bytes
>  }
>
>  ath9k_patch_fw_mac_crc() {
> diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> index f4741fa3eb..e0d28dfabe 100644
> --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
> @@ -28,7 +28,7 @@ ath10kcal_from_file() {
>         local offset=$2
>         local count=$3
>
> -       dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
> +       dd if=$source of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
>                 ath10kcal_die "failed to extract calibration data from $source"
>  }
>
> @@ -42,7 +42,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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
>                 ath10kcal_die "failed to extract calibration data from $mtd"
>  }
>
> @@ -51,7 +51,7 @@ ath10kcal_patch_mac() {
>
>         [ -z "$mac" ] && return
>
> -       macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
> +       macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=6 seek=6 count=1 oflag=seek_bytes
>  }
>
>  ath10kcal_patch_mac_crc() {
> --
> 2.11.0
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From rosenp at gmail.com  Mon Feb 25 14:22:30 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Mon, 25 Feb 2019 11:22:30 -0800
Subject: [OpenWrt-Devel] [PATCH v3] openssl: backport devcrypto changes
 from master
In-Reply-To: <CAKxU2N8yjPWhZF+cJmYg7NCQX5ZUu8DNy=wRfi3UfRKru3a1tA@mail.gmail.com>
References: <mailman.23089.1550777428.2376.openwrt-devel@lists.openwrt.org>
 <mailman.23692.1551117680.2376.openwrt-devel@lists.openwrt.org>
 <CAKxU2N8yjPWhZF+cJmYg7NCQX5ZUu8DNy=wRfi3UfRKru3a1tA@mail.gmail.com>
Message-ID: <CAKxU2N999fdVpQH-vv_M1xYpSAhWgann718_crhehLx47iyoUQ@mail.gmail.com>

On Mon, Feb 25, 2019 at 11:09 AM Rosen Penev <rosenp at gmail.com> wrote:
>
> On Mon, Feb 25, 2019 at 10:01 AM Eneas U de Queiroz via openwrt-devel
> <openwrt-devel at lists.openwrt.org> wrote:
> >
> > The sender domain has a DMARC Reject/Quarantine policy which disallows
> > sending mailing list messages using the original "From" header.
> >
> > To mitigate this problem, the original message has been wrapped
> > automatically by the mailing list software.
> >
> >
> > ---------- Forwarded message ----------
> > From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > To: openwrt-devel at lists.openwrt.org
> > Cc: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > Bcc:
> > Date: Mon, 25 Feb 2019 15:00:58 -0300
> > Subject: [PATCH v3] openssl: backport devcrypto changes from master
> > The patches to the /dev/crypto engine were commited to openssl master,
> > and will be in the next major version (3.0).
> This version does not apply to master.
Never mind. It does apply like this:

git pw series apply 93498
git pw series apply 94090
> >
> > Changes:
> > - Optimization in computing a digest in one operation, saving an ioctl
> > - Runtime configuration options for the choice of algorithms to use
> > - Command to dump useful information about the algorithms supported by
> >   the engine and the system.
> > - Build the devcrypto engine as a dynamic module, like other engines.
> >
> > The devcrypto engine is built as a separate package by default, but
> > options were added to allow building the engines into the main library.
> >
> > Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > ---
> > This should only be merged after
> > openssl: fix devcrypto engine md blocksize
> >
> > I forgot to mention it before, but this was run-tested on Linksys
> > WRT3200ACM, WRT610N (software-only), & ASUS RT-N56U (software-only),
> > running nginx, bind, unbound, and now openssh.
> >
> > Changes:
> > v3: remove PKG_BUILD_DEPENDS:=cryptodev-linux, as it has been properly
> >     added to DEPENDS now.
> >
> > v2: accommodate changes from openssl: fix devcrypto engine md blocksize
> >     increased PKG_RELEASE
> >
> > diff --git a/package/libs/openssl/Config.in b/package/libs/openssl/Config.in
> > index 3ad8a66b9e..235f38e787 100644
> > --- a/package/libs/openssl/Config.in
> > +++ b/package/libs/openssl/Config.in
> > @@ -253,18 +253,41 @@ config OPENSSL_ENGINE
> >                 Note that you need to enable KERNEL_AIO to be able to build the
> >                 afalg engine package.
> >
> > -config OPENSSL_ENGINE_CRYPTO
> > +config OPENSSL_ENGINE_BUILTIN
> > +       bool "Build chosen engines into libcrypto"
> > +       depends on OPENSSL_ENGINE
> > +       help
> > +               This builds all chosen engines into libcrypto.so, instead of building
> > +               them as dynamic engines in separate packages.
> > +               The benefit of building the engines into libcrypto is that they won't
> > +               require any configuration to be used by default.
> > +
> > +config OPENSSL_ENGINE_BUILTIN_AFALG
> >         bool
> > -       select OPENSSL_ENGINE
> > -       select PACKAGE_kmod-cryptodev
> > +       prompt "Acceleration support through AF_ALG sockets engine"
> > +       depends on OPENSSL_ENGINE_BUILTIN && KERNEL_AIO && !LINUX_3_18
> >         select PACKAGE_libopenssl-conf
> > +       help
> > +               This enables use of hardware acceleration through the
> > +               AF_ALG kenrel interface.
> > +
> > +config OPENSSL_ENGINE_BUILTIN_DEVCRYPTO
> > +       bool
> >         prompt "Acceleration support through /dev/crypto"
> > +       depends on OPENSSL_ENGINE_BUILTIN
> > +       select PACKAGE_libopenssl-conf
> >         help
> >                 This enables use of hardware acceleration through OpenBSD
> >                 Cryptodev API (/dev/crypto) interface.
> > -               You must install kmod-cryptodev (under Kernel modules, Cryptographic
> > -               API modules) for /dev/crypto to show up and use hardware
> > -               acceleration; otherwise it falls back to software.
> > +
> > +config OPENSSL_ENGINE_BUILTIN_PADLOCK
> > +       bool
> > +       prompt "VIA Padlock Acceleration support engine"
> > +       depends on OPENSSL_ENGINE_BUILTIN && TARGET_x86
> > +       select PACKAGE_libopenssl-conf
> > +       help
> > +               This enables use of hardware acceleration through the
> > +               VIA Padlock module.
> >
> >  config OPENSSL_WITH_ASYNC
> >         bool
> > diff --git a/package/libs/openssl/Makefile b/package/libs/openssl/Makefile
> > index ab32668cb9..a7dbbae2b1 100644
> > --- a/package/libs/openssl/Makefile
> > +++ b/package/libs/openssl/Makefile
> > @@ -11,12 +11,11 @@ PKG_NAME:=openssl
> >  PKG_BASE:=1.1.1
> >  PKG_BUGFIX:=a
> >  PKG_VERSION:=$(PKG_BASE)$(PKG_BUGFIX)
> > -PKG_RELEASE:=3
> > +PKG_RELEASE:=4
> >  PKG_USE_MIPS16:=0
> >  ENGINES_DIR=engines-1.1
> >
> >  PKG_BUILD_PARALLEL:=0
> > -PKG_BUILD_DEPENDS:=cryptodev-linux
> >
> >  PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
> >  PKG_SOURCE_URL:= \
> > @@ -32,7 +31,10 @@ PKG_LICENSE_FILES:=LICENSE
> >  PKG_CPE_ID:=cpe:/a:openssl:openssl
> >  PKG_CONFIG_DEPENDS:= \
> >         CONFIG_OPENSSL_ENGINE \
> > -       CONFIG_OPENSSL_ENGINE_CRYPTO \
> > +       CONFIG_OPENSSL_ENGINE_BUILTIN \
> > +       CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG \
> > +       CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO \
> > +       CONFIG_OPENSSL_ENGINE_BUILTIN_PADLOCK \
> >         CONFIG_OPENSSL_NO_DEPRECATED \
> >         CONFIG_OPENSSL_OPTIMIZE_SPEED \
> >         CONFIG_OPENSSL_PREFER_CHACHA_OVER_GCM \
> > @@ -89,7 +91,10 @@ endef
> >  define Package/libopenssl
> >  $(call Package/openssl/Default)
> >    SUBMENU:=SSL
> > -  DEPENDS:=+OPENSSL_WITH_COMPRESSION:zlib
> > +  DEPENDS:=+OPENSSL_WITH_COMPRESSION:zlib \
> > +          +OPENSSL_ENGINE_BUILTIN_AFALG:kmod-crypto-user \
> > +          +OPENSSL_ENGINE_BUILTIN_DEVCRYPTO:kmod-cryptodev \
> > +          +OPENSSL_ENGINE_BUILTIN_PADLOCK:kmod-crypto-hw-padlock
> >    TITLE+= (libraries)
> >    ABI_VERSION:=1.1
> >    MENU:=1
> > @@ -134,7 +139,7 @@ define Package/libopenssl-afalg
> >    SUBMENU:=SSL
> >    TITLE:=AFALG hardware acceleration engine
> >    DEPENDS:=libopenssl @OPENSSL_ENGINE @KERNEL_AIO @!LINUX_3_18 +kmod-crypto-user \
> > -          +libopenssl-conf
> > +          +libopenssl-conf @!OPENSSL_ENGINE_BUILTIN
> >  endef
> >
> >  define Package/libopenssl-afalg/description
> > @@ -145,12 +150,28 @@ See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-
> >  The engine_id is "afalg"
> >  endef
> >
> > +define Package/libopenssl-devcrypto
> > +  $(call Package/openssl/Default)
> > +  SUBMENU:=SSL
> > +  TITLE:=/dev/crypto hardware acceleration engine
> > +  DEPENDS:=libopenssl @OPENSSL_ENGINE +kmod-cryptodev +libopenssl-conf \
> > +          @!OPENSSL_ENGINE_BUILTIN
> > +endef
> > +
> > +define Package/libopenssl-devcrypto/description
> > +This package adds an engine that enables hardware acceleration
> > +through the /dev/crypto kernel interface.
> > +To use it, you need to configure the engine in /etc/ssl/openssl.cnf
> > +See https://www.openssl.org/docs/man1.1.1/man5/config.html#Engine-Configuration-Module
> > +The engine_id is "devcrypto"
> > +endef
> > +
> >  define Package/libopenssl-padlock
> >    $(call Package/openssl/Default)
> >    SUBMENU:=SSL
> >    TITLE:=VIA Padlock hardware acceleration engine
> >    DEPENDS:=libopenssl @OPENSSL_ENGINE @TARGET_x86 +kmod-crypto-hw-padlock \
> > -          +libopenssl-conf
> > +          +libopenssl-conf @!OPENSSL_ENGINE_BUILTIN
> >  endef
> >
> >  define Package/libopenssl-padlock/description
> > @@ -241,14 +262,27 @@ else
> >  endif
> >
> >  ifdef CONFIG_OPENSSL_ENGINE
> > -  ifdef CONFIG_OPENSSL_ENGINE_CRYPTO
> > -    OPENSSL_OPTIONS += enable-devcryptoeng
> > -  endif
> > -  ifndef CONFIG_PACKAGE_libopenssl-afalg
> > -    OPENSSL_OPTIONS += no-afalgeng
> > -  endif
> > -  ifndef CONFIG_PACKAGE_libopenssl-padlock
> > -    OPENSSL_OPTIONS += no-hw-padlock
> > +  ifdef CONFIG_OPENSSL_ENGINE_BUILTIN
> > +    OPENSSL_OPTIONS += disable-dynamic-engine
> > +    ifndef CONFIG_OPENSSL_ENGINE_BUILTIN_AFALG
> > +      OPENSSL_OPTIONS += no-afalgeng
> > +    endif
> > +    ifdef CONFIG_OPENSSL_ENGINE_BUILTIN_DEVCRYPTO
> > +      OPENSSL_OPTIONS += enable-devcryptoeng
> > +    endif
> > +    ifndef CONFIG_OPENSSL_ENGINE_BUILTIN_PADLOCK
> > +      OPENSSL_OPTIONS += no-hw-padlock
> > +    endif
> > +  else
> > +    ifdef CONFIG_PACKAGE_libopenssl-devcrypto
> > +      OPENSSL_OPTIONS += enable-devcryptoeng
> > +    endif
> > +    ifndef CONFIG_PACKAGE_libopenssl-afalg
> > +      OPENSSL_OPTIONS += no-afalgeng
> > +    endif
> > +    ifndef CONFIG_PACKAGE_libopenssl-padlock
> > +      OPENSSL_OPTIONS += no-hw-padlock
> > +    endif
> >    endif
> >  else
> >    OPENSSL_OPTIONS += no-engine
> > @@ -364,6 +398,11 @@ define Package/libopenssl-afalg/install
> >         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/afalg.so $(1)/usr/lib/$(ENGINES_DIR)
> >  endef
> >
> > +define Package/libopenssl-devcrypto/install
> > +       $(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
> > +       $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/devcrypto.so $(1)/usr/lib/$(ENGINES_DIR)
> > +endef
> > +
> >  define Package/libopenssl-padlock/install
> >         $(INSTALL_DIR) $(1)/usr/lib/$(ENGINES_DIR)
> >         $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/lib/$(ENGINES_DIR)/*padlock.so $(1)/usr/lib/$(ENGINES_DIR)
> > @@ -372,5 +411,6 @@ endef
> >  $(eval $(call BuildPackage,libopenssl))
> >  $(eval $(call BuildPackage,libopenssl-conf))
> >  $(eval $(call BuildPackage,libopenssl-afalg))
> > +$(eval $(call BuildPackage,libopenssl-devcrypto))
> >  $(eval $(call BuildPackage,libopenssl-padlock))
> >  $(eval $(call BuildPackage,openssl-util))
> > diff --git a/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch b/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch
> > new file mode 100644
> > index 0000000000..9ea3aef6ec
> > --- /dev/null
> > +++ b/package/libs/openssl/patches/400-eng_devcrypto-save-ioctl-if-EVP_MD_.FLAG_ONESHOT.patch
> > @@ -0,0 +1,60 @@
> > +From c50879688edc862213b19ae9993a4ac037af4781 Mon Sep 17 00:00:00 2001
> > +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +Date: Mon, 5 Nov 2018 15:54:17 -0200
> > +Subject: [PATCH 1/4] eng_devcrypto: save ioctl if EVP_MD_..FLAG_ONESHOT
> > +
> > +Since each ioctl causes a context switch, slowing things down, if
> > +EVP_MD_CTX_FLAG_ONESHOT is set, then:
> > + - call the ioctl in digest_update, saving the result; and
> > + - just copy the result in digest_final, instead of using another ioctl.
> > +
> > +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +
> > +Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
> > +Reviewed-by: Richard Levitte <levitte at openssl.org>
> > +(Merged from https://github.com/openssl/openssl/pull/7585)
> > +
> > +diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
> > +index 11ec4393e7..f96cba70d7 100644
> > +--- a/crypto/engine/eng_devcrypto.c
> > ++++ b/crypto/engine/eng_devcrypto.c
> > +@@ -460,6 +460,7 @@ struct digest_ctx {
> > +     struct session_op sess;
> > +     /* This signals that the init function was called, not that it succeeded. */
> > +     int init_called;
> > ++    unsigned char digest_res[HASH_MAX_LEN];
> > + };
> > +
> > + static const struct digest_data_st {
> > +@@ -562,12 +563,15 @@ static int digest_update(EVP_MD_CTX *ctx, const void *data, size_t count)
> > +     if (digest_ctx == NULL)
> > +         return 0;
> > +
> > +-    if (digest_op(digest_ctx, data, count, NULL, COP_FLAG_UPDATE) < 0) {
> > +-        SYSerr(SYS_F_IOCTL, errno);
> > +-        return 0;
> > ++    if (EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_ONESHOT)) {
> > ++        if (digest_op(digest_ctx, data, count, digest_ctx->digest_res, 0) >= 0)
> > ++            return 1;
> > ++    } else if (digest_op(digest_ctx, data, count, NULL, COP_FLAG_UPDATE) >= 0) {
> > ++        return 1;
> > +     }
> > +
> > +-    return 1;
> > ++    SYSerr(SYS_F_IOCTL, errno);
> > ++    return 0;
> > + }
> > +
> > + static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
> > +@@ -577,7 +581,10 @@ static int digest_final(EVP_MD_CTX *ctx, unsigned char *md)
> > +
> > +     if (md == NULL || digest_ctx == NULL)
> > +         return 0;
> > +-    if (digest_op(digest_ctx, NULL, 0, md, COP_FLAG_FINAL) < 0) {
> > ++
> > ++    if (EVP_MD_CTX_test_flags(ctx, EVP_MD_CTX_FLAG_ONESHOT)) {
> > ++        memcpy(md, digest_ctx->digest_res, EVP_MD_CTX_size(ctx));
> > ++    } else if (digest_op(digest_ctx, NULL, 0, md, COP_FLAG_FINAL) < 0) {
> > +         SYSerr(SYS_F_IOCTL, errno);
> > +         return 0;
> > +     }
> > diff --git a/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch b/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch
> > new file mode 100644
> > index 0000000000..bc716a92e2
> > --- /dev/null
> > +++ b/package/libs/openssl/patches/410-eng_devcrypto-add-configuration-options.patch
> > @@ -0,0 +1,569 @@
> > +From f9e4bf71b6ecff66a19a3594c870cd2f58e23af6 Mon Sep 17 00:00:00 2001
> > +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +Date: Sat, 3 Nov 2018 15:41:10 -0300
> > +Subject: [PATCH 2/4] eng_devcrypto: add configuration options
> > +
> > +USE_SOFTDRIVERS: whether to use software (not accelerated) drivers
> > +CIPHERS: list of ciphers to enable
> > +DIGESTS: list of digests to enable
> > +
> > +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +
> > +Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
> > +Reviewed-by: Richard Levitte <levitte at openssl.org>
> > +(Merged from https://github.com/openssl/openssl/pull/7585)
> > +
> > +diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
> > +index f96cba70d7..0f0aee6b57 100644
> > +--- a/crypto/engine/eng_devcrypto.c
> > ++++ b/crypto/engine/eng_devcrypto.c
> > +@@ -16,6 +16,7 @@
> > + #include <unistd.h>
> > + #include <assert.h>
> > +
> > ++#include <openssl/conf.h>
> > + #include <openssl/evp.h>
> > + #include <openssl/err.h>
> > + #include <openssl/engine.h>
> > +@@ -34,6 +35,30 @@
> > +  * saner...  why re-open /dev/crypto for every session?
> > +  */
> > + static int cfd;
> > ++#define DEVCRYPTO_REQUIRE_ACCELERATED 0 /* require confirmation of acceleration */
> > ++#define DEVCRYPTO_USE_SOFTWARE        1 /* allow software drivers */
> > ++#define DEVCRYPTO_REJECT_SOFTWARE     2 /* only disallow confirmed software drivers */
> > ++
> > ++#define DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS DEVCRYPTO_REJECT_SOFTWARE
> > ++static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
> > ++
> > ++/*
> > ++ * cipher/digest status & acceleration definitions
> > ++ * Make sure the defaults are set to 0
> > ++ */
> > ++struct driver_info_st {
> > ++    enum devcrypto_status_t {
> > ++        DEVCRYPTO_STATUS_UNUSABLE       = -1, /* session open failed */
> > ++        DEVCRYPTO_STATUS_UNKNOWN        =  0, /* not tested yet */
> > ++        DEVCRYPTO_STATUS_USABLE         =  1  /* algo can be used */
> > ++    } status;
> > ++
> > ++    enum devcrypto_accelerated_t {
> > ++        DEVCRYPTO_NOT_ACCELERATED       = -1, /* software implemented */
> > ++        DEVCRYPTO_ACCELERATION_UNKNOWN  =  0, /* acceleration support unkown */
> > ++        DEVCRYPTO_ACCELERATED           =  1  /* hardware accelerated */
> > ++    } accelerated;
> > ++};
> > +
> > + static int clean_devcrypto_session(struct session_op *sess) {
> > +     if (ioctl(cfd, CIOCFSESSION, &sess->ses) < 0) {
> > +@@ -117,13 +142,22 @@ static const struct cipher_data_st {
> > + #endif
> > + };
> > +
> > +-static size_t get_cipher_data_index(int nid)
> > ++static size_t find_cipher_data_index(int nid)
> > + {
> > +     size_t i;
> > +
> > +     for (i = 0; i < OSSL_NELEM(cipher_data); i++)
> > +         if (nid == cipher_data[i].nid)
> > +             return i;
> > ++    return (size_t)-1;
> > ++}
> > ++
> > ++static size_t get_cipher_data_index(int nid)
> > ++{
> > ++    size_t i = find_cipher_data_index(nid);
> > ++
> > ++    if (i != (size_t)-1)
> > ++        return i;
> > +
> > +     /*
> > +      * Code further down must make sure that only NIDs in the table above
> > +@@ -332,19 +366,40 @@ static int cipher_cleanup(EVP_CIPHER_CTX *ctx)
> > + }
> > +
> > + /*
> > +- * Keep a table of known nids and associated methods.
> > ++ * Keep tables of known nids, associated methods, selected ciphers, and driver
> > ++ * info.
> > +  * Note that known_cipher_nids[] isn't necessarily indexed the same way as
> > +- * cipher_data[] above, which known_cipher_methods[] is.
> > ++ * cipher_data[] above, which the other tables are.
> > +  */
> > + static int known_cipher_nids[OSSL_NELEM(cipher_data)];
> > + static int known_cipher_nids_amount = -1; /* -1 indicates not yet initialised */
> > + static EVP_CIPHER *known_cipher_methods[OSSL_NELEM(cipher_data)] = { NULL, };
> > ++static int selected_ciphers[OSSL_NELEM(cipher_data)];
> > ++static struct driver_info_st cipher_driver_info[OSSL_NELEM(cipher_data)];
> > ++
> > ++
> > ++static int devcrypto_test_cipher(size_t cipher_data_index)
> > ++{
> > ++    return (cipher_driver_info[cipher_data_index].status == DEVCRYPTO_STATUS_USABLE
> > ++            && selected_ciphers[cipher_data_index] == 1
> > ++            && (cipher_driver_info[cipher_data_index].accelerated
> > ++                    == DEVCRYPTO_ACCELERATED
> > ++                || use_softdrivers == DEVCRYPTO_USE_SOFTWARE
> > ++                || (cipher_driver_info[cipher_data_index].accelerated
> > ++                        != DEVCRYPTO_NOT_ACCELERATED
> > ++                    && use_softdrivers == DEVCRYPTO_REJECT_SOFTWARE)));
> > ++}
> > +
> > + static void prepare_cipher_methods(void)
> > + {
> > +     size_t i;
> > +     struct session_op sess;
> > +     unsigned long cipher_mode;
> > ++#ifdef CIOCGSESSINFO
> > ++    struct session_info_op siop;
> > ++#endif
> > ++
> > ++    memset(&cipher_driver_info, 0, sizeof(cipher_driver_info));
> > +
> > +     memset(&sess, 0, sizeof(sess));
> > +     sess.key = (void *)"01234567890123456789012345678901234567890123456789";
> > +@@ -352,15 +407,16 @@ static void prepare_cipher_methods(void)
> > +     for (i = 0, known_cipher_nids_amount = 0;
> > +          i < OSSL_NELEM(cipher_data); i++) {
> > +
> > ++        selected_ciphers[i] = 1;
> > +         /*
> > +-         * Check that the algo is really availably by trying to open and close
> > +-         * a session.
> > ++         * Check that the cipher is usable
> > +          */
> > +         sess.cipher = cipher_data[i].devcryptoid;
> > +         sess.keylen = cipher_data[i].keylen;
> > +-        if (ioctl(cfd, CIOCGSESSION, &sess) < 0
> > +-            || ioctl(cfd, CIOCFSESSION, &sess.ses) < 0)
> > ++        if (ioctl(cfd, CIOCGSESSION, &sess) < 0) {
> > ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > +             continue;
> > ++        }
> > +
> > +         cipher_mode = cipher_data[i].flags & EVP_CIPH_MODE;
> > +
> > +@@ -386,15 +442,41 @@ static void prepare_cipher_methods(void)
> > +                                             cipher_cleanup)
> > +             || !EVP_CIPHER_meth_set_impl_ctx_size(known_cipher_methods[i],
> > +                                                   sizeof(struct cipher_ctx))) {
> > ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > +             EVP_CIPHER_meth_free(known_cipher_methods[i]);
> > +             known_cipher_methods[i] = NULL;
> > +         } else {
> > ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
> > ++#ifdef CIOCGSESSINFO
> > ++            siop.ses = sess.ses;
> > ++            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> > ++                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> > ++            else if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
> > ++                cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> > ++            else
> > ++                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> > ++#endif /* CIOCGSESSINFO */
> > ++        }
> > ++        ioctl(cfd, CIOCFSESSION, &sess.ses);
> > ++        if (devcrypto_test_cipher(i)) {
> > +             known_cipher_nids[known_cipher_nids_amount++] =
> > +                 cipher_data[i].nid;
> > +         }
> > +     }
> > + }
> > +
> > ++static void rebuild_known_cipher_nids(ENGINE *e)
> > ++{
> > ++    size_t i;
> > ++
> > ++    for (i = 0, known_cipher_nids_amount = 0; i < OSSL_NELEM(cipher_data); i++) {
> > ++        if (devcrypto_test_cipher(i))
> > ++            known_cipher_nids[known_cipher_nids_amount++] = cipher_data[i].nid;
> > ++    }
> > ++    ENGINE_unregister_ciphers(e);
> > ++    ENGINE_register_ciphers(e);
> > ++}
> > ++
> > + static const EVP_CIPHER *get_cipher_method(int nid)
> > + {
> > +     size_t i = get_cipher_data_index(nid);
> > +@@ -437,6 +519,36 @@ static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
> > +     return *cipher != NULL;
> > + }
> > +
> > ++static void devcrypto_select_all_ciphers(int *cipher_list)
> > ++{
> > ++    size_t i;
> > ++
> > ++    for (i = 0; i < OSSL_NELEM(cipher_data); i++)
> > ++        cipher_list[i] = 1;
> > ++}
> > ++
> > ++static int cryptodev_select_cipher_cb(const char *str, int len, void *usr)
> > ++{
> > ++    int *cipher_list = (int *)usr;
> > ++    char *name;
> > ++    const EVP_CIPHER *EVP;
> > ++    size_t i;
> > ++
> > ++    if (len == 0)
> > ++        return 1;
> > ++    if (usr == NULL || (name = OPENSSL_strndup(str, len)) == NULL)
> > ++        return 0;
> > ++    EVP = EVP_get_cipherbyname(name);
> > ++    if (EVP == NULL)
> > ++        fprintf(stderr, "devcrypto: unknown cipher %s\n", name);
> > ++    else if ((i = find_cipher_data_index(EVP_CIPHER_nid(EVP))) != (size_t)-1)
> > ++        cipher_list[i] = 1;
> > ++    else
> > ++        fprintf(stderr, "devcrypto: cipher %s not available\n", name);
> > ++    OPENSSL_free(name);
> > ++    return 1;
> > ++}
> > ++
> > + /*
> > +  * We only support digests if the cryptodev implementation supports multiple
> > +  * data updates and session copying.  Otherwise, we would be forced to maintain
> > +@@ -492,13 +604,22 @@ static const struct digest_data_st {
> > + #endif
> > + };
> > +
> > +-static size_t get_digest_data_index(int nid)
> > ++static size_t find_digest_data_index(int nid)
> > + {
> > +     size_t i;
> > +
> > +     for (i = 0; i < OSSL_NELEM(digest_data); i++)
> > +         if (nid == digest_data[i].nid)
> > +             return i;
> > ++    return (size_t)-1;
> > ++}
> > ++
> > ++static size_t get_digest_data_index(int nid)
> > ++{
> > ++    size_t i = find_digest_data_index(nid);
> > ++
> > ++    if (i != (size_t)-1)
> > ++        return i;
> > +
> > +     /*
> > +      * Code further down must make sure that only NIDs in the table above
> > +@@ -515,8 +636,8 @@ static const struct digest_data_st *get_digest_data(int nid)
> > + }
> > +
> > + /*
> > +- * Following are the four necessary functions to map OpenSSL functionality
> > +- * with cryptodev.
> > ++ * Following are the five necessary functions to map OpenSSL functionality
> > ++ * with cryptodev: init, update, final, cleanup, and copy.
> > +  */
> > +
> > + static int digest_init(EVP_MD_CTX *ctx)
> > +@@ -628,52 +749,94 @@ static int digest_cleanup(EVP_MD_CTX *ctx)
> > +     return clean_devcrypto_session(&digest_ctx->sess);
> > + }
> > +
> > +-static int devcrypto_test_digest(size_t digest_data_index)
> > +-{
> > +-    struct session_op sess1, sess2;
> > +-    struct cphash_op cphash;
> > +-    int ret=0;
> > +-
> > +-    memset(&sess1, 0, sizeof(sess1));
> > +-    memset(&sess2, 0, sizeof(sess2));
> > +-    sess1.mac = digest_data[digest_data_index].devcryptoid;
> > +-    if (ioctl(cfd, CIOCGSESSION, &sess1) < 0)
> > +-        return 0;
> > +-    /* Make sure the driver is capable of hash state copy */
> > +-    sess2.mac = sess1.mac;
> > +-    if (ioctl(cfd, CIOCGSESSION, &sess2) >= 0) {
> > +-        cphash.src_ses = sess1.ses;
> > +-        cphash.dst_ses = sess2.ses;
> > +-        if (ioctl(cfd, CIOCCPHASH, &cphash) >= 0)
> > +-            ret = 1;
> > +-        ioctl(cfd, CIOCFSESSION, &sess2.ses);
> > +-    }
> > +-    ioctl(cfd, CIOCFSESSION, &sess1.ses);
> > +-    return ret;
> > +-}
> > +-
> > + /*
> > +- * Keep a table of known nids and associated methods.
> > ++ * Keep tables of known nids, associated methods, selected digests, and
> > ++ * driver info.
> > +  * Note that known_digest_nids[] isn't necessarily indexed the same way as
> > +- * digest_data[] above, which known_digest_methods[] is.
> > ++ * digest_data[] above, which the other tables are.
> > +  */
> > + static int known_digest_nids[OSSL_NELEM(digest_data)];
> > + static int known_digest_nids_amount = -1; /* -1 indicates not yet initialised */
> > + static EVP_MD *known_digest_methods[OSSL_NELEM(digest_data)] = { NULL, };
> > ++static int selected_digests[OSSL_NELEM(digest_data)];
> > ++static struct driver_info_st digest_driver_info[OSSL_NELEM(digest_data)];
> > ++
> > ++static int devcrypto_test_digest(size_t digest_data_index)
> > ++{
> > ++    return (digest_driver_info[digest_data_index].status == DEVCRYPTO_STATUS_USABLE
> > ++            && selected_digests[digest_data_index] == 1
> > ++            && (digest_driver_info[digest_data_index].accelerated
> > ++                    == DEVCRYPTO_ACCELERATED
> > ++                || use_softdrivers == DEVCRYPTO_USE_SOFTWARE
> > ++                || (digest_driver_info[digest_data_index].accelerated
> > ++                        != DEVCRYPTO_NOT_ACCELERATED
> > ++                    && use_softdrivers == DEVCRYPTO_REJECT_SOFTWARE)));
> > ++}
> > ++
> > ++static void rebuild_known_digest_nids(ENGINE *e)
> > ++{
> > ++    size_t i;
> > ++
> > ++    for (i = 0, known_digest_nids_amount = 0; i < OSSL_NELEM(digest_data); i++) {
> > ++        if (devcrypto_test_digest(i))
> > ++            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
> > ++    }
> > ++    ENGINE_unregister_digests(e);
> > ++    ENGINE_register_digests(e);
> > ++}
> > +
> > + static void prepare_digest_methods(void)
> > + {
> > +     size_t i;
> > ++    struct session_op sess1, sess2;
> > ++#ifdef CIOCGSESSINFO
> > ++    struct session_info_op siop;
> > ++#endif
> > ++    struct cphash_op cphash;
> > ++
> > ++    memset(&digest_driver_info, 0, sizeof(digest_driver_info));
> > ++
> > ++    memset(&sess1, 0, sizeof(sess1));
> > ++    memset(&sess2, 0, sizeof(sess2));
> > +
> > +     for (i = 0, known_digest_nids_amount = 0; i < OSSL_NELEM(digest_data);
> > +          i++) {
> > +
> > ++        selected_digests[i] = 1;
> > ++
> > +         /*
> > +-         * Check that the algo is usable
> > ++         * Check that the digest is usable
> > +          */
> > +-        if (!devcrypto_test_digest(i))
> > +-            continue;
> > ++        sess1.mac = digest_data[i].devcryptoid;
> > ++        sess2.ses = 0;
> > ++        if (ioctl(cfd, CIOCGSESSION, &sess1) < 0) {
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            goto finish;
> > ++        }
> > +
> > ++#ifdef CIOCGSESSINFO
> > ++        /* gather hardware acceleration info from the driver */
> > ++        siop.ses = sess1.ses;
> > ++        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> > ++            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> > ++        else if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
> > ++            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> > ++        else
> > ++            digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> > ++#endif
> > ++
> > ++        /* digest must be capable of hash state copy */
> > ++        sess2.mac = sess1.mac;
> > ++        if (ioctl(cfd, CIOCGSESSION, &sess2) < 0) {
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            goto finish;
> > ++        }
> > ++        cphash.src_ses = sess1.ses;
> > ++        cphash.dst_ses = sess2.ses;
> > ++        if (ioctl(cfd, CIOCCPHASH, &cphash) < 0) {
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            goto finish;
> > ++        }
> > +         if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid,
> > +                                                        NID_undef)) == NULL
> > +             || !EVP_MD_meth_set_input_blocksize(known_digest_methods[i],
> > +@@ -687,11 +850,18 @@ static void prepare_digest_methods(void)
> > +             || !EVP_MD_meth_set_cleanup(known_digest_methods[i], digest_cleanup)
> > +             || !EVP_MD_meth_set_app_datasize(known_digest_methods[i],
> > +                                              sizeof(struct digest_ctx))) {
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > +             EVP_MD_meth_free(known_digest_methods[i]);
> > +             known_digest_methods[i] = NULL;
> > +-        } else {
> > +-            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
> > ++            goto finish;
> > +         }
> > ++        digest_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
> > ++finish:
> > ++        ioctl(cfd, CIOCFSESSION, &sess1.ses);
> > ++        if (sess2.ses != 0)
> > ++            ioctl(cfd, CIOCFSESSION, &sess2.ses);
> > ++        if (devcrypto_test_digest(i))
> > ++            known_digest_nids[known_digest_nids_amount++] = digest_data[i].nid;
> > +     }
> > + }
> > +
> > +@@ -737,8 +907,154 @@ static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
> > +     return *digest != NULL;
> > + }
> > +
> > ++static void devcrypto_select_all_digests(int *digest_list)
> > ++{
> > ++    size_t i;
> > ++
> > ++    for (i = 0; i < OSSL_NELEM(digest_data); i++)
> > ++        digest_list[i] = 1;
> > ++}
> > ++
> > ++static int cryptodev_select_digest_cb(const char *str, int len, void *usr)
> > ++{
> > ++    int *digest_list = (int *)usr;
> > ++    char *name;
> > ++    const EVP_MD *EVP;
> > ++    size_t i;
> > ++
> > ++    if (len == 0)
> > ++        return 1;
> > ++    if (usr == NULL || (name = OPENSSL_strndup(str, len)) == NULL)
> > ++        return 0;
> > ++    EVP = EVP_get_digestbyname(name);
> > ++    if (EVP == NULL)
> > ++        fprintf(stderr, "devcrypto: unknown digest %s\n", name);
> > ++    else if ((i = find_digest_data_index(EVP_MD_type(EVP))) != (size_t)-1)
> > ++        digest_list[i] = 1;
> > ++    else
> > ++        fprintf(stderr, "devcrypto: digest %s not available\n", name);
> > ++    OPENSSL_free(name);
> > ++    return 1;
> > ++}
> > ++
> > ++#endif
> > ++
> > ++/******************************************************************************
> > ++ *
> > ++ * CONTROL COMMANDS
> > ++ *
> > ++ *****/
> > ++
> > ++#define DEVCRYPTO_CMD_USE_SOFTDRIVERS ENGINE_CMD_BASE
> > ++#define DEVCRYPTO_CMD_CIPHERS (ENGINE_CMD_BASE + 1)
> > ++#define DEVCRYPTO_CMD_DIGESTS (ENGINE_CMD_BASE + 2)
> > ++#define DEVCRYPTO_CMD_DUMP_INFO (ENGINE_CMD_BASE + 3)
> > ++
> > ++/* Helper macros for CPP string composition */
> > ++#ifndef OPENSSL_MSTR
> > ++# define OPENSSL_MSTR_HELPER(x) #x
> > ++# define OPENSSL_MSTR(x) OPENSSL_MSTR_HELPER(x)
> > ++#endif
> > ++
> > ++static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
> > ++#ifdef CIOCGSESSINFO
> > ++   {DEVCRYPTO_CMD_USE_SOFTDRIVERS,
> > ++    "USE_SOFTDRIVERS",
> > ++    "specifies whether to use software (not accelerated) drivers ("
> > ++        OPENSSL_MSTR(DEVCRYPTO_REQUIRE_ACCELERATED) "=use only accelerated drivers, "
> > ++        OPENSSL_MSTR(DEVCRYPTO_USE_SOFTWARE) "=allow all drivers, "
> > ++        OPENSSL_MSTR(DEVCRYPTO_REJECT_SOFTWARE)
> > ++        "=use if acceleration can't be determined) [default="
> > ++        OPENSSL_MSTR(DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS) "]",
> > ++    ENGINE_CMD_FLAG_NUMERIC},
> > ++#endif
> > ++
> > ++   {DEVCRYPTO_CMD_CIPHERS,
> > ++    "CIPHERS",
> > ++    "either ALL, NONE, or a comma-separated list of ciphers to enable [default=ALL]",
> > ++    ENGINE_CMD_FLAG_STRING},
> > ++
> > ++#ifdef IMPLEMENT_DIGEST
> > ++   {DEVCRYPTO_CMD_DIGESTS,
> > ++    "DIGESTS",
> > ++    "either ALL, NONE, or a comma-separated list of digests to enable [default=ALL]",
> > ++    ENGINE_CMD_FLAG_STRING},
> > + #endif
> > +
> > ++   {0, NULL, NULL, 0}
> > ++};
> > ++
> > ++static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
> > ++{
> > ++    int *new_list;
> > ++    switch (cmd) {
> > ++#ifdef CIOCGSESSINFO
> > ++    case DEVCRYPTO_CMD_USE_SOFTDRIVERS:
> > ++        switch (i) {
> > ++        case DEVCRYPTO_REQUIRE_ACCELERATED:
> > ++        case DEVCRYPTO_USE_SOFTWARE:
> > ++        case DEVCRYPTO_REJECT_SOFTWARE:
> > ++            break;
> > ++        default:
> > ++            fprintf(stderr, "devcrypto: invalid value (%ld) for USE_SOFTDRIVERS\n", i);
> > ++            return 0;
> > ++        }
> > ++        if (use_softdrivers == i)
> > ++            return 1;
> > ++        use_softdrivers = i;
> > ++#ifdef IMPLEMENT_DIGEST
> > ++        rebuild_known_digest_nids(e);
> > ++#endif
> > ++        rebuild_known_cipher_nids(e);
> > ++        return 1;
> > ++#endif /* CIOCGSESSINFO */
> > ++
> > ++    case DEVCRYPTO_CMD_CIPHERS:
> > ++        if (p == NULL)
> > ++            return 1;
> > ++        if (strcasecmp((const char *)p, "ALL") == 0) {
> > ++            devcrypto_select_all_ciphers(selected_ciphers);
> > ++        } else if (strcasecmp((const char*)p, "NONE") == 0) {
> > ++            memset(selected_ciphers, 0, sizeof(selected_ciphers));
> > ++        } else {
> > ++            new_list=OPENSSL_zalloc(sizeof(selected_ciphers));
> > ++            if (!CONF_parse_list(p, ',', 1, cryptodev_select_cipher_cb, new_list)) {
> > ++                OPENSSL_free(new_list);
> > ++                return 0;
> > ++            }
> > ++            memcpy(selected_ciphers, new_list, sizeof(selected_ciphers));
> > ++            OPENSSL_free(new_list);
> > ++        }
> > ++        rebuild_known_cipher_nids(e);
> > ++        return 1;
> > ++
> > ++#ifdef IMPLEMENT_DIGEST
> > ++    case DEVCRYPTO_CMD_DIGESTS:
> > ++        if (p == NULL)
> > ++            return 1;
> > ++        if (strcasecmp((const char *)p, "ALL") == 0) {
> > ++            devcrypto_select_all_digests(selected_digests);
> > ++        } else if (strcasecmp((const char*)p, "NONE") == 0) {
> > ++            memset(selected_digests, 0, sizeof(selected_digests));
> > ++        } else {
> > ++            new_list=OPENSSL_zalloc(sizeof(selected_digests));
> > ++            if (!CONF_parse_list(p, ',', 1, cryptodev_select_digest_cb, new_list)) {
> > ++                OPENSSL_free(new_list);
> > ++                return 0;
> > ++            }
> > ++            memcpy(selected_digests, new_list, sizeof(selected_digests));
> > ++            OPENSSL_free(new_list);
> > ++        }
> > ++        rebuild_known_digest_nids(e);
> > ++        return 1;
> > ++#endif /* IMPLEMENT_DIGEST */
> > ++
> > ++    default:
> > ++        break;
> > ++    }
> > ++    return 0;
> > ++}
> > ++
> > + /******************************************************************************
> > +  *
> > +  * LOAD / UNLOAD
> > +@@ -788,6 +1104,8 @@ void engine_load_devcrypto_int()
> > +
> > +     if (!ENGINE_set_id(e, "devcrypto")
> > +         || !ENGINE_set_name(e, "/dev/crypto engine")
> > ++        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
> > ++        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl)
> > +
> > + /*
> > +  * Asymmetric ciphers aren't well supported with /dev/crypto.  Among the BSD
> > diff --git a/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch b/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch
> > new file mode 100644
> > index 0000000000..4e3b8597bb
> > --- /dev/null
> > +++ b/package/libs/openssl/patches/420-eng_devcrypto-add-command-to-dump-driver-info.patch
> > @@ -0,0 +1,275 @@
> > +From 8cc22636b95de928f5abaebd0d19e2f040870953 Mon Sep 17 00:00:00 2001
> > +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +Date: Tue, 6 Nov 2018 22:54:07 -0200
> > +Subject: [PATCH 3/4] eng_devcrypto: add command to dump driver info
> > +
> > +This is useful to determine the kernel driver running each algorithm.
> > +
> > +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +
> > +Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre at ncp-e.com>
> > +Reviewed-by: Richard Levitte <levitte at openssl.org>
> > +(Merged from https://github.com/openssl/openssl/pull/7585)
> > +
> > +diff --git a/crypto/engine/eng_devcrypto.c b/crypto/engine/eng_devcrypto.c
> > +index 0f0aee6b57..44e60cbc7b 100644
> > +--- a/crypto/engine/eng_devcrypto.c
> > ++++ b/crypto/engine/eng_devcrypto.c
> > +@@ -48,16 +48,20 @@ static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
> > +  */
> > + struct driver_info_st {
> > +     enum devcrypto_status_t {
> > +-        DEVCRYPTO_STATUS_UNUSABLE       = -1, /* session open failed */
> > +-        DEVCRYPTO_STATUS_UNKNOWN        =  0, /* not tested yet */
> > +-        DEVCRYPTO_STATUS_USABLE         =  1  /* algo can be used */
> > ++        DEVCRYPTO_STATUS_FAILURE         = -3, /* unusable for other reason */
> > ++        DEVCRYPTO_STATUS_NO_CIOCCPHASH   = -2, /* hash state copy not supported */
> > ++        DEVCRYPTO_STATUS_NO_CIOCGSESSION = -1, /* session open failed */
> > ++        DEVCRYPTO_STATUS_UNKNOWN         =  0, /* not tested yet */
> > ++        DEVCRYPTO_STATUS_USABLE          =  1  /* algo can be used */
> > +     } status;
> > +
> > +     enum devcrypto_accelerated_t {
> > +-        DEVCRYPTO_NOT_ACCELERATED       = -1, /* software implemented */
> > +-        DEVCRYPTO_ACCELERATION_UNKNOWN  =  0, /* acceleration support unkown */
> > +-        DEVCRYPTO_ACCELERATED           =  1  /* hardware accelerated */
> > ++        DEVCRYPTO_NOT_ACCELERATED        = -1, /* software implemented */
> > ++        DEVCRYPTO_ACCELERATION_UNKNOWN   =  0, /* acceleration support unkown */
> > ++        DEVCRYPTO_ACCELERATED            =  1  /* hardware accelerated */
> > +     } accelerated;
> > ++
> > ++    char *driver_name;
> > + };
> > +
> > + static int clean_devcrypto_session(struct session_op *sess) {
> > +@@ -414,7 +418,7 @@ static void prepare_cipher_methods(void)
> > +         sess.cipher = cipher_data[i].devcryptoid;
> > +         sess.keylen = cipher_data[i].keylen;
> > +         if (ioctl(cfd, CIOCGSESSION, &sess) < 0) {
> > +-            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCGSESSION;
> > +             continue;
> > +         }
> > +
> > +@@ -442,19 +446,24 @@ static void prepare_cipher_methods(void)
> > +                                             cipher_cleanup)
> > +             || !EVP_CIPHER_meth_set_impl_ctx_size(known_cipher_methods[i],
> > +                                                   sizeof(struct cipher_ctx))) {
> > +-            cipher_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            cipher_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
> > +             EVP_CIPHER_meth_free(known_cipher_methods[i]);
> > +             known_cipher_methods[i] = NULL;
> > +         } else {
> > +             cipher_driver_info[i].status = DEVCRYPTO_STATUS_USABLE;
> > + #ifdef CIOCGSESSINFO
> > +             siop.ses = sess.ses;
> > +-            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> > ++            if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0) {
> > +                 cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> > +-            else if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
> > +-                cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> > +-            else
> > +-                cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> > ++            } else {
> > ++                cipher_driver_info[i].driver_name =
> > ++                    OPENSSL_strndup(siop.cipher_info.cra_driver_name,
> > ++                                    CRYPTODEV_MAX_ALG_NAME);
> > ++                if (!(siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY))
> > ++                    cipher_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> > ++                else
> > ++                    cipher_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> > ++            }
> > + #endif /* CIOCGSESSINFO */
> > +         }
> > +         ioctl(cfd, CIOCFSESSION, &sess.ses);
> > +@@ -504,8 +513,11 @@ static void destroy_all_cipher_methods(void)
> > + {
> > +     size_t i;
> > +
> > +-    for (i = 0; i < OSSL_NELEM(cipher_data); i++)
> > ++    for (i = 0; i < OSSL_NELEM(cipher_data); i++) {
> > +         destroy_cipher_method(cipher_data[i].nid);
> > ++        OPENSSL_free(cipher_driver_info[i].driver_name);
> > ++        cipher_driver_info[i].driver_name = NULL;
> > ++    }
> > + }
> > +
> > + static int devcrypto_ciphers(ENGINE *e, const EVP_CIPHER **cipher,
> > +@@ -549,6 +561,40 @@ static int cryptodev_select_cipher_cb(const char *str, int len, void *usr)
> > +     return 1;
> > + }
> > +
> > ++static void dump_cipher_info(void)
> > ++{
> > ++    size_t i;
> > ++    const char *name;
> > ++
> > ++    fprintf (stderr, "Information about ciphers supported by the /dev/crypto"
> > ++             " engine:\n");
> > ++#ifndef CIOCGSESSINFO
> > ++    fprintf(stderr, "CIOCGSESSINFO (session info call) unavailable\n");
> > ++#endif
> > ++    for (i = 0; i < OSSL_NELEM(cipher_data); i++) {
> > ++        name = OBJ_nid2sn(cipher_data[i].nid);
> > ++        fprintf (stderr, "Cipher %s, NID=%d, /dev/crypto info: id=%d, ",
> > ++                 name ? name : "unknown", cipher_data[i].nid,
> > ++                 cipher_data[i].devcryptoid);
> > ++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCGSESSION ) {
> > ++            fprintf (stderr, "CIOCGSESSION (session open call) failed\n");
> > ++            continue;
> > ++        }
> > ++        fprintf (stderr, "driver=%s ", cipher_driver_info[i].driver_name ?
> > ++                 cipher_driver_info[i].driver_name : "unknown");
> > ++        if (cipher_driver_info[i].accelerated == DEVCRYPTO_ACCELERATED)
> > ++            fprintf(stderr, "(hw accelerated)");
> > ++        else if (cipher_driver_info[i].accelerated == DEVCRYPTO_NOT_ACCELERATED)
> > ++            fprintf(stderr, "(software)");
> > ++        else
> > ++            fprintf(stderr, "(acceleration status unknown)");
> > ++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_FAILURE)
> > ++            fprintf (stderr, ". Cipher setup failed");
> > ++        fprintf(stderr, "\n");
> > ++    }
> > ++    fprintf(stderr, "\n");
> > ++}
> > ++
> > + /*
> > +  * We only support digests if the cryptodev implementation supports multiple
> > +  * data updates and session copying.  Otherwise, we would be forced to maintain
> > +@@ -810,31 +856,36 @@ static void prepare_digest_methods(void)
> > +         sess1.mac = digest_data[i].devcryptoid;
> > +         sess2.ses = 0;
> > +         if (ioctl(cfd, CIOCGSESSION, &sess1) < 0) {
> > +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCGSESSION;
> > +             goto finish;
> > +         }
> > +
> > + #ifdef CIOCGSESSINFO
> > +         /* gather hardware acceleration info from the driver */
> > +         siop.ses = sess1.ses;
> > +-        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0)
> > ++        if (ioctl(cfd, CIOCGSESSINFO, &siop) < 0) {
> > +             digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATION_UNKNOWN;
> > +-        else if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
> > +-            digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> > +-        else
> > +-            digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> > ++        } else {
> > ++            digest_driver_info[i].driver_name =
> > ++                OPENSSL_strndup(siop.hash_info.cra_driver_name,
> > ++                                CRYPTODEV_MAX_ALG_NAME);
> > ++            if (siop.flags & SIOP_FLAG_KERNEL_DRIVER_ONLY)
> > ++                digest_driver_info[i].accelerated = DEVCRYPTO_ACCELERATED;
> > ++            else
> > ++                digest_driver_info[i].accelerated = DEVCRYPTO_NOT_ACCELERATED;
> > ++        }
> > + #endif
> > +
> > +         /* digest must be capable of hash state copy */
> > +         sess2.mac = sess1.mac;
> > +         if (ioctl(cfd, CIOCGSESSION, &sess2) < 0) {
> > +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
> > +             goto finish;
> > +         }
> > +         cphash.src_ses = sess1.ses;
> > +         cphash.dst_ses = sess2.ses;
> > +         if (ioctl(cfd, CIOCCPHASH, &cphash) < 0) {
> > +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_NO_CIOCCPHASH;
> > +             goto finish;
> > +         }
> > +         if ((known_digest_methods[i] = EVP_MD_meth_new(digest_data[i].nid,
> > +@@ -850,7 +901,7 @@ static void prepare_digest_methods(void)
> > +             || !EVP_MD_meth_set_cleanup(known_digest_methods[i], digest_cleanup)
> > +             || !EVP_MD_meth_set_app_datasize(known_digest_methods[i],
> > +                                              sizeof(struct digest_ctx))) {
> > +-            digest_driver_info[i].status = DEVCRYPTO_STATUS_UNUSABLE;
> > ++            digest_driver_info[i].status = DEVCRYPTO_STATUS_FAILURE;
> > +             EVP_MD_meth_free(known_digest_methods[i]);
> > +             known_digest_methods[i] = NULL;
> > +             goto finish;
> > +@@ -892,8 +943,11 @@ static void destroy_all_digest_methods(void)
> > + {
> > +     size_t i;
> > +
> > +-    for (i = 0; i < OSSL_NELEM(digest_data); i++)
> > ++    for (i = 0; i < OSSL_NELEM(digest_data); i++) {
> > +         destroy_digest_method(digest_data[i].nid);
> > ++        OPENSSL_free(digest_driver_info[i].driver_name);
> > ++        digest_driver_info[i].driver_name = NULL;
> > ++    }
> > + }
> > +
> > + static int devcrypto_digests(ENGINE *e, const EVP_MD **digest,
> > +@@ -937,6 +991,43 @@ static int cryptodev_select_digest_cb(const char *str, int len, void *usr)
> > +     return 1;
> > + }
> > +
> > ++static void dump_digest_info(void)
> > ++{
> > ++    size_t i;
> > ++    const char *name;
> > ++
> > ++    fprintf (stderr, "Information about digests supported by the /dev/crypto"
> > ++             " engine:\n");
> > ++#ifndef CIOCGSESSINFO
> > ++    fprintf(stderr, "CIOCGSESSINFO (session info call) unavailable\n");
> > ++#endif
> > ++
> > ++    for (i = 0; i < OSSL_NELEM(digest_data); i++) {
> > ++        name = OBJ_nid2sn(digest_data[i].nid);
> > ++        fprintf (stderr, "Digest %s, NID=%d, /dev/crypto info: id=%d, driver=%s",
> > ++                 name ? name : "unknown", digest_data[i].nid,
> > ++                 digest_data[i].devcryptoid,
> > ++                 digest_driver_info[i].driver_name ? digest_driver_info[i].driver_name : "unknown");
> > ++        if (digest_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCGSESSION) {
> > ++            fprintf (stderr, ". CIOCGSESSION (session open) failed\n");
> > ++            continue;
> > ++        }
> > ++        if (digest_driver_info[i].accelerated == DEVCRYPTO_ACCELERATED)
> > ++            fprintf(stderr, " (hw accelerated)");
> > ++        else if (digest_driver_info[i].accelerated == DEVCRYPTO_NOT_ACCELERATED)
> > ++            fprintf(stderr, " (software)");
> > ++        else
> > ++            fprintf(stderr, " (acceleration status unknown)");
> > ++        if (cipher_driver_info[i].status == DEVCRYPTO_STATUS_FAILURE)
> > ++            fprintf (stderr, ". Cipher setup failed\n");
> > ++        else if (digest_driver_info[i].status == DEVCRYPTO_STATUS_NO_CIOCCPHASH)
> > ++            fprintf(stderr, ", CIOCCPHASH failed\n");
> > ++        else
> > ++            fprintf(stderr, ", CIOCCPHASH capable\n");
> > ++    }
> > ++    fprintf(stderr, "\n");
> > ++}
> > ++
> > + #endif
> > +
> > + /******************************************************************************
> > +@@ -981,6 +1072,11 @@ static const ENGINE_CMD_DEFN devcrypto_cmds[] = {
> > +     ENGINE_CMD_FLAG_STRING},
> > + #endif
> > +
> > ++   {DEVCRYPTO_CMD_DUMP_INFO,
> > ++    "DUMP_INFO",
> > ++    "dump info about each algorithm to stderr; use 'openssl engine -pre DUMP_INFO devcrypto'",
> > ++    ENGINE_CMD_FLAG_NO_INPUT},
> > ++
> > +    {0, NULL, NULL, 0}
> > + };
> > +
> > +@@ -1049,6 +1145,13 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
> > +         return 1;
> > + #endif /* IMPLEMENT_DIGEST */
> > +
> > ++    case DEVCRYPTO_CMD_DUMP_INFO:
> > ++        dump_cipher_info();
> > ++#ifdef IMPLEMENT_DIGEST
> > ++        dump_digest_info();
> > ++#endif
> > ++        return 1;
> > ++
> > +     default:
> > +         break;
> > +     }
> > diff --git a/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch
> > new file mode 100644
> > index 0000000000..fa5e48f36a
> > --- /dev/null
> > +++ b/package/libs/openssl/patches/430-e_devcrypto-make-the-dev-crypto-engine-dynamic.patch
> > @@ -0,0 +1,336 @@
> > +From 9e0ca5fff3fa439fc36fa5374671b91dc5657b6a Mon Sep 17 00:00:00 2001
> > +From: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +Date: Tue, 6 Nov 2018 10:57:03 -0200
> > +Subject: [PATCH 4/4] e_devcrypto: make the /dev/crypto engine dynamic
> > +
> > +Engine has been moved from crypto/engine/eng_devcrypto.c to
> > +engines/e_devcrypto.c.
> > +
> > +Signed-off-by: Eneas U de Queiroz <cote2004-github at yahoo.com>
> > +
> > +diff --git a/crypto/engine/build.info b/crypto/engine/build.info
> > +index e00802a3fd..47fe948966 100644
> > +--- a/crypto/engine/build.info
> > ++++ b/crypto/engine/build.info
> > +@@ -6,6 +6,3 @@ SOURCE[../../libcrypto]=\
> > +         tb_cipher.c tb_digest.c tb_pkmeth.c tb_asnmth.c tb_eckey.c \
> > +         eng_openssl.c eng_cnf.c eng_dyn.c \
> > +         eng_rdrand.c
> > +-IF[{- !$disabled{devcryptoeng} -}]
> > +-  SOURCE[../../libcrypto]=eng_devcrypto.c
> > +-ENDIF
> > +diff --git a/crypto/init.c b/crypto/init.c
> > +index 209d1a483d..02c609535f 100644
> > +--- a/crypto/init.c
> > ++++ b/crypto/init.c
> > +@@ -290,18 +290,6 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_openssl)
> > +     engine_load_openssl_int();
> > +     return 1;
> > + }
> > +-# ifndef OPENSSL_NO_DEVCRYPTOENG
> > +-static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT;
> > +-DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto)
> > +-{
> > +-#  ifdef OPENSSL_INIT_DEBUG
> > +-    fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: "
> > +-                    "engine_load_devcrypto_int()\n");
> > +-#  endif
> > +-    engine_load_devcrypto_int();
> > +-    return 1;
> > +-}
> > +-# endif
> > +
> > + # ifndef OPENSSL_NO_RDRAND
> > + static CRYPTO_ONCE engine_rdrand = CRYPTO_ONCE_STATIC_INIT;
> > +@@ -326,6 +314,18 @@ DEFINE_RUN_ONCE_STATIC(ossl_init_engine_dynamic)
> > +     return 1;
> > + }
> > + # ifndef OPENSSL_NO_STATIC_ENGINE
> > ++#  ifndef OPENSSL_NO_DEVCRYPTOENG
> > ++static CRYPTO_ONCE engine_devcrypto = CRYPTO_ONCE_STATIC_INIT;
> > ++DEFINE_RUN_ONCE_STATIC(ossl_init_engine_devcrypto)
> > ++{
> > ++#   ifdef OPENSSL_INIT_DEBUG
> > ++    fprintf(stderr, "OPENSSL_INIT: ossl_init_engine_devcrypto: "
> > ++                    "engine_load_devcrypto_int()\n");
> > ++#   endif
> > ++    engine_load_devcrypto_int();
> > ++    return 1;
> > ++}
> > ++#  endif
> > + #  if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)
> > + static CRYPTO_ONCE engine_padlock = CRYPTO_ONCE_STATIC_INIT;
> > + DEFINE_RUN_ONCE_STATIC(ossl_init_engine_padlock)
> > +@@ -645,11 +645,6 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
> > +     if ((opts & OPENSSL_INIT_ENGINE_OPENSSL)
> > +             && !RUN_ONCE(&engine_openssl, ossl_init_engine_openssl))
> > +         return 0;
> > +-# if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_DEVCRYPTOENG)
> > +-    if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV)
> > +-            && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto))
> > +-        return 0;
> > +-# endif
> > + # ifndef OPENSSL_NO_RDRAND
> > +     if ((opts & OPENSSL_INIT_ENGINE_RDRAND)
> > +             && !RUN_ONCE(&engine_rdrand, ossl_init_engine_rdrand))
> > +@@ -659,6 +654,11 @@ int OPENSSL_init_crypto(uint64_t opts, const OPENSSL_INIT_SETTINGS *settings)
> > +             && !RUN_ONCE(&engine_dynamic, ossl_init_engine_dynamic))
> > +         return 0;
> > + # ifndef OPENSSL_NO_STATIC_ENGINE
> > ++#  ifndef OPENSSL_NO_DEVCRYPTOENG
> > ++    if ((opts & OPENSSL_INIT_ENGINE_CRYPTODEV)
> > ++            && !RUN_ONCE(&engine_devcrypto, ossl_init_engine_devcrypto))
> > ++        return 0;
> > ++#  endif
> > + #  if !defined(OPENSSL_NO_HW) && !defined(OPENSSL_NO_HW_PADLOCK)
> > +     if ((opts & OPENSSL_INIT_ENGINE_PADLOCK)
> > +             && !RUN_ONCE(&engine_padlock, ossl_init_engine_padlock))
> > +diff --git a/engines/build.info b/engines/build.info
> > +index df173ea69d..dc0cbeb0a3 100644
> > +--- a/engines/build.info
> > ++++ b/engines/build.info
> > +@@ -10,6 +10,9 @@ IF[{- !$disabled{"engine"} -}]
> > +     IF[{- !$disabled{afalgeng} -}]
> > +       SOURCE[../libcrypto]=e_afalg.c
> > +     ENDIF
> > ++    IF[{- !$disabled{"devcryptoeng"} -}]
> > ++      SOURCE[../libcrypto]=e_devcrypto.c
> > ++    ENDIF
> > +   ELSE
> > +     ENGINES=padlock
> > +     SOURCE[padlock]=e_padlock.c {- $target{padlock_asm_src} -}
> > +@@ -27,6 +30,12 @@ IF[{- !$disabled{"engine"} -}]
> > +       DEPEND[afalg]=../libcrypto
> > +       INCLUDE[afalg]= ../include
> > +     ENDIF
> > ++    IF[{- !$disabled{"devcryptoeng"} -}]
> > ++      ENGINES=devcrypto
> > ++      SOURCE[devcrypto]=e_devcrypto.c
> > ++      DEPEND[devcrypto]=../libcrypto
> > ++      INCLUDE[devcrypto]=../include
> > ++    ENDIF
> > +
> > +     ENGINES_NO_INST=ossltest dasync
> > +     SOURCE[dasync]=e_dasync.c
> > +diff --git a/crypto/engine/eng_devcrypto.c b/engines/e_devcrypto.c
> > +similarity index 95%
> > +rename from crypto/engine/eng_devcrypto.c
> > +rename to engines/e_devcrypto.c
> > +index 44e60cbc7b..9af2ce174a 100644
> > +--- a/crypto/engine/eng_devcrypto.c
> > ++++ b/engines/e_devcrypto.c
> > +@@ -7,7 +7,7 @@
> > +  * https://www.openssl.org/source/license.html
> > +  */
> > +
> > +-#include "e_os.h"
> > ++#include "../e_os.h"
> > + #include <string.h>
> > + #include <sys/types.h>
> > + #include <sys/stat.h>
> > +@@ -23,24 +23,24 @@
> > + #include <openssl/objects.h>
> > + #include <crypto/cryptodev.h>
> > +
> > +-#include "internal/engine.h"
> > +-
> > + #ifdef CRYPTO_ALGORITHM_MIN
> > + # define CHECK_BSD_STYLE_MACROS
> > + #endif
> > +
> > ++#define engine_devcrypto_id "devcrypto"
> > ++
> > + /*
> > +  * ONE global file descriptor for all sessions.  This allows operations
> > +  * such as digest session data copying (see digest_copy()), but is also
> > +  * saner...  why re-open /dev/crypto for every session?
> > +  */
> > +-static int cfd;
> > ++static int cfd = -1;
> > + #define DEVCRYPTO_REQUIRE_ACCELERATED 0 /* require confirmation of acceleration */
> > + #define DEVCRYPTO_USE_SOFTWARE        1 /* allow software drivers */
> > + #define DEVCRYPTO_REJECT_SOFTWARE     2 /* only disallow confirmed software drivers */
> > +
> > +-#define DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS DEVCRYPTO_REJECT_SOFTWARE
> > +-static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFDTRIVERS;
> > ++#define DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS DEVCRYPTO_REJECT_SOFTWARE
> > ++static int use_softdrivers = DEVCRYPTO_DEFAULT_USE_SOFTDRIVERS;
> > +
> > + /*
> > +  * cipher/digest status & acceleration definitions
> > +@@ -73,6 +73,10 @@ static int clean_devcrypto_session(struct session_op *sess) {
> > +     return 1;
> > + }
> > +
> > ++#ifdef OPENSSL_NO_DYNAMIC_ENGINE
> > ++void engine_load_devcrypto_int(void);
> > ++#endif
> > ++
> > + /******************************************************************************
> > +  *
> > +  * Ciphers
> > +@@ -1164,6 +1168,37 @@ static int devcrypto_ctrl(ENGINE *e, int cmd, long i, void *p, void (*f) (void))
> > +  *
> > +  *****/
> > +
> > ++/*
> > ++ * Opens /dev/crypto
> > ++ */
> > ++static int open_devcrypto(void)
> > ++{
> > ++    if (cfd >= 0)
> > ++        return 1;
> > ++
> > ++    if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
> > ++        fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno));
> > ++        return 0;
> > ++    }
> > ++
> > ++    return 1;
> > ++}
> > ++
> > ++static int close_devcrypto(void)
> > ++{
> > ++    int ret;
> > ++
> > ++    if (cfd < 0)
> > ++        return 1;
> > ++    ret = close(cfd);
> > ++    cfd = -1;
> > ++    if (ret != 0) {
> > ++        fprintf(stderr, "Error closing /dev/crypto: %s\n", strerror(errno));
> > ++        return 0;
> > ++    }
> > ++    return 1;
> > ++}
> > ++
> > + static int devcrypto_unload(ENGINE *e)
> > + {
> > +     destroy_all_cipher_methods();
> > +@@ -1171,45 +1206,29 @@ static int devcrypto_unload(ENGINE *e)
> > +     destroy_all_digest_methods();
> > + #endif
> > +
> > +-    close(cfd);
> > ++    close_devcrypto();
> > +
> > +     return 1;
> > + }
> > +-/*
> > +- * This engine is always built into libcrypto, so it doesn't offer any
> > +- * ability to be dynamically loadable.
> > +- */
> > +-void engine_load_devcrypto_int()
> > +-{
> > +-    ENGINE *e = NULL;
> > +
> > +-    if ((cfd = open("/dev/crypto", O_RDWR, 0)) < 0) {
> > +-        fprintf(stderr, "Could not open /dev/crypto: %s\n", strerror(errno));
> > +-        return;
> > +-    }
> > ++static int bind_devcrypto(ENGINE *e) {
> > +
> > +-    if ((e = ENGINE_new()) == NULL
> > +-        || !ENGINE_set_destroy_function(e, devcrypto_unload)) {
> > +-        ENGINE_free(e);
> > +-        /*
> > +-         * We know that devcrypto_unload() won't be called when one of the
> > +-         * above two calls have failed, so we close cfd explicitly here to
> > +-         * avoid leaking resources.
> > +-         */
> > +-        close(cfd);
> > +-        return;
> > +-    }
> > ++    if (!ENGINE_set_id(e, engine_devcrypto_id)
> > ++        || !ENGINE_set_name(e, "/dev/crypto engine")
> > ++        || !ENGINE_set_destroy_function(e, devcrypto_unload)
> > ++        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
> > ++        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl))
> > ++        return 0;
> > +
> > +     prepare_cipher_methods();
> > + #ifdef IMPLEMENT_DIGEST
> > +     prepare_digest_methods();
> > + #endif
> > +
> > +-    if (!ENGINE_set_id(e, "devcrypto")
> > +-        || !ENGINE_set_name(e, "/dev/crypto engine")
> > +-        || !ENGINE_set_cmd_defns(e, devcrypto_cmds)
> > +-        || !ENGINE_set_ctrl_function(e, devcrypto_ctrl)
> > +-
> > ++    return (ENGINE_set_ciphers(e, devcrypto_ciphers)
> > ++#ifdef IMPLEMENT_DIGEST
> > ++        && ENGINE_set_digests(e, devcrypto_digests)
> > ++#endif
> > + /*
> > +  * Asymmetric ciphers aren't well supported with /dev/crypto.  Among the BSD
> > +  * implementations, it seems to only exist in FreeBSD, and regarding the
> > +@@ -1232,23 +1251,36 @@ void engine_load_devcrypto_int()
> > +  */
> > + #if 0
> > + # ifndef OPENSSL_NO_RSA
> > +-        || !ENGINE_set_RSA(e, devcrypto_rsa)
> > ++        && ENGINE_set_RSA(e, devcrypto_rsa)
> > + # endif
> > + # ifndef OPENSSL_NO_DSA
> > +-        || !ENGINE_set_DSA(e, devcrypto_dsa)
> > ++        && ENGINE_set_DSA(e, devcrypto_dsa)
> > + # endif
> > + # ifndef OPENSSL_NO_DH
> > +-        || !ENGINE_set_DH(e, devcrypto_dh)
> > ++        && ENGINE_set_DH(e, devcrypto_dh)
> > + # endif
> > + # ifndef OPENSSL_NO_EC
> > +-        || !ENGINE_set_EC(e, devcrypto_ec)
> > ++        && ENGINE_set_EC(e, devcrypto_ec)
> > + # endif
> > + #endif
> > +-        || !ENGINE_set_ciphers(e, devcrypto_ciphers)
> > +-#ifdef IMPLEMENT_DIGEST
> > +-        || !ENGINE_set_digests(e, devcrypto_digests)
> > +-#endif
> > +-        ) {
> > ++        );
> > ++}
> > ++
> > ++#ifdef OPENSSL_NO_DYNAMIC_ENGINE
> > ++/*
> > ++ * In case this engine is built into libcrypto, then it doesn't offer any
> > ++ * ability to be dynamically loadable.
> > ++ */
> > ++void engine_load_devcrypto_int(void)
> > ++{
> > ++    ENGINE *e = NULL;
> > ++
> > ++    if (!open_devcrypto())
> > ++        return;
> > ++
> > ++    if ((e = ENGINE_new()) == NULL
> > ++        || !bind_devcrypto(e)) {
> > ++        close_devcrypto();
> > +         ENGINE_free(e);
> > +         return;
> > +     }
> > +@@ -1257,3 +1289,22 @@ void engine_load_devcrypto_int()
> > +     ENGINE_free(e);          /* Loose our local reference */
> > +     ERR_clear_error();
> > + }
> > ++
> > ++#else
> > ++
> > ++static int bind_helper(ENGINE *e, const char *id)
> > ++{
> > ++    if ((id && (strcmp(id, engine_devcrypto_id) != 0))
> > ++        || !open_devcrypto())
> > ++        return 0;
> > ++    if (!bind_devcrypto(e)) {
> > ++        close_devcrypto();
> > ++        return 0;
> > ++    }
> > ++    return 1;
> > ++}
> > ++
> > ++IMPLEMENT_DYNAMIC_CHECK_FN()
> > ++IMPLEMENT_DYNAMIC_BIND_FN(bind_helper)
> > ++
> > ++#endif
> >
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel at lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sven at narfation.org  Mon Feb 25 14:25:25 2019
From: sven at narfation.org (Sven Eckelmann)
Date: Mon, 25 Feb 2019 20:25:25 +0100
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <37ff9171-dfad-392d-db14-ba06beb7140a@wagsky.com>
References: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
 <e70db0bed3bf4654ee356f19fb1923e08387456c.camel@ewol.com>
 <37ff9171-dfad-392d-db14-ba06beb7140a@wagsky.com>
Message-ID: <59661197.BiEzcpQiO5@bentobox>

On Monday, 25 February 2019 15:08:15 CET Jeff Kletsky wrote:
> >> Mesh is broken using ath10k-ct?
> >> https://bugs.openwrt.org/index.php?do=details&task_id=2123
[...]
> * The "classic" drivers/firmware fail on or after the indicated commit
> 
>      CONFIG_PACKAGE_ath10k-firmware-qca9887=y
>      CONFIG_PACKAGE_kmod-ath10k=y
>      # CONFIG_PACKAGE_kmod-ath10k-ct is not set
> 
> 
> That the CT drivers/firmware don't support 802.11s mesh
> isn't really an OpenWrt issue.
> 
> That there is a regression in overall system capability
> that "kills" connectivity is a signficant concern.

* Can you confirm that it works with ath10k-ct but not with ath10k?
* And can you confirm that changing encryption to none has no effect on the 
  problem.
* Can you confirm that reverting commit cd93b83ad927 ("ath10k: support for 
  multicast rate control") [1] in ath10k fixes this problem?
* Can you confirm that manually setting mcast_rate to 18000  in the mesh wifi-
  iface fixes the problem?

    config wifi-iface 'mesh0'
        option device 'radio0'
        option ifname 'mesh0'
        option network 'nwi_mesh0'
        option mode 'mesh'
        option mesh_id 'TestMesh'
        option mesh_fwding '1'
        option mcast_rate '18000' 
        option encryption 'none'

* can you confirm that it lo

It looks for me like mac80211 is trying to set the mcast_rate which is 
interpreted by ath10k in ath10k_bss_info_changed as 11 Mbit/s (CCK). Which is 
of course not supported on 5GHz. So all your pretty little broadcast/multicast 
packets end up in nirvana.

Problem here is that rateidx is -1. Which means that it cannot just programmed 
up by us.

Can you check if following works for you (add it as patch to 
package/kernel/mac80211/patches/ath/ and hope that my MUA didn't
reformat the patch):

diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index b73c23d4ce86..85c6d820e8c4 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -5778,6 +5778,10 @@ static void ath10k_bss_info_changed(struct ieee80211_hw *hw,
 		band = def.chan->band;
 		rateidx = vif->bss_conf.mcast_rate[band] - 1;
 
+		/* fallback to lowest rate when mcast_rate == -1 */
+		if (rateidx < 0)
+			rateidx = 0;
+
 		if (ar->phy_capability & WHAL_WLAN_11A_CAPABILITY)
 			rateidx += ATH10K_MAC_FIRST_OFDM_RATE_IDX;


Kind regards,
	Sven

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=cd93b83ad927b2c7979e0add0343ace59328b461
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/8eef0ea0/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From equeiroz at troianet.com.br  Mon Feb 25 14:54:37 2019
From: equeiroz at troianet.com.br (equeiroz at troianet.com.br)
Date: Mon, 25 Feb 2019 16:54:37 -0300 (-03)
Subject: [OpenWrt-Devel] [PATCH v3] openssl: backport devcrypto changes
 from master
In-Reply-To: <CAKxU2N999fdVpQH-vv_M1xYpSAhWgann718_crhehLx47iyoUQ@mail.gmail.com>
References: <mailman.23089.1550777428.2376.openwrt-devel@lists.openwrt.org>
 <mailman.23692.1551117680.2376.openwrt-devel@lists.openwrt.org>
 <CAKxU2N8yjPWhZF+cJmYg7NCQX5ZUu8DNy=wRfi3UfRKru3a1tA@mail.gmail.com>
 <CAKxU2N999fdVpQH-vv_M1xYpSAhWgann718_crhehLx47iyoUQ@mail.gmail.com>
Message-ID: <alpine.LNX.2.21.1.1902251625310.19004@gateway.troianet.com.br>

On Mon, 25 Feb 2019, Rosen Penev wrote:

> On Mon, Feb 25, 2019 at 11:09 AM Rosen Penev <rosenp at gmail.com> wrote:
>>
>> On Mon, Feb 25, 2019 at 10:01 AM Eneas U de Queiroz via openwrt-devel
>> <openwrt-devel at lists.openwrt.org> wrote:
>>>
>>> The sender domain has a DMARC Reject/Quarantine policy which disallows
>>> sending mailing list messages using the original "From" header.
>>>
>>> To mitigate this problem, the original message has been wrapped
>>> automatically by the mailing list software.
>>>
>>>
>>> ---------- Forwarded message ----------
>>> From: Eneas U de Queiroz <cote2004-github at yahoo.com>
>>> To: openwrt-devel at lists.openwrt.org
>>> Cc: Eneas U de Queiroz <cote2004-github at yahoo.com>
>>> Bcc:
>>> Date: Mon, 25 Feb 2019 15:00:58 -0300
>>> Subject: [PATCH v3] openssl: backport devcrypto changes from master
>>> The patches to the /dev/crypto engine were commited to openssl master,
>>> and will be in the next major version (3.0).
>> This version does not apply to master.
> Never mind. It does apply like this:
>
> git pw series apply 93498
> git pw series apply 94090

I should have made myself clearer.

Even though this patch was submitted earlier, "openssl: fix devcrypto 
engine md blocksize" (https://patchwork.ozlabs.org/patch/1046380/) should 
be applied first, then this one.

My reasoning was that "fix devcrypto engine md blocksize", being a 
smaller, bugfix patch, was more urgent than this (enhancements), so its 
review time should be shorter as well.


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sven at narfation.org  Mon Feb 25 15:21:04 2019
From: sven at narfation.org (Sven Eckelmann)
Date: Mon, 25 Feb 2019 21:21:04 +0100
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <59661197.BiEzcpQiO5@bentobox>
References: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
 <37ff9171-dfad-392d-db14-ba06beb7140a@wagsky.com>
 <59661197.BiEzcpQiO5@bentobox>
Message-ID: <1789642.J8GxUR6PqZ@bentobox>

On Monday, 25 February 2019 20:25:25 CET Sven Eckelmann wrote:
> On Monday, 25 February 2019 15:08:15 CET Jeff Kletsky wrote:
> > >> Mesh is broken using ath10k-ct?
> > >> https://bugs.openwrt.org/index.php?do=details&task_id=2123
[...]
> Can you check if following works for you (add it as patch to 
> package/kernel/mac80211/patches/ath/ and hope that my MUA didn't
> reformat the patch):

Or better test the PRs [1,2] which incorporate a proposed patch [3] from 
Pradeep.

Kind regards,
	Sven

[1] https://github.com/openwrt/openwrt/pull/1861
[2] https://github.com/openwrt/openwrt/pull/1862
[3] https://patchwork.kernel.org/patch/10723033/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190225/27688706/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From chunkeey at gmail.com  Mon Feb 25 17:10:30 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Mon, 25 Feb 2019 23:10:30 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ipq40xx: add support for
 FritzBox 7530
In-Reply-To: <9345949.jyftc2i2ua@debian64>
References: <20190218225834.28100-1-mail@david-bauer.net>
 <20190218225834.28100-3-mail@david-bauer.net> <9345949.jyftc2i2ua@debian64>
Message-ID: <4581107.9DOS49Ef2O@debian64>

On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
> > diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> > new file mode 100644
> > index 0000000000..b2a33468bb
> > --- /dev/null
> > +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> > @@ -0,0 +1,305 @@
> > +&pcie0 {
> > +	status = "okay";
> > +
> > +	ranges = <0x81000000 0 0x40200000 0x40200000
> > +			0 0x00100000   /* downstream I/O */
> > +			0x82000000 0 0x48000000 0x48000000
> > +			0 0x10000000>; /* non-prefetchable memory */
> 
> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
> should be put into the qcom-ipq4019.dtsi as well.

And it didn't work. While the pcie enumeration worked fine. 
The QCA9887 was no longer attaching. As soon as the driver was
loaded it failed due to:

[    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
[    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
[    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
[    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
[    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
[    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
[    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
[    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
[    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
[...]
[    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
[    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
[...]

But I think we can fix the problem. Because according to the old
qcom-ipq40xx.dtsi I dug up:

<https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>

The non-prefetchable memory area window size should be 0x00d00000.

	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */

(yes, I'll be preparing a patch for linux-msm-arm. Can you please let
me know if does indeed finally let you enumerate the device?)

> > +
> > +	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
> > +	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
> > +
> > +	bridge at 0,0 {
> > +		reg = <0x00000000 0 0 0 0>;
> > +		#address-cells = <3>;
> > +		#size-cells = <2>;
> > +		ranges;
> > +
> > +		dsl at 1,0 {
> > +			compatible = "intel,vrx518";
> > +			status = "okay";
> > +			reg = <0x00010000 0 0 0 0>;
> > +		};
> > +	};
> > +};


Regards,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Mon Feb 25 18:11:12 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Tue, 26 Feb 2019 00:11:12 +0100
Subject: [OpenWrt-Devel] [PATCH 0/3] Speed up caldata/eeprom handling with
 common file
Message-ID: <20190225231115.1194-1-freifunk@adrianschmutzler.de>

This implements the caldata/eeprom reading speedup based on the common
file created in Dmitry Tunin's patch, which is considered a dependency.

This has to be tested yet.

Adrian Schmutzler (3):
  ar71xx/ath79: Merge ath10k-caldata extraction into eeprom.sh
  eeprom.sh: Speed up caldata/eeprom handling
  ipq40xx: Make use of common eeprom.sh library

 package/base-files/files/lib/functions/eeprom.sh   | 43 +++++++++++-
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 78 ++++++--------------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 57 ++++-----------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 82 ++++++----------------
 4 files changed, 100 insertions(+), 160 deletions(-)

-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Mon Feb 25 18:11:13 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Tue, 26 Feb 2019 00:11:13 +0100
Subject: [OpenWrt-Devel] [PATCH 1/3] ar71xx/ath79: Merge ath10k-caldata
 extraction into eeprom.sh
In-Reply-To: <20190225231115.1194-1-freifunk@adrianschmutzler.de>
References: <20190225231115.1194-1-freifunk@adrianschmutzler.de>
Message-ID: <20190225231115.1194-2-freifunk@adrianschmutzler.de>

ath10k-caldata extraction is the same across different targets
and also uses similar function compared to ath9k-eeprom
extraction.

This patch merges ath10k stuff into the same file where ath9k
function have already been collected.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 package/base-files/files/lib/functions/eeprom.sh   | 34 ++++++++++
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 78 +++++++---------------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 57 +++++-----------
 3 files changed, 72 insertions(+), 97 deletions(-)

diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh
index 3b585dab7c..13494b63db 100644
--- a/package/base-files/files/lib/functions/eeprom.sh
+++ b/package/base-files/files/lib/functions/eeprom.sh
@@ -6,6 +6,11 @@ eeprom_die() {
 	exit 1
 }
 
+ath10kcal_die() {
+	echo "ath10cal: " "$*"
+	exit 1
+}
+
 mtd_eeprom_extract() {
 	local part=$1
 	local offset=$2
@@ -20,6 +25,26 @@ mtd_eeprom_extract() {
 		eeprom_die "failed to extract from $mtd"
 }
 
+mtd_eeprom_extract_check() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local mtd cal_size
+
+	mtd=$(find_mtd_chardev $part)
+	[ -n "$mtd" ] || \
+		eeprom_die "no mtd device found for partition $part"
+
+	# Check that the calibration data size in header equals the desired size
+	cal_size=$(dd if=$mtd bs=2 count=1 skip=$(( $offset / 2 )) conv=swab 2>/dev/null | hexdump -ve '1/2 "%d"')
+
+	[ "$count" = "$cal_size" ] || \
+		eeprom_die "no calibration data found in $part"
+
+	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+		eeprom_die "failed to extract from $mtd"
+}
+
 mtd_eeprom_extract_reverse() {
 	local part=$1
 	local offset=$2
@@ -52,3 +77,12 @@ ubi_eeprom_extract() {
 	dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
 		eeprom_die "failed to extract from $ubi"
 }
+
+ath10kcal_from_file() {
+	local source=$1
+	local offset=$2
+	local count=$3
+
+	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+		ath10kcal_die "failed to extract calibration data from $source"
+}
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 3450819630..ab128497ae 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -1,38 +1,6 @@
 #!/bin/sh
 
-ath10kcal_die() {
-	echo "ath10cal: " "$*"
-	exit 1
-}
-
-ath10kcal_from_file() {
-	local source=$1
-	local offset=$2
-	local count=$3
-
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		ath10kcal_die "failed to extract calibration data from $source"
-}
-
-ath10kcal_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd cal_size
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath10kcal_die "no mtd device found for partition $part"
-
-	# Check that the calibration data size in header equals the desired size
-	cal_size=$(dd if=$mtd bs=2 count=1 skip=$(( $offset / 2 )) conv=swab 2>/dev/null | hexdump -ve '1/2 "%d"')
-
-	[ "$count" = "$cal_size" ] || \
-		ath10kcal_die "no calibration data found in $part"
-
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		ath10kcal_die "failed to extract calibration data from $mtd"
-}
+. /lib/functions/eeprom.sh
 
 ath10kcal_patch_mac() {
 	local mac=$1
@@ -57,17 +25,17 @@ case "$FIRMWARE" in
 	mr1750|\
 	mr1750v2|\
 	om5p-acv2)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract_check "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
 		;;
 	archer-c25-v1|\
 	tl-wdr6500-v2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
 		;;
 	archer-c7-v4|\
 	archer-c7-v5)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	cf-e355ac-v1|\
@@ -81,42 +49,42 @@ case "$FIRMWARE" in
 	oolite-v5.2-dev|\
 	sr3200|\
 	xd3200)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		;;
 	dap-2695-a1)
-		ath10kcal_extract "radiocfg" 20480 2116
+		mtd_eeprom_extract_check "radiocfg" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
 		;;
 	dir-869-a1|\
 	qihoo-c301)
-		ath10kcal_extract "radiocfg" 20480 2116
+		mtd_eeprom_extract_check "radiocfg" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac)
 		;;
 	dw33d)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_binary art 18)
 		;;
 	epg5000|\
 	esr1750)
-		ath10kcal_extract "caldata" 20480 2116
+		mtd_eeprom_extract_check "caldata" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
 		;;
 	gl-ar750s|\
 	gl-ar750|\
 	tl-wpa8630)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
 		;;
 	koala)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary art 12) +0)
 		;;
 	mc-mac1200r)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
 		;;
 	r6100)
-		ath10kcal_extract "caldata" 20480 2116
+		mtd_eeprom_extract_check "caldata" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2)
 		;;
 	rb-952ui-5ac2nd|\
@@ -126,15 +94,15 @@ case "$FIRMWARE" in
 	re355|\
 	re450|\
 	tl-wr902ac-v1)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
 		;;
 	unifiac-lite|\
 	unifiac-pro)
-		ath10kcal_extract "EEPROM" 20480 2116
+		mtd_eeprom_extract_check "EEPROM" 20480 2116
 		;;
 	wi2a-ac200i)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract_check "ART" 20480 2116
 		;;
 	esac
 	;;
@@ -142,16 +110,16 @@ case "$FIRMWARE" in
 	case $board in
 	archer-c5|\
 	archer-c7)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
 		;;
 	nbg6616|\
 	nbg6716)
-		ath10kcal_extract "RFdata" 20480 2116
+		mtd_eeprom_extract_check "RFdata" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
 		;;
 	om5p-ac)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract_check "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
 		;;
 	rb-911g-5hpacd|\
@@ -160,7 +128,7 @@ case "$FIRMWARE" in
 		ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
 		;;
 	wlr8100)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1)
 		;;
 	esac
@@ -173,18 +141,18 @@ case "$FIRMWARE" in
 	archer-c60-v1|\
 	cf-e355ac-v2|\
 	cf-e375ac)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract_check "art" 20480 12064
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
 		;;
 	archer-c60-v2)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract_check "art" 20480 12064
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	cf-e385ac)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract_check "art" 20480 12064
 		;;
 	esac
 	;;
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index f4741fa3eb..50632a9a28 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -1,6 +1,7 @@
 #!/bin/sh
 
 . /lib/functions/k2t.sh
+. /lib/functions/eeprom.sh
 
 # xor multiple hex values of the same length
 xor() {
@@ -18,34 +19,6 @@ xor() {
 	printf "%0${retlen}x" "$ret"
 }
 
-ath10kcal_die() {
-	echo "ath10cal: " "$*"
-	exit 1
-}
-
-ath10kcal_from_file() {
-	local source=$1
-	local offset=$2
-	local count=$3
-
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		ath10kcal_die "failed to extract calibration data from $source"
-}
-
-ath10kcal_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -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 || \
-		ath10kcal_die "failed to extract calibration data from $mtd"
-}
-
 ath10kcal_patch_mac() {
 	local mac=$1
 
@@ -92,52 +65,52 @@ case "$FIRMWARE" in
 	devolo,dvl1750c|\
 	devolo,dvl1750e|\
 	devolo,dvl1750i)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 0) -1)
 		;;
 	dlink,dir-859-a1)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_ascii devdata "wlan5mac")
 		;;
 	elecom,wrc-1750ghbk2-i)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract "ART" 20480 2116
 		;;
 	engenius,ews511ap|\
 	glinet,gl-ar750s|\
 	glinet,gl-x750|\
 	tplink,re450-v2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
 		;;
 	iodata,wn-ac1167dgr|\
 	iodata,wn-ac1600dgr2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1)
 		;;
 	nec,wg800hp)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac_crc $(mtd_get_mac_text board_data 2176)
 		;;
 	ocedo,koala)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_binary art 12)
 		;;
 	openmesh,om5p-ac-v2)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
 		;;
 	tplink,archer-c2-v3)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	tplink,archer-c7-v2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
 		;;
 	tplink,archer-a7-v5|\
 	tplink,archer-c7-v4|\
 	tplink,archer-c7-v5)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	ubnt,unifiac-lite|\
@@ -147,14 +120,14 @@ case "$FIRMWARE" in
 	ubnt,nanostation-ac|\
 	ubnt,nanostation-ac-loco|\
 	ubnt,unifiac-pro)
-		ath10kcal_extract "EEPROM" 20480 2116
+		mtd_eeprom_extract "EEPROM" 20480 2116
 		;;
 	esac
 	;;
 "ath10k/pre-cal-pci-0000:00:00.0.bin")
 	case $board in
 	phicomm,k2t)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract "art" 20480 12064
 		ath10kcal_patch_mac_crc $(k2t_get_mac "5g_mac")
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
@@ -162,7 +135,7 @@ case "$FIRMWARE" in
 	tplink,archer-c58-v1|\
 	tplink,archer-c59-v1|\
 	tplink,archer-c6-v2)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract "art" 20480 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary mac 8) -1)
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Mon Feb 25 18:11:14 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Tue, 26 Feb 2019 00:11:14 +0100
Subject: [OpenWrt-Devel] [PATCH 2/3] eeprom.sh: Speed up caldata/eeprom
 handling
In-Reply-To: <20190225231115.1194-1-freifunk@adrianschmutzler.de>
References: <20190225231115.1194-1-freifunk@adrianschmutzler.de>
Message-ID: <20190225231115.1194-3-freifunk@adrianschmutzler.de>

Reading and writing to and from flash storage is slow and currently,
especially since some scripts 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 in possibly one big block.

This is based on the initial commit a69e101 for ipq40xx by
Christian Lamparter <chunkeey at gmail.com>.

Speed comparison @ UBNT AC-Mesh (ath79, test performed manually)
results in a time reduction of 99.9 %.

> time dd if=/dev/mtd6 of=/lib/firmware/test-slow bs=1 count=4096 skip=4096
4096+0 records in
4096+0 records out
real    0m 16.84s
user    0m 0.07s
sys     0m 13.54s

> time 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
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Speed comparison @ TP-Link TL-WDR4300 (ar71xx, tested manually)
results in a time reduction of 99.9 %.

> time dd if=/dev/mtd3 of=/lib/firmware/test-slow bs=1 count=4096 skip=4096
4096+0 records in
4096+0 records out
real    0m 15.85s
user    0m 0.06s
sys     0m 13.28s

> time dd if=/dev/mtd3 of=/lib/firmware/test-fast bs=4096 count=1 skip=4096 iflag=skip_bytes
1+0 records in
1+0 records out
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 package/base-files/files/lib/functions/eeprom.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh
index 13494b63db..f0941fe8d8 100644
--- a/package/base-files/files/lib/functions/eeprom.sh
+++ b/package/base-files/files/lib/functions/eeprom.sh
@@ -21,7 +21,7 @@ mtd_eeprom_extract() {
 	[ -n "$mtd" ] || \
 		eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		eeprom_die "failed to extract from $mtd"
 }
 
@@ -41,7 +41,7 @@ mtd_eeprom_extract_check() {
 	[ "$count" = "$cal_size" ] || \
 		eeprom_die "no calibration data found in $part"
 
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		eeprom_die "failed to extract from $mtd"
 }
 
@@ -74,7 +74,7 @@ ubi_eeprom_extract() {
 	[ -n "$ubi" ] || \
 		eeprom_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 bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		eeprom_die "failed to extract from $ubi"
 }
 
@@ -83,6 +83,6 @@ ath10kcal_from_file() {
 	local offset=$2
 	local count=$3
 
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$source of=/lib/firmware/$FIRMWARE bs=$count skip=$offset count=1 iflag=skip_bytes 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $source"
 }
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Mon Feb 25 18:11:15 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Tue, 26 Feb 2019 00:11:15 +0100
Subject: [OpenWrt-Devel] [PATCH 3/3] ipq40xx: Make use of common eeprom.sh
 library
In-Reply-To: <20190225231115.1194-1-freifunk@adrianschmutzler.de>
References: <20190225231115.1194-1-freifunk@adrianschmutzler.de>
Message-ID: <20190225231115.1194-4-freifunk@adrianschmutzler.de>

This merges the ath10k-caldata extraction into the common
eeprom.sh. This is done in a separate step, as ipq40xx was
already updated to dd in blocks.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 package/base-files/files/lib/functions/eeprom.sh   |  5 +-
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 82 ++++++----------------
 2 files changed, 26 insertions(+), 61 deletions(-)

diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh
index f0941fe8d8..8bf052357d 100644
--- a/package/base-files/files/lib/functions/eeprom.sh
+++ b/package/base-files/files/lib/functions/eeprom.sh
@@ -67,9 +67,12 @@ ubi_eeprom_extract() {
 	local part=$1
 	local offset=$2
 	local count=$3
-	local ubidev=$(nand_find_ubi $CI_UBIPART)
+	local ubidev
 	local ubi
 
+	. /lib/upgrade/nand.sh
+
+	ubidev=$(nand_find_ubi $CI_UBIPART)
 	ubi=$(nand_find_volume $ubidev $part)
 	[ -n "$ubi" ] || \
 		eeprom_die "no UBI volume found for $part"
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 21d9063fd4..8e49b71b40 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+. /lib/functions/eeprom.sh
+
 # xor multiple hex values of the same length
 xor() {
 	local val
@@ -16,43 +18,6 @@ xor() {
 	printf "%0${retlen}x" "$ret"
 }
 
-ath10kcal_die() {
-	echo "ath10cal: " "$*"
-	exit 1
-}
-
-ath10kcal_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath10kcal_die "no mtd device found for partition $part"
-
-	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"
-}
-
-ath10kcal_ubi_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local ubidev
-	local ubi
-
-	. /lib/upgrade/nand.sh
-
-	ubidev=$(nand_find_ubi $CI_UBIPART)
-	ubi=$(nand_find_volume $ubidev $part)
-	[ -n "$ubi" ] || \
-		ath10kcal_die "no UBI volume found for $part"
-
-	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"
-}
-
 ath10kcal_patch_mac_crc() {
 	local mac=$1
 	local mac_offset=6
@@ -88,9 +53,6 @@ ath10kcal_is_caldata_valid() {
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
-. /lib/functions.sh
-. /lib/functions/system.sh
-
 board=$(board_name)
 
 
@@ -98,8 +60,8 @@ case "$FIRMWARE" in
 "ath10k/cal-pci-0000:01:00.0.bin")
 	case "$board" in
 	meraki,mr33)
-		ath10kcal_ubi_extract "ART" 36864 2116
-		ath10kcal_is_caldata_valid "4408" || ath10kcal_extract "ART" 36864 2116
+		ubi_eeprom_extract "ART" 36864 2116
+		ath10kcal_is_caldata_valid "4408" || mtd_eeprom_extract "ART" 36864 2116
 		ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +1)
 		;;
 	esac
@@ -107,12 +69,12 @@ case "$FIRMWARE" in
 "ath10k/pre-cal-pci-0000:01:00.0.bin")
 	case "$board" in
 	asus,map-ac2200)
-		ath10kcal_ubi_extract "Factory" 36864 12064
+		ubi_eeprom_extract "Factory" 36864 12064
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
 		;;
 	openmesh,a62)
-		ath10kcal_extract "0:ART" 36864 12064
+		mtd_eeprom_extract "0:ART" 36864 12064
 		;;
 	esac
 	;;
@@ -122,37 +84,37 @@ case "$FIRMWARE" in
 	glinet,gl-b1300 |\
 	linksys,ea6350v3 |\
 	qcom,ap-dk01.1-c1)
-		ath10kcal_extract "ART" 4096 12064
+		mtd_eeprom_extract "ART" 4096 12064
 		;;
 	asus,map-ac2200)
-		ath10kcal_ubi_extract "Factory" 4096 12064
+		ubi_eeprom_extract "Factory" 4096 12064
 		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
-		ath10kcal_ubi_extract "Factory" 4096 12064
+		ubi_eeprom_extract "Factory" 4096 12064
 		;;
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
 	meraki,mr33)
-		ath10kcal_ubi_extract "ART" 4096 12064
-		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
+		ubi_eeprom_extract "ART" 4096 12064
+		ath10kcal_is_caldata_valid "202f" || mtd_eeprom_extract "ART" 4096 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +2)
 		;;
 	netgear,ex6100v2 |\
 	netgear,ex6150v2)
-		ath10kcal_extract "ART" 4096 12064
+		mtd_eeprom_extract "ART" 4096 12064
 		ath10kcal_patch_mac_crc $(mtd_get_mac_binary dnidata 0)
 		;;
 	compex,wpj428 |\
 	engenius,eap1300 |\
 	openmesh,a42 |\
 	openmesh,a62)
-		ath10kcal_extract "0:ART" 4096 12064
+		mtd_eeprom_extract "0:ART" 4096 12064
 		;;
 	zyxel,nbg6617 |\
 	zyxel,wre6606)
-		ath10kcal_extract "ART" 4096 12064
+		mtd_eeprom_extract "ART" 4096 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
 		;;
 	esac
@@ -163,37 +125,37 @@ case "$FIRMWARE" in
 	glinet,gl-b1300 |\
 	linksys,ea6350v3 |\
 	qcom,ap-dk01.1-c1)
-		ath10kcal_extract "ART" 20480 12064
+		mtd_eeprom_extract "ART" 20480 12064
 		;;
 	asus,map-ac2200)
-		ath10kcal_ubi_extract "Factory" 20480 12064
+		ubi_eeprom_extract "Factory" 20480 12064
 		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
-		ath10kcal_ubi_extract "Factory" 20480 12064
+		ubi_eeprom_extract "Factory" 20480 12064
 		;;
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
 	meraki,mr33)
-		ath10kcal_ubi_extract "ART" 20480 12064
-		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 20480 12064
+		ubi_eeprom_extract "ART" 20480 12064
+		ath10kcal_is_caldata_valid "202f" || mtd_eeprom_extract "ART" 20480 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +3)
 		;;
 	netgear,ex6100v2 |\
 	netgear,ex6150v2)
-		ath10kcal_extract "ART" 20480 12064
+		mtd_eeprom_extract "ART" 20480 12064
 		ath10kcal_patch_mac_crc $(mtd_get_mac_binary dnidata 12)
 		;;
 	compex,wpj428 |\
 	engenius,eap1300 |\
 	openmesh,a42 |\
 	openmesh,a62)
-		ath10kcal_extract "0:ART" 20480 12064
+		mtd_eeprom_extract "0:ART" 20480 12064
 		;;
 	zyxel,nbg6617 |\
 	zyxel,wre6606)
-		ath10kcal_extract "ART" 20480 12064
+		mtd_eeprom_extract "ART" 20480 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	esac
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at adrianschmutzler.de  Mon Feb 25 18:13:04 2019
From: mail at adrianschmutzler.de (mail at adrianschmutzler.de)
Date: Tue, 26 Feb 2019 00:13:04 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <CANoib0HWUy5rUgpCMiDx-M4ExfvOcdNNpgOQ0Uogmsr0Bih3Hw@mail.gmail.com>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222135736.GD38601@meh.true.cz>
 <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>
 <2289911.o2O57J6HAA@debian64>
 <CANoib0HWUy5rUgpCMiDx-M4ExfvOcdNNpgOQ0Uogmsr0Bih3Hw@mail.gmail.com>
Message-ID: <009601d4cd5f$a9b7f6e0$fd27e4a0$@adrianschmutzler.de>

Hi Dmitry,

I just sent a bunch of patches based on your initial patch.

Note that your patch is only stored as comment to another and lacks Signed-off, if I'm not mistaken.

Will try to test all of this during the week.

Best

Adrian

> -----Original Message-----
> From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
> On Behalf Of Dmitry Tunin
> Sent: Montag, 25. Februar 2019 19:31
> To: Christian Lamparter <chunkeey at gmail.com>
> Cc: Adrian Schmutzler <freifunk at adrianschmutzler.de>; Petr ?tetiar
> <ynezz at true.cz>; openwrt-devel at lists.openwrt.org
> Subject: Re: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom
> extraction
> 
> ??, 25 ????. 2019 ?. ? 21:20, Christian Lamparter <chunkeey at gmail.com>:
> 
> > > The only problem here is that not all platforms need it.
> > The problem I always have is more along the way that a patch should
> > receive some "on-device" testing. So I do look forward for patches
> > that received a "Tested-by:" tag or has positive replies from
> > random/unlikely people. But we sadly all know that this system has its
> limits.
> 
> In this case mine is really tested on a device if that really matters in this case;-
> ) I don't think there can be any problems with this simple approach.
> 
> Regarding "not all devices" I meant that that eeprom.sh when added to
> global base-files, will be useless for many platforms.
> I added DIR-825B1 to ath79 and it needed some hacks to get eeprom and
> mac, there is no way to upstream this type of methods. But it is an old
> device.
> 
> But without these patches many devices have disabled wireless on first boot
> after flashing, because caldata is not ready in time. Fixing this annoying
> behavior is important.
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190226/f2452a0c/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at david-bauer.net  Mon Feb 25 18:15:41 2019
From: mail at david-bauer.net (David Bauer)
Date: Tue, 26 Feb 2019 00:15:41 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ipq40xx: add support for
 FritzBox 7530
In-Reply-To: <4581107.9DOS49Ef2O@debian64>
References: <20190218225834.28100-1-mail@david-bauer.net>
 <20190218225834.28100-3-mail@david-bauer.net> <9345949.jyftc2i2ua@debian64>
 <4581107.9DOS49Ef2O@debian64>
Message-ID: <1861da34-2303-2d1d-7a9c-ebbed747c927@david-bauer.net>

Hello Christian,

On 25.02.19 23:10, Christian Lamparter wrote:
> On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
>> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
>>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>> new file mode 100644
>>> index 0000000000..b2a33468bb
>>> --- /dev/null
>>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>> @@ -0,0 +1,305 @@
>>> +&pcie0 {
>>> +	status = "okay";
>>> +
>>> +	ranges = <0x81000000 0 0x40200000 0x40200000
>>> +			0 0x00100000   /* downstream I/O */
>>> +			0x82000000 0 0x48000000 0x48000000
>>> +			0 0x10000000>; /* non-prefetchable memory */
>>
>> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
>> should be put into the qcom-ipq4019.dtsi as well.
> 
> And it didn't work. While the pcie enumeration worked fine. 
> The QCA9887 was no longer attaching. As soon as the driver was
> loaded it failed due to:
> 
> [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
> [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
> [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
> [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
> [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
> [...]
> [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
> [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
> [...]
> 
> But I think we can fix the problem. Because according to the old
> qcom-ipq40xx.dtsi I dug up:
> 
> <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
> 
> The non-prefetchable memory area window size should be 0x00d00000.
> 
> 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
> 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
> 
> (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
> me know if does indeed finally let you enumerate the device?)

It seems to work with your proposed change:

[    0.042117] OF: PCI: host bridge /soc/pci at 40000000 ranges:
[    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
[    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
[    0.259505] qcom-pcie 40000000.pci: link up
[    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
[    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
(bus address [0x40200000-0x402fffff])
[    0.259700] pci_bus 0000:00: root bus resource [mem
0x40300000-0x40ffffff]
[    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
[    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
[    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
[    0.260015] PCI: bus0: Fast back to back transfers disabled
[    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
[    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
[    0.260790] pci 0000:01:00.0: supports D1 D2
[    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
[    0.261043] PCI: bus1: Fast back to back transfers disabled
[    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
[    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
0x40300000-0x40300fff 64bit]
[    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
[    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
[    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93

See
https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74

How should we proceed on this device? Should i resend a v3 or will you
remove the ranges property and backport the patch you prepare for upstream?

Best wishes
David

> 
>>> +
>>> +	perst-gpio = <&tlmm 38 GPIO_ACTIVE_LOW>;
>>> +	wake-gpio = <&tlmm 50 GPIO_ACTIVE_LOW>;
>>> +
>>> +	bridge at 0,0 {
>>> +		reg = <0x00000000 0 0 0 0>;
>>> +		#address-cells = <3>;
>>> +		#size-cells = <2>;
>>> +		ranges;
>>> +
>>> +		dsl at 1,0 {
>>> +			compatible = "intel,vrx518";
>>> +			status = "okay";
>>> +			reg = <0x00010000 0 0 0 0>;
>>> +		};
>>> +	};
>>> +};
> 
> 
> Regards,
> Christian
> 
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From joe at ayerscasa.com  Tue Feb 26 00:28:48 2019
From: joe at ayerscasa.com (Joe Ayers)
Date: Mon, 25 Feb 2019 21:28:48 -0800
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
Message-ID: <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>

On Mon, Feb 25, 2019 at 8:42 AM Koen Vandeputte
<koen.vandeputte at ncentric.com> wrote:
>
>
> On 25.02.19 17:33, Joe Ayers wrote:
> > On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
> > <lorenzo.bianconi at redhat.com> wrote:
> >>> On 24.02.19 21:32, Joe Ayers wrote:
> >> Hi Joe,
> Hi Joe,
> >>>> First of all, thanks for contributing this fix.   I've incorporated
> >>>> into the http://www.arednmesh.org project, just getting into our
> >>>> nightly builds now.   A comment and a couple questions...
> >>>>
> >>>> The MAX_DELAY was way too short for our community, had to increase
> >>>> that significantly.  We commonly have long distance links over 50km.
> >> according to ath9k max configurable value in AR_TIME_OUT for acktimeout
> >> is 0x3fff. The max ack_to we can configure (assuming clockrate set to
> >> ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
> >> We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
> >> works properly I can post a patch (or you can take care of it, up to you)
> >>
> > I have a current link in Southern California with settings of:
> >
> > distance 60000m  ( "463 S" )
> > channel width = 10MHz
> > channel = 176 (5880) Amateur Radio licensing
> > Ubiquiti Rocket M w/ RocketDish
> > xmit power 27dBm
> >
> > It is rock solid and streams multiple HD videos and voip calls
> > (without drop outs in the call) achieving 30db SNR and MCS15 rates.
> > It's been live for a couple years in this mode.  I don't understand
> > how this link could operate with the performance we see if the  ack_to
> > max was 372 -- the voip quality would be terrible.
> >
> > I have tested (limited tests) dynack on a link showing upwards of
> > ~"400 A", but the real distance to farthest node was about ~20km.
> > Was wondering the discrepancy (fading, etc.?)?   I had changed the
> > starting point to 20km to work, otherwise it was stuck on the original
> > starting point, "96 A", and didn't move.
> >
> > I just loaded dynack on this 60km link and it doesn't move from my new
> > starting point of "196 A".   Something in the calculation somewhere
> > goes out of bound--to big a jump?   I'll do some testing to get the
> > dynack working on this 60km link, then lets see what it tunes to.
> > Based on my earlier results, I'm wondering if it will push past 500.
> >    Maybe the vendor specs are only to the limit of what was tested,
> > does not appear to be a true physical limit?
>
> Could you add some debug logs from Dynack?
>

Debug logs test case 1 --   Ubiquiti LHG5 <8km to Rocket M5:
https://drive.google.com/file/d/1PYXzjbq1DUIxdZxMm1W7g_0k5hpkKi4z/view?usp=sharing

Debug log test case 2 -- Ubiquiti Rocket M5 ~60km link to another Rocket M5:
https://drive.google.com/file/d/16DQSkEm0zcDCQHKuxOjM2yXlTp1QYYiE/view?usp=sharing

Test case 3 (no debug data) -- Ubiquiti NanoStation link to another
tower at 7.68km distance

Note:  test case 1, the auto distance is much higher than actual
(static set about 8km).
           test case 2, the auto distance does not change from initial
value, although I raised MAX_DELAY sufficiently high enough. What
dynack.c initial variable conditions would you recommend?
           test case 3, normally set as "115 S".  dynack  floated from
196 to 344, then back to 197 A when manually monitoring the ack_to
value in debugfs.  I've seen this behavior on 3 links now.

Joe AE6XE


>
> Thanks,
>
> Koen
>
> >
> >>>> One of our common scenarios is a P2MP -- tower or cell site with
> >>>> multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
> >>>> calculation is based on the furthest station.  What happens when the
> >>>> furthest station is quiet for long periods of time, nothing but
> >>>> beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
> >>>> be any acks received back?  Would it drop out of the ack_to
> >>>> calculation, until user data is active?  Thus, distance would tune to
> >>>> a shorter distance for another STA with user data being transferred?
> >>>> What is the behavior in this scenario?
> >> nope, we always take into account furthest station (even if it does not tx
> >> any data frame) otherwise it will be kicked out (we need to wait it leaves
> >> the network)
> >>
> > Possibly an option to further optimize?   For multi-point stations,
> > maybe it is possible to tune the time out based on the max distance
> > station actively sending user data.
> >
> >> Regards,
> >> Lorenzo
> >>
> >>>> I made a small change so that '0' in /etc/config/wireless distance
> >>>> setting ended up being auto for ath9k.  Did I miss an upstream patch
> >>>> to incorporate?
> >>>>
> >>>> Regards,
> >>>> Joe AE6XE
> >>>
> >>> Hi Lorenzo,
> >>>
> >>> Ensuring that Joe gets the best possible answer, could you please reply on
> >>> above comments/questions?
> >>>
> >>>
> >>> Highly appreciated,
> >>>
> >>> Koen
> >>>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From kristian.evensen at gmail.com  Tue Feb 26 02:54:04 2019
From: kristian.evensen at gmail.com (Kristian Evensen)
Date: Tue, 26 Feb 2019 08:54:04 +0100
Subject: [OpenWrt-Devel] [PATCH] mac80211: rt2x00: fix crash on
 release_firmware
In-Reply-To: <1551000198-30901-1-git-send-email-sgruszka@redhat.com>
References: <1551000198-30901-1-git-send-email-sgruszka@redhat.com>
Message-ID: <CAKfDRXh-keobkLg5O2gGtVCwhKaevFx4foUuunnB9LnDJP04kg@mail.gmail.com>

Hi Stanislaw,

On Sun, Feb 24, 2019 at 10:23 AM Stanislaw Gruszka <sgruszka at redhat.com> wrote:
>
> Fix crash due to passing invalid r2x00dev->eeprom_file pointer to
> release_firmware(). Since we copy eeprom data with EEPROM_SIZE
> in rt2800_read_eeprom() we can use eeprom_file->size as marker
> if the file was crated by request_firmware().
>
> Cc: Felix Fietkau <nbd at nbd.name>,
> Cc: Daniel Golle <daniel at makrotopia.org>
> Signed-off-by: Stanislaw Gruszka <sgruszka at redhat.com>

Thanks for the patch. I submitted a patch doing something similar some
days ago, but your fix is much nicer. FWIW:

Acked-by: Kristian Evensen <kristian.evensen at gmail.com>

BR,
Kristian

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From koen.vandeputte at ncentric.com  Tue Feb 26 03:55:16 2019
From: koen.vandeputte at ncentric.com (Koen Vandeputte)
Date: Tue, 26 Feb 2019 09:55:16 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
Message-ID: <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>


On 26.02.19 06:28, Joe Ayers wrote:
> On Mon, Feb 25, 2019 at 8:42 AM Koen Vandeputte
> <koen.vandeputte at ncentric.com> wrote:
>>
>> On 25.02.19 17:33, Joe Ayers wrote:
>>> On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
>>> <lorenzo.bianconi at redhat.com> wrote:
>>>>> On 24.02.19 21:32, Joe Ayers wrote:
>>>> Hi Joe,
>> Hi Joe,
>>>>>> First of all, thanks for contributing this fix.   I've incorporated
>>>>>> into the http://www.arednmesh.org project, just getting into our
>>>>>> nightly builds now.   A comment and a couple questions...
>>>>>>
>>>>>> The MAX_DELAY was way too short for our community, had to increase
>>>>>> that significantly.  We commonly have long distance links over 50km.
>>>> according to ath9k max configurable value in AR_TIME_OUT for acktimeout
>>>> is 0x3fff. The max ack_to we can configure (assuming clockrate set to
>>>> ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
>>>> We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
>>>> works properly I can post a patch (or you can take care of it, up to you)
>>>>
>>> I have a current link in Southern California with settings of:
>>>
>>> distance 60000m  ( "463 S" )
>>> channel width = 10MHz
>>> channel = 176 (5880) Amateur Radio licensing
>>> Ubiquiti Rocket M w/ RocketDish
>>> xmit power 27dBm
>>>
>>> It is rock solid and streams multiple HD videos and voip calls
>>> (without drop outs in the call) achieving 30db SNR and MCS15 rates.
>>> It's been live for a couple years in this mode.  I don't understand
>>> how this link could operate with the performance we see if the  ack_to
>>> max was 372 -- the voip quality would be terrible.
>>>
>>> I have tested (limited tests) dynack on a link showing upwards of
>>> ~"400 A", but the real distance to farthest node was about ~20km.
>>> Was wondering the discrepancy (fading, etc.?)?   I had changed the
>>> starting point to 20km to work, otherwise it was stuck on the original
>>> starting point, "96 A", and didn't move.
>>>
>>> I just loaded dynack on this 60km link and it doesn't move from my new
>>> starting point of "196 A".   Something in the calculation somewhere
>>> goes out of bound--to big a jump?   I'll do some testing to get the
>>> dynack working on this 60km link, then lets see what it tunes to.
>>> Based on my earlier results, I'm wondering if it will push past 500.
>>>     Maybe the vendor specs are only to the limit of what was tested,
>>> does not appear to be a true physical limit?
>> Could you add some debug logs from Dynack?
>>
> Debug logs test case 1 --   Ubiquiti LHG5 <8km to Rocket M5:
> https://drive.google.com/file/d/1PYXzjbq1DUIxdZxMm1W7g_0k5hpkKi4z/view?usp=sharing
>
> Debug log test case 2 -- Ubiquiti Rocket M5 ~60km link to another Rocket M5:
> https://drive.google.com/file/d/16DQSkEm0zcDCQHKuxOjM2yXlTp1QYYiE/view?usp=sharing
>
> Test case 3 (no debug data) -- Ubiquiti NanoStation link to another
> tower at 7.68km distance
>
> Note:  test case 1, the auto distance is much higher than actual
> (static set about 8km).
>             test case 2, the auto distance does not change from initial
> value, although I raised MAX_DELAY sufficiently high enough. What
> dynack.c initial variable conditions would you recommend?
>             test case 3, normally set as "115 S".  dynack  floated from
> 196 to 344, then back to 197 A when manually monitoring the ack_to
> value in debugfs.  I've seen this behavior on 3 links now.
>
> Joe AE6XE

Hi Joe,

In the "long" log, I'm seeing that dynack is not synced.
I'm also not seeing any late ack's coming in.

The "Short" log looks OK and is what you should see on proper syncing.


Could you try following on the long link? (if possible)

- Ensure dynack gets enabled on boot
- Reboot both locations so they finish booting and setup IBSS at exactly 
the same time.
- Provide these logs from both ends.

This allows to compare both ends on a side-by-side fashion.

fyi, I've attached logs from my setup (24.1km link)

You will notice some prints about late-ack's coming in, which is required.


Thanks,

Koen

>
>> Thanks,
>>
>> Koen
>>
>>>>>> One of our common scenarios is a P2MP -- tower or cell site with
>>>>>> multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
>>>>>> calculation is based on the furthest station.  What happens when the
>>>>>> furthest station is quiet for long periods of time, nothing but
>>>>>> beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
>>>>>> be any acks received back?  Would it drop out of the ack_to
>>>>>> calculation, until user data is active?  Thus, distance would tune to
>>>>>> a shorter distance for another STA with user data being transferred?
>>>>>> What is the behavior in this scenario?
>>>> nope, we always take into account furthest station (even if it does not tx
>>>> any data frame) otherwise it will be kicked out (we need to wait it leaves
>>>> the network)
>>>>
>>> Possibly an option to further optimize?   For multi-point stations,
>>> maybe it is possible to tune the time out based on the max distance
>>> station actively sending user data.
>>>
>>>> Regards,
>>>> Lorenzo
>>>>
>>>>>> I made a small change so that '0' in /etc/config/wireless distance
>>>>>> setting ended up being auto for ath9k.  Did I miss an upstream patch
>>>>>> to incorporate?
>>>>>>
>>>>>> Regards,
>>>>>> Joe AE6XE
>>>>> Hi Lorenzo,
>>>>>
>>>>> Ensuring that Joe gets the best possible answer, could you please reply on
>>>>> above comments/questions?
>>>>>
>>>>>
>>>>> Highly appreciated,
>>>>>
>>>>> Koen
>>>>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: offshore_ibss.log
Type: text/x-log
Size: 39545 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190226/482b1321/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: onshore_ibss.log
Type: text/x-log
Size: 63760 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190226/482b1321/attachment-0001.bin>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From sven at narfation.org  Tue Feb 26 04:16:05 2019
From: sven at narfation.org (Sven Eckelmann)
Date: Tue, 26 Feb 2019 10:16:05 +0100
Subject: [OpenWrt-Devel] [PATCH v13] ath10k: add LED and GPIO
 controlling support for various chipsets
In-Reply-To: <1523027875-5143-1-git-send-email-kvalo@codeaurora.org>
References: <1523027875-5143-1-git-send-email-kvalo@codeaurora.org>
Message-ID: <2468724.JaAZLprVu6@bentobox>

On Friday, 6 April 2018 17:17:55 CET Kalle Valo wrote:
> From: Sebastian Gottschall <s.gottschall at newmedia-net.de>
> 
> Adds LED and GPIO Control support for 988x, 9887, 9888, 99x0, 9984 based
> chipsets with on chipset connected led's using WMI Firmware API.  The LED
> device will get available named as "ath10k-phyX" at sysfs and can be controlled
> with various triggers.  adds also debugfs interface for gpio control.
> 
> Signed-off-by: Sebastian Gottschall <s.gottschall at dd-wrt.com>
> Reviewed-by: Steve deRosier <derosier at cal-sierra.com>
> [kvalo: major reorg and cleanup]
> Signed-off-by: Kalle Valo <kvalo at codeaurora.org>


This patch was imported to OpenWrt in commit 61d57a2f88b9 ("mac80211: ath10k 
add leds support") and broke the 11s support for IPQ4019 and QCA4019 (5GHz) 
firmware versions 10.4-3.5.3-00053, 10.4-3.5.3-00057, 10.4-3.6-00140:

    [  221.620803] ath10k_pci 0000:01:00.0: wmi command 36967 timeout, restarting hardware
    [  221.744056] ieee80211 phy0: Hardware restart was requested
    [  225.130829] ath10k_pci 0000:01:00.0: failed to receive control response completion, polling..
    [  226.170824] ath10k_pci 0000:01:00.0: Service connect timeout
    [  226.170871] ath10k_pci 0000:01:00.0: failed to connect htt (-110)
    [  226.252248] ath10k_pci 0000:01:00.0: Could not init core: -110

This was tested on an A62 with following wireless config:

    config wifi-device 'radio0'
            option type 'mac80211'
            option channel '36'
            option hwmode '11a'
            option path 'soc/40000000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
            option htmode 'VHT80'
            option disabled '0'
            option country US
    
    config wifi-device 'radio1'
            option type 'mac80211'
            option channel '11'
            option hwmode '11g'
            option path 'platform/soc/a000000.wifi'
            option htmode 'HT20'
            option disabled '0'
            option country US
    
    config wifi-device 'radio2'
            option type 'mac80211'
            option channel '149'
            option hwmode '11a'
            option path 'platform/soc/a800000.wifi'
            option htmode 'VHT80'
            option disabled '0'
            option country US
    
    config wifi-iface 'mesh0'
        option device 'radio0'
        option ifname 'mesh0'
        option network 'nwi_mesh0'
        option mode 'mesh'
        option mesh_id 'TestMesh'
        option mesh_fwding '1'
        option encryption 'none'
    
    config wifi-iface 'mesh1'
        option device 'radio1'
        option ifname 'mesh1'
        option network 'nwi_mesh1'
        option mode 'mesh'
        option mesh_id 'TestMesh'
        option encryption 'none'
    
    
    config wifi-iface 'mesh2'
        option device 'radio2'
        option ifname 'mesh2'
        option network 'nwi_mesh2'
        option mode 'mesh'
        option mesh_id 'TestMesh'
        option mesh_fwding '1'
        option encryption 'none

Kind regards,
	Sven
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190226/1adecfe0/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mantas at 8devices.com  Tue Feb 26 04:38:53 2019
From: mantas at 8devices.com (Mantas Pucka)
Date: Tue, 26 Feb 2019 11:38:53 +0200
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
References: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
Message-ID: <8852b470-2979-87c0-d9c0-5348a805f45c@8devices.com>

Hi,

AP WDS is currently broken on ath10k-ct (possibly ath10k too),
it would be nice to get this PR merged for 19.03 release:
https://github.com/openwrt/openwrt/pull/1640


Best Regards,
Mantas

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From lorenzo.bianconi at redhat.com  Tue Feb 26 05:04:14 2019
From: lorenzo.bianconi at redhat.com (Lorenzo Bianconi)
Date: Tue, 26 Feb 2019 11:04:14 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
 <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
Message-ID: <20190226100413.GA3351@localhost.localdomain>

> 
> On 26.02.19 06:28, Joe Ayers wrote:
> > On Mon, Feb 25, 2019 at 8:42 AM Koen Vandeputte
> > <koen.vandeputte at ncentric.com> wrote:
> > > 
> > > On 25.02.19 17:33, Joe Ayers wrote:
> > > > On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
> > > > <lorenzo.bianconi at redhat.com> wrote:
> > > > > > On 24.02.19 21:32, Joe Ayers wrote:
> > > > > Hi Joe,
> > > Hi Joe,
> > > > > > > First of all, thanks for contributing this fix.   I've incorporated
> > > > > > > into the http://www.arednmesh.org project, just getting into our
> > > > > > > nightly builds now.   A comment and a couple questions...
> > > > > > > 
> > > > > > > The MAX_DELAY was way too short for our community, had to increase
> > > > > > > that significantly.  We commonly have long distance links over 50km.
> > > > > according to ath9k max configurable value in AR_TIME_OUT for acktimeout
> > > > > is 0x3fff. The max ack_to we can configure (assuming clockrate set to
> > > > > ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
> > > > > We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
> > > > > works properly I can post a patch (or you can take care of it, up to you)
> > > > > 
> > > > I have a current link in Southern California with settings of:
> > > > 
> > > > distance 60000m  ( "463 S" )
> > > > channel width = 10MHz
> > > > channel = 176 (5880) Amateur Radio licensing
> > > > Ubiquiti Rocket M w/ RocketDish
> > > > xmit power 27dBm
> > > > 
> > > > It is rock solid and streams multiple HD videos and voip calls
> > > > (without drop outs in the call) achieving 30db SNR and MCS15 rates.
> > > > It's been live for a couple years in this mode.  I don't understand
> > > > how this link could operate with the performance we see if the  ack_to
> > > > max was 372 -- the voip quality would be terrible.
> > > > 
> > > > I have tested (limited tests) dynack on a link showing upwards of
> > > > ~"400 A", but the real distance to farthest node was about ~20km.
> > > > Was wondering the discrepancy (fading, etc.?)?   I had changed the
> > > > starting point to 20km to work, otherwise it was stuck on the original
> > > > starting point, "96 A", and didn't move.
> > > > 
> > > > I just loaded dynack on this 60km link and it doesn't move from my new
> > > > starting point of "196 A".   Something in the calculation somewhere
> > > > goes out of bound--to big a jump?   I'll do some testing to get the
> > > > dynack working on this 60km link, then lets see what it tunes to.
> > > > Based on my earlier results, I'm wondering if it will push past 500.
> > > >     Maybe the vendor specs are only to the limit of what was tested,
> > > > does not appear to be a true physical limit?
> > > Could you add some debug logs from Dynack?
> > > 
> > Debug logs test case 1 --   Ubiquiti LHG5 <8km to Rocket M5:
> > https://drive.google.com/file/d/1PYXzjbq1DUIxdZxMm1W7g_0k5hpkKi4z/view?usp=sharing
> > 
> > Debug log test case 2 -- Ubiquiti Rocket M5 ~60km link to another Rocket M5:
> > https://drive.google.com/file/d/16DQSkEm0zcDCQHKuxOjM2yXlTp1QYYiE/view?usp=sharing
> > 
> > Test case 3 (no debug data) -- Ubiquiti NanoStation link to another
> > tower at 7.68km distance
> > 
> > Note:  test case 1, the auto distance is much higher than actual
> > (static set about 8km).
> >             test case 2, the auto distance does not change from initial
> > value, although I raised MAX_DELAY sufficiently high enough. What
> > dynack.c initial variable conditions would you recommend?
> >             test case 3, normally set as "115 S".  dynack  floated from
> > 196 to 344, then back to 197 A when manually monitoring the ack_to
> > value in debugfs.  I've seen this behavior on 3 links now.
> > 
> > Joe AE6XE
> 
> Hi Joe,
> 
> In the "long" log, I'm seeing that dynack is not synced.
> I'm also not seeing any late ack's coming in.
> 
> The "Short" log looks OK and is what you should see on proper syncing.
> 
> 
> Could you try following on the long link? (if possible)
> 
> - Ensure dynack gets enabled on boot
> - Reboot both locations so they finish booting and setup IBSS at exactly the
> same time.
> - Provide these logs from both ends.
> 
> This allows to compare both ends on a side-by-side fashion.
> 
> fyi, I've attached logs from my setup (24.1km link)
> 
> You will notice some prints about late-ack's coming in, which is required.

Hi Joe,

are you running wpa_supplicant on ibss links? IIRC wpa_supplicant is mandatory
for dynack to work properly on ibss links.

Regards,
Lorenzo

> 
> 
> Thanks,
> 
> Koen
> 
> > 
> > > Thanks,
> > > 
> > > Koen
> > > 
> > > > > > > One of our common scenarios is a P2MP -- tower or cell site with
> > > > > > > multiple clients. We're using adhoc mode with OLSR.   I see the ack_to
> > > > > > > calculation is based on the furthest station.  What happens when the
> > > > > > > furthest station is quiet for long periods of time, nothing but
> > > > > > > beacons and olsr 'broadcast' traffic.   In this case, there wouldn't
> > > > > > > be any acks received back?  Would it drop out of the ack_to
> > > > > > > calculation, until user data is active?  Thus, distance would tune to
> > > > > > > a shorter distance for another STA with user data being transferred?
> > > > > > > What is the behavior in this scenario?
> > > > > nope, we always take into account furthest station (even if it does not tx
> > > > > any data frame) otherwise it will be kicked out (we need to wait it leaves
> > > > > the network)
> > > > > 
> > > > Possibly an option to further optimize?   For multi-point stations,
> > > > maybe it is possible to tune the time out based on the max distance
> > > > station actively sending user data.
> > > > 
> > > > > Regards,
> > > > > Lorenzo
> > > > > 
> > > > > > > I made a small change so that '0' in /etc/config/wireless distance
> > > > > > > setting ended up being auto for ath9k.  Did I miss an upstream patch
> > > > > > > to incorporate?
> > > > > > > 
> > > > > > > Regards,
> > > > > > > Joe AE6XE
> > > > > > Hi Lorenzo,
> > > > > > 
> > > > > > Ensuring that Joe gets the best possible answer, could you please reply on
> > > > > > above comments/questions?
> > > > > > 
> > > > > > 
> > > > > > Highly appreciated,
> > > > > > 
> > > > > > Koen
> > > > > > 

> [    0.000000] Linux version 4.14.78 (koen at bob) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r8391+6-04f381c3f6)) #0 Wed Oct 31 16:00:27 2018
> [    0.000000] bootconsole [early0] enabled
> [    0.000000] CPU0 revision is: 0001974c (MIPS 74Kc)
> [    0.000000] SoC: Atheros AR9342 rev 3
> [    0.000000] Determined physical RAM map:
> [    0.000000]  memory: 04000000 @ 00000000 (usable)
> [    0.000000] User-defined physical RAM map:
> [    0.000000]  memory: 04000000 @ 00000000 (usable)
> [    0.000000] Initrd not found or empty - disabling initrd
> [    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
> [    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
> [    0.000000] Zone ranges:
> [    0.000000]   Normal   [mem 0x0000000000000000-0x0000000003ffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000000000000-0x0000000003ffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff]
> [    0.000000] On node 0 totalpages: 16384
> [    0.000000] free_area_init_node: node 0, pgdat 804dd2d0, node_mem_map 81000020
> [    0.000000]   Normal zone: 128 pages used for memmap
> [    0.000000]   Normal zone: 0 pages reserved
> [    0.000000]   Normal zone: 16384 pages, LIFO batch:3
> [    0.000000] random: get_random_bytes called from 0x804e073c with crng_init=0
> [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
> [    0.000000] pcpu-alloc: [0] 0 
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 16256
> [    0.000000] Kernel command line: parts=1 boot_part_size=4194304 gpio=130607 HZ=300000000 mem=64M kmac=CC:2D:E0:31:B0:D2 board=711Gr100 board=711Gr100 ver=3.41 hw_opt=00200205 boot=1 mlc=11 console=ttyS0,115200 rootfstype=squashfs noinitrd
> [    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
> [    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
> [    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
> [    0.000000] Writing ErrCtl register=00000000
> [    0.000000] Readback ErrCtl register=00000000
> [    0.000000] Memory: 59520K/65536K available (3941K kernel code, 162K rwdata, 496K rodata, 192K init, 205K bss, 6016K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> [    0.000000] NR_IRQS: 51
> [    0.000000] Clocks: CPU:600.000MHz, DDR:350.000MHz, AHB:350.000MHz, Ref:25.000MHz
> [    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370868154 ns
> [    0.000011] sched_clock: 32 bits at 300MHz, resolution 3ns, wraps every 7158278654ns
> [    0.008874] Calibrating delay loop... 299.82 BogoMIPS (lpj=1499136)
> [    0.086007] pid_max: default: 32768 minimum: 301
> [    0.091486] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.099002] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.109765] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
> [    0.120991] futex hash table entries: 256 (order: -1, 3072 bytes)
> [    0.129535] NET: Registered protocol family 16
> [    0.138792] MIPS: machine is Mikrotik RouterBOARD 912UAG-5HPnD
> [    0.391313] ar724x-pci ar724x-pci: PCIe link is down
> [    0.397024] registering PCI controller with io_map_base unset
> [    0.403600] Can't analyze schedule() prologue at 80435090
> [    0.426097] PCI host bridge to bus 0000:00
> [    0.430832] pci_bus 0000:00: root bus resource [mem 0x10000000-0x13ffffff]
> [    0.438631] pci_bus 0000:00: root bus resource [io  0x0000]
> [    0.444962] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
> [    0.452664] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
> [    0.461692] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
> [    0.462519] clocksource: Switched to clocksource MIPS
> [    0.469415] NET: Registered protocol family 2
> [    0.475291] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.483282] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.490512] TCP: Hash tables configured (established 1024 bind 1024)
> [    0.497917] UDP hash table entries: 256 (order: 0, 4096 bytes)
> [    0.504619] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
> [    0.512054] NET: Registered protocol family 1
> [    0.517085] PCI: CLS 0 bytes, default 32
> [    0.523320] Crashlog allocated RAM at address 0x3f00000
> [    0.530888] workingset: timestamp_bits=30 max_order=14 bucket_order=0
> [    0.543667] squashfs: version 4.0 (2009/01/31) Phillip Lougher
> [    0.550286] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
> [    0.573907] io scheduler noop registered
> [    0.578368] io scheduler deadline registered (default)
> [    0.584663] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
> [    0.592291] console [ttyS0] disabled
> [    0.616550] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 1562500) is a 16550A
> [    0.626362] console [ttyS0] enabled
> [    0.633921] bootconsole [early0] disabled
> [    0.648315] m25p80 spi0.0: found w25x05, expected m25p80
> [    0.665801] m25p80 spi0.0: w25x05 (64 Kbytes)
> [    0.670924] Creating 4 MTD partitions on "spi0.0":
> [    0.675950] 0x000000000000-0x00000000c000 : "routerboot"
> [    0.683557] 0x00000000c000-0x00000000d000 : "hard_config"
> [    0.690817] 0x00000000d000-0x00000000e000 : "bios"
> [    0.698318] 0x00000000e000-0x00000000f000 : "soft_config"
> [    0.705995] NAND flash driver for the RouterBOARD 91x series
> [    0.712046] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xf1
> [    0.718681] nand: Samsung NAND 128MiB 3,3V 8-bit
> [    0.723467] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
> [    0.731302] Scanning device for bad blocks
> [    0.902675] Bad eraseblock 1013 at 0x000007ea0000
> [    0.909779] Creating 3 MTD partitions on "NAND 128MiB 3,3V 8-bit":
> [    0.916239] 0x000000000000-0x000000040000 : "booter"
> [    0.923449] 0x000000040000-0x000000400000 : "kernel"
> [    0.930318] 0x000000400000-0x000008000000 : "ubi"
> [    0.941707] libphy: Fixed MDIO Bus: probed
> [    0.956833] libphy: ag71xx_mdio: probed
> [    1.683399] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd074, driver=Atheros 8031 ethernet]
> [    1.694448] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:RGMII
> [    1.705900] NET: Registered protocol family 10
> [    1.714721] Segment Routing with IPv6
> [    1.718619] NET: Registered protocol family 17
> [    1.723339] 8021q: 802.1Q VLAN Support v1.8
> [    1.731711] UBI: auto-attach mtd6
> [    1.735250] ubi0: attaching mtd6
> [    2.047961] ubi0: scanning is finished
> [    2.069645] ubi0: attached mtd6 (name "ubi", size 124 MiB)
> [    2.075395] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
> [    2.082492] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
> [    2.089516] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
> [    2.096718] ubi0: good PEBs: 991, bad PEBs: 1, corrupted PEBs: 0
> [    2.102936] ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128
> [    2.110398] ubi0: max/mean erase counter: 4/1, WL threshold: 4096, image sequence number: 1258076871
> [    2.119844] ubi0: available PEBs: 0, total reserved PEBs: 991, PEBs reserved for bad PEB handling: 19
> [    2.129471] ubi0: background thread "ubi_bgt0d" started, PID 319
> [    2.137422] block ubiblock0_1: created from ubi0:1(rootfs)
> [    2.143174] ubiblock: device ubiblock0_1 (rootfs) set to be root filesystem
> [    2.159234] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
> [    2.168117] Freeing unused kernel memory: 192K
> [    2.172775] This architecture does not have kernel memory protection.
> [    2.258053] random: fast init done
> [    2.802837] init: Console is alive
> [    2.806823] init: - watchdog -
> [    4.399518] kmodloader: loading kernel modules from /etc/modules-boot.d/*
> [    4.503822] pps_core: LinuxPPS API ver. 1 registered
> [    4.508992] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti at linux.it>
> [    4.520999] PTP clock support registered
> [    4.539513] usbcore: registered new interface driver usbfs
> [    4.545376] usbcore: registered new interface driver hub
> [    4.550991] usbcore: registered new device driver usb
> [    4.601159] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> [    4.619368] SCSI subsystem initialized
> [    4.629367] ehci-platform: EHCI generic platform driver
> [    4.634984] ehci-platform ehci-platform: EHCI Host Controller
> [    4.640987] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1
> [    4.651344] ehci-platform ehci-platform: TX-TX IDP fix enabled
> [    4.657438] ehci-platform ehci-platform: irq 3, io mem 0x1b000000
> [    4.692558] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00
> [    4.700125] hub 1-0:1.0: USB hub found
> [    4.704618] hub 1-0:1.0: 1 port detected
> [    4.712692] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
> [    4.721049] ohci-platform: OHCI generic platform driver
> [    4.731727] usbcore: registered new interface driver usb-storage
> [    4.738922] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
> [    4.748583] init: - preinit -
> [    5.693778] random: procd: uninitialized urandom read (4 bytes read)
> [    9.001485] UBIFS (ubi0:2): background thread "ubifs_bgt0_2" started, PID 413
> [    9.080839] UBIFS (ubi0:2): recovery needed
> [    9.274901] UBIFS (ubi0:2): recovery completed
> [    9.279639] UBIFS (ubi0:2): UBIFS: mounted UBI device 0, volume 2, name "rootfs_data"
> [    9.287800] UBIFS (ubi0:2): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
> [    9.298071] UBIFS (ubi0:2): FS size: 112119808 bytes (106 MiB, 883 LEBs), journal size 5586944 bytes (5 MiB, 44 LEBs)
> [    9.309057] UBIFS (ubi0:2): reserved for root: 4952683 bytes (4836 KiB)
> [    9.315925] UBIFS (ubi0:2): media format: w4/r0 (latest is w5/r0), UUID EA648A8F-279B-43E5-958B-14DF7149CF36, small LPT model
> [    9.333733] mount_root: switching to ubifs overlay
> [    9.397964] urandom-seed: Seeding with /etc/urandom.seed
> [    9.511608] procd: - early -
> [    9.515801] procd: - watchdog -
> [   10.199329] procd: - watchdog -
> [   10.203171] procd: - ubus -
> [   10.275865] random: ubusd: uninitialized urandom read (4 bytes read)
> [   10.369035] random: ubusd: uninitialized urandom read (4 bytes read)
> [   10.376370] random: ubusd: uninitialized urandom read (4 bytes read)
> [   10.384345] procd: - init -
> [   10.961671] kmodloader: loading kernel modules from /etc/modules.d/*
> [   10.987441] tun: Universal TUN/TAP device driver, 1.6
> [   11.014294] ip6_tables: (C) 2000-2006 Netfilter Core Team
> [   11.050391] i2c /dev entries driver
> [   11.063206] usbcore: registered new interface driver cdc_acm
> [   11.069092] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
> [   11.151161] usbcore: registered new interface driver cdc_wdm
> [   11.159011] Loading modules backported from Linux version v4.19-rc5-0-g6bf4ca7fbc85
> [   11.167026] Backport generated by backports.git v4.19-rc5-1-0-g05571dcd
> [   11.178588] hso: drivers/net/usb/hso.c: Option Wireless
> [   11.184306] usbcore: registered new interface driver hso
> [   11.192998] ip_tables: (C) 2000-2006 Netfilter Core Team
> [   11.217010] nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
> [   11.453824] usbcore: registered new interface driver usbserial
> [   11.459996] usbcore: registered new interface driver usbserial_generic
> [   11.466936] usbserial: USB Serial support registered for generic
> [   11.496368] xt_time: kernel timezone is -0000
> [   11.504006] usbcore: registered new interface driver cdc_ether
> [   11.536520] usbcore: registered new interface driver cdc_ncm
> [   11.564682] usbcore: registered new interface driver cdc_subset
> [   11.637116] usbcore: registered new interface driver ftdi_sio
> [   11.643276] usbserial: USB Serial support registered for FTDI USB Serial Device
> [   11.653826] usbcore: registered new interface driver huawei_cdc_ncm
> [   11.709545] PPP generic driver version 2.4.2
> [   11.717363] NET: Registered protocol family 24
> [   11.725570] usbcore: registered new interface driver qmi_wwan
> [   11.735132] usbcore: registered new interface driver rndis_host
> [   11.744549] usbcore: registered new interface driver sierra
> [   11.750442] usbserial: USB Serial support registered for Sierra USB modem
> [   11.761123] usbcore: registered new interface driver sierra_net
> [   11.844213] usbcore: registered new interface driver cdc_mbim
> [   11.853759] usbcore: registered new interface driver option
> [   11.859664] usbserial: USB Serial support registered for GSM modem (1-port)
> [   11.874137] usbcore: registered new interface driver qcserial
> [   11.880224] usbserial: USB Serial support registered for Qualcomm USB modem
> [   11.911067] ath: EEPROM regdomain: 0x0
> [   11.911078] ath: EEPROM indicates default country code should be used
> [   11.911082] ath: doing EEPROM country->regdmn map search
> [   11.911100] ath: country maps to regdmn code: 0x3a
> [   11.911106] ath: Country alpha2 being used: US
> [   11.911109] ath: Regpair used: 0x3a
> [   11.927477] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
> [   11.929831] ieee80211 phy0: Atheros AR9340 Rev:3 mem=0xb8100000, irq=47
> [   12.026610] kmodloader: done loading kernel modules from /etc/modules.d/*
> [   13.182017] urandom_read: 5 callbacks suppressed
> [   13.182026] random: jshn: uninitialized urandom read (4 bytes read)
> [   19.832682] IPv6: ADDRCONF(NETDEV_UP): lo: link is not ready
> [   19.935186] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
> [   19.956201] br-wan: port 1(eth0) entered blocking state
> [   19.961667] br-wan: port 1(eth0) entered disabled state
> [   19.967496] device eth0 entered promiscuous mode
> [   21.656687] MBT: Init start
> [   21.659636] MBT: Init succesfull
> [   21.678639] MBT: Init netlink interface - OK!
> [   23.074047] eth0: link up (1000Mbps/Full duplex)
> [   23.078898] br-wan: port 1(eth0) entered blocking state
> [   23.084361] br-wan: port 1(eth0) entered forwarding state
> [   31.162955] random: crng init done
> [   40.292979] A link change request failed with some changes committed already. Interface wlan0 may have been left with an inconsistent configuration, please check.
> [   44.146731] wlan0: Trigger new scan to find an IBSS to join
> [   48.458119] wlan0: Trigger new scan to find an IBSS to join
> [   50.401623] wlan0: Creating new IBSS network, BSSID c8:a9:46:87:7d:ad
> [   50.520083] ath: phy0: rx sample 109656 [h 0-t 1]
> [   50.520694] ath: phy0: rx sample 110266 [h 0-t 2]
> [   50.521753] ath: phy0: rx sample 111325 [h 0-t 3]
> [   50.526409] ath: phy0: rx sample 115978 [h 0-t 4]
> [   50.534171] ath: phy0: rx sample 123760 [h 0-t 5]
> [   50.544826] ath: phy0: rx sample 134432 [h 0-t 6]
> [   50.582706] ath: phy0: rx sample 172305 [h 0-t 7]
> [   50.611454] ath: phy0: rx sample 201069 [h 0-t 8]
> [   50.622638] ath: phy0: rx sample 212236 [h 0-t 9]
> [   50.644613] ath: phy0: late ack
> [   50.645032] ath: phy0: rx sample 234613 [h 0-t 10]
> [   50.646438] ath: phy0: rx sample 236318 [h 0-t 11]
> [   50.646473] ath: phy0: {64:d1:54:98:1f:09} tx sample 235888 [dur 208][h 0-t 1]
> [   50.646484] ath: phy0: ack_ts 109656 st_ts 235888 st_dur 208 [0-0]
> [   50.646494] ath: phy0: ack_ts 110266 st_ts 235888 st_dur 208 [1-0]
> [   50.646503] ath: phy0: ack_ts 111325 st_ts 235888 st_dur 208 [2-0]
> [   50.646512] ath: phy0: ack_ts 115978 st_ts 235888 st_dur 208 [3-0]
> [   50.646521] ath: phy0: ack_ts 123760 st_ts 235888 st_dur 208 [4-0]
> [   50.646530] ath: phy0: ack_ts 134432 st_ts 235888 st_dur 208 [5-0]
> [   50.646539] ath: phy0: ack_ts 172305 st_ts 235888 st_dur 208 [6-0]
> [   50.646549] ath: phy0: ack_ts 201069 st_ts 235888 st_dur 208 [7-0]
> [   50.646558] ath: phy0: ack_ts 212236 st_ts 235888 st_dur 208 [8-0]
> [   50.646567] ath: phy0: ack_ts 234613 st_ts 235888 st_dur 208 [9-0]
> [   50.646576] ath: phy0: ack_ts 236318 st_ts 235888 st_dur 208 [10-0]
> [   50.646586] ath: phy0: 64:d1:54:98:1f:09 to 222 [222]
> [   50.648005] ath: phy0: rx sample 237886 [h 11-t 12]
> [   50.648031] ath: phy0: {64:d1:54:98:1f:09} tx sample 237591 [dur 72][h 1-t 2]
> [   50.648041] ath: phy0: ack_ts 237886 st_ts 237591 st_dur 72 [11-1]
> [   50.648049] ath: phy0: 64:d1:54:98:1f:09 to 222 [223]
> [   50.650142] ath: phy0: rx sample 239964 [h 12-t 13]
> [   50.650195] ath: phy0: {64:d1:54:98:1f:09} tx sample 239670 [dur 72][h 2-t 3]
> [   50.650206] ath: phy0: ack_ts 239964 st_ts 239670 st_dur 72 [12-2]
> [   50.650216] ath: phy0: 64:d1:54:98:1f:09 to 222 [222]
> [   50.652189] ath: phy0: rx sample 242037 [h 13-t 14]
> [   50.652230] ath: phy0: {64:d1:54:98:1f:09} tx sample 241743 [dur 72][h 3-t 4]
> [   50.652240] ath: phy0: ack_ts 242037 st_ts 241743 st_dur 72 [13-3]
> [   50.652249] ath: phy0: 64:d1:54:98:1f:09 to 222 [222]
> [   50.654744] ath: phy0: rx sample 244587 [h 14-t 15]
> [   50.654795] ath: phy0: {64:d1:54:98:1f:09} tx sample 244129 [dur 236][h 4-t 5]
> [   50.654806] ath: phy0: ack_ts 244587 st_ts 244129 st_dur 236 [14-4]
> [   50.654815] ath: phy0: 64:d1:54:98:1f:09 to 222 [222]
> [   50.660806] ath: phy0: rx sample 250619 [h 15-t 16]
> [   50.660904] ath: phy0: {64:d1:54:98:1f:09} tx sample 250113 [dur 284][h 5-t 6]
> [   50.660915] ath: phy0: ack_ts 250619 st_ts 250113 st_dur 284 [15-5]
> [   50.660925] ath: phy0: 64:d1:54:98:1f:09 to 222 [222]
> [   50.664504] ath: phy0: rx sample 254312 [h 16-t 17]
> [   50.664593] ath: phy0: {64:d1:54:98:1f:09} tx sample 253882 [dur 208][h 6-t 7]
> [   50.664604] ath: phy0: ack_ts 254312 st_ts 253882 st_dur 208 [16-6]
> [   50.664615] ath: phy0: 64:d1:54:98:1f:09 to 222 [222]
> [   86.725401] ath: phy0: rx sample 36314992 [h 17-t 18]
> [   87.718736] ath: phy0: rx sample 37308314 [h 17-t 19]
> [   88.705320] ath: phy0: rx sample 38295135 [h 17-t 20]
> [   88.705370] ath: phy0: {64:d1:54:98:1f:09} tx sample 38294857 [dur 64][h 7-t 8]
> [   88.705382] ath: phy0: ack_ts 36314992 st_ts 38294857 st_dur 64 [17-7]
> [   88.705391] ath: phy0: ack_ts 37308314 st_ts 38294857 st_dur 64 [18-7]
> [   88.705401] ath: phy0: ack_ts 38295135 st_ts 38294857 st_dur 64 [19-7]
> [   88.705411] ath: phy0: 64:d1:54:98:1f:09 to 220 [214]
> [   88.705418] ath: phy0: ACK timeout 220 slottime 108
> [   88.708676] ath: phy0: rx sample 38298501 [h 20-t 21]
> [   88.708796] ath: phy0: {64:d1:54:98:1f:09} tx sample 38298202 [dur 76][h 8-t 9]
> [   88.708807] ath: phy0: ack_ts 38298501 st_ts 38298202 st_dur 76 [20-8]
> [   88.708817] ath: phy0: 64:d1:54:98:1f:09 to 220 [223]
> [   88.709310] ath: phy0: rx sample 38299137 [h 21-t 22]
> [   88.709357] ath: phy0: {64:d1:54:98:1f:09} tx sample 38298839 [dur 76][h 9-t 10]
> [   88.709367] ath: phy0: ack_ts 38299137 st_ts 38298839 st_dur 76 [21-9]
> [   88.709377] ath: phy0: 64:d1:54:98:1f:09 to 220 [222]
> [   88.743669] ath: phy0: rx sample 38333513 [h 22-t 23]
> [   88.743716] ath: phy0: {64:d1:54:98:1f:09} tx sample 38333035 [dur 240][h 10-t 11]
> [   88.743726] ath: phy0: ack_ts 38333513 st_ts 38333035 st_dur 240 [22-10]
> [   88.743737] ath: phy0: 64:d1:54:98:1f:09 to 224 [238]
> [   89.292033] ath: phy0: rx sample 38881872 [h 23-t 24]
> [   89.292100] ath: phy0: {64:d1:54:98:1f:09} tx sample 38881593 [dur 64][h 11-t 12]
> [   89.292112] ath: phy0: ack_ts 38881872 st_ts 38881593 st_dur 64 [23-11]
> [   89.292122] ath: phy0: 64:d1:54:98:1f:09 to 221 [215]
> [   89.313276] ath: phy0: rx sample 38902837 [h 24-t 25]
> [   89.561250] ath: phy0: rx sample 39151062 [h 24-t 26]
> [   89.561294] ath: phy0: {64:d1:54:98:1f:09} tx sample 39150764 [dur 76][h 12-t 13]
> [   89.561305] ath: phy0: ack_ts 38902837 st_ts 39150764 st_dur 76 [24-12]
> [   89.561314] ath: phy0: ack_ts 39151062 st_ts 39150764 st_dur 76 [25-12]
> [   89.561324] ath: phy0: 64:d1:54:98:1f:09 to 221 [222]
> [   89.592550] ath: phy0: rx sample 39182390 [h 26-t 27]
> [   89.592599] ath: phy0: {64:d1:54:98:1f:09} tx sample 39181975 [dur 188][h 13-t 14]
> [   89.592610] ath: phy0: ack_ts 39182390 st_ts 39181975 st_dur 188 [26-13]
> [   89.592621] ath: phy0: 64:d1:54:98:1f:09 to 222 [227]
> [   89.596271] ath: phy0: rx sample 39186123 [h 27-t 28]
> [   89.596299] ath: phy0: {64:d1:54:98:1f:09} tx sample 39185845 [dur 64][h 14-t 15]
> [   89.596309] ath: phy0: ack_ts 39186123 st_ts 39185845 st_dur 64 [27-14]
> [   89.596318] ath: phy0: 64:d1:54:98:1f:09 to 220 [214]
> [   89.598138] ath: phy0: rx sample 39187950 [h 28-t 29]
> [   89.598185] ath: phy0: {64:d1:54:98:1f:09} tx sample 39187671 [dur 64][h 15-t 16]
> [   89.598196] ath: phy0: ack_ts 39187950 st_ts 39187671 st_dur 64 [28-15]
> [   89.598205] ath: phy0: 64:d1:54:98:1f:09 to 218 [215]
> [   89.600346] ath: phy0: rx sample 39190150 [h 29-t 30]
> [   89.600402] ath: phy0: {64:d1:54:98:1f:09} tx sample 39189872 [dur 64][h 16-t 17]
> [   89.600413] ath: phy0: ack_ts 39190150 st_ts 39189872 st_dur 64 [29-16]
> [   89.600423] ath: phy0: 64:d1:54:98:1f:09 to 217 [214]
> [   89.606249] ath: phy0: rx sample 39196043 [h 30-t 31]
> [   89.606297] ath: phy0: {64:d1:54:98:1f:09} tx sample 39195749 [dur 80][h 17-t 18]
> [   89.606308] ath: phy0: ack_ts 39196043 st_ts 39195749 st_dur 80 [30-17]
> [   89.606319] ath: phy0: 64:d1:54:98:1f:09 to 216 [214]
> [   89.609758] ath: phy0: rx sample 39199560 [h 31-t 32]
> [   89.609809] ath: phy0: {64:d1:54:98:1f:09} tx sample 39199267 [dur 80][h 18-t 19]
> [   89.609820] ath: phy0: ack_ts 39199560 st_ts 39199267 st_dur 80 [31-18]
> [   89.609831] ath: phy0: 64:d1:54:98:1f:09 to 215 [213]
> [   89.612653] ath: phy0: rx sample 39202450 [h 32-t 33]
> [   89.612710] ath: phy0: {64:d1:54:98:1f:09} tx sample 39202155 [dur 80][h 19-t 20]
> [   89.612721] ath: phy0: ack_ts 39202450 st_ts 39202155 st_dur 80 [32-19]
> [   89.612731] ath: phy0: 64:d1:54:98:1f:09 to 215 [215]
> [   89.758929] ath: phy0: rx sample 39348699 [h 33-t 34]
> [   89.758983] ath: phy0: {64:d1:54:98:1f:09} tx sample 39348422 [dur 64][h 20-t 21]
> [   89.758994] ath: phy0: ack_ts 39348699 st_ts 39348422 st_dur 64 [33-20]
> [   89.759004] ath: phy0: 64:d1:54:98:1f:09 to 214 [213]
> [   89.760448] ath: phy0: rx sample 39350288 [h 34-t 35]
> [   89.760487] ath: phy0: {64:d1:54:98:1f:09} tx sample 39350011 [dur 64][h 21-t 22]
> [   89.760498] ath: phy0: ack_ts 39350288 st_ts 39350011 st_dur 64 [34-21]
> [   89.760507] ath: phy0: 64:d1:54:98:1f:09 to 213 [213]
> [   89.767873] ath: phy0: rx sample 39357673 [h 35-t 36]
> [   89.767927] ath: phy0: {64:d1:54:98:1f:09} tx sample 39357379 [dur 80][h 22-t 23]
> [   89.767938] ath: phy0: ack_ts 39357673 st_ts 39357379 st_dur 80 [35-22]
> [   89.767948] ath: phy0: 64:d1:54:98:1f:09 to 213 [214]
> [   90.376153] ath: phy0: rx sample 39965966 [h 36-t 37]
> [   90.376208] ath: phy0: {64:d1:54:98:1f:09} tx sample 39965696 [dur 60][h 23-t 24]
> [   90.376219] ath: phy0: ack_ts 39965966 st_ts 39965696 st_dur 60 [36-23]
> [   90.376230] ath: phy0: 64:d1:54:98:1f:09 to 212 [210]
> [   90.516106] ath: phy0: rx sample 40105915 [h 37-t 38]
> [   90.516161] ath: phy0: {64:d1:54:98:1f:09} tx sample 40105637 [dur 64][h 24-t 25]
> [   90.516172] ath: phy0: ack_ts 40105915 st_ts 40105637 st_dur 64 [37-24]
> [   90.516182] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   90.639183] ath: phy0: rx sample 40228743 [h 38-t 39]
> [   90.643649] ath: phy0: rx sample 40233258 [h 38-t 40]
> [   90.655195] ath: phy0: rx sample 40245018 [h 38-t 41]
> [   90.655246] ath: phy0: {64:d1:54:98:1f:09} tx sample 40244748 [dur 56][h 25-t 26]
> [   90.655258] ath: phy0: ack_ts 40228743 st_ts 40244748 st_dur 56 [38-25]
> [   90.655267] ath: phy0: ack_ts 40233258 st_ts 40244748 st_dur 56 [39-25]
> [   90.655277] ath: phy0: ack_ts 40245018 st_ts 40244748 st_dur 56 [40-25]
> [   90.655287] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   91.188148] ath: phy0: rx sample 40777957 [h 41-t 42]
> [   91.188203] ath: phy0: {64:d1:54:98:1f:09} tx sample 40777686 [dur 56][h 26-t 27]
> [   91.188214] ath: phy0: ack_ts 40777957 st_ts 40777686 st_dur 56 [41-26]
> [   91.188224] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   91.207303] ath: phy0: rx sample 40797097 [h 42-t 43]
> [   91.207359] ath: phy0: {64:d1:54:98:1f:09} tx sample 40796818 [dur 68][h 27-t 28]
> [   91.207370] ath: phy0: ack_ts 40797097 st_ts 40796818 st_dur 68 [42-27]
> [   91.207381] ath: phy0: 64:d1:54:98:1f:09 to 211 [211]
> [   91.342549] ath: phy0: rx sample 40932357 [h 43-t 44]
> [   91.342602] ath: phy0: {64:d1:54:98:1f:09} tx sample 40932087 [dur 60][h 28-t 29]
> [   91.342614] ath: phy0: ack_ts 40932357 st_ts 40932087 st_dur 60 [43-28]
> [   91.342624] ath: phy0: 64:d1:54:98:1f:09 to 210 [210]
> [   91.344642] ath: phy0: rx sample 40934493 [h 44-t 45]
> [   91.344672] ath: phy0: {64:d1:54:98:1f:09} tx sample 40934208 [dur 72][h 29-t 30]
> [   91.344682] ath: phy0: ack_ts 40934493 st_ts 40934208 st_dur 72 [44-29]
> [   91.344690] ath: phy0: 64:d1:54:98:1f:09 to 210 [213]
> [   91.439354] ath: phy0: rx sample 41028914 [h 45-t 46]
> [   91.440469] ath: phy0: rx sample 41030063 [h 45-t 47]
> [   91.446420] ath: phy0: rx sample 41036034 [h 45-t 48]
> [   91.457236] ath: phy0: rx sample 41046790 [h 45-t 49]
> [   91.461308] ath: phy0: rx sample 41050855 [h 45-t 50]
> [   92.197662] ath: phy0: rx sample 41787469 [h 45-t 51]
> [   92.197716] ath: phy0: {64:d1:54:98:1f:09} tx sample 41787200 [dur 56][h 30-t 31]
> [   92.197727] ath: phy0: ack_ts 41028914 st_ts 41787200 st_dur 56 [45-30]
> [   92.197737] ath: phy0: ack_ts 41030063 st_ts 41787200 st_dur 56 [46-30]
> [   92.197746] ath: phy0: ack_ts 41036034 st_ts 41787200 st_dur 56 [47-30]
> [   92.197756] ath: phy0: ack_ts 41046790 st_ts 41787200 st_dur 56 [48-30]
> [   92.197765] ath: phy0: ack_ts 41050855 st_ts 41787200 st_dur 56 [49-30]
> [   92.197774] ath: phy0: ack_ts 41787469 st_ts 41787200 st_dur 56 [50-30]
> [   92.197784] ath: phy0: 64:d1:54:98:1f:09 to 210 [213]
> [   92.252602] ath: phy0: rx sample 41842407 [h 51-t 52]
> [   92.252656] ath: phy0: {64:d1:54:98:1f:09} tx sample 41842130 [dur 68][h 31-t 32]
> [   92.252668] ath: phy0: ack_ts 41842407 st_ts 41842130 st_dur 68 [51-31]
> [   92.252678] ath: phy0: 64:d1:54:98:1f:09 to 209 [209]
> [   92.253409] ath: phy0: rx sample 41843233 [h 52-t 53]
> [   92.253461] ath: phy0: {64:d1:54:98:1f:09} tx sample 41842963 [dur 56][h 32-t 33]
> [   92.253471] ath: phy0: ack_ts 41843233 st_ts 41842963 st_dur 56 [52-32]
> [   92.253480] ath: phy0: 64:d1:54:98:1f:09 to 210 [214]
> [   92.490008] ath: phy0: rx sample 42079804 [h 53-t 54]
> [   92.490069] ath: phy0: {64:d1:54:98:1f:09} tx sample 42079518 [dur 72][h 33-t 34]
> [   92.490079] ath: phy0: ack_ts 42079804 st_ts 42079518 st_dur 72 [53-33]
> [   92.490089] ath: phy0: 64:d1:54:98:1f:09 to 211 [214]
> [   92.528811] ath: phy0: rx sample 42118614 [h 54-t 55]
> [   92.528864] ath: phy0: {64:d1:54:98:1f:09} tx sample 42118343 [dur 56][h 34-t 35]
> [   92.528875] ath: phy0: ack_ts 42118614 st_ts 42118343 st_dur 56 [54-34]
> [   92.528885] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   92.747640] ath: phy0: rx sample 42337196 [h 55-t 56]
> [   92.750629] ath: phy0: rx sample 42340180 [h 55-t 57]
> [   92.752800] ath: phy0: rx sample 42342408 [h 55-t 58]
> [   92.756582] ath: phy0: rx sample 42346146 [h 55-t 59]
> [   92.765268] ath: phy0: rx sample 42355070 [h 55-t 60]
> [   92.765323] ath: phy0: {64:d1:54:98:1f:09} tx sample 42354800 [dur 56][h 35-t 36]
> [   92.765334] ath: phy0: ack_ts 42337196 st_ts 42354800 st_dur 56 [55-35]
> [   92.765344] ath: phy0: ack_ts 42340180 st_ts 42354800 st_dur 56 [56-35]
> [   92.765354] ath: phy0: ack_ts 42342408 st_ts 42354800 st_dur 56 [57-35]
> [   92.765363] ath: phy0: ack_ts 42346146 st_ts 42354800 st_dur 56 [58-35]
> [   92.765372] ath: phy0: ack_ts 42355070 st_ts 42354800 st_dur 56 [59-35]
> [   92.765382] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   92.922612] ath: phy0: rx sample 42512167 [h 60-t 61]
> [   92.923607] ath: phy0: rx sample 42513216 [h 60-t 62]
> [   92.928865] ath: phy0: rx sample 42518477 [h 60-t 63]
> [   92.942104] ath: phy0: rx sample 42531692 [h 60-t 0]
> [   92.975645] ath: phy0: rx sample 42565229 [h 60-t 1]
> [   93.806611] ath: phy0: rx sample 43396189 [h 60-t 2]
> [   93.809484] ath: phy0: rx sample 43399065 [h 60-t 3]
> [   93.814790] ath: phy0: rx sample 43404348 [h 60-t 4]
> [   93.824366] ath: phy0: rx sample 43413919 [h 60-t 5]
> [   93.845973] ath: phy0: rx sample 43435527 [h 60-t 6]
> [   94.770557] ath: phy0: rx sample 44360349 [h 60-t 7]
> [   94.770611] ath: phy0: {64:d1:54:98:1f:09} tx sample 44360071 [dur 64][h 36-t 37]
> [   94.770623] ath: phy0: ack_ts 42512167 st_ts 44360071 st_dur 64 [60-36]
> [   94.770633] ath: phy0: ack_ts 42513216 st_ts 44360071 st_dur 64 [61-36]
> [   94.770642] ath: phy0: ack_ts 42518477 st_ts 44360071 st_dur 64 [62-36]
> [   94.770652] ath: phy0: ack_ts 42531692 st_ts 44360071 st_dur 64 [63-36]
> [   94.770661] ath: phy0: ack_ts 42565229 st_ts 44360071 st_dur 64 [0-36]
> [   94.770670] ath: phy0: ack_ts 43396189 st_ts 44360071 st_dur 64 [1-36]
> [   94.770679] ath: phy0: ack_ts 43399065 st_ts 44360071 st_dur 64 [2-36]
> [   94.770689] ath: phy0: ack_ts 43404348 st_ts 44360071 st_dur 64 [3-36]
> [   94.770698] ath: phy0: ack_ts 43413919 st_ts 44360071 st_dur 64 [4-36]
> [   94.770707] ath: phy0: ack_ts 43435527 st_ts 44360071 st_dur 64 [5-36]
> [   94.770717] ath: phy0: ack_ts 44360349 st_ts 44360071 st_dur 64 [6-36]
> [   94.770726] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.770734] ath: phy0: ACK timeout 212 slottime 104
> [   94.772542] ath: phy0: rx sample 44362350 [h 7-t 8]
> [   94.772591] ath: phy0: {64:d1:54:98:1f:09} tx sample 44362072 [dur 64][h 37-t 38]
> [   94.772602] ath: phy0: ack_ts 44362350 st_ts 44362072 st_dur 64 [7-37]
> [   94.772612] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.777141] ath: phy0: rx sample 44366994 [h 8-t 9]
> [   94.777173] ath: phy0: {64:d1:54:98:1f:09} tx sample 44366716 [dur 64][h 38-t 39]
> [   94.777183] ath: phy0: ack_ts 44366994 st_ts 44366716 st_dur 64 [8-38]
> [   94.777191] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.786920] ath: phy0: rx sample 44376736 [h 9-t 10]
> [   94.786971] ath: phy0: {64:d1:54:98:1f:09} tx sample 44376443 [dur 80][h 39-t 40]
> [   94.786982] ath: phy0: ack_ts 44376736 st_ts 44376443 st_dur 80 [9-39]
> [   94.786992] ath: phy0: 64:d1:54:98:1f:09 to 212 [213]
> [   94.792220] ath: phy0: rx sample 44381775 [h 10-t 11]
> [   94.821841] ath: phy0: rx sample 44411682 [h 10-t 12]
> [   94.821912] ath: phy0: {64:d1:54:98:1f:09} tx sample 44411396 [dur 72][h 40-t 41]
> [   94.821924] ath: phy0: ack_ts 44381775 st_ts 44411396 st_dur 72 [10-40]
> [   94.821933] ath: phy0: ack_ts 44411682 st_ts 44411396 st_dur 72 [11-40]
> [   94.821943] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.823378] ath: phy0: rx sample 44413223 [h 12-t 13]
> [   94.823412] ath: phy0: {64:d1:54:98:1f:09} tx sample 44412945 [dur 64][h 41-t 42]
> [   94.823422] ath: phy0: ack_ts 44413223 st_ts 44412945 st_dur 64 [12-41]
> [   94.823431] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.868064] ath: phy0: rx sample 44457862 [h 13-t 14]
> [   94.868117] ath: phy0: {64:d1:54:98:1f:09} tx sample 44457552 [dur 96][h 42-t 43]
> [   94.868128] ath: phy0: ack_ts 44457862 st_ts 44457552 st_dur 96 [13-42]
> [   94.868137] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.878670] ath: phy0: rx sample 44468477 [h 14-t 15]
> [   94.878724] ath: phy0: {64:d1:54:98:1f:09} tx sample 44468198 [dur 64][h 43-t 44]
> [   94.878735] ath: phy0: ack_ts 44468477 st_ts 44468198 st_dur 64 [14-43]
> [   94.878745] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   94.889725] ath: phy0: rx sample 44479533 [h 15-t 16]
> [   94.889778] ath: phy0: {64:d1:54:98:1f:09} tx sample 44479255 [dur 64][h 44-t 45]
> [   94.889789] ath: phy0: ack_ts 44479533 st_ts 44479255 st_dur 64 [15-44]
> [   94.889799] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.897918] ath: phy0: rx sample 44487731 [h 16-t 17]
> [   94.897967] ath: phy0: {64:d1:54:98:1f:09} tx sample 44487452 [dur 68][h 45-t 46]
> [   94.897977] ath: phy0: ack_ts 44487731 st_ts 44487452 st_dur 68 [16-45]
> [   94.897987] ath: phy0: 64:d1:54:98:1f:09 to 211 [211]
> [   94.905896] ath: phy0: rx sample 44495701 [h 17-t 18]
> [   94.905947] ath: phy0: {64:d1:54:98:1f:09} tx sample 44495423 [dur 64][h 46-t 47]
> [   94.905958] ath: phy0: ack_ts 44495701 st_ts 44495423 st_dur 64 [17-46]
> [   94.905968] ath: phy0: 64:d1:54:98:1f:09 to 211 [214]
> [   94.914363] ath: phy0: rx sample 44504172 [h 18-t 19]
> [   94.914415] ath: phy0: {64:d1:54:98:1f:09} tx sample 44503893 [dur 64][h 47-t 48]
> [   94.914426] ath: phy0: ack_ts 44504172 st_ts 44503893 st_dur 64 [18-47]
> [   94.914436] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   94.924043] ath: phy0: rx sample 44513850 [h 19-t 20]
> [   94.924096] ath: phy0: {64:d1:54:98:1f:09} tx sample 44513565 [dur 72][h 48-t 49]
> [   94.924107] ath: phy0: ack_ts 44513850 st_ts 44513565 st_dur 72 [19-48]
> [   94.924117] ath: phy0: 64:d1:54:98:1f:09 to 212 [213]
> [   94.940879] ath: phy0: rx sample 44530689 [h 20-t 21]
> [   94.940931] ath: phy0: {64:d1:54:98:1f:09} tx sample 44530411 [dur 64][h 49-t 50]
> [   94.940942] ath: phy0: ack_ts 44530689 st_ts 44530411 st_dur 64 [20-49]
> [   94.940952] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   94.949031] ath: phy0: rx sample 44538845 [h 21-t 22]
> [   94.949083] ath: phy0: {64:d1:54:98:1f:09} tx sample 44538566 [dur 64][h 50-t 51]
> [   94.949094] ath: phy0: ack_ts 44538845 st_ts 44538566 st_dur 64 [21-50]
> [   94.949103] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   94.956938] ath: phy0: rx sample 44546740 [h 22-t 23]
> [   94.956991] ath: phy0: {64:d1:54:98:1f:09} tx sample 44546455 [dur 72][h 51-t 52]
> [   94.957002] ath: phy0: ack_ts 44546740 st_ts 44546455 st_dur 72 [22-51]
> [   94.957012] ath: phy0: 64:d1:54:98:1f:09 to 212 [213]
> [   94.964521] ath: phy0: rx sample 44554328 [h 23-t 24]
> [   94.964572] ath: phy0: {64:d1:54:98:1f:09} tx sample 44554050 [dur 64][h 52-t 53]
> [   94.964583] ath: phy0: ack_ts 44554328 st_ts 44554050 st_dur 64 [23-52]
> [   94.964593] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   95.009283] ath: phy0: rx sample 44599099 [h 24-t 25]
> [   95.009331] ath: phy0: {64:d1:54:98:1f:09} tx sample 44598821 [dur 64][h 53-t 54]
> [   95.009342] ath: phy0: ack_ts 44599099 st_ts 44598821 st_dur 64 [24-53]
> [   95.009353] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   95.017046] ath: phy0: rx sample 44606857 [h 25-t 26]
> [   95.017099] ath: phy0: {64:d1:54:98:1f:09} tx sample 44606571 [dur 72][h 54-t 55]
> [   95.017109] ath: phy0: ack_ts 44606857 st_ts 44606571 st_dur 72 [25-54]
> [   95.017120] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   95.024783] ath: phy0: rx sample 44614591 [h 26-t 27]
> [   95.024837] ath: phy0: {64:d1:54:98:1f:09} tx sample 44614312 [dur 64][h 55-t 56]
> [   95.024848] ath: phy0: ack_ts 44614591 st_ts 44614312 st_dur 64 [26-55]
> [   95.024858] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   95.036850] ath: phy0: rx sample 44626662 [h 27-t 28]
> [   95.036902] ath: phy0: {64:d1:54:98:1f:09} tx sample 44626384 [dur 64][h 56-t 57]
> [   95.036914] ath: phy0: ack_ts 44626662 st_ts 44626384 st_dur 64 [27-56]
> [   95.036924] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   95.047777] ath: phy0: rx sample 44637325 [h 28-t 29]
> [   95.051038] ath: phy0: rx sample 44640879 [h 28-t 30]
> [   95.051085] ath: phy0: {64:d1:54:98:1f:09} tx sample 44640602 [dur 64][h 57-t 58]
> [   95.051095] ath: phy0: ack_ts 44637325 st_ts 44640602 st_dur 64 [28-57]
> [   95.051105] ath: phy0: ack_ts 44640879 st_ts 44640602 st_dur 64 [29-57]
> [   95.051115] ath: phy0: 64:d1:54:98:1f:09 to 212 [213]
> [   95.055379] ath: phy0: rx sample 44645196 [h 30-t 31]
> [   95.055427] ath: phy0: {64:d1:54:98:1f:09} tx sample 44644909 [dur 72][h 58-t 59]
> [   95.055439] ath: phy0: ack_ts 44645196 st_ts 44644909 st_dur 72 [30-58]
> [   95.055447] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   95.064307] ath: phy0: rx sample 44653872 [h 31-t 32]
> [   95.065686] ath: phy0: rx sample 44655261 [h 31-t 33]
> [   95.067609] ath: phy0: rx sample 44657217 [h 31-t 34]
> [   95.079865] ath: phy0: rx sample 44669434 [h 31-t 35]
> [   95.105951] ath: phy0: rx sample 44695790 [h 31-t 36]
> [   95.106003] ath: phy0: {64:d1:54:98:1f:09} tx sample 44695513 [dur 64][h 59-t 60]
> [   95.106014] ath: phy0: ack_ts 44653872 st_ts 44695513 st_dur 64 [31-59]
> [   95.106024] ath: phy0: ack_ts 44655261 st_ts 44695513 st_dur 64 [32-59]
> [   95.106033] ath: phy0: ack_ts 44657217 st_ts 44695513 st_dur 64 [33-59]
> [   95.106042] ath: phy0: ack_ts 44669434 st_ts 44695513 st_dur 64 [34-59]
> [   95.106051] ath: phy0: ack_ts 44695790 st_ts 44695513 st_dur 64 [35-59]
> [   95.106060] ath: phy0: 64:d1:54:98:1f:09 to 212 [213]
> [   95.106650] ath: phy0: rx sample 44696498 [h 36-t 37]
> [   95.106683] ath: phy0: {64:d1:54:98:1f:09} tx sample 44696221 [dur 64][h 60-t 61]
> [   95.106692] ath: phy0: ack_ts 44696498 st_ts 44696221 st_dur 64 [36-60]
> [   95.106701] ath: phy0: 64:d1:54:98:1f:09 to 212 [213]
> [   95.117761] ath: phy0: rx sample 44707553 [h 37-t 38]
> [   95.117818] ath: phy0: {64:d1:54:98:1f:09} tx sample 44707266 [dur 72][h 61-t 62]
> [   95.117828] ath: phy0: ack_ts 44707553 st_ts 44707266 st_dur 72 [37-61]
> [   95.117839] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   95.220097] ath: phy0: rx sample 44809900 [h 38-t 39]
> [   95.220152] ath: phy0: {64:d1:54:98:1f:09} tx sample 44809610 [dur 76][h 62-t 63]
> [   95.220163] ath: phy0: ack_ts 44809900 st_ts 44809610 st_dur 76 [38-62]
> [   95.220173] ath: phy0: 64:d1:54:98:1f:09 to 212 [214]
> [   95.237120] ath: phy0: rx sample 44826921 [h 39-t 40]
> [   95.237180] ath: phy0: {64:d1:54:98:1f:09} tx sample 44826402 [dur 308][h 63-t 0]
> [   95.237191] ath: phy0: ack_ts 44826921 st_ts 44826402 st_dur 308 [39-63]
> [   95.237201] ath: phy0: 64:d1:54:98:1f:09 to 211 [211]
> [   95.246366] ath: phy0: rx sample 44836176 [h 40-t 41]
> [   95.246419] ath: phy0: {64:d1:54:98:1f:09} tx sample 44835689 [dur 276][h 0-t 1]
> [   95.246430] ath: phy0: ack_ts 44836176 st_ts 44835689 st_dur 276 [40-0]
> [   95.246440] ath: phy0: 64:d1:54:98:1f:09 to 211 [211]
> [   95.292041] ath: phy0: rx sample 44881622 [h 41-t 42]
> [   95.294954] ath: phy0: rx sample 44884793 [h 41-t 43]
> [   95.294998] ath: phy0: {64:d1:54:98:1f:09} tx sample 44884522 [dur 60][h 1-t 2]
> [   95.295009] ath: phy0: ack_ts 44881622 st_ts 44884522 st_dur 60 [41-1]
> [   95.295019] ath: phy0: ack_ts 44884793 st_ts 44884522 st_dur 60 [42-1]
> [   95.295028] ath: phy0: 64:d1:54:98:1f:09 to 211 [211]
> [   95.301362] ath: phy0: rx sample 44890923 [h 43-t 44]
> [   95.304673] ath: phy0: rx sample 44894225 [h 43-t 45]
> [   95.312002] ath: phy0: rx sample 44901800 [h 43-t 46]
> [   95.312061] ath: phy0: {64:d1:54:98:1f:09} tx sample 44901528 [dur 60][h 2-t 3]
> [   95.312072] ath: phy0: ack_ts 44890923 st_ts 44901528 st_dur 60 [43-2]
> [   95.312082] ath: phy0: ack_ts 44894225 st_ts 44901528 st_dur 60 [44-2]
> [   95.312091] ath: phy0: ack_ts 44901800 st_ts 44901528 st_dur 60 [45-2]
> [   95.312101] ath: phy0: 64:d1:54:98:1f:09 to 211 [212]
> [   95.312657] ath: phy0: rx sample 44902493 [h 46-t 47]
> [   95.312694] ath: phy0: {64:d1:54:98:1f:09} tx sample 44902126 [dur 156][h 3-t 4]
> [   95.312704] ath: phy0: ack_ts 44902493 st_ts 44902126 st_dur 156 [46-3]
> [   95.312712] ath: phy0: 64:d1:54:98:1f:09 to 211 [211]
> [   95.323117] ath: phy0: rx sample 44912902 [h 47-t 48]
> [   95.323172] ath: phy0: {64:d1:54:98:1f:09} tx sample 44912625 [dur 64][h 4-t 5]
> [   95.323182] ath: phy0: ack_ts 44912902 st_ts 44912625 st_dur 64 [47-4]
> [   95.323192] ath: phy0: 64:d1:54:98:1f:09 to 211 [213]
> [   95.331323] ath: phy0: rx sample 44920873 [h 48-t 49]
> [   95.334175] ath: phy0: rx sample 44924005 [h 48-t 50]
> [   95.334220] ath: phy0: {64:d1:54:98:1f:09} tx sample 44923734 [dur 56][h 5-t 6]
> [   95.334231] ath: phy0: ack_ts 44920873 st_ts 44923734 st_dur 56 [48-5]
> [   95.334240] ath: phy0: ack_ts 44924005 st_ts 44923734 st_dur 56 [49-5]
> [   95.334250] ath: phy0: 64:d1:54:98:1f:09 to 212 [215]
> [   95.336374] ath: phy0: rx sample 44925961 [h 50-t 51]
> [   95.339115] ath: phy0: rx sample 44928958 [h 50-t 52]
> 

> [    0.000000] Linux version 4.14.78 (koen at bob) (gcc version 7.3.0 (OpenWrt GCC 7.3.0 r8391+6-04f381c3f6)) #0 Wed Oct 31 16:00:27 2018
> [    0.000000] bootconsole [early0] enabled
> [    0.000000] CPU0 revision is: 0001974c (MIPS 74Kc)
> [    0.000000] SoC: Atheros AR9342 rev 3
> [    0.000000] Determined physical RAM map:
> [    0.000000]  memory: 04000000 @ 00000000 (usable)
> [    0.000000] User-defined physical RAM map:
> [    0.000000]  memory: 04000000 @ 00000000 (usable)
> [    0.000000] Initrd not found or empty - disabling initrd
> [    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
> [    0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
> [    0.000000] Zone ranges:
> [    0.000000]   Normal   [mem 0x0000000000000000-0x0000000003ffffff]
> [    0.000000] Movable zone start for each node
> [    0.000000] Early memory node ranges
> [    0.000000]   node   0: [mem 0x0000000000000000-0x0000000003ffffff]
> [    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff]
> [    0.000000] On node 0 totalpages: 16384
> [    0.000000] free_area_init_node: node 0, pgdat 804dd2d0, node_mem_map 81000020
> [    0.000000]   Normal zone: 128 pages used for memmap
> [    0.000000]   Normal zone: 0 pages reserved
> [    0.000000]   Normal zone: 16384 pages, LIFO batch:3
> [    0.000000] random: get_random_bytes called from 0x804e073c with crng_init=0
> [    0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
> [    0.000000] pcpu-alloc: [0] 0 
> [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 16256
> [    0.000000] Kernel command line: parts=1 boot_part_size=4194304 gpio=130607 HZ=300000000 mem=64M kmac=64:D1:54:98:1F:08 board=711Gr100 board=711Gr100 ver=3.41 hw_opt=00200205 boot=1 mlc=11 console=ttyS0,115200 rootfstype=squashfs noinitrd
> [    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
> [    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
> [    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
> [    0.000000] Writing ErrCtl register=00000000
> [    0.000000] Readback ErrCtl register=00000000
> [    0.000000] Memory: 59520K/65536K available (3941K kernel code, 162K rwdata, 496K rodata, 192K init, 205K bss, 6016K reserved, 0K cma-reserved)
> [    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
> [    0.000000] NR_IRQS: 51
> [    0.000000] Clocks: CPU:600.000MHz, DDR:350.000MHz, AHB:350.000MHz, Ref:25.000MHz
> [    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6370868154 ns
> [    0.000011] sched_clock: 32 bits at 300MHz, resolution 3ns, wraps every 7158278654ns
> [    0.008874] Calibrating delay loop... 299.82 BogoMIPS (lpj=1499136)
> [    0.086006] pid_max: default: 32768 minimum: 301
> [    0.091486] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.099001] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.109763] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
> [    0.120991] futex hash table entries: 256 (order: -1, 3072 bytes)
> [    0.129542] NET: Registered protocol family 16
> [    0.138805] MIPS: machine is Mikrotik RouterBOARD 912UAG-5HPnD
> [    0.391333] ar724x-pci ar724x-pci: PCIe link is down
> [    0.397043] registering PCI controller with io_map_base unset
> [    0.403618] Can't analyze schedule() prologue at 80435090
> [    0.426174] PCI host bridge to bus 0000:00
> [    0.430904] pci_bus 0000:00: root bus resource [mem 0x10000000-0x13ffffff]
> [    0.438702] pci_bus 0000:00: root bus resource [io  0x0000]
> [    0.445034] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
> [    0.452736] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
> [    0.461763] pci_bus 0000:00: busn_res: [bus 00-ff] end is updated to 00
> [    0.462588] clocksource: Switched to clocksource MIPS
> [    0.469474] NET: Registered protocol family 2
> [    0.475355] TCP established hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.483345] TCP bind hash table entries: 1024 (order: 0, 4096 bytes)
> [    0.490575] TCP: Hash tables configured (established 1024 bind 1024)
> [    0.497979] UDP hash table entries: 256 (order: 0, 4096 bytes)
> [    0.504681] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
> [    0.512119] NET: Registered protocol family 1
> [    0.517157] PCI: CLS 0 bytes, default 32
> [    0.523384] Crashlog allocated RAM at address 0x3f00000
> [    0.530963] workingset: timestamp_bits=30 max_order=14 bucket_order=0
> [    0.543744] squashfs: version 4.0 (2009/01/31) Phillip Lougher
> [    0.550367] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
> [    0.574015] io scheduler noop registered
> [    0.578475] io scheduler deadline registered (default)
> [    0.584773] Serial: 8250/16550 driver, 1 ports, IRQ sharing disabled
> [    0.592408] console [ttyS0] disabled
> [    0.616668] serial8250.0: ttyS0 at MMIO 0x18020000 (irq = 11, base_baud = 1562500) is a 16550A
> [    0.626478] console [ttyS0] enabled
> [    0.634037] bootconsole [early0] disabled
> [    0.648431] m25p80 spi0.0: found w25x05, expected m25p80
> [    0.665676] m25p80 spi0.0: w25x05 (64 Kbytes)
> [    0.670794] Creating 4 MTD partitions on "spi0.0":
> [    0.675823] 0x000000000000-0x00000000c000 : "routerboot"
> [    0.683435] 0x00000000c000-0x00000000d000 : "hard_config"
> [    0.690695] 0x00000000d000-0x00000000e000 : "bios"
> [    0.698189] 0x00000000e000-0x00000000f000 : "soft_config"
> [    0.705871] NAND flash driver for the RouterBOARD 91x series
> [    0.711919] nand: device found, Manufacturer ID: 0xec, Chip ID: 0xf1
> [    0.718553] nand: Samsung NAND 128MiB 3,3V 8-bit
> [    0.723340] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
> [    0.731175] Scanning device for bad blocks
> [    0.903211] Creating 3 MTD partitions on "NAND 128MiB 3,3V 8-bit":
> [    0.909624] 0x000000000000-0x000000040000 : "booter"
> [    0.916812] 0x000000040000-0x000000400000 : "kernel"
> [    0.923790] 0x000000400000-0x000008000000 : "ubi"
> [    0.935167] libphy: Fixed MDIO Bus: probed
> [    0.949890] libphy: ag71xx_mdio: probed
> [    1.683469] ag71xx ag71xx.0: connected to PHY at ag71xx-mdio.0:00 [uid=004dd074, driver=Atheros 8031 ethernet]
> [    1.694523] eth0: Atheros AG71xx at 0xb9000000, irq 4, mode:RGMII
> [    1.705934] NET: Registered protocol family 10
> [    1.714823] Segment Routing with IPv6
> [    1.718722] NET: Registered protocol family 17
> [    1.723443] 8021q: 802.1Q VLAN Support v1.8
> [    1.731804] UBI: auto-attach mtd6
> [    1.735347] ubi0: attaching mtd6
> [    2.046544] ubi0: scanning is finished
> [    2.068171] ubi0: attached mtd6 (name "ubi", size 124 MiB)
> [    2.073925] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
> [    2.081022] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
> [    2.088045] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
> [    2.095248] ubi0: good PEBs: 992, bad PEBs: 0, corrupted PEBs: 0
> [    2.101451] ubi0: user volume: 3, internal volumes: 1, max. volumes count: 128
> [    2.108923] ubi0: max/mean erase counter: 4/1, WL threshold: 4096, image sequence number: 887628751
> [    2.118274] ubi0: available PEBs: 0, total reserved PEBs: 992, PEBs reserved for bad PEB handling: 20
> [    2.127902] ubi0: background thread "ubi_bgt0d" started, PID 320
> [    2.135855] block ubiblock0_1: created from ubi0:1(rootfs)
> [    2.141531] ubiblock: device ubiblock0_1 (rootfs) set to be root filesystem
> [    2.157732] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
> [    2.166577] Freeing unused kernel memory: 192K
> [    2.171198] This architecture does not have kernel memory protection.
> [    2.222747] random: fast init done
> [    2.801287] init: Console is alive
> [    2.805341] init: - watchdog -
> [    4.398742] kmodloader: loading kernel modules from /etc/modules-boot.d/*
> [    4.503592] pps_core: LinuxPPS API ver. 1 registered
> [    4.508765] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti at linux.it>
> [    4.520746] PTP clock support registered
> [    4.539352] usbcore: registered new interface driver usbfs
> [    4.545216] usbcore: registered new interface driver hub
> [    4.550831] usbcore: registered new device driver usb
> [    4.601021] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
> [    4.619344] SCSI subsystem initialized
> [    4.629311] ehci-platform: EHCI generic platform driver
> [    4.634930] ehci-platform ehci-platform: EHCI Host Controller
> [    4.640930] ehci-platform ehci-platform: new USB bus registered, assigned bus number 1
> [    4.651277] ehci-platform ehci-platform: TX-TX IDP fix enabled
> [    4.657375] ehci-platform ehci-platform: irq 3, io mem 0x1b000000
> [    4.692628] ehci-platform ehci-platform: USB 2.0 started, EHCI 1.00
> [    4.700192] hub 1-0:1.0: USB hub found
> [    4.704694] hub 1-0:1.0: 1 port detected
> [    4.712842] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
> [    4.721330] ohci-platform: OHCI generic platform driver
> [    4.731987] usbcore: registered new interface driver usb-storage
> [    4.739204] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
> [    4.748836] init: - preinit -
> [    5.693581] random: procd: uninitialized urandom read (4 bytes read)
> [    8.999696] UBIFS (ubi0:2): background thread "ubifs_bgt0_2" started, PID 414
> [    9.079637] UBIFS (ubi0:2): recovery needed
> [    9.288215] UBIFS (ubi0:2): recovery completed
> [    9.293019] UBIFS (ubi0:2): UBIFS: mounted UBI device 0, volume 2, name "rootfs_data"
> [    9.301125] UBIFS (ubi0:2): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
> [    9.311411] UBIFS (ubi0:2): FS size: 112119808 bytes (106 MiB, 883 LEBs), journal size 5586944 bytes (5 MiB, 44 LEBs)
> [    9.322390] UBIFS (ubi0:2): reserved for root: 4952683 bytes (4836 KiB)
> [    9.329257] UBIFS (ubi0:2): media format: w4/r0 (latest is w5/r0), UUID 59343AFB-A817-4008-9763-7DB6089EDA1E, small LPT model
> [    9.347176] mount_root: switching to ubifs overlay
> [    9.411282] urandom-seed: Seeding with /etc/urandom.seed
> [    9.526186] procd: - early -
> [    9.529540] procd: - watchdog -
> [   10.213116] procd: - watchdog -
> [   10.216821] procd: - ubus -
> [   10.290157] random: ubusd: uninitialized urandom read (4 bytes read)
> [   10.383267] random: ubusd: uninitialized urandom read (4 bytes read)
> [   10.390622] random: ubusd: uninitialized urandom read (4 bytes read)
> [   10.398604] procd: - init -
> [   10.978656] kmodloader: loading kernel modules from /etc/modules.d/*
> [   11.004733] tun: Universal TUN/TAP device driver, 1.6
> [   11.027742] ip6_tables: (C) 2000-2006 Netfilter Core Team
> [   11.066495] i2c /dev entries driver
> [   11.081314] usbcore: registered new interface driver cdc_acm
> [   11.087261] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
> [   11.168531] usbcore: registered new interface driver cdc_wdm
> [   11.176324] Loading modules backported from Linux version v4.19-rc5-0-g6bf4ca7fbc85
> [   11.184333] Backport generated by backports.git v4.19-rc5-1-0-g05571dcd
> [   11.196096] hso: drivers/net/usb/hso.c: Option Wireless
> [   11.201724] usbcore: registered new interface driver hso
> [   11.210318] ip_tables: (C) 2000-2006 Netfilter Core Team
> [   11.243070] nf_conntrack version 0.5.0 (1024 buckets, 4096 max)
> [   11.471166] usbcore: registered new interface driver usbserial
> [   11.477428] usbcore: registered new interface driver usbserial_generic
> [   11.484344] usbserial: USB Serial support registered for generic
> [   11.518230] xt_time: kernel timezone is -0000
> [   11.542024] usbcore: registered new interface driver cdc_ether
> [   11.573532] usbcore: registered new interface driver cdc_ncm
> [   11.589497] usbcore: registered new interface driver cdc_subset
> [   11.654112] usbcore: registered new interface driver ftdi_sio
> [   11.660187] usbserial: USB Serial support registered for FTDI USB Serial Device
> [   11.670665] usbcore: registered new interface driver huawei_cdc_ncm
> [   11.726903] PPP generic driver version 2.4.2
> [   11.734784] NET: Registered protocol family 24
> [   11.742962] usbcore: registered new interface driver qmi_wwan
> [   11.752695] usbcore: registered new interface driver rndis_host
> [   11.762173] usbcore: registered new interface driver sierra
> [   11.768165] usbserial: USB Serial support registered for Sierra USB modem
> [   11.778825] usbcore: registered new interface driver sierra_net
> [   11.862517] usbcore: registered new interface driver cdc_mbim
> [   11.872175] usbcore: registered new interface driver option
> [   11.878164] usbserial: USB Serial support registered for GSM modem (1-port)
> [   11.892644] usbcore: registered new interface driver qcserial
> [   11.898744] usbserial: USB Serial support registered for Qualcomm USB modem
> [   11.929835] ath: EEPROM regdomain: 0x0
> [   11.929847] ath: EEPROM indicates default country code should be used
> [   11.929851] ath: doing EEPROM country->regdmn map search
> [   11.929868] ath: country maps to regdmn code: 0x3a
> [   11.929875] ath: Country alpha2 being used: US
> [   11.929879] ath: Regpair used: 0x3a
> [   11.946275] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
> [   11.948684] ieee80211 phy0: Atheros AR9340 Rev:3 mem=0xb8100000, irq=47
> [   12.045365] kmodloader: done loading kernel modules from /etc/modules.d/*
> [   13.203294] urandom_read: 5 callbacks suppressed
> [   13.203304] random: jshn: uninitialized urandom read (4 bytes read)
> [   19.804524] IPv6: ADDRCONF(NETDEV_UP): lo: link is not ready
> [   19.913791] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
> [   19.933337] br-wan: port 1(eth0) entered blocking state
> [   19.938798] br-wan: port 1(eth0) entered disabled state
> [   19.944620] device eth0 entered promiscuous mode
> [   21.624220] MBT: Init start
> [   21.627160] MBT: Init succesfull
> [   21.646179] MBT: Init netlink interface - OK!
> [   22.034176] eth0: link up (1000Mbps/Full duplex)
> [   22.042923] br-wan: port 1(eth0) entered blocking state
> [   22.048382] br-wan: port 1(eth0) entered forwarding state
> [   29.726228] random: crng init done
> [   40.271108] A link change request failed with some changes committed already. Interface wlan0 may have been left with an inconsistent configuration, please check.
> [   44.128368] wlan0: Trigger new scan to find an IBSS to join
> [   44.516645] ath: phy0: rx sample 391520 [h 0-t 1]
> [   44.516697] ath: phy0: {00:00:00:00:00:00} tx sample 391328 [dur 128][h 0-t 1]
> [   44.516708] ath: phy0: ack_ts 391520 st_ts 391328 st_dur 128 [0-0]
> [   48.423479] wlan0: Trigger new scan to find an IBSS to join
> [   50.372160] wlan0: Creating new IBSS network, BSSID c8:a9:46:87:7d:ad
> [   50.789341] ath: phy0: rx sample 408340 [h 1-t 2]
> [   50.791421] ath: phy0: rx sample 410233 [h 1-t 3]
> [   50.792680] ath: phy0: rx sample 411616 [h 1-t 4]
> [   50.796669] ath: phy0: rx sample 415666 [h 1-t 5]
> [   50.799572] ath: phy0: rx sample 418618 [h 1-t 6]
> [   50.802116] ath: phy0: rx sample 421162 [h 1-t 7]
> [   50.804524] ath: phy0: rx sample 423535 [h 1-t 8]
> [   50.839527] ath: phy0: rx sample 458558 [h 1-t 9]
> [   50.882541] ath: phy0: rx sample 501576 [h 1-t 10]
> [   50.919907] ath: phy0: late ack
> [   50.920414] ath: phy0: rx sample 539677 [h 1-t 11]
> [   50.920459] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 539247 [dur 208][h 1-t 2]
> [   50.920469] ath: phy0: ack_ts 408340 st_ts 539247 st_dur 208 [1-1]
> [   50.920479] ath: phy0: ack_ts 410233 st_ts 539247 st_dur 208 [2-1]
> [   50.920488] ath: phy0: ack_ts 411616 st_ts 539247 st_dur 208 [3-1]
> [   50.920497] ath: phy0: ack_ts 415666 st_ts 539247 st_dur 208 [4-1]
> [   50.920506] ath: phy0: ack_ts 418618 st_ts 539247 st_dur 208 [5-1]
> [   50.920515] ath: phy0: ack_ts 421162 st_ts 539247 st_dur 208 [6-1]
> [   50.920524] ath: phy0: ack_ts 423535 st_ts 539247 st_dur 208 [7-1]
> [   50.920533] ath: phy0: ack_ts 458558 st_ts 539247 st_dur 208 [8-1]
> [   50.920542] ath: phy0: ack_ts 501576 st_ts 539247 st_dur 208 [9-1]
> [   50.920551] ath: phy0: ack_ts 539677 st_ts 539247 st_dur 208 [10-1]
> [   50.920560] ath: phy0: cc:2d:e0:31:b0:d3 to 222 [222]
> [   50.924389] ath: phy0: rx sample 543632 [h 11-t 12]
> [   50.924437] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 543173 [dur 236][h 2-t 3]
> [   50.924448] ath: phy0: ack_ts 543632 st_ts 543173 st_dur 236 [11-2]
> [   50.924458] ath: phy0: cc:2d:e0:31:b0:d3 to 222 [223]
> [   50.927976] ath: phy0: rx sample 547216 [h 12-t 13]
> [   50.928026] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 546710 [dur 284][h 3-t 4]
> [   50.928037] ath: phy0: ack_ts 547216 st_ts 546710 st_dur 284 [12-3]
> [   50.928046] ath: phy0: cc:2d:e0:31:b0:d3 to 222 [222]
> [   50.937989] ath: phy0: rx sample 557270 [h 13-t 14]
> [   50.938037] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 556840 [dur 208][h 4-t 5]
> [   50.938048] ath: phy0: ack_ts 557270 st_ts 556840 st_dur 208 [13-4]
> [   50.938058] ath: phy0: cc:2d:e0:31:b0:d3 to 222 [222]
> [   52.784891] ath: phy0: rx sample 2403926 [h 14-t 15]
> [   52.786117] ath: phy0: rx sample 2405161 [h 14-t 16]
> [   52.791864] ath: phy0: rx sample 2410909 [h 14-t 17]
> [   52.794593] ath: phy0: rx sample 2413631 [h 14-t 18]
> [   52.795444] ath: phy0: rx sample 2414488 [h 14-t 19]
> [   52.797103] ath: phy0: rx sample 2416161 [h 14-t 20]
> [   52.801978] ath: phy0: rx sample 2421013 [h 14-t 21]
> [   52.802559] ath: phy0: rx sample 2421616 [h 14-t 22]
> [   54.449928] ath: phy0: rx sample 4068963 [h 14-t 23]
> [   55.566383] ath: phy0: rx sample 5185425 [h 14-t 24]
> [   55.596393] ath: phy0: rx sample 5215435 [h 14-t 25]
> [   60.816604] ath: phy0: rx sample 10435639 [h 14-t 26]
> [   63.204060] ath: phy0: rx sample 12823091 [h 14-t 27]
> [   66.507844] ath: phy0: rx sample 16126841 [h 14-t 28]
> [   66.512195] ath: phy0: rx sample 16131201 [h 14-t 29]
> [   66.516185] ath: phy0: rx sample 16135187 [h 14-t 30]
> [   66.517939] ath: phy0: rx sample 16136932 [h 14-t 31]
> [   66.522456] ath: phy0: rx sample 16141449 [h 14-t 32]
> [   66.526858] ath: phy0: rx sample 16145854 [h 14-t 33]
> [   66.528099] ath: phy0: rx sample 16147088 [h 14-t 34]
> [   66.530736] ath: phy0: rx sample 16149701 [h 14-t 35]
> [   66.531305] ath: phy0: rx sample 16150305 [h 14-t 36]
> [   66.534666] ath: phy0: rx sample 16153664 [h 14-t 37]
> [   66.538697] ath: phy0: rx sample 16157689 [h 14-t 38]
> [   66.542037] ath: phy0: rx sample 16161037 [h 14-t 39]
> [   74.520276] ath: phy0: rx sample 24139299 [h 14-t 40]
> [   75.637229] ath: phy0: rx sample 25256254 [h 14-t 41]
> [   75.727292] ath: phy0: rx sample 25346317 [h 14-t 42]
> [   75.730123] ath: phy0: rx sample 25349145 [h 14-t 43]
> [   75.733199] ath: phy0: rx sample 25352188 [h 14-t 44]
> [   75.737182] ath: phy0: rx sample 25356189 [h 14-t 45]
> [   75.740971] ath: phy0: rx sample 25359996 [h 14-t 46]
> [   75.744017] ath: phy0: rx sample 25363006 [h 14-t 47]
> [   75.744747] ath: phy0: rx sample 25363735 [h 14-t 48]
> [   75.749049] ath: phy0: rx sample 25368072 [h 14-t 49]
> [   75.750409] ath: phy0: rx sample 25369432 [h 14-t 50]
> [   75.755725] ath: phy0: rx sample 25374732 [h 14-t 51]
> [   75.759910] ath: phy0: rx sample 25378937 [h 14-t 52]
> [   75.764862] ath: phy0: rx sample 25383848 [h 14-t 53]
> [   75.767772] ath: phy0: rx sample 25386794 [h 14-t 54]
> [   76.058529] ath: phy0: rx sample 25677550 [h 14-t 55]
> [   81.176305] ath: phy0: rx sample 30795325 [h 14-t 56]
> [   82.585447] ath: phy0: rx sample 32204470 [h 14-t 57]
> [   82.591184] ath: phy0: rx sample 32210210 [h 14-t 58]
> [   82.594591] ath: phy0: rx sample 32213571 [h 14-t 59]
> [   82.601199] ath: phy0: rx sample 32220218 [h 14-t 60]
> [   82.604095] ath: phy0: rx sample 32223084 [h 14-t 61]
> [   82.604707] ath: phy0: rx sample 32223687 [h 14-t 62]
> [   82.607003] ath: phy0: rx sample 32226021 [h 14-t 63]
> [   82.614782] ath: phy0: rx sample 32233763 [h 14-t 0]
> [   82.615634] ath: phy0: rx sample 32234619 [h 14-t 1]
> [   82.620033] ath: phy0: rx sample 32239057 [h 14-t 2]
> [   82.623677] ath: phy0: rx sample 32242663 [h 14-t 3]
> [   82.626762] ath: phy0: rx sample 32245780 [h 14-t 4]
> [   82.628103] ath: phy0: rx sample 32247140 [h 14-t 5]
> [   82.628958] ath: phy0: rx sample 32247997 [h 14-t 6]
> [   82.632193] ath: phy0: rx sample 32251104 [h 14-t 7]
> [   83.032341] ath: phy0: rx sample 32651357 [h 14-t 8]
> [   83.972813] ath: phy0: rx sample 33591831 [h 14-t 9]
> [   83.998261] ath: phy0: rx sample 33617278 [h 14-t 10]
> [   88.017288] ath: phy0: rx sample 37636309 [h 14-t 11]
> [   88.046704] ath: phy0: rx sample 37665725 [h 14-t 12]
> [   88.976259] ath: phy0: rx sample 38595482 [h 14-t 13]
> [   88.976307] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 38595193 [dur 72][h 5-t 6]
> [   88.976317] ath: phy0: ack_ts 2403926 st_ts 38595193 st_dur 72 [14-5]
> [   88.976327] ath: phy0: ack_ts 2405161 st_ts 38595193 st_dur 72 [15-5]
> [   88.976336] ath: phy0: ack_ts 2410909 st_ts 38595193 st_dur 72 [16-5]
> [   88.976346] ath: phy0: ack_ts 2413631 st_ts 38595193 st_dur 72 [17-5]
> [   88.976355] ath: phy0: ack_ts 2414488 st_ts 38595193 st_dur 72 [18-5]
> [   88.976364] ath: phy0: ack_ts 2416161 st_ts 38595193 st_dur 72 [19-5]
> [   88.976374] ath: phy0: ack_ts 2421013 st_ts 38595193 st_dur 72 [20-5]
> [   88.976383] ath: phy0: ack_ts 2421616 st_ts 38595193 st_dur 72 [21-5]
> [   88.976392] ath: phy0: ack_ts 4068963 st_ts 38595193 st_dur 72 [22-5]
> [   88.976401] ath: phy0: ack_ts 5185425 st_ts 38595193 st_dur 72 [23-5]
> [   88.976411] ath: phy0: ack_ts 5215435 st_ts 38595193 st_dur 72 [24-5]
> [   88.976420] ath: phy0: ack_ts 10435639 st_ts 38595193 st_dur 72 [25-5]
> [   88.976429] ath: phy0: ack_ts 12823091 st_ts 38595193 st_dur 72 [26-5]
> [   88.976438] ath: phy0: ack_ts 16126841 st_ts 38595193 st_dur 72 [27-5]
> [   88.976448] ath: phy0: ack_ts 16131201 st_ts 38595193 st_dur 72 [28-5]
> [   88.976457] ath: phy0: ack_ts 16135187 st_ts 38595193 st_dur 72 [29-5]
> [   88.976466] ath: phy0: ack_ts 16136932 st_ts 38595193 st_dur 72 [30-5]
> [   88.976475] ath: phy0: ack_ts 16141449 st_ts 38595193 st_dur 72 [31-5]
> [   88.976484] ath: phy0: ack_ts 16145854 st_ts 38595193 st_dur 72 [32-5]
> [   88.976493] ath: phy0: ack_ts 16147088 st_ts 38595193 st_dur 72 [33-5]
> [   88.976503] ath: phy0: ack_ts 16149701 st_ts 38595193 st_dur 72 [34-5]
> [   88.976512] ath: phy0: ack_ts 16150305 st_ts 38595193 st_dur 72 [35-5]
> [   88.976521] ath: phy0: ack_ts 16153664 st_ts 38595193 st_dur 72 [36-5]
> [   88.976530] ath: phy0: ack_ts 16157689 st_ts 38595193 st_dur 72 [37-5]
> [   88.976539] ath: phy0: ack_ts 16161037 st_ts 38595193 st_dur 72 [38-5]
> [   88.976549] ath: phy0: ack_ts 24139299 st_ts 38595193 st_dur 72 [39-5]
> [   88.976558] ath: phy0: ack_ts 25256254 st_ts 38595193 st_dur 72 [40-5]
> [   88.976567] ath: phy0: ack_ts 25346317 st_ts 38595193 st_dur 72 [41-5]
> [   88.976576] ath: phy0: ack_ts 25349145 st_ts 38595193 st_dur 72 [42-5]
> [   88.976585] ath: phy0: ack_ts 25352188 st_ts 38595193 st_dur 72 [43-5]
> [   88.976594] ath: phy0: ack_ts 25356189 st_ts 38595193 st_dur 72 [44-5]
> [   88.976604] ath: phy0: ack_ts 25359996 st_ts 38595193 st_dur 72 [45-5]
> [   88.976613] ath: phy0: ack_ts 25363006 st_ts 38595193 st_dur 72 [46-5]
> [   88.976622] ath: phy0: ack_ts 25363735 st_ts 38595193 st_dur 72 [47-5]
> [   88.976631] ath: phy0: ack_ts 25368072 st_ts 38595193 st_dur 72 [48-5]
> [   88.976640] ath: phy0: ack_ts 25369432 st_ts 38595193 st_dur 72 [49-5]
> [   88.976650] ath: phy0: ack_ts 25374732 st_ts 38595193 st_dur 72 [50-5]
> [   88.976659] ath: phy0: ack_ts 25378937 st_ts 38595193 st_dur 72 [51-5]
> [   88.976668] ath: phy0: ack_ts 25383848 st_ts 38595193 st_dur 72 [52-5]
> [   88.976677] ath: phy0: ack_ts 25386794 st_ts 38595193 st_dur 72 [53-5]
> [   88.976686] ath: phy0: ack_ts 25677550 st_ts 38595193 st_dur 72 [54-5]
> [   88.976695] ath: phy0: ack_ts 30795325 st_ts 38595193 st_dur 72 [55-5]
> [   88.976704] ath: phy0: ack_ts 32204470 st_ts 38595193 st_dur 72 [56-5]
> [   88.976714] ath: phy0: ack_ts 32210210 st_ts 38595193 st_dur 72 [57-5]
> [   88.976723] ath: phy0: ack_ts 32213571 st_ts 38595193 st_dur 72 [58-5]
> [   88.976732] ath: phy0: ack_ts 32220218 st_ts 38595193 st_dur 72 [59-5]
> [   88.976741] ath: phy0: ack_ts 32223084 st_ts 38595193 st_dur 72 [60-5]
> [   88.976750] ath: phy0: ack_ts 32223687 st_ts 38595193 st_dur 72 [61-5]
> [   88.976759] ath: phy0: ack_ts 32226021 st_ts 38595193 st_dur 72 [62-5]
> [   88.976768] ath: phy0: ack_ts 32233763 st_ts 38595193 st_dur 72 [63-5]
> [   88.976778] ath: phy0: ack_ts 32234619 st_ts 38595193 st_dur 72 [0-5]
> [   88.976787] ath: phy0: ack_ts 32239057 st_ts 38595193 st_dur 72 [1-5]
> [   88.976796] ath: phy0: ack_ts 32242663 st_ts 38595193 st_dur 72 [2-5]
> [   88.976805] ath: phy0: ack_ts 32245780 st_ts 38595193 st_dur 72 [3-5]
> [   88.976814] ath: phy0: ack_ts 32247140 st_ts 38595193 st_dur 72 [4-5]
> [   88.976823] ath: phy0: ack_ts 32247997 st_ts 38595193 st_dur 72 [5-5]
> [   88.976832] ath: phy0: ack_ts 32251104 st_ts 38595193 st_dur 72 [6-5]
> [   88.976841] ath: phy0: ack_ts 32651357 st_ts 38595193 st_dur 72 [7-5]
> [   88.976850] ath: phy0: ack_ts 33591831 st_ts 38595193 st_dur 72 [8-5]
> [   88.976859] ath: phy0: ack_ts 33617278 st_ts 38595193 st_dur 72 [9-5]
> [   88.976868] ath: phy0: ack_ts 37636309 st_ts 38595193 st_dur 72 [10-5]
> [   88.976878] ath: phy0: ack_ts 37665725 st_ts 38595193 st_dur 72 [11-5]
> [   88.976887] ath: phy0: ack_ts 38595482 st_ts 38595193 st_dur 72 [12-5]
> [   88.976896] ath: phy0: cc:2d:e0:31:b0:d3 to 220 [217]
> [   88.976904] ath: phy0: ACK timeout 220 slottime 108
> [   88.977714] ath: phy0: rx sample 38596972 [h 13-t 14]
> [   88.977753] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 38596674 [dur 76][h 6-t 7]
> [   88.977763] ath: phy0: ack_ts 38596972 st_ts 38596674 st_dur 76 [13-6]
> [   88.977773] ath: phy0: cc:2d:e0:31:b0:d3 to 220 [222]
> [   88.983749] ath: phy0: rx sample 38602990 [h 14-t 15]
> [   88.983800] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 38602692 [dur 76][h 7-t 8]
> [   88.983811] ath: phy0: ack_ts 38602990 st_ts 38602692 st_dur 76 [14-7]
> [   88.983820] ath: phy0: cc:2d:e0:31:b0:d3 to 220 [222]
> [   89.021490] ath: phy0: rx sample 38640730 [h 15-t 16]
> [   89.021548] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 38640404 [dur 100][h 8-t 9]
> [   89.021559] ath: phy0: ack_ts 38640730 st_ts 38640404 st_dur 100 [15-8]
> [   89.021569] ath: phy0: cc:2d:e0:31:b0:d3 to 221 [226]
> [   89.447511] ath: phy0: rx sample 39066531 [h 16-t 17]
> [   89.449392] ath: phy0: rx sample 39068413 [h 16-t 18]
> [   89.452677] ath: phy0: rx sample 39071706 [h 16-t 19]
> [   89.457452] ath: phy0: rx sample 39076470 [h 16-t 20]
> [   89.460240] ath: phy0: rx sample 39079258 [h 16-t 21]
> [   89.461675] ath: phy0: rx sample 39080698 [h 16-t 22]
> [   89.466687] ath: phy0: rx sample 39085704 [h 16-t 23]
> [   89.467238] ath: phy0: rx sample 39086272 [h 16-t 24]
> [   89.470755] ath: phy0: rx sample 39089774 [h 16-t 25]
> [   89.475792] ath: phy0: rx sample 39094770 [h 16-t 26]
> [   89.486048] ath: phy0: rx sample 39105065 [h 16-t 27]
> [   89.488884] ath: phy0: rx sample 39107906 [h 16-t 28]
> [   89.491802] ath: phy0: rx sample 39110729 [h 16-t 29]
> [   89.495698] ath: phy0: rx sample 39114686 [h 16-t 30]
> [   89.830750] ath: phy0: rx sample 39449983 [h 16-t 31]
> [   89.830801] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 39449508 [dur 256][h 9-t 10]
> [   89.830812] ath: phy0: ack_ts 39066531 st_ts 39449508 st_dur 256 [16-9]
> [   89.830821] ath: phy0: ack_ts 39068413 st_ts 39449508 st_dur 256 [17-9]
> [   89.830831] ath: phy0: ack_ts 39071706 st_ts 39449508 st_dur 256 [18-9]
> [   89.830841] ath: phy0: ack_ts 39076470 st_ts 39449508 st_dur 256 [19-9]
> [   89.830850] ath: phy0: ack_ts 39079258 st_ts 39449508 st_dur 256 [20-9]
> [   89.830859] ath: phy0: ack_ts 39080698 st_ts 39449508 st_dur 256 [21-9]
> [   89.830869] ath: phy0: ack_ts 39085704 st_ts 39449508 st_dur 256 [22-9]
> [   89.830878] ath: phy0: ack_ts 39086272 st_ts 39449508 st_dur 256 [23-9]
> [   89.830887] ath: phy0: ack_ts 39089774 st_ts 39449508 st_dur 256 [24-9]
> [   89.830897] ath: phy0: ack_ts 39094770 st_ts 39449508 st_dur 256 [25-9]
> [   89.830906] ath: phy0: ack_ts 39105065 st_ts 39449508 st_dur 256 [26-9]
> [   89.830915] ath: phy0: ack_ts 39107906 st_ts 39449508 st_dur 256 [27-9]
> [   89.830925] ath: phy0: ack_ts 39110729 st_ts 39449508 st_dur 256 [28-9]
> [   89.830934] ath: phy0: ack_ts 39114686 st_ts 39449508 st_dur 256 [29-9]
> [   89.830943] ath: phy0: ack_ts 39449983 st_ts 39449508 st_dur 256 [30-9]
> [   89.830953] ath: phy0: cc:2d:e0:31:b0:d3 to 220 [219]
> [   89.832205] ath: phy0: rx sample 39451483 [h 31-t 32]
> [   89.832232] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 39451185 [dur 76][h 10-t 11]
> [   89.832242] ath: phy0: ack_ts 39451483 st_ts 39451185 st_dur 76 [31-10]
> [   89.832251] ath: phy0: cc:2d:e0:31:b0:d3 to 220 [222]
> [   89.876478] ath: phy0: rx sample 39495749 [h 32-t 33]
> [   89.876524] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 39495362 [dur 164][h 11-t 12]
> [   89.876535] ath: phy0: ack_ts 39495749 st_ts 39495362 st_dur 164 [32-11]
> [   89.876545] ath: phy0: cc:2d:e0:31:b0:d3 to 220 [223]
> [   89.877512] ath: phy0: rx sample 39496739 [h 33-t 34]
> [   89.877565] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 39496458 [dur 68][h 12-t 13]
> [   89.877576] ath: phy0: ack_ts 39496739 st_ts 39496458 st_dur 68 [33-12]
> [   89.877585] ath: phy0: cc:2d:e0:31:b0:d3 to 218 [213]
> [   89.880676] ath: phy0: rx sample 39499935 [h 34-t 35]
> [   89.880727] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 39499597 [dur 120][h 13-t 14]
> [   89.880738] ath: phy0: ack_ts 39499935 st_ts 39499597 st_dur 120 [34-13]
> [   89.880748] ath: phy0: cc:2d:e0:31:b0:d3 to 218 [218]
> [   90.033210] ath: phy0: rx sample 39652445 [h 35-t 36]
> [   90.033271] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 39652139 [dur 88][h 14-t 15]
> [   90.033282] ath: phy0: ack_ts 39652445 st_ts 39652139 st_dur 88 [35-14]
> [   90.033292] ath: phy0: cc:2d:e0:31:b0:d3 to 218 [218]
> [   90.038724] ath: phy0: rx sample 39657947 [h 36-t 37]
> [   90.038776] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 39657675 [dur 60][h 15-t 16]
> [   90.038786] ath: phy0: ack_ts 39657947 st_ts 39657675 st_dur 60 [36-15]
> [   90.038796] ath: phy0: cc:2d:e0:31:b0:d3 to 216 [212]
> [   90.654800] ath: phy0: rx sample 40274031 [h 37-t 38]
> [   90.654855] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 40273767 [dur 52][h 16-t 17]
> [   90.654866] ath: phy0: ack_ts 40274031 st_ts 40273767 st_dur 52 [37-16]
> [   90.654876] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [212]
> [   91.499790] ath: phy0: rx sample 41119043 [h 38-t 39]
> [   91.499843] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 41118769 [dur 60][h 17-t 18]
> [   91.499854] ath: phy0: ack_ts 41119043 st_ts 41118769 st_dur 60 [38-17]
> [   91.499864] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   91.621280] ath: phy0: rx sample 41240524 [h 39-t 40]
> [   91.621328] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 41240258 [dur 52][h 18-t 19]
> [   91.621338] ath: phy0: ack_ts 41240524 st_ts 41240258 st_dur 52 [39-18]
> [   91.621348] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   92.265864] ath: phy0: rx sample 41885108 [h 40-t 41]
> [   92.265920] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 41884769 [dur 124][h 19-t 20]
> [   92.265931] ath: phy0: ack_ts 41885108 st_ts 41884769 st_dur 124 [40-19]
> [   92.265941] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [215]
> [   92.769127] ath: phy0: rx sample 42388375 [h 41-t 42]
> [   92.769177] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 42388107 [dur 52][h 20-t 21]
> [   92.769187] ath: phy0: ack_ts 42388375 st_ts 42388107 st_dur 52 [41-20]
> [   92.769198] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [216]
> [   93.366218] ath: phy0: rx sample 42985235 [h 42-t 43]
> [   94.033400] ath: phy0: rx sample 43652641 [h 42-t 44]
> [   94.033451] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 43652375 [dur 52][h 21-t 22]
> [   94.033461] ath: phy0: ack_ts 42985235 st_ts 43652375 st_dur 52 [42-21]
> [   94.033471] ath: phy0: ack_ts 43652641 st_ts 43652375 st_dur 52 [43-21]
> [   94.033481] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   94.033489] ath: phy0: ACK timeout 214 slottime 105
> [   94.084918] ath: phy0: rx sample 43704154 [h 44-t 45]
> [   94.084971] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 43703881 [dur 56][h 22-t 23]
> [   94.084982] ath: phy0: ack_ts 43704154 st_ts 43703881 st_dur 56 [44-22]
> [   94.084992] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   95.002488] ath: phy0: rx sample 44621502 [h 45-t 46]
> [   95.049866] ath: phy0: rx sample 44669108 [h 45-t 47]
> [   95.049919] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44668834 [dur 60][h 23-t 24]
> [   95.049930] ath: phy0: ack_ts 44621502 st_ts 44668834 st_dur 60 [45-23]
> [   95.049940] ath: phy0: ack_ts 44669108 st_ts 44668834 st_dur 60 [46-23]
> [   95.049949] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   95.056423] ath: phy0: rx sample 44675647 [h 47-t 48]
> [   95.056479] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44675375 [dur 56][h 24-t 25]
> [   95.056490] ath: phy0: ack_ts 44675647 st_ts 44675375 st_dur 56 [47-24]
> [   95.056500] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [216]
> [   95.057495] ath: phy0: rx sample 44676772 [h 48-t 49]
> [   95.057523] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44676502 [dur 56][h 25-t 26]
> [   95.057533] ath: phy0: ack_ts 44676772 st_ts 44676502 st_dur 56 [48-25]
> [   95.057541] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   95.062759] ath: phy0: rx sample 44681987 [h 49-t 50]
> [   95.062814] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44681713 [dur 60][h 26-t 27]
> [   95.062825] ath: phy0: ack_ts 44681987 st_ts 44681713 st_dur 60 [49-26]
> [   95.062835] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   95.138869] ath: phy0: rx sample 44758104 [h 50-t 51]
> [   95.138923] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44757831 [dur 56][h 27-t 28]
> [   95.138934] ath: phy0: ack_ts 44758104 st_ts 44757831 st_dur 56 [50-27]
> [   95.138944] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   95.147388] ath: phy0: rx sample 44766617 [h 51-t 52]
> [   95.147443] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44766347 [dur 56][h 28-t 29]
> [   95.147453] ath: phy0: ack_ts 44766617 st_ts 44766347 st_dur 56 [51-28]
> [   95.147463] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   95.148712] ath: phy0: rx sample 44767958 [h 52-t 53]
> [   95.148758] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44767667 [dur 76][h 29-t 30]
> [   95.148769] ath: phy0: ack_ts 44767958 st_ts 44767667 st_dur 76 [52-29]
> [   95.148778] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [215]
> [   95.152652] ath: phy0: rx sample 44771919 [h 53-t 54]
> [   95.152701] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44771445 [dur 256][h 30-t 31]
> [   95.152712] ath: phy0: ack_ts 44771919 st_ts 44771445 st_dur 256 [53-30]
> [   95.152722] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [218]
> [   95.159647] ath: phy0: rx sample 44778913 [h 54-t 55]
> [   95.159695] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44778471 [dur 224][h 31-t 32]
> [   95.159705] ath: phy0: ack_ts 44778913 st_ts 44778471 st_dur 224 [54-31]
> [   95.159716] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [218]
> [   95.168783] ath: phy0: rx sample 44788010 [h 55-t 56]
> [   95.168842] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44787721 [dur 72][h 32-t 33]
> [   95.168853] ath: phy0: ack_ts 44788010 st_ts 44787721 st_dur 72 [55-32]
> [   95.168863] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [217]
> [   95.176800] ath: phy0: rx sample 44796018 [h 56-t 57]
> [   95.176853] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44795727 [dur 72][h 33-t 34]
> [   95.176864] ath: phy0: ack_ts 44796018 st_ts 44795727 st_dur 72 [56-33]
> [   95.176874] ath: phy0: cc:2d:e0:31:b0:d3 to 216 [219]
> [   95.185257] ath: phy0: rx sample 44804469 [h 57-t 58]
> [   95.185314] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44804163 [dur 92][h 34-t 35]
> [   95.185325] ath: phy0: ack_ts 44804469 st_ts 44804163 st_dur 92 [57-34]
> [   95.185335] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [214]
> [   95.194906] ath: phy0: rx sample 44814135 [h 58-t 59]
> [   95.194962] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44813846 [dur 72][h 35-t 36]
> [   95.194973] ath: phy0: ack_ts 44814135 st_ts 44813846 st_dur 72 [58-35]
> [   95.194983] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [217]
> [   95.211726] ath: phy0: rx sample 44830990 [h 59-t 60]
> [   95.211774] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44830700 [dur 72][h 36-t 37]
> [   95.211784] ath: phy0: ack_ts 44830990 st_ts 44830700 st_dur 72 [59-36]
> [   95.211794] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [218]
> [   95.219926] ath: phy0: rx sample 44839154 [h 60-t 61]
> [   95.219981] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44838847 [dur 92][h 37-t 38]
> [   95.219991] ath: phy0: ack_ts 44839154 st_ts 44838847 st_dur 92 [60-37]
> [   95.220001] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [215]
> [   95.227758] ath: phy0: rx sample 44846993 [h 61-t 62]
> [   95.227812] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44846702 [dur 72][h 38-t 39]
> [   95.227823] ath: phy0: ack_ts 44846993 st_ts 44846702 st_dur 72 [61-38]
> [   95.227834] ath: phy0: cc:2d:e0:31:b0:d3 to 216 [219]
> [   95.235414] ath: phy0: rx sample 44854635 [h 62-t 63]
> [   95.235474] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44854343 [dur 72][h 39-t 40]
> [   95.235485] ath: phy0: ack_ts 44854635 st_ts 44854343 st_dur 72 [62-39]
> [   95.235495] ath: phy0: cc:2d:e0:31:b0:d3 to 217 [220]
> [   95.276302] ath: phy0: rx sample 44895563 [h 63-t 0]
> [   95.276351] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44895169 [dur 176][h 40-t 41]
> [   95.276362] ath: phy0: ack_ts 44895563 st_ts 44895169 st_dur 176 [63-40]
> [   95.276372] ath: phy0: cc:2d:e0:31:b0:d3 to 217 [218]
> [   95.287752] ath: phy0: rx sample 44906980 [h 0-t 1]
> [   95.287807] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44906691 [dur 72][h 41-t 42]
> [   95.287818] ath: phy0: ack_ts 44906980 st_ts 44906691 st_dur 72 [0-41]
> [   95.287828] ath: phy0: cc:2d:e0:31:b0:d3 to 217 [217]
> [   95.295564] ath: phy0: rx sample 44914783 [h 1-t 2]
> [   95.295621] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44914495 [dur 72][h 42-t 43]
> [   95.295632] ath: phy0: ack_ts 44914783 st_ts 44914495 st_dur 72 [1-42]
> [   95.295642] ath: phy0: cc:2d:e0:31:b0:d3 to 216 [216]
> [   95.307580] ath: phy0: rx sample 44926831 [h 2-t 3]
> [   95.307632] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44926526 [dur 92][h 43-t 44]
> [   95.307643] ath: phy0: ack_ts 44926831 st_ts 44926526 st_dur 92 [2-43]
> [   95.307654] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [213]
> [   95.315706] ath: phy0: rx sample 44934903 [h 3-t 4]
> [   95.315761] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44934614 [dur 72][h 44-t 45]
> [   95.315772] ath: phy0: ack_ts 44934903 st_ts 44934614 st_dur 72 [3-44]
> [   95.315782] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [217]
> [   95.326125] ath: phy0: rx sample 44945352 [h 4-t 5]
> [   95.326180] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44945063 [dur 72][h 45-t 46]
> [   95.326191] ath: phy0: ack_ts 44945352 st_ts 44945063 st_dur 72 [4-45]
> [   95.326202] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [217]
> [   95.335129] ath: phy0: rx sample 44954352 [h 5-t 6]
> [   95.335186] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44954063 [dur 72][h 46-t 47]
> [   95.335197] ath: phy0: ack_ts 44954352 st_ts 44954063 st_dur 72 [5-46]
> [   95.335208] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [217]
> [   95.364579] ath: phy0: rx sample 44983837 [h 6-t 7]
> [   95.364630] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 44983531 [dur 92][h 47-t 48]
> [   95.364641] ath: phy0: ack_ts 44983837 st_ts 44983531 st_dur 92 [6-47]
> [   95.364652] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   95.388435] ath: phy0: rx sample 45007666 [h 7-t 8]
> [   95.388491] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45007393 [dur 60][h 48-t 49]
> [   95.388502] ath: phy0: ack_ts 45007666 st_ts 45007393 st_dur 60 [7-48]
> [   95.388513] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [213]
> [   95.434909] ath: phy0: rx sample 45054149 [h 8-t 9]
> [   95.434961] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45053876 [dur 56][h 49-t 50]
> [   95.434972] ath: phy0: ack_ts 45054149 st_ts 45053876 st_dur 56 [8-49]
> [   95.434982] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   95.517045] ath: phy0: rx sample 45136304 [h 9-t 10]
> [   95.517110] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45136007 [dur 84][h 50-t 51]
> [   95.517121] ath: phy0: ack_ts 45136304 st_ts 45136007 st_dur 84 [9-50]
> [   95.517131] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [213]
> [   95.518906] ath: phy0: rx sample 45138165 [h 10-t 11]
> [   95.518946] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45137890 [dur 60][h 51-t 52]
> [   95.518956] ath: phy0: ack_ts 45138165 st_ts 45137890 st_dur 60 [10-51]
> [   95.518966] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [215]
> [   95.566021] ath: phy0: rx sample 45185270 [h 11-t 12]
> [   95.566073] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45184999 [dur 56][h 52-t 53]
> [   95.566084] ath: phy0: ack_ts 45185270 st_ts 45184999 st_dur 56 [11-52]
> [   95.566094] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [215]
> [   95.570852] ath: phy0: rx sample 45190096 [h 12-t 13]
> [   95.570904] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45189813 [dur 68][h 53-t 54]
> [   95.570915] ath: phy0: ack_ts 45190096 st_ts 45189813 st_dur 68 [12-53]
> [   95.570924] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [215]
> [   95.591378] ath: phy0: rx sample 45210610 [h 13-t 14]
> [   95.591432] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45210339 [dur 56][h 54-t 55]
> [   95.591444] ath: phy0: ack_ts 45210610 st_ts 45210339 st_dur 56 [13-54]
> [   95.591454] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [215]
> [   95.593238] ath: phy0: rx sample 45212488 [h 14-t 15]
> [   95.593292] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45212200 [dur 76][h 55-t 56]
> [   95.593303] ath: phy0: ack_ts 45212488 st_ts 45212200 st_dur 76 [14-55]
> [   95.593312] ath: phy0: cc:2d:e0:31:b0:d3 to 212 [212]
> [   95.605037] ath: phy0: rx sample 45224275 [h 15-t 16]
> [   95.605090] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45223975 [dur 84][h 56-t 57]
> [   95.605101] ath: phy0: ack_ts 45224275 st_ts 45223975 st_dur 84 [15-56]
> [   95.605111] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [216]
> [   95.650832] ath: phy0: rx sample 45270074 [h 16-t 17]
> [   95.650887] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45269802 [dur 56][h 57-t 58]
> [   95.650897] ath: phy0: ack_ts 45270074 st_ts 45269802 st_dur 56 [16-57]
> [   95.650907] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [216]
> [   95.659243] ath: phy0: rx sample 45278470 [h 17-t 18]
> [   95.659298] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45278198 [dur 56][h 58-t 59]
> [   95.659309] ath: phy0: ack_ts 45278470 st_ts 45278198 st_dur 56 [17-58]
> [   95.659319] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [216]
> [   95.684213] ath: phy0: rx sample 45303444 [h 18-t 19]
> [   95.684267] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 45303171 [dur 56][h 59-t 60]
> [   95.684277] ath: phy0: ack_ts 45303444 st_ts 45303171 st_dur 56 [18-59]
> [   95.684288] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   96.649967] ath: phy0: rx sample 46269197 [h 19-t 20]
> [   96.650021] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46268925 [dur 56][h 60-t 61]
> [   96.650032] ath: phy0: ack_ts 46269197 st_ts 46268925 st_dur 56 [19-60]
> [   96.650042] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [216]
> [   96.685314] ath: phy0: rx sample 46304551 [h 20-t 21]
> [   96.685368] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46304280 [dur 56][h 61-t 62]
> [   96.685379] ath: phy0: ack_ts 46304551 st_ts 46304280 st_dur 56 [20-61]
> [   96.685389] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [215]
> [   96.692339] ath: phy0: rx sample 46311625 [h 21-t 22]
> [   96.692364] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46311349 [dur 60][h 62-t 63]
> [   96.692374] ath: phy0: ack_ts 46311625 st_ts 46311349 st_dur 60 [21-62]
> [   96.692382] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [216]
> [   96.738839] ath: phy0: rx sample 46358068 [h 22-t 23]
> [   96.738893] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46357799 [dur 56][h 63-t 0]
> [   96.738904] ath: phy0: ack_ts 46358068 st_ts 46357799 st_dur 56 [22-63]
> [   96.738914] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [213]
> [   96.748968] ath: phy0: rx sample 46368195 [h 23-t 24]
> [   96.749021] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46367924 [dur 56][h 0-t 1]
> [   96.749032] ath: phy0: ack_ts 46368195 st_ts 46367924 st_dur 56 [23-0]
> [   96.749042] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [215]
> [   96.750799] ath: phy0: rx sample 46370035 [h 24-t 25]
> [   96.750845] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46369748 [dur 76][h 1-t 2]
> [   96.750856] ath: phy0: ack_ts 46370035 st_ts 46369748 st_dur 76 [24-1]
> [   96.750865] ath: phy0: cc:2d:e0:31:b0:d3 to 212 [211]
> [   96.764396] ath: phy0: rx sample 46383618 [h 25-t 26]
> [   96.764450] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46383296 [dur 108][h 2-t 3]
> [   96.764461] ath: phy0: ack_ts 46383618 st_ts 46383296 st_dur 108 [25-2]
> [   96.764470] ath: phy0: cc:2d:e0:31:b0:d3 to 212 [214]
> [   96.773219] ath: phy0: rx sample 46392455 [h 26-t 27]
> [   96.773280] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46392165 [dur 72][h 3-t 4]
> [   96.773291] ath: phy0: ack_ts 46392455 st_ts 46392165 st_dur 72 [26-3]
> [   96.773301] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [218]
> [   96.781215] ath: phy0: rx sample 46400454 [h 27-t 28]
> [   96.781268] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46400165 [dur 72][h 4-t 5]
> [   96.781279] ath: phy0: ack_ts 46400454 st_ts 46400165 st_dur 72 [27-4]
> [   96.781289] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   96.785395] ath: phy0: rx sample 46404610 [h 28-t 29]
> [   96.785453] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46404339 [dur 56][h 5-t 6]
> [   96.785463] ath: phy0: ack_ts 46404610 st_ts 46404339 st_dur 56 [28-5]
> [   96.785473] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [215]
> [   96.786003] ath: phy0: rx sample 46405233 [h 29-t 30]
> [   96.786052] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46404939 [dur 84][h 6-t 7]
> [   96.786062] ath: phy0: ack_ts 46405233 st_ts 46404939 st_dur 84 [29-6]
> [   96.786072] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [210]
> [   96.789760] ath: phy0: rx sample 46408989 [h 30-t 31]
> [   96.789814] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46408683 [dur 92][h 7-t 8]
> [   96.789825] ath: phy0: ack_ts 46408989 st_ts 46408683 st_dur 92 [30-7]
> [   96.789835] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [214]
> [   96.797408] ath: phy0: rx sample 46416626 [h 31-t 32]
> [   96.797466] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46416337 [dur 72][h 8-t 9]
> [   96.797477] ath: phy0: ack_ts 46416626 st_ts 46416337 st_dur 72 [31-8]
> [   96.797487] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   96.805028] ath: phy0: rx sample 46424247 [h 32-t 33]
> [   96.805084] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46423960 [dur 72][h 9-t 10]
> [   96.805094] ath: phy0: ack_ts 46424247 st_ts 46423960 st_dur 72 [32-9]
> [   96.805105] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [215]
> [   96.817726] ath: phy0: rx sample 46436951 [h 33-t 34]
> [   96.817784] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46436648 [dur 92][h 10-t 11]
> [   96.817795] ath: phy0: ack_ts 46436951 st_ts 46436648 st_dur 92 [33-10]
> [   96.817805] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [211]
> [   96.825371] ath: phy0: rx sample 46444607 [h 34-t 35]
> [   96.825425] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46444318 [dur 72][h 11-t 12]
> [   96.825435] ath: phy0: ack_ts 46444607 st_ts 46444318 st_dur 72 [34-11]
> [   96.825446] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   96.833156] ath: phy0: rx sample 46452389 [h 35-t 36]
> [   96.833211] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46452100 [dur 72][h 12-t 13]
> [   96.833222] ath: phy0: ack_ts 46452389 st_ts 46452100 st_dur 72 [35-12]
> [   96.833232] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   96.840908] ath: phy0: rx sample 46460133 [h 36-t 37]
> [   96.840962] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46459821 [dur 96][h 13-t 14]
> [   96.840973] ath: phy0: ack_ts 46460133 st_ts 46459821 st_dur 96 [36-13]
> [   96.840983] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [216]
> [   96.847091] ath: phy0: rx sample 46466312 [h 37-t 38]
> [   96.847149] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46466006 [dur 92][h 14-t 15]
> [   96.847160] ath: phy0: ack_ts 46466312 st_ts 46466006 st_dur 92 [37-14]
> [   96.847170] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   96.855392] ath: phy0: rx sample 46474605 [h 38-t 39]
> [   96.855448] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46474317 [dur 72][h 15-t 16]
> [   96.855459] ath: phy0: ack_ts 46474605 st_ts 46474317 st_dur 72 [38-15]
> [   96.855469] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [216]
> [   96.868804] ath: phy0: rx sample 46488053 [h 39-t 40]
> [   96.868858] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46487762 [dur 72][h 16-t 17]
> [   96.868869] ath: phy0: ack_ts 46488053 st_ts 46487762 st_dur 72 [39-16]
> [   96.868879] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [219]
> [   96.876836] ath: phy0: rx sample 46496060 [h 40-t 41]
> [   96.876892] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46495753 [dur 92][h 17-t 18]
> [   96.876902] ath: phy0: ack_ts 46496060 st_ts 46495753 st_dur 92 [40-17]
> [   96.876912] ath: phy0: cc:2d:e0:31:b0:d3 to 215 [215]
> [   96.884802] ath: phy0: rx sample 46504025 [h 41-t 42]
> [   96.884855] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46503739 [dur 72][h 18-t 19]
> [   96.884866] ath: phy0: ack_ts 46504025 st_ts 46503739 st_dur 72 [41-18]
> [   96.884876] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [214]
> [   96.895371] ath: phy0: rx sample 46514583 [h 42-t 43]
> [   96.895428] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46514294 [dur 72][h 19-t 20]
> [   96.895439] ath: phy0: ack_ts 46514583 st_ts 46514294 st_dur 72 [42-19]
> [   96.895450] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   96.902939] ath: phy0: rx sample 46522056 [h 43-t 44]
> [   96.903079] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46521767 [dur 72][h 20-t 21]
> [   96.903091] ath: phy0: ack_ts 46522056 st_ts 46521767 st_dur 72 [43-20]
> [   96.903101] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [217]
> [   96.906840] ath: phy0: rx sample 46526053 [h 44-t 45]
> [   96.906900] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46525782 [dur 56][h 21-t 22]
> [   96.906911] ath: phy0: ack_ts 46526053 st_ts 46525782 st_dur 56 [44-21]
> [   96.906921] ath: phy0: cc:2d:e0:31:b0:d3 to 214 [215]
> [   96.914282] ath: phy0: rx sample 46533506 [h 45-t 46]
> [   96.914347] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46533201 [dur 92][h 22-t 23]
> [   96.914359] ath: phy0: ack_ts 46533506 st_ts 46533201 st_dur 92 [45-22]
> [   96.914369] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [213]
> [   96.914980] ath: phy0: rx sample 46534210 [h 46-t 47]
> [   96.915033] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46533940 [dur 56][h 23-t 24]
> [   96.915044] ath: phy0: ack_ts 46534210 st_ts 46533940 st_dur 56 [46-23]
> [   96.915054] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [214]
> [   96.925728] ath: phy0: rx sample 46544951 [h 47-t 48]
> [   96.925786] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46544677 [dur 60][h 24-t 25]
> [   96.925797] ath: phy0: ack_ts 46544951 st_ts 46544677 st_dur 60 [47-24]
> [   96.925807] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [214]
> [   96.973699] ath: phy0: rx sample 46592943 [h 48-t 49]
> [   96.973755] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46592673 [dur 56][h 25-t 26]
> [   96.973766] ath: phy0: ack_ts 46592943 st_ts 46592673 st_dur 56 [48-25]
> [   96.973776] ath: phy0: cc:2d:e0:31:b0:d3 to 213 [214]
> [   97.049926] ath: phy0: rx sample 46669157 [h 49-t 50]
> [   97.049981] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46668899 [dur 52][h 26-t 27]
> [   97.049992] ath: phy0: ack_ts 46669157 st_ts 46668899 st_dur 52 [49-26]
> [   97.050003] ath: phy0: cc:2d:e0:31:b0:d3 to 211 [206]
> [   97.052549] ath: phy0: rx sample 46671794 [h 50-t 51]
> [   97.052589] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46671522 [dur 60][h 27-t 28]
> [   97.052600] ath: phy0: ack_ts 46671794 st_ts 46671522 st_dur 60 [50-27]
> [   97.052609] ath: phy0: cc:2d:e0:31:b0:d3 to 211 [212]
> [   97.094861] ath: phy0: rx sample 46714094 [h 51-t 52]
> [   97.094914] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46713836 [dur 52][h 28-t 29]
> [   97.094925] ath: phy0: ack_ts 46714094 st_ts 46713836 st_dur 52 [51-28]
> [   97.094935] ath: phy0: cc:2d:e0:31:b0:d3 to 209 [206]
> [   97.102740] ath: phy0: rx sample 46721986 [h 52-t 53]
> [   97.102789] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46721715 [dur 64][h 29-t 30]
> [   97.102800] ath: phy0: ack_ts 46721986 st_ts 46721715 st_dur 64 [52-29]
> [   97.102809] ath: phy0: cc:2d:e0:31:b0:d3 to 208 [207]
> [   97.112737] ath: phy0: rx sample 46731962 [h 53-t 54]
> [   97.112791] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46731702 [dur 52][h 30-t 31]
> [   97.112802] ath: phy0: ack_ts 46731962 st_ts 46731702 st_dur 52 [53-30]
> [   97.112812] ath: phy0: cc:2d:e0:31:b0:d3 to 208 [208]
> [   97.113966] ath: phy0: rx sample 46733194 [h 54-t 55]
> [   97.114023] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46732920 [dur 68][h 31-t 32]
> [   97.114034] ath: phy0: ack_ts 46733194 st_ts 46732920 st_dur 68 [54-31]
> [   97.114044] ath: phy0: cc:2d:e0:31:b0:d3 to 207 [206]
> [   97.122270] ath: phy0: rx sample 46741478 [h 55-t 56]
> [   97.122323] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46741196 [dur 72][h 32-t 33]
> [   97.122334] ath: phy0: ack_ts 46741478 st_ts 46741196 st_dur 72 [55-32]
> [   97.122344] ath: phy0: cc:2d:e0:31:b0:d3 to 207 [210]
> [   97.167213] ath: phy0: rx sample 46786445 [h 56-t 57]
> [   97.167266] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46786187 [dur 52][h 33-t 34]
> [   97.167277] ath: phy0: ack_ts 46786445 st_ts 46786187 st_dur 52 [56-33]
> [   97.167288] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.174971] ath: phy0: rx sample 46794218 [h 57-t 58]
> [   97.175023] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 46793960 [dur 52][h 34-t 35]
> [   97.175033] ath: phy0: ack_ts 46794218 st_ts 46793960 st_dur 52 [57-34]
> [   97.175044] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.435852] ath: phy0: rx sample 47055078 [h 58-t 59]
> [   97.435906] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47054772 [dur 100][h 35-t 36]
> [   97.435917] ath: phy0: ack_ts 47055078 st_ts 47054772 st_dur 100 [58-35]
> [   97.435927] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.650781] ath: phy0: rx sample 47270014 [h 59-t 60]
> [   97.650834] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47269754 [dur 52][h 36-t 37]
> [   97.650845] ath: phy0: ack_ts 47270014 st_ts 47269754 st_dur 52 [59-36]
> [   97.650855] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [208]
> [   97.652274] ath: phy0: rx sample 47271550 [h 60-t 61]
> [   97.652305] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47271288 [dur 56][h 37-t 38]
> [   97.652315] ath: phy0: ack_ts 47271550 st_ts 47271288 st_dur 56 [60-37]
> [   97.652323] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.699671] ath: phy0: rx sample 47318912 [h 61-t 62]
> [   97.699724] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47318653 [dur 52][h 38-t 39]
> [   97.699736] ath: phy0: ack_ts 47318912 st_ts 47318653 st_dur 52 [61-38]
> [   97.699746] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   97.707432] ath: phy0: rx sample 47326658 [h 62-t 63]
> [   97.707488] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47326398 [dur 52][h 39-t 40]
> [   97.707499] ath: phy0: ack_ts 47326658 st_ts 47326398 st_dur 52 [62-39]
> [   97.707509] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [208]
> [   97.709280] ath: phy0: rx sample 47328521 [h 63-t 0]
> [   97.709328] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47328247 [dur 68][h 40-t 41]
> [   97.709339] ath: phy0: ack_ts 47328521 st_ts 47328247 st_dur 68 [63-40]
> [   97.709348] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.717485] ath: phy0: rx sample 47336712 [h 0-t 1]
> [   97.717540] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47336417 [dur 88][h 41-t 42]
> [   97.717550] ath: phy0: ack_ts 47336712 st_ts 47336417 st_dur 88 [0-41]
> [   97.717560] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   97.728433] ath: phy0: rx sample 47347643 [h 1-t 2]
> [   97.728490] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47347373 [dur 64][h 42-t 43]
> [   97.728501] ath: phy0: ack_ts 47347643 st_ts 47347373 st_dur 64 [1-42]
> [   97.728511] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.738513] ath: phy0: rx sample 47357733 [h 2-t 3]
> [   97.738566] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47357463 [dur 64][h 43-t 44]
> [   97.738577] ath: phy0: ack_ts 47357733 st_ts 47357463 st_dur 64 [2-43]
> [   97.738587] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.746859] ath: phy0: rx sample 47366085 [h 3-t 4]
> [   97.746919] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47365802 [dur 76][h 44-t 45]
> [   97.746930] ath: phy0: ack_ts 47366085 st_ts 47365802 st_dur 76 [3-44]
> [   97.746941] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   97.755272] ath: phy0: rx sample 47374493 [h 4-t 5]
> [   97.755328] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47374221 [dur 64][h 45-t 46]
> [   97.755339] ath: phy0: ack_ts 47374493 st_ts 47374221 st_dur 64 [4-45]
> [   97.755350] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [208]
> [   97.763561] ath: phy0: rx sample 47382637 [h 5-t 6]
> [   97.763613] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47382344 [dur 84][h 46-t 47]
> [   97.763624] ath: phy0: ack_ts 47382637 st_ts 47382344 st_dur 84 [5-46]
> [   97.763634] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [209]
> [   97.771045] ath: phy0: rx sample 47390295 [h 6-t 7]
> [   97.771090] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47390012 [dur 76][h 47-t 48]
> [   97.771101] ath: phy0: ack_ts 47390295 st_ts 47390012 st_dur 76 [6-47]
> [   97.771111] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   97.782424] ath: phy0: rx sample 47401664 [h 7-t 8]
> [   97.782476] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47401395 [dur 64][h 48-t 49]
> [   97.782487] ath: phy0: ack_ts 47401664 st_ts 47401395 st_dur 64 [7-48]
> [   97.782497] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [205]
> [   97.790585] ath: phy0: rx sample 47409818 [h 8-t 9]
> [   97.790638] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47409546 [dur 64][h 49-t 50]
> [   97.790649] ath: phy0: ack_ts 47409818 st_ts 47409546 st_dur 64 [8-49]
> [   97.790659] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [208]
> [   97.798295] ath: phy0: rx sample 47417524 [h 9-t 10]
> [   97.798347] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47417240 [dur 76][h 50-t 51]
> [   97.798359] ath: phy0: ack_ts 47417524 st_ts 47417240 st_dur 76 [9-50]
> [   97.798369] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [208]
> [   97.803756] ath: phy0: rx sample 47422986 [h 10-t 11]
> [   97.803811] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47422729 [dur 52][h 51-t 52]
> [   97.803822] ath: phy0: ack_ts 47422986 st_ts 47422729 st_dur 52 [10-51]
> [   97.803832] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [205]
> [   97.807452] ath: phy0: rx sample 47426669 [h 11-t 12]
> [   97.807507] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47426399 [dur 64][h 52-t 53]
> [   97.807517] ath: phy0: ack_ts 47426669 st_ts 47426399 st_dur 64 [11-52]
> [   97.807527] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [206]
> [   97.816031] ath: phy0: rx sample 47435246 [h 12-t 13]
> [   97.816089] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47434975 [dur 64][h 53-t 54]
> [   97.816101] ath: phy0: ack_ts 47435246 st_ts 47434975 st_dur 64 [12-53]
> [   97.816111] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [207]
> [   97.823629] ath: phy0: rx sample 47442859 [h 13-t 14]
> [   97.823685] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47442576 [dur 76][h 54-t 55]
> [   97.823696] ath: phy0: ack_ts 47442859 st_ts 47442576 st_dur 76 [13-54]
> [   97.823706] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [207]
> [   97.833970] ath: phy0: rx sample 47453198 [h 14-t 15]
> [   97.834025] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47452924 [dur 64][h 55-t 56]
> [   97.834035] ath: phy0: ack_ts 47453198 st_ts 47452924 st_dur 64 [14-55]
> [   97.834045] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [210]
> [   97.859698] ath: phy0: rx sample 47478934 [h 15-t 16]
> [   97.859758] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47478661 [dur 64][h 56-t 57]
> [   97.859769] ath: phy0: ack_ts 47478934 st_ts 47478661 st_dur 64 [15-56]
> [   97.859779] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [209]
> [   97.871689] ath: phy0: rx sample 47490903 [h 16-t 17]
> [   97.871744] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47490620 [dur 76][h 57-t 58]
> [   97.871754] ath: phy0: ack_ts 47490903 st_ts 47490620 st_dur 76 [16-57]
> [   97.871765] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   97.879332] ath: phy0: rx sample 47498559 [h 17-t 18]
> [   97.879386] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47498288 [dur 64][h 58-t 59]
> [   97.879397] ath: phy0: ack_ts 47498559 st_ts 47498288 st_dur 64 [17-58]
> [   97.879407] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   97.887166] ath: phy0: rx sample 47506387 [h 18-t 19]
> [   97.887221] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47506125 [dur 56][h 59-t 60]
> [   97.887232] ath: phy0: ack_ts 47506387 st_ts 47506125 st_dur 56 [18-59]
> [   97.887242] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   97.934797] ath: phy0: rx sample 47554029 [h 19-t 20]
> [   97.934853] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47553771 [dur 52][h 60-t 61]
> [   97.934865] ath: phy0: ack_ts 47554029 st_ts 47553771 st_dur 52 [19-60]
> [   97.934875] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   98.013185] ath: phy0: rx sample 47632418 [h 20-t 21]
> [   98.013238] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47632160 [dur 52][h 61-t 62]
> [   98.013249] ath: phy0: ack_ts 47632418 st_ts 47632160 st_dur 52 [20-61]
> [   98.013259] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   98.015411] ath: phy0: rx sample 47634689 [h 21-t 22]
> [   98.015441] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47634426 [dur 56][h 62-t 63]
> [   98.015451] ath: phy0: ack_ts 47634689 st_ts 47634426 st_dur 56 [21-62]
> [   98.015460] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   98.064544] ath: phy0: rx sample 47683789 [h 22-t 23]
> [   98.064594] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47683528 [dur 52][h 63-t 0]
> [   98.064604] ath: phy0: ack_ts 47683789 st_ts 47683528 st_dur 52 [22-63]
> [   98.064615] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [209]
> [   98.072092] ath: phy0: rx sample 47691325 [h 23-t 24]
> [   98.072145] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47691054 [dur 64][h 0-t 1]
> [   98.072156] ath: phy0: ack_ts 47691325 st_ts 47691054 st_dur 64 [23-0]
> [   98.072167] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   98.081937] ath: phy0: rx sample 47701163 [h 24-t 25]
> [   98.081993] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47700904 [dur 52][h 1-t 2]
> [   98.082004] ath: phy0: ack_ts 47701163 st_ts 47700904 st_dur 52 [24-1]
> [   98.082014] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   98.082924] ath: phy0: rx sample 47702186 [h 25-t 26]
> [   98.083037] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47701913 [dur 68][h 2-t 3]
> [   98.083049] ath: phy0: ack_ts 47702186 st_ts 47701913 st_dur 68 [25-2]
> [   98.083058] ath: phy0: cc:2d:e0:31:b0:d3 to 205 [205]
> [   98.092339] ath: phy0: rx sample 47711568 [h 26-t 27]
> [   98.092392] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47711286 [dur 72][h 3-t 4]
> [   98.092403] ath: phy0: ack_ts 47711568 st_ts 47711286 st_dur 72 [26-3]
> [   98.092413] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [210]
> [   98.139254] ath: phy0: rx sample 47758515 [h 27-t 28]
> [   98.139298] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47758255 [dur 52][h 4-t 5]
> [   98.139309] ath: phy0: ack_ts 47758515 st_ts 47758255 st_dur 52 [27-4]
> [   98.139319] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [208]
> [   98.148916] ath: phy0: rx sample 47768183 [h 28-t 29]
> [   98.148962] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47767913 [dur 56][h 5-t 6]
> [   98.148973] ath: phy0: ack_ts 47768183 st_ts 47767913 st_dur 56 [28-5]
> [   98.148984] ath: phy0: cc:2d:e0:31:b0:d3 to 208 [214]
> [   98.324304] ath: phy0: rx sample 47943532 [h 29-t 30]
> [   98.324360] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47943272 [dur 52][h 6-t 7]
> [   98.324371] ath: phy0: ack_ts 47943532 st_ts 47943272 st_dur 52 [29-6]
> [   98.324381] ath: phy0: cc:2d:e0:31:b0:d3 to 208 [208]
> [   98.324850] ath: phy0: rx sample 47944123 [h 30-t 31]
> [   98.324882] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47943861 [dur 56][h 7-t 8]
> [   98.324892] ath: phy0: ack_ts 47944123 st_ts 47943861 st_dur 56 [30-7]
> [   98.324900] ath: phy0: cc:2d:e0:31:b0:d3 to 207 [206]
> [   98.376815] ath: phy0: rx sample 47996051 [h 31-t 32]
> [   98.376868] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 47995765 [dur 80][h 8-t 9]
> [   98.376878] ath: phy0: ack_ts 47996051 st_ts 47995765 st_dur 80 [31-8]
> [   98.376889] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> [   98.447027] ath: phy0: rx sample 48066256 [h 32-t 33]
> [   98.447080] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 48065997 [dur 52][h 9-t 10]
> [   98.447091] ath: phy0: ack_ts 48066256 st_ts 48065997 st_dur 52 [32-9]
> [   98.447101] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [207]
> [   98.455800] ath: phy0: rx sample 48075019 [h 33-t 34]
> [   98.455854] ath: phy0: {cc:2d:e0:31:b0:d3} tx sample 48074761 [dur 52][h 10-t 11]
> [   98.455865] ath: phy0: ack_ts 48075019 st_ts 48074761 st_dur 52 [33-10]
> [   98.455875] ath: phy0: cc:2d:e0:31:b0:d3 to 206 [206]
> 


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at adrianschmutzler.de  Tue Feb 26 08:03:07 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Tue, 26 Feb 2019 14:03:07 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <CANoib0GPkW3Rab_HUNd_DNgo4KcQikM2H-2wH-6yi3stv9oDMQ@mail.gmail.com>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222135736.GD38601@meh.true.cz>
 <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>
 <2289911.o2O57J6HAA@debian64>
 <CANoib0HWUy5rUgpCMiDx-M4ExfvOcdNNpgOQ0Uogmsr0Bih3Hw@mail.gmail.com>
 <009601d4cd5f$a9b7f6e0$fd27e4a0$@adrianschmutzler.de>
 <CANoib0GPkW3Rab_HUNd_DNgo4KcQikM2H-2wH-6yi3stv9oDMQ@mail.gmail.com>
Message-ID: <010d01d4cdd3$9e49b090$dadd11b0$@adrianschmutzler.de>

> -----Original Message-----
> From: Dmitry Tunin [mailto:hanipouspilot at gmail.com]
> Sent: Dienstag, 26. Februar 2019 10:45
> To: Adrian Schmutzler <mail at adrianschmutzler.de>
> Subject: Re: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom
> extraction
> 
> ??, 26 ????. 2019 ?. ? 02:13, <mail at adrianschmutzler.de>:
> >
> > Hi Dmitry,
> >
> > I just sent a bunch of patches based on your initial patch.
> >
> > Note that your patch is only stored as comment to another and lacks Signed-
> off, if I'm not mistaken.
> That wasn't my patch. It was a comment to my initial patch as an
> opinion how to do it better.
> 

Ah, now I finally get it.
Sorry for the noise.

So, since you were first and your real initial patch is tested, I suppose it should be applied.

Despite that, some feedback about whether the merging in eeprom.sh is an accepted way to go would be helpful.

If no, I would rebase my first patchset (changing dd in-place) on Dmitry's real patch.

If yes, either Petr ?tetiar can resend his patch proposal or allow me to "take it over", and I go on with my second patchset (moving all to eeprom.sh).

What will it be?

Best

Adrian


> 
> >
> > Will try to test all of this during the week.
> >
> > Best
> >
> > Adrian
> >
> > > -----Original Message-----
> > > From: openwrt-devel [mailto:openwrt-devel-bounces at lists.openwrt.org]
> > > On Behalf Of Dmitry Tunin
> > > Sent: Montag, 25. Februar 2019 19:31
> > > To: Christian Lamparter <chunkeey at gmail.com>
> > > Cc: Adrian Schmutzler <freifunk at adrianschmutzler.de>; Petr ?tetiar
> > > <ynezz at true.cz>; openwrt-devel at lists.openwrt.org
> > > Subject: Re: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom
> > > extraction
> > >
> > > ??, 25 ????. 2019 ?. ? 21:20, Christian Lamparter <chunkeey at gmail.com>:
> > >
> > > > > The only problem here is that not all platforms need it.
> > > > The problem I always have is more along the way that a patch should
> > > > receive some "on-device" testing. So I do look forward for patches
> > > > that received a "Tested-by:" tag or has positive replies from
> > > > random/unlikely people. But we sadly all know that this system has its
> > > limits.
> > >
> > > In this case mine is really tested on a device if that really matters in this
> case;-
> > > ) I don't think there can be any problems with this simple approach.
> > >
> > > Regarding "not all devices" I meant that that eeprom.sh when added to
> > > global base-files, will be useless for many platforms.
> > > I added DIR-825B1 to ath79 and it needed some hacks to get eeprom and
> > > mac, there is no way to upstream this type of methods. But it is an old
> > > device.
> > >
> > > But without these patches many devices have disabled wireless on first boot
> > > after flashing, because caldata is not ready in time. Fixing this annoying
> > > behavior is important.
> > >
> > > _______________________________________________
> > > openwrt-devel mailing list
> > > openwrt-devel at lists.openwrt.org
> > > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel at lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190226/63dc9edb/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From hanipouspilot at gmail.com  Tue Feb 26 08:34:32 2019
From: hanipouspilot at gmail.com (Dmitry Tunin)
Date: Tue, 26 Feb 2019 16:34:32 +0300
Subject: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom extraction
In-Reply-To: <010d01d4cdd3$9e49b090$dadd11b0$@adrianschmutzler.de>
References: <1550838639-32232-1-git-send-email-hanipouspilot@gmail.com>
 <20190222135736.GD38601@meh.true.cz>
 <CANoib0HN9RwrTL5iZ_USksPBKwz568uKxTZnM3cyR2X6_3eJkQ@mail.gmail.com>
 <2289911.o2O57J6HAA@debian64>
 <CANoib0HWUy5rUgpCMiDx-M4ExfvOcdNNpgOQ0Uogmsr0Bih3Hw@mail.gmail.com>
 <009601d4cd5f$a9b7f6e0$fd27e4a0$@adrianschmutzler.de>
 <CANoib0GPkW3Rab_HUNd_DNgo4KcQikM2H-2wH-6yi3stv9oDMQ@mail.gmail.com>
 <010d01d4cdd3$9e49b090$dadd11b0$@adrianschmutzler.de>
Message-ID: <CANoib0GEsTDa0oPAp8SuPZERiAan2XVdsWepbmBvNvxxapaesw@mail.gmail.com>

??, 26 ????. 2019 ?. ? 16:03, Adrian Schmutzler <mail at adrianschmutzler.de>:
>
> > -----Original Message-----
> > From: Dmitry Tunin [mailto:hanipouspilot at gmail.com]
> > Sent: Dienstag, 26. Februar 2019 10:45
> > To: Adrian Schmutzler <mail at adrianschmutzler.de>
> > Subject: Re: [OpenWrt-Devel] [PATCH] ath79: speed up ath9k-eeprom
> > extraction
> >
> > ??, 26 ????. 2019 ?. ? 02:13, <mail at adrianschmutzler.de>:
> > >
> > > Hi Dmitry,
> > >
> > > I just sent a bunch of patches based on your initial patch.
> > >
> > > Note that your patch is only stored as comment to another and lacks Signed-
> > off, if I'm not mistaken.
> > That wasn't my patch. It was a comment to my initial patch as an
> > opinion how to do it better.
> >
>
> Ah, now I finally get it.
> Sorry for the noise.
>
> So, since you were first and your real initial patch is tested, I suppose it should be applied.
>
> Despite that, some feedback about whether the merging in eeprom.sh is an accepted way to go would be helpful.
>
> If no, I would rebase my first patchset (changing dd in-place) on Dmitry's real patch.
>
> If yes, either Petr ?tetiar can resend his patch proposal or allow me to "take it over", and I go on with my second patchset (moving all to eeprom.sh).
>
> What will it be?
>

My opinion is that I have no opinion really. It's important to speedup
that process, but everything else is very minor.
Using eeprom.sh needs a bit of testing on  many platforms, but I am
already 99.9% sure it'll work OK.

The other part with changing dd's that patch mac addresses can be or
not. I don't really care, because it is catching fractions of seconds.
It looks OK for me too.

Petr posted his variant to me most likely with intention that I or
someone else takes care of it properly. So it would be very good if
you finish the job the way you like.
If it can be properly tested on every target would be great.

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From joe at ayerscasa.com  Tue Feb 26 13:29:30 2019
From: joe at ayerscasa.com (Joe Ayers)
Date: Tue, 26 Feb 2019 10:29:30 -0800
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <20190226100413.GA3351@localhost.localdomain>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
 <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
 <20190226100413.GA3351@localhost.localdomain>
Message-ID: <CAALvt2NGxH2NDySQszg15QzFFbFV3vwYYD=mFaVOTofJk1gusA@mail.gmail.com>

On Tue, Feb 26, 2019 at 2:04 AM Lorenzo Bianconi
<lorenzo.bianconi at redhat.com> wrote:
>
> >
> > On 26.02.19 06:28, Joe Ayers wrote:
> > > On Mon, Feb 25, 2019 at 8:42 AM Koen Vandeputte
> > > <koen.vandeputte at ncentric.com> wrote:
> > > >
> > > > On 25.02.19 17:33, Joe Ayers wrote:
> > > > > On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
> > > > > <lorenzo.bianconi at redhat.com> wrote:
> > > > > > > On 24.02.19 21:32, Joe Ayers wrote:
> > > > > > Hi Joe,
> > > > Hi Joe,
> > > > > > > > First of all, thanks for contributing this fix.   I've incorporated
> > > > > > > > into the http://www.arednmesh.org project, just getting into our
> > > > > > > > nightly builds now.   A comment and a couple questions...
> > > > > > > >
> > > > > > > > The MAX_DELAY was way too short for our community, had to increase
> > > > > > > > that significantly.  We commonly have long distance links over 50km.
> > > > > > according to ath9k max configurable value in AR_TIME_OUT for acktimeout
> > > > > > is 0x3fff. The max ack_to we can configure (assuming clockrate set to
> > > > > > ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
> > > > > > We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
> > > > > > works properly I can post a patch (or you can take care of it, up to you)
> > > > > >
> > > > > I have a current link in Southern California with settings of:
> > > > >
> > > > > distance 60000m  ( "463 S" )
> > > > > channel width = 10MHz
> > > > > channel = 176 (5880) Amateur Radio licensing
> > > > > Ubiquiti Rocket M w/ RocketDish
> > > > > xmit power 27dBm
> > > > >
> > > > > It is rock solid and streams multiple HD videos and voip calls
> > > > > (without drop outs in the call) achieving 30db SNR and MCS15 rates.
> > > > > It's been live for a couple years in this mode.  I don't understand
> > > > > how this link could operate with the performance we see if the  ack_to
> > > > > max was 372 -- the voip quality would be terrible.
> > > > >
> > > > > I have tested (limited tests) dynack on a link showing upwards of
> > > > > ~"400 A", but the real distance to farthest node was about ~20km.
> > > > > Was wondering the discrepancy (fading, etc.?)?   I had changed the
> > > > > starting point to 20km to work, otherwise it was stuck on the original
> > > > > starting point, "96 A", and didn't move.
> > > > >
> > > > > I just loaded dynack on this 60km link and it doesn't move from my new
> > > > > starting point of "196 A".   Something in the calculation somewhere
> > > > > goes out of bound--to big a jump?   I'll do some testing to get the
> > > > > dynack working on this 60km link, then lets see what it tunes to.
> > > > > Based on my earlier results, I'm wondering if it will push past 500.
> > > > >     Maybe the vendor specs are only to the limit of what was tested,
> > > > > does not appear to be a true physical limit?
> > > > Could you add some debug logs from Dynack?
> > > >
> > > Debug logs test case 1 --   Ubiquiti LHG5 <8km to Rocket M5:
> > > https://drive.google.com/file/d/1PYXzjbq1DUIxdZxMm1W7g_0k5hpkKi4z/view?usp=sharing
> > >
> > > Debug log test case 2 -- Ubiquiti Rocket M5 ~60km link to another Rocket M5:
> > > https://drive.google.com/file/d/16DQSkEm0zcDCQHKuxOjM2yXlTp1QYYiE/view?usp=sharing
> > >
> > > Test case 3 (no debug data) -- Ubiquiti NanoStation link to another
> > > tower at 7.68km distance
> > >
> > > Note:  test case 1, the auto distance is much higher than actual
> > > (static set about 8km).
> > >             test case 2, the auto distance does not change from initial
> > > value, although I raised MAX_DELAY sufficiently high enough. What
> > > dynack.c initial variable conditions would you recommend?
> > >             test case 3, normally set as "115 S".  dynack  floated from
> > > 196 to 344, then back to 197 A when manually monitoring the ack_to
> > > value in debugfs.  I've seen this behavior on 3 links now.
> > >
> > > Joe AE6XE
> >
> > Hi Joe,
> >
> > In the "long" log, I'm seeing that dynack is not synced.
> > I'm also not seeing any late ack's coming in.
> >
> > The "Short" log looks OK and is what you should see on proper syncing.
> >
> >
> > Could you try following on the long link? (if possible)
> >
> > - Ensure dynack gets enabled on boot
> > - Reboot both locations so they finish booting and setup IBSS at exactly the
> > same time.
> > - Provide these logs from both ends.
> >
> > This allows to compare both ends on a side-by-side fashion.
> >
> > fyi, I've attached logs from my setup (24.1km link)
> >
> > You will notice some prints about late-ack's coming in, which is required.
>
> Hi Joe,
>
> are you running wpa_supplicant on ibss links? IIRC wpa_supplicant is mandatory
> for dynack to work properly on ibss links.
>
> Regards,
> Lorenzo
>

We do not run wpa_supplicant on ibss.    Let's just say, the ~1950's
regulations for Amateur Radio Licensing needs to be modernized :) .

dynack is working fine for links up to ~30km right now, and we are
seeing max ack_to values above 400.   My original testing for the
short link failed exactly the same way (with the original MAX_DELAY
and starting ack_to) as the long link is failing now.     I changed
MAX_DELAY and starting ack_to values to get working in the short link.
  Now, we are seeing proper syncing in this debug data.   Can we not
do similar changes for the long link?  Seems to be something in the
logic conditions vs. wpa_supplicant.

We have 500+ node network here in  Southern CA spanning end to end
probably over 400km.  This long link is a back bone between counties,
so I need to be a little sensitive with the up/down and testing I'm
doing.

Regards,
Joe AE6XE

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From jlede at allycomm.com  Tue Feb 26 13:56:10 2019
From: jlede at allycomm.com (Jeff Kletsky)
Date: Tue, 26 Feb 2019 10:56:10 -0800
Subject: [OpenWrt-Devel] OpenWrt 19.03 plans
In-Reply-To: <59661197.BiEzcpQiO5@bentobox>
References: <4f1a0d70bb797a40d329fdecc9fc2a0f@pyret.net>
 <e70db0bed3bf4654ee356f19fb1923e08387456c.camel@ewol.com>
 <37ff9171-dfad-392d-db14-ba06beb7140a@wagsky.com>
 <59661197.BiEzcpQiO5@bentobox>
Message-ID: <7fd49904-919e-e685-44f2-e1204f0a7622@wagsky.com>


On 2/25/19 11:25 AM, Sven Eckelmann wrote:
> On Monday, 25 February 2019 15:08:15 CET Jeff Kletsky wrote:
>>>> Mesh is broken using ath10k-ct?
>>>> https://bugs.openwrt.org/index.php?do=details&task_id=2123
> [...]
>> * The "classic" drivers/firmware fail on or after the indicated commit
>>
>>       CONFIG_PACKAGE_ath10k-firmware-qca9887=y
>>       CONFIG_PACKAGE_kmod-ath10k=y
>>       # CONFIG_PACKAGE_kmod-ath10k-ct is not set
>>
>>
>> That the CT drivers/firmware don't support 802.11s mesh
>> isn't really an OpenWrt issue.
>>
>> That there is a regression in overall system capability
>> that "kills" connectivity is a signficant concern.
> * Can you confirm that it works with ath10k-ct but not with ath10k?
> * And can you confirm that changing encryption to none has no effect on the
>    problem.
> * Can you confirm that reverting commit cd93b83ad927 ("ath10k: support for
>    multicast rate control") [1] in ath10k fixes this problem?
> * Can you confirm that manually setting mcast_rate to 18000  in the mesh wifi-
>    iface fixes the problem?
>
>      config wifi-iface 'mesh0'
>          option device 'radio0'
>          option ifname 'mesh0'
>          option network 'nwi_mesh0'
>          option mode 'mesh'
>          option mesh_id 'TestMesh'
>          option mesh_fwding '1'
>          option mcast_rate '18000'
>          option encryption 'none'
>
> * can you confirm that it lo


Testing performed off `master` [1] on a mesh of Archer C7v2 units and 
one "test" unit.

* Setting `option mcast_rate '18000'` allows the mesh to connect and 
ping for ath10k "classic"

* https://github.com/openwrt/openwrt/pull/1861 allows the mesh to 
connect and ping for ath10k "classic"

* ath10k-ct drivers/firmware continue to be unable to support 802.11s on 
5 GHz on the Archer C7v2

 ??? * The output of `iw phy` is ambiguous on mesh support for the CT 
drivers/firmware for 5 GHz phy
 ??????? * `Supported interface modes:` includes `* mesh point`
 ??????? * `valid interface combinations:` seems to contradict
 ??????????? * `* #{ managed, P2P-client } <= 16, #{ P2P-GO } <= 3, #{ 
AP } <= 7, #{ IBSS } <= 1,`


Additional information at

https://github.com/openwrt/openwrt/pull/1861 -- shows significant 
benefit "classic"

https://github.com/openwrt/openwrt/pull/1862 -- "CT" drivers/firmware


Additional testing available on (reasonable) request


Jeff Kletsky


[1] "Current" builds based off

commit fe90e48c39c46b3c253b65f38e392c43f6abe2f0 (openwrt/master, 
openwrt/HEAD, master)
Author: Piotr Dymacz <pepe2k at gmail.com>
Date:?? Tue Feb 26 13:04:54 2019 +0100


Previous reference points and other units are off master, at or prior to

commit b14289354adb1f07dc9904bfdbc43e6b0bf17a92 (tag: 80211s-good)
Author: John Crispin <john at phrozen.org>
Date:?? Wed Sep 5 14:51:44 2018 +0200





_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From lorenzo.bianconi at redhat.com  Tue Feb 26 16:57:26 2019
From: lorenzo.bianconi at redhat.com (Lorenzo Bianconi)
Date: Tue, 26 Feb 2019 22:57:26 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <CAALvt2NGxH2NDySQszg15QzFFbFV3vwYYD=mFaVOTofJk1gusA@mail.gmail.com>
References: <CAALvt2M0TGaq=u3TPiif4_pRumEBD9YQLfuHsXrZkrOWHyTDug@mail.gmail.com>
 <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
 <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
 <20190226100413.GA3351@localhost.localdomain>
 <CAALvt2NGxH2NDySQszg15QzFFbFV3vwYYD=mFaVOTofJk1gusA@mail.gmail.com>
Message-ID: <20190226215724.GA3344@localhost.localdomain>

> On Tue, Feb 26, 2019 at 2:04 AM Lorenzo Bianconi
> <lorenzo.bianconi at redhat.com> wrote:
> >
> > >
> > > On 26.02.19 06:28, Joe Ayers wrote:
> > > > On Mon, Feb 25, 2019 at 8:42 AM Koen Vandeputte
> > > > <koen.vandeputte at ncentric.com> wrote:
> > > > >
> > > > > On 25.02.19 17:33, Joe Ayers wrote:
> > > > > > On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
> > > > > > <lorenzo.bianconi at redhat.com> wrote:
> > > > > > > > On 24.02.19 21:32, Joe Ayers wrote:
> > > > > > > Hi Joe,
> > > > > Hi Joe,
> > > > > > > > > First of all, thanks for contributing this fix.   I've incorporated
> > > > > > > > > into the http://www.arednmesh.org project, just getting into our
> > > > > > > > > nightly builds now.   A comment and a couple questions...
> > > > > > > > >
> > > > > > > > > The MAX_DELAY was way too short for our community, had to increase
> > > > > > > > > that significantly.  We commonly have long distance links over 50km.
> > > > > > > according to ath9k max configurable value in AR_TIME_OUT for acktimeout
> > > > > > > is 0x3fff. The max ack_to we can configure (assuming clockrate set to
> > > > > > > ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
> > > > > > > We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
> > > > > > > works properly I can post a patch (or you can take care of it, up to you)
> > > > > > >
> > > > > > I have a current link in Southern California with settings of:
> > > > > >
> > > > > > distance 60000m  ( "463 S" )
> > > > > > channel width = 10MHz
> > > > > > channel = 176 (5880) Amateur Radio licensing
> > > > > > Ubiquiti Rocket M w/ RocketDish
> > > > > > xmit power 27dBm
> > > > > >
> > > > > > It is rock solid and streams multiple HD videos and voip calls
> > > > > > (without drop outs in the call) achieving 30db SNR and MCS15 rates.
> > > > > > It's been live for a couple years in this mode.  I don't understand
> > > > > > how this link could operate with the performance we see if the  ack_to
> > > > > > max was 372 -- the voip quality would be terrible.
> > > > > >
> > > > > > I have tested (limited tests) dynack on a link showing upwards of
> > > > > > ~"400 A", but the real distance to farthest node was about ~20km.
> > > > > > Was wondering the discrepancy (fading, etc.?)?   I had changed the
> > > > > > starting point to 20km to work, otherwise it was stuck on the original
> > > > > > starting point, "96 A", and didn't move.
> > > > > >
> > > > > > I just loaded dynack on this 60km link and it doesn't move from my new
> > > > > > starting point of "196 A".   Something in the calculation somewhere
> > > > > > goes out of bound--to big a jump?   I'll do some testing to get the
> > > > > > dynack working on this 60km link, then lets see what it tunes to.
> > > > > > Based on my earlier results, I'm wondering if it will push past 500.
> > > > > >     Maybe the vendor specs are only to the limit of what was tested,
> > > > > > does not appear to be a true physical limit?
> > > > > Could you add some debug logs from Dynack?
> > > > >
> > > > Debug logs test case 1 --   Ubiquiti LHG5 <8km to Rocket M5:
> > > > https://drive.google.com/file/d/1PYXzjbq1DUIxdZxMm1W7g_0k5hpkKi4z/view?usp=sharing
> > > >
> > > > Debug log test case 2 -- Ubiquiti Rocket M5 ~60km link to another Rocket M5:
> > > > https://drive.google.com/file/d/16DQSkEm0zcDCQHKuxOjM2yXlTp1QYYiE/view?usp=sharing
> > > >
> > > > Test case 3 (no debug data) -- Ubiquiti NanoStation link to another
> > > > tower at 7.68km distance
> > > >
> > > > Note:  test case 1, the auto distance is much higher than actual
> > > > (static set about 8km).
> > > >             test case 2, the auto distance does not change from initial
> > > > value, although I raised MAX_DELAY sufficiently high enough. What
> > > > dynack.c initial variable conditions would you recommend?
> > > >             test case 3, normally set as "115 S".  dynack  floated from
> > > > 196 to 344, then back to 197 A when manually monitoring the ack_to
> > > > value in debugfs.  I've seen this behavior on 3 links now.
> > > >
> > > > Joe AE6XE
> > >
> > > Hi Joe,
> > >
> > > In the "long" log, I'm seeing that dynack is not synced.
> > > I'm also not seeing any late ack's coming in.
> > >
> > > The "Short" log looks OK and is what you should see on proper syncing.
> > >
> > >
> > > Could you try following on the long link? (if possible)
> > >
> > > - Ensure dynack gets enabled on boot
> > > - Reboot both locations so they finish booting and setup IBSS at exactly the
> > > same time.
> > > - Provide these logs from both ends.
> > >
> > > This allows to compare both ends on a side-by-side fashion.
> > >
> > > fyi, I've attached logs from my setup (24.1km link)
> > >
> > > You will notice some prints about late-ack's coming in, which is required.
> >
> > Hi Joe,
> >
> > are you running wpa_supplicant on ibss links? IIRC wpa_supplicant is mandatory
> > for dynack to work properly on ibss links.
> >
> > Regards,
> > Lorenzo
> >
> 
> We do not run wpa_supplicant on ibss.    Let's just say, the ~1950's
> regulations for Amateur Radio Licensing needs to be modernized :) .

Hi Joe,

wpa_supplicant is mandatory to use dynack on ibss links so you need to
run it (otherwise dynack will not be able to trigger 'late' acks and
the processing will not converge for very long links).
The other possibility is to convert the ibss links in AP-STA mode.

Regards,
Lorenzo

> 
> dynack is working fine for links up to ~30km right now, and we are
> seeing max ack_to values above 400.   My original testing for the
> short link failed exactly the same way (with the original MAX_DELAY
> and starting ack_to) as the long link is failing now.     I changed
> MAX_DELAY and starting ack_to values to get working in the short link.
>   Now, we are seeing proper syncing in this debug data.   Can we not
> do similar changes for the long link?  Seems to be something in the
> logic conditions vs. wpa_supplicant.
> 
> We have 500+ node network here in  Southern CA spanning end to end
> probably over 400km.  This long link is a back bone between counties,
> so I need to be a little sensitive with the up/down and testing I'm
> doing.
> 
> Regards,
> Joe AE6XE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190226/860f89c9/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From chunkeey at gmail.com  Tue Feb 26 17:17:05 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Tue, 26 Feb 2019 23:17:05 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ipq40xx: add support for
 FritzBox 7530
In-Reply-To: <1861da34-2303-2d1d-7a9c-ebbed747c927@david-bauer.net>
References: <20190218225834.28100-1-mail@david-bauer.net>
 <4581107.9DOS49Ef2O@debian64>
 <1861da34-2303-2d1d-7a9c-ebbed747c927@david-bauer.net>
Message-ID: <1729398.Bxvg2gU6vH@debian64>

Hello David,

On Tuesday, February 26, 2019 12:15:41 AM CET David Bauer wrote:
> On 25.02.19 23:10, Christian Lamparter wrote:
> > On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
> >> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
> >>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> >>> new file mode 100644
> >>> index 0000000000..b2a33468bb
> >>> --- /dev/null
> >>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
> >>> @@ -0,0 +1,305 @@
> >>> +&pcie0 {
> >>> +	status = "okay";
> >>> +
> >>> +	ranges = <0x81000000 0 0x40200000 0x40200000
> >>> +			0 0x00100000   /* downstream I/O */
> >>> +			0x82000000 0 0x48000000 0x48000000
> >>> +			0 0x10000000>; /* non-prefetchable memory */
> >>
> >> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
> >> should be put into the qcom-ipq4019.dtsi as well.
> > 
> > And it didn't work. While the pcie enumeration worked fine. 
> > The QCA9887 was no longer attaching. As soon as the driver was
> > loaded it failed due to:
> > 
> > [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
> > [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
> > [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> > [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
> > [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> > [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
> > [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
> > [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
> > [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
> > [...]
> > [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
> > [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
> > [...]
> > 
> > But I think we can fix the problem. Because according to the old
> > qcom-ipq40xx.dtsi I dug up:
> > 
> > <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
> > 
> > The non-prefetchable memory area window size should be 0x00d00000.
> > 
> > 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
> > 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
> > 
> > (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
> > me know if does indeed finally let you enumerate the device?)
> 
> It seems to work with your proposed change:
> 
> [    0.042117] OF: PCI: host bridge /soc/pci at 40000000 ranges:
> [    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
> [    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
> [    0.259505] qcom-pcie 40000000.pci: link up
> [    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
> [    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
> [    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
> (bus address [0x40200000-0x402fffff])
> [    0.259700] pci_bus 0000:00: root bus resource [mem
> 0x40300000-0x40ffffff]
> [    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
> [    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
> [    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
> [    0.260015] PCI: bus0: Fast back to back transfers disabled
> [    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
> [    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
> [    0.260790] pci 0000:01:00.0: supports D1 D2
> [    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
> [    0.261043] PCI: bus1: Fast back to back transfers disabled
> [    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
> [    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
> 0x40300000-0x40300fff 64bit]
> [    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
> [    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
> [    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
> [    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93
> 
> See
> https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74
> 
> How should we proceed on this device? Should i resend a v3 or will you
> remove the ranges property and backport the patch you prepare for upstream?

Sorry for the late reply, I added a rebased version
on top of the latest changes) into my staging tree:
https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=206a40911118f24c062ccdfc24dfc3fdd653c71a 

And it turned out that there was also a pcie msi irq fix
https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=307f6a6ed6cfca4c0d3cb5dc4dc5493ec3f41e1c
it just goes on and on and on...

Regards,
Christian



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From joseph.tingiris at gmail.com  Tue Feb 26 21:05:02 2019
From: joseph.tingiris at gmail.com (Joseph Tingiris)
Date: Tue, 26 Feb 2019 21:05:02 -0500
Subject: [OpenWrt-Devel] [PATCH] mdadm: revised mdadm config & init logic
Message-ID: <1551233102-55174-1-git-send-email-joseph.tingiris@gmail.com>

This is a significant revision of /etc/init.d/mdadm.  It adds new
features, support for new configuration options, safer error
handling, (configurable) verbose output, and contains multiple bug
fixes.

Most notably, mdadm was being started with the --config flag and
that prevented it from using its built in Auto Assembly features.
Users were required to put a correct uuid in /etc/config/mdadm.

The new default startup mode is now to automatically assemble all
RAID arrays attached to the machine using device scans, rather than
configuation options.

A new UCI section, config mdadm global, was added with new options that
are supported by the accompanying /etc/init.d/mdadm. Documentation for all
new (and previous) options was added as well.  See the
/etc/config/mdadmin or mdadm.init file itself for more details.

Additionally, a new stateful 'auto' feature was added that functions
similarly to the stateless Auto Assembly feature.  The benefits of
stateful auto assembly are to support features that mdadm 4.0 will only
read from a configuration file, such as setting the MAILFROM value.  The
new mdadm_conf_auto() function will also aid users in troubleshooting.
When verbose is turned on it provides tips and better visibility for what's
actually happening.

Backward compatibility was retained.  Stateful UCI only configurations are
supported.  All previously existing configurations will work in this mode.
However, these users will now have to explicitly turn it on.

A new reload_service() function was added to prevent reloads from
stopping mdadm.  Reloads will now be ignored, though the stage is set for
reloads to trigger scans for new devices.  Explicit restarts still work as
expected.

The start_service() function was enhanced to query new UCI mdadm.global
options: alert_program, config, email, email_from, monitor_frequency,
and verbose.  Each option is documented in /etc/mdadm/config (config.init) and
some additional code comments were added.

Finally, error handling and verbose output was enhanced.  Users will
know what's going on (if verbose is turned on).

Strict reliance on a shell global ($CONF) was removed and replaced with a
single global ($TMP_FILE) that's for development convenience.  When/if a config
file is not specified in the UCI config, it will fall back to using $TMP_FILE as the
configuration file.

Incremented PKG_RELEASE from 1 to 2

Signed-off-by: Joseph Tingiris <joseph.tingiris at gmail.com>
---
 package/utils/mdadm/Makefile           |   2 +-
 package/utils/mdadm/files/mdadm.config | 162 +++++++++-
 package/utils/mdadm/files/mdadm.init   | 555 +++++++++++++++++++++++++++++----
 3 files changed, 646 insertions(+), 73 deletions(-)

diff --git a/package/utils/mdadm/Makefile b/package/utils/mdadm/Makefile
index 18026bb..f20a58b 100644
--- a/package/utils/mdadm/Makefile
+++ b/package/utils/mdadm/Makefile
@@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mdadm
 PKG_VERSION:=4.1
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=@KERNEL/linux/utils/raid/mdadm
diff --git a/package/utils/mdadm/files/mdadm.config b/package/utils/mdadm/files/mdadm.config
index 50afbc2..0c78c96 100644
--- a/package/utils/mdadm/files/mdadm.config
+++ b/package/utils/mdadm/files/mdadm.config
@@ -1,18 +1,154 @@
-config mdadm
+#
+# The mdadm 'global' section is for options that apply to all sections.
+#
+
+config mdadm global
+
+	#
+	# option 'alert_program' values may be a path to a valid, executable binary.
+	#
+	# The default 'alert_program' is not set.
+	#
+	# When mdadm detects an event it will execute this program with 3 arguments, see https://linux.die.net/man/8/mdadm
+	# $1 = will be the event
+	# $2 = will be the meta device
+	# $3 = may be a related component (if one exists)
+	#
+	# * alert_program runs independently from sendmail.
+	# * If both options alert_program and email are set, and both work, then an email and a
+	#   custom alert will be generated.
+	# * no alert program is included in mdadm 4.0-4.
+	#
+	# Lots of possibilities exist, i.e. scripts for netdata, slack, etc.
+	#
+	#option alert_program /usr/sbin/mdadm_alerts
+
+
+	#
+	# option 'config' values may be one of the following.
+	#
+	# The default 'config' is none (stateless auto assembly).
+	#
+	# auto		- stateful, dynamically generated mdadm.conf via block info,
+	#		  stored in /var/etc/mdadm.conf
+	# containers	- stateless, mdadm --assemble --scan --config=containers; see https://linux.die.net/man/8/mdadm
+	# none		- stateless, mdadm --assemble --scan --config=none; aka 'Auto Assembly',
+	#		  see https://linux.die.net/man/8/mdadm
+	# partition	- stateless, mdadm --assemble --scan --config=partition; see https://linux.die.net/man/8/mdadm
+	# uci		- stateful, dynamically generated mdadm.conf via uci array values (below),
+	#		  stored in /var/etc/mdadm.conf
+	# file		- stateful, manually generated mdadm.conf file(s),
+	#		  'file' must be preceded by a / and may be a readable filename
+	#		  or directory with multiple .conf files
+	#
+	# Try uncommenting this and using 'auto' if there are issues.  It provides more comprehensive
+	# diagnostics via verbose messages & the ability to set an email from address.
+	#
+	#option config auto
+
+
+	#
+	# option 'email' values may be a valid (to) email address, or empty.
+	#
+	# The default 'email' to send to is root (monitor email will be sent to the local root user).
+	#
+	# * Sending mail will only work if /usr/lib/sendmail or /usr/sbin/sendmail is available. Install postfix.
+	# * Comment, or unset, the email value causes mail to be disabled.  With no email value, mdadm wont even try.
+	# * A single word name must be a valid user on the system, or it will bounce back to root.
+	#   Unless user 'mdadm' exists (it doesn't by default), this will bounce:
+	#   option email mdadm
+	# * A full email address does not need quoting and will deliver if tcp port 25 (SMTP) is allowed outbound, i.e.
+	#   option email joseph.tingiris at gmail.com
+	# * mdadm only supports one email address (MAILADDR) for all arrays. see mdadm.conf(5)
+	#
+	# mail will be to 'root@$HOSTNAME', i.e. root at OpenWrt
+	#
 	option email root
-	# list devices /dev/hd*
-	# list devices /dev/sd*
-	# list devices partitions
 
-config array
-	option uuid 52c5c44a:d2162820:f75d3464:799750f8
-	option device /dev/md0
-	# option name raid:0
-	# option super_minor 0
-	# list devices /dev/sda1
-	# list devices /dev/sdb1
-	# option spares 0
-	# option spare_group spares
+
+	#
+	# option 'email_from' values may be a valid (from) email address, or empty.
+	#
+	# The default 'email_from' is 'OpenWrt RAID Monitoring <mdadm@$HOSTNAME>', i.e. mdadm at OpenWrt
+	#
+	# * Sending mail will only work if /usr/lib/sendmail or /usr/sbin/sendmail is available. Install postfix.
+	# * Comment, or unset, the email_from value causes mdadm to send mail from
+	#   root@$HOSTNAME, e.g. root at OpenWrt
+	# * A complete from envelope can be specified within quotes, i.e.
+	#   option email_from 'mdadm monitoring <this_is_not_spam at example.com>'
+	# * mdadm only supports setting a from address (MAILFROM) with a stateful config,
+	#   e.g. 'auto' or 'uci'. see mdadm.conf(5)
+	#
+	# mail will be from 'OpenWrt RAID Monitoring <mdadm@$HOSTNAME>', i.e. mdadm at OpenWrt
+	#
+	option email_from 'OpenWrt RAID Monitoring <mdadm>'
+
+
+	#
+	# option 'monitor_frequency' values may be a valid integer, or empty.
+	#
+	# The default monitor frequency (delayed poll) is 120 seconds.
+	#
+	# * This is the polling interval, frequency, or delay.  It's the value for mdadm --delay.  see https://linux.die.net/man/8/mdadm
+	#
+	option monitor_frequency 300
+
+	#
+	# option 'verbose' values may be '1', 'on', or 'true', everything else is false.
+	#
+	# The default verbosity is false (quiet).
+	#
+	# * Standard errors will be sent to console and syslog regardless of this setting.
+	# * When verbose is false mdadm will run in --quiet mode and generate very little log
+	#   or standard output.
+	#
+	# Turn this on if you're having problems, or want more detail.  With SSH_TTY set output will
+	# be to that TTY, otherwise it will go to syslog via logger.
+	#
+	#option verbose on
+
+
+#
+# The mdadm 'array' section(s) are for stateful, manual configurations. Experts only.  Use with caution.
+#
+#
+# The use of multiple 'array' sections is supported by /etc/init.d/mdadm.
+# They must all be named 'array'.
+#
+# As of this writing unnamed 'mdadm' sections are still allowed, but deprecated. Do not use.
+#
+
+#config array
+	#
+	# example 'array' options may be a valid mix of:
+	#
+	# bitmap
+	# container
+	# device
+	# devices
+	# member
+	# name
+	# spare_group
+	# spares
+	# super_minor
+	# uuid
+	#
 	# option bitmap /bitmap.md
 	# option container 00000000:00000000:00000000:00000000
+	# option device /dev/md0
+	# -and/or a devices list-
+	# list devices /dev/hd* # mdadm allows glob, see glob(7)
+	# list devices /dev/sd*
+	# list devices /dev/sda1
+	# list devices /dev/sdb1
+	# list devices containers
+	# list devices partitions
 	# option member 1
+	# option name raid:0
+	# option spare_group spares
+	# option spares 0
+	# option super_minor 0
+	# use uuid from block info (preferred), or mdadm --misc --detail /dev/md0
+	# option uuid 2084de11-70c4-4521-8f95-6113e75f1fe9
+	#
+	# These options directly translate to mdadm -- options, see https://linux.die.net/man/8/mdadm
diff --git a/package/utils/mdadm/files/mdadm.init b/package/utils/mdadm/files/mdadm.init
index 64a50b3..39b21e5 100644
--- a/package/utils/mdadm/files/mdadm.init
+++ b/package/utils/mdadm/files/mdadm.init
@@ -1,93 +1,530 @@
 #!/bin/sh /etc/rc.common
 
-START=13
-STOP=98
+START=12
+STOP=99
 
 USE_PROCD=1
 PROG=/sbin/mdadm
 NAME=mdadm
 
-CONF="/var/etc/mdadm.conf"
+LOGGER=0 # off
+VERBOSE=1 # off
+
+TMP_FILE="/var/etc/mdadm.conf" # /var/etc is on /tmp; used for temporary state, to enable stateful only mdadm features
+
+[ ! -x "$PROG" ] && exit 1
 
 append_list_item() {
-	append "$2" "$1" "$3"
+    append "$2" "$1" "$3"
 }
 
 append_option() {
-	local var="$1"
-	local cfg="$2"
-	local opt="$3"
-	local name="$4"
-	local sep="$5"
-	local str
-
-	if [ -n "$sep" ]; then
-		config_list_foreach "$cfg" "$opt" append_list_item str "$sep"
-	else
-		config_get str "$cfg" "$opt"
-	fi
-
-	[ -n "$str" ] && append "$var" $(printf "%s=%s" "${name:-${opt//_/-}}" "$str")
+    local var="$1"
+    local cfg="$2"
+    local opt="$3"
+    local name="$4"
+    local sep="$5"
+    local str
+
+    if [ -n "$sep" ]; then
+        config_list_foreach "$cfg" "$opt" append_list_item str "$sep"
+    else
+        config_get str "$cfg" "$opt"
+    fi
+
+    [ -n "$str" ] && append "$var" $(printf "%s=%s" "${name:-${opt//_/-}}" "$str")
 }
 
-mdadm_common() {
-	local cfg="$1"
-	local email devices
+verbose() {
+    local msg="$1"
+    local level="$2"
 
-	if [ -x /usr/sbin/sendmail ]; then
-		config_get email "$cfg" email
-		[ -n "$email" ] && printf "MAILADDR %s\n" "$email" >> $CONF
-	fi
+    [ -z "$level" ] && level="INFO"
 
-	config_list_foreach "$cfg" devices append_list_item devices " "
-	[ -n "$devices" ] && printf "DEVICE %s\n" "$devices" >> $CONF
+    if [ "$VERBOSE" == "1" ]; then
+        if [ ${#SSH_TTY} -gt 0 ]; then
+            printf "$NAME: init %7s - %b\n" "$level" "$msg"
+        else
+            # no SSH_TTY goes to logger
+            printf "$NAME: init %7s - %b\n" "$level" "$msg" | logger -t mdadm
+        fi
+    fi
 }
 
-mdadm_array() {
-	local cfg="$1"
-	local uuid device devices name array
+mdadm_conf_auto() {
+    local mdadm_conf="$1"
+
+    if [ ! -w "$mdadm_conf" ]; then
+        if [ -z "$mdadm_conf" ]; then
+            verbose "mdadm_conf value is empty" ERROR
+        else
+            verbose "'$mdadm_conf' file not found writable" ERROR
+        fi
+        return 1
+    fi
+
+    local block_md block_uuid mdadm_md mdadm_md_rc mdadm_uuid
+
+    # Check block info for active linux_raid_members, if necessary then compare with mdadm, & dynamically update $mdadm_conf
+
+    block_md=0 # counter
+    for block_uuid in $(block info 2> /dev/null | sed -nEe 's#^.* UUID="([^"]*)".*TYPE="linux_raid_member"#\1#p'); do
+        mdadm_md=""
+        mdadm_md_rc=0
+
+        while [ -z "$mdadm_md" ]; do
+            if [ -b "/dev/md$block_md" ]; then
+                # handle mdadm restart, service reload, multiple starts without stops, physical unplug, etc.
+
+                verbose "/dev/md$block_md block device already exists" NOTICE
 
-	config_get uuid "$cfg" uuid
-	config_get name "$cfg" name
-	config_get device "$cfg" device
+                # active arrays will promptly respond; first check
+                mdadm_uuid=$($PROG --detail --test --brief "/dev/md$block_md" 2> /dev/null | sed -nEe '1s#^.*UUID=((.){35})#\1#p')
 
-	if [ -z "$device" ] || [ -z "$uuid$name" ]; then
-		echo "Skipping array without device, uuid or name" >&2
-		return
-	fi
+                if [ -z "$mdadm_uuid" ]; then
+                    # When an array is unplugged and then plugged in again (without rebooting) then it becomes an INACTIVE-ARRAY
+                    # however the device file persists, e.g. /dev/md0, and should be reused, rather than a new device assigned.
+                    if $PROG --detail --test --scan "/dev/md$block_md" 2> /dev/null | grep -E "^(INACTIVE-ARRAY(\ |\t)(.*)/dev/md(|/)$block_md(\ |\t)metadata)" &> /dev/null; then
+                        verbose "attempting to revive INACTIVE-ARRAY on /dev/md$block_md" NOTICE
+                        $PROG --examine --scan 2> /dev/null | egrep -qE "^(ARRAY(\ |\t)(.*)/dev/md(|/)$block_md(\ |\t))"
+                        if [ $? -eq 0 ]; then
+                            # this is relatively safe with the above regex validation
+                            mdadm_md="/dev/md$block_md"
+                        fi
+                    else
+                        # This is an unsafe condition to handle with a shell, mdadm sees an inactive device with a different /dev.
+                        # Err to the side of caution;--assemble --scan shoud know what to do ... it will abandon the block device.
+                        # If these are happening, suggest stateless & sacrifice some minor functionality, e.g. MAILFROM
+                        # May be an mdadm or kernel bug with this hardware setup.
+                        verbose "bug? unsafe to revive INACTIVE-ARRAY on /dev/md$block_md" WARNING
+                        let block_md=$block_md+1
+                        continue
+                    fi
+                fi
 
-	[ -n "$uuid" ] && append array "uuid=$uuid"
-	[ -n "$name" ] && append array "name=$name"
+                if [ "${block_uuid//-/}" == "${mdadm_uuid//:/}" ]; then
+                    # block info & mdadm concur all's well; the meta device is active; reuse
+                    mdadm_md="/dev/md$block_md"
+                    verbose "auto conf found active RAID member block_uuid=$block_uuid and will reused device '$mdadm_md'" OK
+                else
+                    if [ ! -e "/dev/md$block_md" ]; then
+                        # this block device was never assembled previously; new
+                        mdadm_md="/dev/md$block_md"
+                        verbose "auto conf found new RAID member block_uuid=$block_uuid and will assign device '$mdadm_md'" OK
+                    else
+                        let block_md=$block_md+1
+                        continue
+                    fi
+                fi
 
-	append_option array "$cfg" super_minor
-	append_option array "$cfg" spares
-	append_option array "$cfg" spare_group
-	append_option array "$cfg" bitmap
-	append_option array "$cfg" container
-	append_option array "$cfg" member
-	append_option array "$cfg" devices devices ","
+            else
+                if [ ! -e "/dev/md$block_md" ]; then
+                    # best scenario; no device or file (yet), safest
+                    mdadm_md="/dev/md$block_md"
+                    verbose "auto conf found missing RAID member block_uuid=$block_uuid and will assign device '$mdadm_md'" OK
+                else
+                    # a file exists, but it's not a block device? It's possible (touch), albeit a corner case; discretely say
+                    # we know & pass over it.
+                    verbose "/dev/md$block_md file found, not a block device" WARNING
+                    let block_md=$block_md+1
+                    continue
+                fi
+            fi
 
-	printf "ARRAY %s %s\n" "$device" "$array" >> $CONF
+            $PROG --detail --test --brief $mdadm_md &> /dev/null # rc 1=ok, 1=degrade, 2=dead, 4=missing
+            mdadm_md_rc=$?
+
+            # todo: annouce degraded arrays in the logs? mdadmin monitor will do it but not on demand, only per frequency.
+            #       nice to have for hot plugs ...
+
+            verbose "block_md=$block_md, block_uuid=$block_uuid, mdadm_md=$mdadm_md, mdadm_uuid=$mdadm_uuid, rc=$mdadm_md_rc" INFO
+
+            if [ $mdadm_md_rc -lt 4 ]; then
+                $PROG --detail --test --brief $mdadm_md 2> /dev/null >> $mdadm_conf
+            else
+                # there's a device with no header.  maybe it's to replace a failed device ...
+                echo "ARRAY $mdadm_md uuid=$block_uuid" >> $mdadm_conf
+            fi
+
+        done
+
+    done
+
+    if [ -n "$mdadm_md" ]; then
+        return 0
+    else
+        return 1
+    fi
+}
+
+mdadm_conf_uci() {
+    local cfg="$1"
+    local mdadm_conf="$2"
+
+    if [ -z "$cfg" ]; then
+        verbose "cfg is empty" WARNING
+        return 1
+    fi
+
+    local cfg_name=$(uci_get mdadm.$cfg 2> /dev/null)
+
+    if [ -z "$cfg_name" ]; then
+        verbose "($cfg) mdadm config name is empty" NOTICE
+    fi
+
+    if [ -z "$mdadm_conf" ]; then
+        verbose "($cfg) skipping mdadm.$cfg_name array; config file is empty" WARNING
+        return 1
+    fi
+
+    if ! touch "$mdadm_conf" 2> /dev/null; then
+        verbose "($cfg) skipping mdadm.$cfg_name array; can't touch '$mdadm_conf'" ERROR
+        return 1
+    fi
+
+    local array device devices name uuid
+
+    config_get name "$cfg" name
+    config_get device "$cfg" device
+    config_get uuid "$cfg" uuid
+
+    config_list_foreach "$cfg" devices append_list_item devices " "
+    [ -n "$devices" ] && printf "DEVICE %s\n" "$devices" >> $mdadm_conf
+
+    if [ -z "$device" ] || [ -z "$uuid$name" ]; then
+        verbose "($cfg) skipping mdadm.$cfg_name array; no device, uuid, or name" WARNING
+        return 1
+    fi
+
+    [ -n "$uuid" ] && append array "uuid=$uuid"
+    [ -n "$name" ] && append array "name=$name"
+
+    append_option array "$cfg" super_minor
+    append_option array "$cfg" spares
+    append_option array "$cfg" spare_group
+    append_option array "$cfg" bitmap
+    append_option array "$cfg" container
+    append_option array "$cfg" member
+    append_option array "$cfg" devices devices ","
+
+    printf "ARRAY %s %s\n" "$device" "$array" >> $mdadm_conf
+}
+
+reload_service() {
+    while read line; do echo $line; done <<< "$(echo hello; echo world)"
+    # running start_service() on reload should be OK in all modes, except manual configs.
+    # for auto & none, start_service() already rescans for hotplugged devices, add new arrays, etc.
+    # could check for the configured mode & call appropriately?  doing nothing is safer; todo: test & resolve
+    verbose "reload_service called, ignoring" NOTICE
+    return 0
 }
 
 start_service() {
-	local email
+    local config config_detail config_file config_level config_mode config_rc config_state config_verbose mdadm_conf
+
+    # mdadm.global specific locals
+    local alert_program email email_from mail_program mdadm_args monitor_frequency
+
+    config_verbose=$(uci_get mdadm.global.verbose 2> /dev/null | awk '{print tolower($1)}')
+    if [ "$config_verbose" == "1" ] || [ "$config_verbose" == "on" ] || [ "$config_verbose" == "true" ]; then
+        VERBOSE=1 # turn verbose on globally
+        config_verbose=1
+        mdadm_args="--verbose"
+    else
+        unset -v config_verbose
+        mdadm_args="--quiet"
+    fi
+
+    verbose "start_service $@" INFO
+
+    config_rc=0
+    config_detail="start"
+    config_level="INFO"
+    config_mode="service"
+
+    config=$(uci_get mdadm.global.config 2> /dev/null)
+    if [ -z "$config" ]; then
+        # per PR1713 discussion; this works very well for the majority of use cases; let mdadm do the heavy lifting.
+        # none is (Auto Assemble; or no --config); see mdadm(8), default
+        config='none'
+        config_detail="mdadm.global.config value is empty"
+        config_state='stateless'
+        config_mode="default"
+        config_level='OK'
+    else
+        # experts only
 
-	mkdir -p "${CONF%/*}"
-	printf "# Autogenerated from /etc/config/mdadm, do not edit!\n" > $CONF
+        config_mode="manual"
 
-	config_load mdadm
-	config_foreach mdadm_common mdadm
-	config_foreach mdadm_array array
+        # check file values first, to preserve case of file name values
+        if [ "${config:0:1}" == "/" ]; then
+            config_state='stateful' # all types of file configs are stateful
 
-	$PROG --assemble --scan --config="$CONF"
+            if [ -d "$config" ] && [ -r "$config" ]; then
+                local config_file_count=0
+                for config_file in ${config}/*.conf; do
+                    if [ -r "$config_file" ]; then
+                        let config_file_count=$config_file_count+1
+                    fi
+                done
+                if [ $config_file_count -eq 0 ]; then
+                    config_level="WARNING"
+                else
+                    config_level="OK"
+                fi
+                config_detail="directory found with $config_file_count readable .conf files"
+            else
+                if [ -w "$config" ]; then
+                    if [ -s "$config" ]; then
+                        # regardless, this will rely on mdadm for final validation; for informational purposes ...
+                        grep -E '^((DEVICE){1}(\ |\t)(.*)(/dev/|containers|partitions))' "$config" &> /dev/null # pattern per mdadm(8)
+                        if [ $? -eq 0 ]; then
+                            config_detail="file found, readable with a ^DEVICE"
+                            config_level="OK"
+                        else
+                            config_detail="file found, readable without a ^DEVICE"
+                            config_level="WARNING"
+                        fi
+                    else
+                        config_detail="file found, writable and empty"
+                        config_level="OK"
+                    fi
+                else
+                    config_detail="file not found, unwritable"
+                    config_level="FATAL"
+                    config_rc=1
+                fi
+            fi
+        else
+            config_mode="dynamic"
 
-	procd_open_instance
-	procd_set_param command "$PROG" --monitor --syslog --scan --config="$CONF"
-	procd_close_instance
+            # allow static values in mixed case; convert to lower
+            config="$(awk -v config="$config" 'BEGIN{print tolower(config)}')"
+            if [ "$config" == "containers" ] || [ "$config" == "none" ] || [ "$config" == "partition" ]; then
+                # pass through to mdadm --config=
+                config_detail="dynamic; uci static key value"
+                config_level="OK"
+                config_state='stateless'
+            else
+                if [ "$config" == "auto" ] || [ "$config" == "uci" ]; then
+                    config_detail="dynamic; $config config"
+                    config_level="OK"
+                    config_state='stateful'
+                    mdadm_conf="$TMP_FILE"
+                else
+                    config_detail="invalid; unsupported uci config key value"
+                    config_level="FATAL"
+                    config_state='stateful'
+                    config_rc=1
+                fi
+            fi
+        fi
+    fi
+
+    # final safety & functional checks
+
+    # check for fatality
+    if [ -z "$config" ]; then
+        config="${config}?"
+        config_detail="$config_detail (sorry, something went wrong; check the config settings)"
+        config_level="FATAL"
+        config_mode="${config_mode}?"
+        config_state="${config_state}?"
+        config_rc=1
+    fi
+
+    # Prefer mdadm.global.email; only one is allowed and can be an --email argument per mdadm.conf(5)
+    email=$(uci_get mdadm.global.email 2> /dev/null)
+
+    # mdadm (or postfix?) bug; workaround.  mdadm 4.0 for 18.06.1 has a compiled in default of '/usr/lib/sendmail -t'.
+    # There's no configurable way to change it and mdadm must be recompiled differently for Openwrt, or posfix should
+    # add the link. In 18.06.1, postfix 3.3.0-1 installs sendmail in /usr/sbin; mdadm complains & no mail is delivered.
+    # Other distro's postfix pkg typically installs this link ... or one in /etc/alternatives.
+    # Since mdadm needs it, I'm adding it here to be sure mdadm can send email if there's a /usr/sbin/sendmail.
+
+    # There's really no point in making mdadm's compiled in sendmail configurable via uci.
+    mail_program="/usr/lib/sendmail"
+    if [ -x /usr/sbin/sendmail ] && [ ! -e "$mail_program" ]; then
+        # a sym link will suffice
+        ln -s /usr/sbin/sendmail "$mail_program"
+        if [ $? -ne 0 ]; then
+            verbose "ln -s /usr/bin/sendmail /usr/lib/sendmail failed" WARNING
+        fi
+    fi
+
+    if [ ! -x "$mail_program" ]; then
+        verbose "disabling email; mail program '/usr/lib/sendmail' not found executable (install postfix)" WARNING
+        email=""
+    fi
+
+    if [ "$config_state" == "stateful" ] && [ -n "$mdadm_conf" ]; then
+        if mkdir -p "${mdadm_conf%/*}" &> /dev/null; then
+            printf "# Autogenerated from /etc/init.d/mdadm, do not edit!\n" > $mdadm_conf
+
+            # Use mdadm.global.email_from only if there's a valid mta; only one is allowed per mdadm.conf(5)
+            # todo: see what other mtas Openwrt has in their opkg repos & maybe support others
+            if [ -x "$mail_program" ]; then
+                email_from=$(uci_get mdadm.global.email_from 2> /dev/null)
+            fi
+
+            if [ "$config" == "auto" ]; then
+                # stateful mdadm.conf auto configuration
+                if ! mdadm_conf_auto "$mdadm_conf"; then
+                    #there's quite a bit of logic & error handling in mdadm_conf_auto; if it doesn't return 0 then it's a fatality
+                    config_detail="$config_detail (couldn't find any meta devices; check connections, or try stateless autoconfig)"
+                    config_level="FATAL"
+                    config_rc=1
+                fi
+            else
+                # stateful mdadm.conf uci configuration
+
+                # load uci config from /etc/config/mdadm
+                config_load mdadm
+
+                # This is how mdadm uci mdadm config sections should be named, like fstab does with 'mount'.
+                # The included uci /etc/config/mdadm provides more documentation & direction.
+                config_foreach mdadm_conf_uci array "$mdadm_conf"
+
+                # The unlabled mdadm. at mdadm[0] section should be (is now) deprecated.
+                # It's more difficult to document how to use, redundant, and over complicated this init configuration.
+
+                # Confused; originally config_foreach?
+                # It's possible to specify multiple mdadm sections with array options in all sections.
+                # Thus multiple option emails which could result in multiple MAILADDR being appended to mdadm.conf.
+                # That confuses mdadm.
+
+                # The following code is here to prevent regressions.
+
+                config_foreach mdadm_conf_uci mdadm "$mdadm_conf"
+
+                # For backward compatibility; this will allow an mdadm. at mdadm[0] section's option email.
+                # (only if mdadm.global.email is not set; again, prefer mdadm.global.email)
+                #
+                # bug fixed. The first legacy mdadm section option email will be used.
+                # a better fix would be to *only* support array sections.
+                #
+                [ -z "$email" ] && [ -x "$mail_program" ] && email=$(uci_get mdadm. at mdadm[0].email 2> /dev/null)
+                # email_from is a new feature; was not previously handled; no need to and please don't backport
+
+            fi
+
+            # This is nice feature to have to get mdadm mails through spam filters, etc.
+            # Too bad mdadm (4.0) doesn't have an argument for it.
+            # Maybe mdadm 4.1 will ... todo: revisit when making mdadm 4.1 & it's in Openwrt mainline.
+            # This tests successfully with the postfix workaround above & mdadm 4.0.
+            if [ -x "$mail_program" ]; then
+                printf "MAILFROM %s\n" "$email_from" >> $mdadm_conf # only supported via stateful configs; see mdadm.conf(5)
+            fi
+
+            if [ -n "$config_verbose" ] && [ -r "$mdadm_conf" ]; then
+                verbose "mdadm_conf = $mdadm_conf (config_verbose=$config_verbose)" INFO
+                verbose "---cut $mdadm_conf cut---" INFO
+                while read line; do
+                    verbose "$line" INFO
+                done < "$mdadm_conf"
+                unset -v line
+                verbose "---cut $mdadm_conf cut---" INFO
+            fi
+
+        else
+            config_detail="$config_detail (mkdir failed; check permissions)"
+            config_level="FATAL"
+            config_rc=1
+        fi
+    fi
+
+    if [ $config_rc -ne 0 ]; then
+        # FATAL
+        verbose "$config_state,$config_mode config='$config', $config_detail" "$config_level" INFO
+        [ -n "$mdadm_conf" ] && [ -w "$mdadm_conf" ] && rm -f "$mdadm_conf"
+        exit $config_rc
+    fi
+
+    # Good to go, no more fatal exits, finish getting global & setting local values ... they're all optional.
+
+    mdadm_args="$mdadm_args --scan"
+
+    if [ -n "$mdadm_conf" ]; then
+        # mdadm.global.config </file>
+        mdadm_args="$mdadm_args --config=$mdadm_conf"
+    else
+        # mdadm.global.config all (containers, partitions, etc), except none
+        [ -n "$config" ] && [ "$config" != 'none' ] && mdadm_args="$mdadm_args --config=$config"
+    fi
+
+    local assemble_count assemble_rc
+
+    assemble_count=$($PROG --detail --brief --scan 2> /dev/null | wc -l)
+    verbose "$assemble_count arrays are currently assembled" INFO
+
+    # setup assembly mode
+
+    verbose "(assemble) '$PROG --assemble $mdadm_args'" INFO
+    $PROG --assemble $mdadm_args &> /dev/null
+    assemble_rc=$?
+
+    if [ $assemble_rc -eq 0 ]; then
+        verbose "all arrays assembled successfully" OK
+        if [ -n "$config_verbose" ]; then
+            >/var/log/mdadm.detail
+            local assemble_dev assemble_devs=$($PROG --detail --brief --scan | awk '{print $2}')
+            for assemble_dev in $assemble_devs; do
+                printf "\n" >> /var/log/mdadm.detail
+                $PROG --verbose --detail $assemble_dev >> /var/log/mdadm.detail
+                printf "\n" >> /var/log/mdadm.detail
+            done
+            unset -v assemble_dev
+            while read line; do
+                verbose "$line" INFO
+            done < "/var/log/mdadm.detail"
+            unset -v line
+        fi
+    else
+        if [ $assemble_count -eq 0 ]; then
+            verbose "no arrays assembled successfully" ERROR
+        else
+            verbose "no new arrays need assembly" NOTICE
+        fi
+    fi
+
+    # setup monitor mode
+
+    alert_program=$(uci_get mdadm.global.alert_program 2> /dev/null)
+    if [ -n "$alert_program" ]; then
+        if [ -x "$alert_program" ]; then
+            mdadm_args="$mdadm_args --alert=$alert_program"
+        else
+            verbose "disabling alerts; alert_progam '$alert_program' not found executable" WARNING
+        fi
+    fi
+
+    [ -n "$email" ] && mdadm_args="$mdadm_args --mail=$email"
+
+    monitor_frequency=$(uci_get mdadm.global.monitor_frequency 2> /dev/null | sed -e 's/[^0-9]*//g')
+    if [ -n "$monitor_frequency" ]; then
+        mdadm_args="$mdadm_args --delay=$monitor_frequency"
+        verbose "setting monitor frequency to '$monitor_frequency' seconds"
+    fi
+
+    verbose "(monitor) '$PROG --monitor --syslog $mdadm_args'" INFO
+
+    # /etc/rc.common doesn't like valid sh constructs like while read line; do echo $line; done <<< "$(echo hello; echo world)" # 8|
+    # Taking the time machine back to sh is rough enough as it is ... I need to better understand its purpose. I spent too much time
+    # in /lib/functions.  It's all circa 2006-2013.  Yikes.  Where's the man pages?  Or even code comments?  It would've been way
+    # easier just to do *everything* the good ol' sysvinit fashioned way, or use systemd.  Just a gripe, I really do like OpenWrt.
+    procd_open_instance
+    procd_set_param command "$PROG" --monitor --syslog $mdadm_args
+    procd_close_instance
+
+    verbose "$config_state,$config_mode config=$config, $config_detail complete" "$config_level"
 }
 
 stop_service() {
-	$PROG --stop --scan
+    $PROG --stop --scan
+    echo "here VERBOSE=$VERBOSE"
+    if [ $? -eq 0 ]; then
+        verbose "'$PROG --stop --scan' stop_service succeeded" OK
+    else
+        verbose "'$PROG --stop --scan' stop_service failed" ERROR
+    fi
 }
-
-- 
1.8.3.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Tue Feb 26 21:52:04 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Wed, 27 Feb 2019 02:52:04 +0000
Subject: [OpenWrt-Devel] [PATCH libubox] blobmsg_json:
 blobmsg_format_string: do not escape '/'
Message-ID: <20190227025205.12016-1-yszhou4tech@gmail.com>

Resolves FS#2147

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 blobmsg_json.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/blobmsg_json.c b/blobmsg_json.c
index ca9dd1a..59a4b31 100644
--- a/blobmsg_json.c
+++ b/blobmsg_json.c
@@ -185,7 +185,6 @@ static void blobmsg_format_string(struct strbuf *s, const char *str)
 			break;
 		case '"':
 		case '\\':
-		case '/':
 			escape = *p;
 			break;
 		default:

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Wed Feb 27 00:44:11 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Wed, 27 Feb 2019 05:44:11 +0000
Subject: [OpenWrt-Devel] [PATCH 1/2] busybox: unindent busybox Config.in
Message-ID: <20190227054412.29935-1-yszhou4tech@gmail.com>

This is to align with upstream change 72089cf ("config: deindent all
help texts") and to make the follow-up change syncing Config.in files
with current busybox version more reviewable

It was made with the following commands

	cd package/utils/busybox/config
	find . -name 'Config.in' | xargs sed -ir -e 's/^\t  \([^ ]\)/\t\1/'

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 .../utils/busybox/config/archival/Config.in   | 254 +++----
 .../busybox/config/console-tools/Config.in    |  62 +-
 .../utils/busybox/config/coreutils/Config.in  | 444 +++++------
 .../busybox/config/debianutils/Config.in      |  36 +-
 .../utils/busybox/config/e2fsprogs/Config.in  |  14 +-
 .../config/e2fsprogs/old_e2fsprogs/Config.in  |  34 +-
 .../utils/busybox/config/editors/Config.in    | 126 ++--
 .../utils/busybox/config/findutils/Config.in  | 100 +--
 package/utils/busybox/config/init/Config.in   | 138 ++--
 package/utils/busybox/config/libbb/Config.in  | 324 ++++----
 .../utils/busybox/config/loginutils/Config.in | 252 +++----
 .../utils/busybox/config/mailutils/Config.in  |  24 +-
 .../utils/busybox/config/miscutils/Config.in  | 402 +++++-----
 .../utils/busybox/config/modutils/Config.in   | 174 ++---
 .../utils/busybox/config/networking/Config.in | 710 +++++++++---------
 .../busybox/config/networking/udhcp/Config.in | 132 ++--
 .../utils/busybox/config/printutils/Config.in |   6 +-
 package/utils/busybox/config/procps/Config.in | 136 ++--
 package/utils/busybox/config/runit/Config.in  |  48 +-
 .../utils/busybox/config/selinux/Config.in    |  42 +-
 package/utils/busybox/config/shell/Config.in  | 278 +++----
 .../utils/busybox/config/sysklogd/Config.in   | 126 ++--
 .../utils/busybox/config/util-linux/Config.in | 628 ++++++++--------
 .../config/util-linux/volume_id/Config.in     |  44 +-
 24 files changed, 2267 insertions(+), 2267 deletions(-)

diff --git a/package/utils/busybox/config/archival/Config.in b/package/utils/busybox/config/archival/Config.in
index 3ea8353de6..53e81e0cd9 100644
--- a/package/utils/busybox/config/archival/Config.in
+++ b/package/utils/busybox/config/archival/Config.in
@@ -30,52 +30,52 @@ config BUSYBOX_CONFIG_AR
 	bool "ar"
 	default BUSYBOX_DEFAULT_AR  # needs to be improved to be able to replace binutils ar
 	help
-	  ar is an archival utility program used to create, modify, and
-	  extract contents from archives. In practice, it is used exclusively
-	  for object module archives used by compilers.
+	ar is an archival utility program used to create, modify, and
+	extract contents from archives. In practice, it is used exclusively
+	for object module archives used by compilers.
 
-	  On an x86 system, the ar applet adds about 1K.
+	On an x86 system, the ar applet adds about 1K.
 
-	  Unless you have a specific application which requires ar, you should
-	  probably say N here: most compilers come with their own ar utility.
+	Unless you have a specific application which requires ar, you should
+	probably say N here: most compilers come with their own ar utility.
 
 config BUSYBOX_CONFIG_FEATURE_AR_LONG_FILENAMES
 	bool "Support long filenames (not needed for debs)"
 	default BUSYBOX_DEFAULT_FEATURE_AR_LONG_FILENAMES
 	depends on BUSYBOX_CONFIG_AR
 	help
-	  By default the ar format can only store the first 15 characters
-	  of the filename, this option removes that limitation.
-	  It supports the GNU ar long filename method which moves multiple long
-	  filenames into a the data section of a new ar entry.
+	By default the ar format can only store the first 15 characters
+	of the filename, this option removes that limitation.
+	It supports the GNU ar long filename method which moves multiple long
+	filenames into a the data section of a new ar entry.
 
 config BUSYBOX_CONFIG_FEATURE_AR_CREATE
 	bool "Support archive creation"
 	default BUSYBOX_DEFAULT_FEATURE_AR_CREATE
 	depends on BUSYBOX_CONFIG_AR
 	help
-	  This enables archive creation (-c and -r) with busybox ar.
+	This enables archive creation (-c and -r) with busybox ar.
 config BUSYBOX_CONFIG_UNCOMPRESS
 	bool "uncompress"
 	default BUSYBOX_DEFAULT_UNCOMPRESS  # ancient
 	help
-	  uncompress is used to decompress archives created by compress.
-	  Not much used anymore, replaced by gzip/gunzip.
+	uncompress is used to decompress archives created by compress.
+	Not much used anymore, replaced by gzip/gunzip.
 config BUSYBOX_CONFIG_GUNZIP
 	bool "gunzip"
 	default BUSYBOX_DEFAULT_GUNZIP
 	select BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS
 	help
-	  gunzip is used to decompress archives created by gzip.
-	  You can use the `-t' option to test the integrity of
-	  an archive, without decompressing it.
+	gunzip is used to decompress archives created by gzip.
+	You can use the `-t' option to test the integrity of
+	an archive, without decompressing it.
 
 config BUSYBOX_CONFIG_ZCAT
 	bool "zcat"
 	default BUSYBOX_DEFAULT_ZCAT
 	select BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS
 	help
-	  Alias to "gunzip -c".
+	Alias to "gunzip -c".
 
 config BUSYBOX_CONFIG_FEATURE_GUNZIP_LONG_OPTIONS
 	bool "Enable long options"
@@ -86,89 +86,89 @@ config BUSYBOX_CONFIG_BUNZIP2
 	default BUSYBOX_DEFAULT_BUNZIP2
 	select BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS
 	help
-	  bunzip2 is a compression utility using the Burrows-Wheeler block
-	  sorting text compression algorithm, and Huffman coding. Compression
-	  is generally considerably better than that achieved by more
-	  conventional LZ77/LZ78-based compressors, and approaches the
-	  performance of the PPM family of statistical compressors.
+	bunzip2 is a compression utility using the Burrows-Wheeler block
+	sorting text compression algorithm, and Huffman coding. Compression
+	is generally considerably better than that achieved by more
+	conventional LZ77/LZ78-based compressors, and approaches the
+	performance of the PPM family of statistical compressors.
 
-	  Unless you have a specific application which requires bunzip2, you
-	  should probably say N here.
+	Unless you have a specific application which requires bunzip2, you
+	should probably say N here.
 
 config BUSYBOX_CONFIG_BZCAT
 	bool "bzcat"
 	default BUSYBOX_DEFAULT_BZCAT
 	select BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS
 	help
-	  Alias to "bunzip2 -c".
+	Alias to "bunzip2 -c".
 config BUSYBOX_CONFIG_UNLZMA
 	bool "unlzma"
 	default BUSYBOX_DEFAULT_UNLZMA
 	help
-	  unlzma is a compression utility using the Lempel-Ziv-Markov chain
-	  compression algorithm, and range coding. Compression
-	  is generally considerably better than that achieved by the bzip2
-	  compressors.
+	unlzma is a compression utility using the Lempel-Ziv-Markov chain
+	compression algorithm, and range coding. Compression
+	is generally considerably better than that achieved by the bzip2
+	compressors.
 
-	  The BusyBox unlzma applet is limited to decompression only.
-	  On an x86 system, this applet adds about 4K.
+	The BusyBox unlzma applet is limited to decompression only.
+	On an x86 system, this applet adds about 4K.
 
 config BUSYBOX_CONFIG_LZCAT
 	bool "lzcat"
 	default BUSYBOX_DEFAULT_LZCAT
 	help
-	  unlzma is a compression utility using the Lempel-Ziv-Markov chain
-	  compression algorithm, and range coding. Compression
-	  is generally considerably better than that achieved by the bzip2
-	  compressors.
+	unlzma is a compression utility using the Lempel-Ziv-Markov chain
+	compression algorithm, and range coding. Compression
+	is generally considerably better than that achieved by the bzip2
+	compressors.
 
-	  The BusyBox unlzma applet is limited to decompression only.
-	  On an x86 system, this applet adds about 4K.
+	The BusyBox unlzma applet is limited to decompression only.
+	On an x86 system, this applet adds about 4K.
 
 config BUSYBOX_CONFIG_LZMA
 	bool "lzma -d"
 	default BUSYBOX_DEFAULT_LZMA
 	help
-	  Enable this option if you want commands like "lzma -d" to work.
-	  IOW: you'll get lzma applet, but it will always require -d option.
+	Enable this option if you want commands like "lzma -d" to work.
+	IOW: you'll get lzma applet, but it will always require -d option.
 
 config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
 	bool "Optimize for speed"
 	default BUSYBOX_DEFAULT_FEATURE_LZMA_FAST
 	depends on BUSYBOX_CONFIG_UNLZMA || BUSYBOX_CONFIG_LZCAT || BUSYBOX_CONFIG_LZMA
 	help
-	  This option reduces decompression time by about 25% at the cost of
-	  a 1K bigger binary.
+	This option reduces decompression time by about 25% at the cost of
+	a 1K bigger binary.
 config BUSYBOX_CONFIG_UNXZ
 	bool "unxz"
 	default BUSYBOX_DEFAULT_UNXZ
 	help
-	  unxz is a unlzma successor.
+	unxz is a unlzma successor.
 
 config BUSYBOX_CONFIG_XZCAT
 	bool "xzcat"
 	default BUSYBOX_DEFAULT_XZCAT
 	help
-	  Alias to "unxz -c".
+	Alias to "unxz -c".
 
 config BUSYBOX_CONFIG_XZ
 	bool "xz -d"
 	default BUSYBOX_DEFAULT_XZ
 	help
-	  Enable this option if you want commands like "xz -d" to work.
-	  IOW: you'll get xz applet, but it will always require -d option.
+	Enable this option if you want commands like "xz -d" to work.
+	IOW: you'll get xz applet, but it will always require -d option.
 config BUSYBOX_CONFIG_BZIP2
 	bool "bzip2"
 	default BUSYBOX_DEFAULT_BZIP2
 	help
-	  bzip2 is a compression utility using the Burrows-Wheeler block
-	  sorting text compression algorithm, and Huffman coding. Compression
-	  is generally considerably better than that achieved by more
-	  conventional LZ77/LZ78-based compressors, and approaches the
-	  performance of the PPM family of statistical compressors.
+	bzip2 is a compression utility using the Burrows-Wheeler block
+	sorting text compression algorithm, and Huffman coding. Compression
+	is generally considerably better than that achieved by more
+	conventional LZ77/LZ78-based compressors, and approaches the
+	performance of the PPM family of statistical compressors.
 
-	  Unless you have a specific application which requires bzip2, you
-	  should probably say N here.
+	Unless you have a specific application which requires bzip2, you
+	should probably say N here.
 
 config BUSYBOX_CONFIG_BZIP2_SMALL
 	int "Trade size for speed (0:fast 9:slow)"
@@ -176,72 +176,72 @@ config BUSYBOX_CONFIG_BZIP2_SMALL
 	range 0 9
 	depends on BUSYBOX_CONFIG_BZIP2
 	help
-	  0 is faster but larger
-	  9 is smaller but slower
+	0 is faster but larger
+	9 is smaller but slower
 
 config BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS
 	bool "Enable decompression"
 	default BUSYBOX_DEFAULT_FEATURE_BZIP2_DECOMPRESS
 	depends on BUSYBOX_CONFIG_BZIP2 || BUSYBOX_CONFIG_BUNZIP2 || BUSYBOX_CONFIG_BZCAT
 	help
-	  Enable -d (--decompress) and -t (--test) options for bzip2.
-	  This will be automatically selected if bunzip2 or bzcat is
-	  enabled.
+	Enable -d (--decompress) and -t (--test) options for bzip2.
+	This will be automatically selected if bunzip2 or bzcat is
+	enabled.
 config BUSYBOX_CONFIG_CPIO
 	bool "cpio"
 	default BUSYBOX_DEFAULT_CPIO
 	help
-	  cpio is an archival utility program used to create, modify, and
-	  extract contents from archives.
-	  cpio has 110 bytes of overheads for every stored file.
+	cpio is an archival utility program used to create, modify, and
+	extract contents from archives.
+	cpio has 110 bytes of overheads for every stored file.
 
-	  This implementation of cpio can extract cpio archives created in the
-	  "newc" or "crc" format.
+	This implementation of cpio can extract cpio archives created in the
+	"newc" or "crc" format.
 
-	  Unless you have a specific application which requires cpio, you
-	  should probably say N here.
+	Unless you have a specific application which requires cpio, you
+	should probably say N here.
 
 config BUSYBOX_CONFIG_FEATURE_CPIO_O
 	bool "Support archive creation"
 	default BUSYBOX_DEFAULT_FEATURE_CPIO_O
 	depends on BUSYBOX_CONFIG_CPIO
 	help
-	  This implementation of cpio can create cpio archives in the "newc"
-	  format only.
+	This implementation of cpio can create cpio archives in the "newc"
+	format only.
 
 config BUSYBOX_CONFIG_FEATURE_CPIO_P
 	bool "Support passthrough mode"
 	default BUSYBOX_DEFAULT_FEATURE_CPIO_P
 	depends on BUSYBOX_CONFIG_FEATURE_CPIO_O
 	help
-	  Passthrough mode. Rarely used.
+	Passthrough mode. Rarely used.
 config BUSYBOX_CONFIG_DPKG
 	bool "dpkg"
 	default BUSYBOX_DEFAULT_DPKG
 	select BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
 	help
-	  dpkg is a medium-level tool to install, build, remove and manage
-	  Debian packages.
+	dpkg is a medium-level tool to install, build, remove and manage
+	Debian packages.
 
-	  This implementation of dpkg has a number of limitations,
-	  you should use the official dpkg if possible.
+	This implementation of dpkg has a number of limitations,
+	you should use the official dpkg if possible.
 config BUSYBOX_CONFIG_DPKG_DEB
 	bool "dpkg_deb"
 	default BUSYBOX_DEFAULT_DPKG_DEB
 	select BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
 	help
-	  dpkg-deb unpacks and provides information about Debian archives.
+	dpkg-deb unpacks and provides information about Debian archives.
 
-	  This implementation of dpkg-deb cannot pack archives.
+	This implementation of dpkg-deb cannot pack archives.
 
-	  Unless you have a specific application which requires dpkg-deb,
-	  say N here.
+	Unless you have a specific application which requires dpkg-deb,
+	say N here.
 config BUSYBOX_CONFIG_GZIP
 	bool "gzip"
 	default BUSYBOX_DEFAULT_GZIP
 	help
-	  gzip is used to compress files.
-	  It's probably the most widely used UNIX compression program.
+	gzip is used to compress files.
+	It's probably the most widely used UNIX compression program.
 
 config BUSYBOX_CONFIG_FEATURE_GZIP_LONG_OPTIONS
 	bool "Enable long options"
@@ -254,73 +254,73 @@ config BUSYBOX_CONFIG_GZIP_FAST
 	range 0 2
 	depends on BUSYBOX_CONFIG_GZIP
 	help
-	  Enable big memory options for gzip.
-	  0: small buffers, small hash-tables
-	  1: larger buffers, larger hash-tables
-	  2: larger buffers, largest hash-tables
-	  Larger models may give slightly better compression
+	Enable big memory options for gzip.
+	0: small buffers, small hash-tables
+	1: larger buffers, larger hash-tables
+	2: larger buffers, largest hash-tables
+	Larger models may give slightly better compression
 
 config BUSYBOX_CONFIG_FEATURE_GZIP_LEVELS
 	bool "Enable compression levels"
 	default BUSYBOX_DEFAULT_FEATURE_GZIP_LEVELS
 	depends on BUSYBOX_CONFIG_GZIP
 	help
-	  Enable support for compression levels 4-9. The default level
-	  is 6. If levels 1-3 are specified, 4 is used.
-	  If this option is not selected, -N options are ignored and -9
-	  is used.
+	Enable support for compression levels 4-9. The default level
+	is 6. If levels 1-3 are specified, 4 is used.
+	If this option is not selected, -N options are ignored and -9
+	is used.
 
 config BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS
 	bool "Enable decompression"
 	default BUSYBOX_DEFAULT_FEATURE_GZIP_DECOMPRESS
 	depends on BUSYBOX_CONFIG_GZIP || BUSYBOX_CONFIG_GUNZIP || BUSYBOX_CONFIG_ZCAT
 	help
-	  Enable -d (--decompress) and -t (--test) options for gzip.
-	  This will be automatically selected if gunzip or zcat is
-	  enabled.
+	Enable -d (--decompress) and -t (--test) options for gzip.
+	This will be automatically selected if gunzip or zcat is
+	enabled.
 config BUSYBOX_CONFIG_LZOP
 	bool "lzop"
 	default BUSYBOX_DEFAULT_LZOP
 	help
-	  Lzop compression/decompresion.
+	Lzop compression/decompresion.
 
 config BUSYBOX_CONFIG_UNLZOP
 	bool "unlzop"
 	default BUSYBOX_DEFAULT_UNLZOP  # INCOMPAT: upstream lzop does not provide such tool
 	help
-	  Lzop decompresion.
+	Lzop decompresion.
 
 config BUSYBOX_CONFIG_LZOPCAT
 	bool "lzopcat"
 	default BUSYBOX_DEFAULT_LZOPCAT  # INCOMPAT: upstream lzop does not provide such tool
 	help
-	  Alias to "unlzop -c".
+	Alias to "unlzop -c".
 
 config BUSYBOX_CONFIG_LZOP_COMPR_HIGH
 	bool "lzop compression levels 7,8,9 (not very useful)"
 	default BUSYBOX_DEFAULT_LZOP_COMPR_HIGH
 	depends on BUSYBOX_CONFIG_LZOP || BUSYBOX_CONFIG_UNLZOP || BUSYBOX_CONFIG_LZOPCAT
 	help
-	  High levels (7,8,9) of lzop compression. These levels
-	  are actually slower than gzip at equivalent compression ratios
-	  and take up 3.2K of code.
+	High levels (7,8,9) of lzop compression. These levels
+	are actually slower than gzip at equivalent compression ratios
+	and take up 3.2K of code.
 config BUSYBOX_CONFIG_RPM
 	bool "rpm"
 	default BUSYBOX_DEFAULT_RPM
 	help
-	  Mini RPM applet - queries and extracts RPM packages.
+	Mini RPM applet - queries and extracts RPM packages.
 config BUSYBOX_CONFIG_RPM2CPIO
 	bool "rpm2cpio"
 	default BUSYBOX_DEFAULT_RPM2CPIO
 	help
-	  Converts a RPM file into a CPIO archive.
+	Converts a RPM file into a CPIO archive.
 config BUSYBOX_CONFIG_TAR
 	bool "tar"
 	default BUSYBOX_DEFAULT_TAR
 	help
-	  tar is an archiving program. It's commonly used with gzip to
-	  create compressed archives. It's probably the most widely used
-	  UNIX archive program.
+	tar is an archiving program. It's commonly used with gzip to
+	create compressed archives. It's probably the most widely used
+	UNIX archive program.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
 	bool "Enable long options"
@@ -337,35 +337,35 @@ config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
 	default BUSYBOX_DEFAULT_FEATURE_TAR_AUTODETECT
 	depends on BUSYBOX_CONFIG_TAR && (BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z || BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ || BUSYBOX_CONFIG_FEATURE_SEAMLESS_BZ2 || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA || BUSYBOX_CONFIG_FEATURE_SEAMLESS_XZ)
 	help
-	  With this option tar can automatically detect compressed
-	  tarballs. Currently it works only on files (not pipes etc).
+	With this option tar can automatically detect compressed
+	tarballs. Currently it works only on files (not pipes etc).
 
 config BUSYBOX_CONFIG_FEATURE_TAR_FROM
 	bool "Enable -X (exclude from) and -T (include from) options)"
 	default BUSYBOX_DEFAULT_FEATURE_TAR_FROM
 	depends on BUSYBOX_CONFIG_TAR
 	help
-	  If you enable this option you'll be able to specify
-	  a list of files to include or exclude from an archive.
+	If you enable this option you'll be able to specify
+	a list of files to include or exclude from an archive.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY
 	bool "Support old tar header format"
 	default BUSYBOX_DEFAULT_FEATURE_TAR_OLDGNU_COMPATIBILITY
 	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
 	help
-	  This option is required to unpack archives created in
-	  the old GNU format; help to kill this old format by
-	  repacking your ancient archives with the new format.
+	This option is required to unpack archives created in
+	the old GNU format; help to kill this old format by
+	repacking your ancient archives with the new format.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY
 	bool "Enable untarring of tarballs with checksums produced by buggy Sun tar"
 	default BUSYBOX_DEFAULT_FEATURE_TAR_OLDSUN_COMPATIBILITY
 	depends on BUSYBOX_CONFIG_TAR || BUSYBOX_CONFIG_DPKG
 	help
-	  This option is required to unpack archives created by some old
-	  version of Sun's tar (it was calculating checksum using signed
-	  arithmetic). It is said to be fixed in newer Sun tar, but "old"
-	  tarballs still exist.
+	This option is required to unpack archives created by some old
+	version of Sun's tar (it was calculating checksum using signed
+	arithmetic). It is said to be fixed in newer Sun tar, but "old"
+	tarballs still exist.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_GNU_EXTENSIONS
 	bool "Support GNU tar extensions (long filenames)"
@@ -377,18 +377,18 @@ config BUSYBOX_CONFIG_FEATURE_TAR_TO_COMMAND
 	default BUSYBOX_DEFAULT_FEATURE_TAR_TO_COMMAND
 	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_FEATURE_TAR_LONG_OPTIONS
 	help
-	  If you enable this option you'll be able to instruct tar to send
-	  the contents of each extracted file to the standard input of an
-	  external program.
+	If you enable this option you'll be able to instruct tar to send
+	the contents of each extracted file to the standard input of an
+	external program.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_UNAME_GNAME
 	bool "Enable use of user and group names"
 	default BUSYBOX_DEFAULT_FEATURE_TAR_UNAME_GNAME
 	depends on BUSYBOX_CONFIG_TAR
 	help
-	  Enable use of user and group names in tar. This affects contents
-	  listings (-t) and preserving permissions when unpacking (-p).
-	  +200 bytes.
+	Enable use of user and group names in tar. This affects contents
+	listings (-t) and preserving permissions when unpacking (-p).
+	+200 bytes.
 
 config BUSYBOX_CONFIG_FEATURE_TAR_NOPRESERVE_TIME
 	bool "Enable -m (do not preserve time) GNU option"
@@ -400,26 +400,26 @@ config BUSYBOX_CONFIG_FEATURE_TAR_SELINUX
 	default BUSYBOX_DEFAULT_FEATURE_TAR_SELINUX
 	depends on BUSYBOX_CONFIG_TAR && BUSYBOX_CONFIG_SELINUX
 	help
-	  With this option busybox supports restoring SELinux labels
-	  when extracting files from tar archives.
+	With this option busybox supports restoring SELinux labels
+	when extracting files from tar archives.
 config BUSYBOX_CONFIG_UNZIP
 	bool "unzip"
 	default BUSYBOX_DEFAULT_UNZIP
 	help
-	  unzip will list or extract files from a ZIP archive,
-	  commonly found on DOS/WIN systems. The default behavior
-	  (with no options) is to extract the archive into the
-	  current directory.
+	unzip will list or extract files from a ZIP archive,
+	commonly found on DOS/WIN systems. The default behavior
+	(with no options) is to extract the archive into the
+	current directory.
 
 config BUSYBOX_CONFIG_FEATURE_UNZIP_CDF
 	bool "Read and use Central Directory data"
 	default BUSYBOX_DEFAULT_FEATURE_UNZIP_CDF
 	depends on BUSYBOX_CONFIG_UNZIP
 	help
-	  If you know that you only need to deal with simple
-	  ZIP files without deleted/updated files, SFX archives etc,
-	  you can reduce code size by unselecting this option.
-	  To support less trivial ZIPs, say Y.
+	If you know that you only need to deal with simple
+	ZIP files without deleted/updated files, SFX archives etc,
+	you can reduce code size by unselecting this option.
+	To support less trivial ZIPs, say Y.
 
 config BUSYBOX_CONFIG_FEATURE_UNZIP_BZIP2
 	bool "Support compression method 12 (bzip2)"
diff --git a/package/utils/busybox/config/console-tools/Config.in b/package/utils/busybox/config/console-tools/Config.in
index dcc19a567d..69815efa57 100644
--- a/package/utils/busybox/config/console-tools/Config.in
+++ b/package/utils/busybox/config/console-tools/Config.in
@@ -11,66 +11,66 @@ config BUSYBOX_CONFIG_CHVT
 	default BUSYBOX_DEFAULT_CHVT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program is used to change to another terminal.
-	  Example: chvt 4 (change to terminal /dev/tty4)
+	This program is used to change to another terminal.
+	Example: chvt 4 (change to terminal /dev/tty4)
 config BUSYBOX_CONFIG_CLEAR
 	bool "clear"
 	default BUSYBOX_DEFAULT_CLEAR
 	help
-	  This program clears the terminal screen.
+	This program clears the terminal screen.
 config BUSYBOX_CONFIG_DEALLOCVT
 	bool "deallocvt"
 	default BUSYBOX_DEFAULT_DEALLOCVT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program deallocates unused virtual consoles.
+	This program deallocates unused virtual consoles.
 config BUSYBOX_CONFIG_DUMPKMAP
 	bool "dumpkmap"
 	default BUSYBOX_DEFAULT_DUMPKMAP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program dumps the kernel's keyboard translation table to
-	  stdout, in binary format. You can then use loadkmap to load it.
+	This program dumps the kernel's keyboard translation table to
+	stdout, in binary format. You can then use loadkmap to load it.
 config BUSYBOX_CONFIG_FGCONSOLE
 	bool "fgconsole"
 	default BUSYBOX_DEFAULT_FGCONSOLE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program prints active (foreground) console number.
+	This program prints active (foreground) console number.
 config BUSYBOX_CONFIG_KBD_MODE
 	bool "kbd_mode"
 	default BUSYBOX_DEFAULT_KBD_MODE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program reports and sets keyboard mode.
+	This program reports and sets keyboard mode.
 config BUSYBOX_CONFIG_LOADFONT
 	bool "loadfont"
 	default BUSYBOX_DEFAULT_LOADFONT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program loads a console font from standard input.
+	This program loads a console font from standard input.
 
 config BUSYBOX_CONFIG_SETFONT
 	bool "setfont"
 	default BUSYBOX_DEFAULT_SETFONT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Allows to load console screen map. Useful for i18n.
+	Allows to load console screen map. Useful for i18n.
 
 config BUSYBOX_CONFIG_FEATURE_SETFONT_TEXTUAL_MAP
 	bool "Support reading textual screen maps"
 	default BUSYBOX_DEFAULT_FEATURE_SETFONT_TEXTUAL_MAP
 	depends on BUSYBOX_CONFIG_SETFONT
 	help
-	  Support reading textual screen maps.
+	Support reading textual screen maps.
 
 config BUSYBOX_CONFIG_DEFAULT_SETFONT_DIR
 	string "Default directory for console-tools files"
 	default BUSYBOX_DEFAULT_DEFAULT_SETFONT_DIR
 	depends on BUSYBOX_CONFIG_SETFONT
 	help
-	  Directory to use if setfont's params are simple filenames
-	  (not /path/to/file or ./file). Default is "" (no default directory).
+	Directory to use if setfont's params are simple filenames
+	(not /path/to/file or ./file). Default is "" (no default directory).
 
 comment "Common options for loadfont and setfont"
 	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
@@ -89,44 +89,44 @@ config BUSYBOX_CONFIG_LOADKMAP
 	default BUSYBOX_DEFAULT_LOADKMAP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program loads a keyboard translation table from
-	  standard input.
+	This program loads a keyboard translation table from
+	standard input.
 config BUSYBOX_CONFIG_OPENVT
 	bool "openvt"
 	default BUSYBOX_DEFAULT_OPENVT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program is used to start a command on an unused
-	  virtual terminal.
+	This program is used to start a command on an unused
+	virtual terminal.
 config BUSYBOX_CONFIG_RESET
 	bool "reset"
 	default BUSYBOX_DEFAULT_RESET
 	help
-	  This program is used to reset the terminal screen, if it
-	  gets messed up.
+	This program is used to reset the terminal screen, if it
+	gets messed up.
 config BUSYBOX_CONFIG_RESIZE
 	bool "resize"
 	default BUSYBOX_DEFAULT_RESIZE
 	help
-	  This program is used to (re)set the width and height of your current
-	  terminal.
+	This program is used to (re)set the width and height of your current
+	terminal.
 
 config BUSYBOX_CONFIG_FEATURE_RESIZE_PRINT
 	bool "Print environment variables"
 	default BUSYBOX_DEFAULT_FEATURE_RESIZE_PRINT
 	depends on BUSYBOX_CONFIG_RESIZE
 	help
-	  Prints the newly set size (number of columns and rows) of
-	  the terminal.
-	  E.g.:
-	  COLUMNS=80;LINES=44;export COLUMNS LINES;
+	Prints the newly set size (number of columns and rows) of
+	the terminal.
+	E.g.:
+	COLUMNS=80;LINES=44;export COLUMNS LINES;
 config BUSYBOX_CONFIG_SETCONSOLE
 	bool "setconsole"
 	default BUSYBOX_DEFAULT_SETCONSOLE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program redirects the system console to another device,
-	  like the current tty while logged in via telnet.
+	This program redirects the system console to another device,
+	like the current tty while logged in via telnet.
 
 config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
 	bool "Enable long options"
@@ -137,19 +137,19 @@ config BUSYBOX_CONFIG_SETKEYCODES
 	default BUSYBOX_DEFAULT_SETKEYCODES
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program loads entries into the kernel's scancode-to-keycode
-	  map, allowing unusual keyboards to generate usable keycodes.
+	This program loads entries into the kernel's scancode-to-keycode
+	map, allowing unusual keyboards to generate usable keycodes.
 config BUSYBOX_CONFIG_SETLOGCONS
 	bool "setlogcons"
 	default BUSYBOX_DEFAULT_SETLOGCONS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This program redirects the output console of kernel messages.
+	This program redirects the output console of kernel messages.
 config BUSYBOX_CONFIG_SHOWKEY
 	bool "showkey"
 	default BUSYBOX_DEFAULT_SHOWKEY
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Shows keys pressed.
+	Shows keys pressed.
 
 endmenu
diff --git a/package/utils/busybox/config/coreutils/Config.in b/package/utils/busybox/config/coreutils/Config.in
index c4ef1f4fb7..5a36d34204 100644
--- a/package/utils/busybox/config/coreutils/Config.in
+++ b/package/utils/busybox/config/coreutils/Config.in
@@ -10,38 +10,38 @@ config BUSYBOX_CONFIG_BASENAME
 	bool "basename"
 	default BUSYBOX_DEFAULT_BASENAME
 	help
-	  basename is used to strip the directory and suffix from filenames,
-	  leaving just the filename itself. Enable this option if you wish
-	  to enable the 'basename' utility.
+	basename is used to strip the directory and suffix from filenames,
+	leaving just the filename itself. Enable this option if you wish
+	to enable the 'basename' utility.
 config BUSYBOX_CONFIG_CAT
 	bool "cat"
 	default BUSYBOX_DEFAULT_CAT
 	help
-	  cat is used to concatenate files and print them to the standard
-	  output. Enable this option if you wish to enable the 'cat' utility.
+	cat is used to concatenate files and print them to the standard
+	output. Enable this option if you wish to enable the 'cat' utility.
 
 config BUSYBOX_CONFIG_FEATURE_CATV
 	bool "cat -v[etA]"
 	default BUSYBOX_DEFAULT_FEATURE_CATV
 	depends on BUSYBOX_CONFIG_CAT
 	help
-	  Display nonprinting characters as escape sequences
+	Display nonprinting characters as escape sequences
 config BUSYBOX_CONFIG_CHGRP
 	bool "chgrp"
 	default BUSYBOX_DEFAULT_CHGRP
 	help
-	  chgrp is used to change the group ownership of files.
+	chgrp is used to change the group ownership of files.
 config BUSYBOX_CONFIG_CHMOD
 	bool "chmod"
 	default BUSYBOX_DEFAULT_CHMOD
 	help
-	  chmod is used to change the access permission of files.
+	chmod is used to change the access permission of files.
 config BUSYBOX_CONFIG_CHOWN
 	bool "chown"
 	default BUSYBOX_DEFAULT_CHOWN
 	help
-	  chown is used to change the user and/or group ownership
-	  of files.
+	chown is used to change the user and/or group ownership
+	of files.
 
 config BUSYBOX_CONFIG_FEATURE_CHOWN_LONG_OPTIONS
 	bool "Enable long options"
@@ -51,52 +51,52 @@ config BUSYBOX_CONFIG_CHROOT
 	bool "chroot"
 	default BUSYBOX_DEFAULT_CHROOT
 	help
-	  chroot is used to change the root directory and run a command.
-	  The default command is `/bin/sh'.
+	chroot is used to change the root directory and run a command.
+	The default command is `/bin/sh'.
 config BUSYBOX_CONFIG_CKSUM
 	bool "cksum"
 	default BUSYBOX_DEFAULT_CKSUM
 	help
-	  cksum is used to calculate the CRC32 checksum of a file.
+	cksum is used to calculate the CRC32 checksum of a file.
 config BUSYBOX_CONFIG_COMM
 	bool "comm"
 	default BUSYBOX_DEFAULT_COMM
 	help
-	  comm is used to compare two files line by line and return
-	  a three-column output.
+	comm is used to compare two files line by line and return
+	a three-column output.
 config BUSYBOX_CONFIG_CP
 	bool "cp"
 	default BUSYBOX_DEFAULT_CP
 	help
-	  cp is used to copy files and directories.
+	cp is used to copy files and directories.
 
 config BUSYBOX_CONFIG_FEATURE_CP_LONG_OPTIONS
 	bool "Enable long options"
 	default BUSYBOX_DEFAULT_FEATURE_CP_LONG_OPTIONS
 	depends on BUSYBOX_CONFIG_CP && BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  Enable long options.
-	  Also add support for --parents option.
+	Enable long options.
+	Also add support for --parents option.
 config BUSYBOX_CONFIG_CUT
 	bool "cut"
 	default BUSYBOX_DEFAULT_CUT
 	help
-	  cut is used to print selected parts of lines from
-	  each file to stdout.
+	cut is used to print selected parts of lines from
+	each file to stdout.
 config BUSYBOX_CONFIG_DATE
 	bool "date"
 	default BUSYBOX_DEFAULT_DATE
 	help
-	  date is used to set the system date or display the
-	  current time in the given format.
+	date is used to set the system date or display the
+	current time in the given format.
 
 config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
 	bool "Enable ISO date format output (-I)"
 	default BUSYBOX_DEFAULT_FEATURE_DATE_ISOFMT
 	depends on BUSYBOX_CONFIG_DATE
 	help
-	  Enable option (-I) to output an ISO-8601 compliant
-	  date/time string.
+	Enable option (-I) to output an ISO-8601 compliant
+	date/time string.
 
 # defaults to "no": stat's nanosecond field is a bit non-portable
 config BUSYBOX_CONFIG_FEATURE_DATE_NANO
@@ -105,119 +105,119 @@ config BUSYBOX_CONFIG_FEATURE_DATE_NANO
 	depends on BUSYBOX_CONFIG_DATE  # syscall(__NR_clock_gettime)
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Support %[num]N format specifier. Adds ~250 bytes of code.
+	Support %[num]N format specifier. Adds ~250 bytes of code.
 
 config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT
 	bool "Support weird 'date MMDDhhmm[[YY]YY][.ss]' format"
 	default BUSYBOX_DEFAULT_FEATURE_DATE_COMPAT
 	depends on BUSYBOX_CONFIG_DATE
 	help
-	  System time can be set by 'date -s DATE' and simply 'date DATE',
-	  but formats of DATE string are different. 'date DATE' accepts
-	  a rather weird MMDDhhmm[[YY]YY][.ss] format with completely
-	  unnatural placement of year between minutes and seconds.
-	  date -s (and other commands like touch -d) use more sensible
-	  formats (for one, ISO format YYYY-MM-DD hh:mm:ss.ssssss).
+	System time can be set by 'date -s DATE' and simply 'date DATE',
+	but formats of DATE string are different. 'date DATE' accepts
+	a rather weird MMDDhhmm[[YY]YY][.ss] format with completely
+	unnatural placement of year between minutes and seconds.
+	date -s (and other commands like touch -d) use more sensible
+	formats (for one, ISO format YYYY-MM-DD hh:mm:ss.ssssss).
 
-	  With this option off, 'date DATE' is 'date -s DATE' support
-	  the same format. With it on, 'date DATE' additionally supports
-	  MMDDhhmm[[YY]YY][.ss] format.
+	With this option off, 'date DATE' is 'date -s DATE' support
+	the same format. With it on, 'date DATE' additionally supports
+	MMDDhhmm[[YY]YY][.ss] format.
 config BUSYBOX_CONFIG_DD
 	bool "dd"
 	default BUSYBOX_DEFAULT_DD
 	help
-	  dd copies a file (from standard input to standard output,
-	  by default) using specific input and output blocksizes,
-	  while optionally performing conversions on it.
+	dd copies a file (from standard input to standard output,
+	by default) using specific input and output blocksizes,
+	while optionally performing conversions on it.
 
 config BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING
 	bool "Enable signal handling for status reporting"
 	default BUSYBOX_DEFAULT_FEATURE_DD_SIGNAL_HANDLING
 	depends on BUSYBOX_CONFIG_DD
 	help
-	  Sending a SIGUSR1 signal to a running `dd' process makes it
-	  print to standard error the number of records read and written
-	  so far, then to resume copying.
+	Sending a SIGUSR1 signal to a running `dd' process makes it
+	print to standard error the number of records read and written
+	so far, then to resume copying.
 
-	  $ dd if=/dev/zero of=/dev/null &
-	  $ pid=$!; kill -USR1 $pid; sleep 1; kill $pid
-	  10899206+0 records in
-	  10899206+0 records out
+	$ dd if=/dev/zero of=/dev/null &
+	$ pid=$!; kill -USR1 $pid; sleep 1; kill $pid
+	10899206+0 records in
+	10899206+0 records out
 
 config BUSYBOX_CONFIG_FEATURE_DD_THIRD_STATUS_LINE
 	bool "Enable the third status line upon signal"
 	default BUSYBOX_DEFAULT_FEATURE_DD_THIRD_STATUS_LINE
 	depends on BUSYBOX_CONFIG_DD && BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING
 	help
-	  Displays a coreutils-like third status line with transferred bytes,
-	  elapsed time and speed.
+	Displays a coreutils-like third status line with transferred bytes,
+	elapsed time and speed.
 
 config BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS
 	bool "Enable ibs, obs and conv options"
 	default BUSYBOX_DEFAULT_FEATURE_DD_IBS_OBS
 	depends on BUSYBOX_CONFIG_DD
 	help
-	  Enable support for writing a certain number of bytes in and out,
-	  at a time, and performing conversions on the data stream.
+	Enable support for writing a certain number of bytes in and out,
+	at a time, and performing conversions on the data stream.
 
 config BUSYBOX_CONFIG_FEATURE_DD_STATUS
 	bool "Enable status display options"
 	default BUSYBOX_DEFAULT_FEATURE_DD_STATUS
 	depends on BUSYBOX_CONFIG_DD
 	help
-	  Enable support for status=noxfer/none option.
+	Enable support for status=noxfer/none option.
 config BUSYBOX_CONFIG_DF
 	bool "df"
 	default BUSYBOX_DEFAULT_DF
 	help
-	  df reports the amount of disk space used and available
-	  on filesystems.
+	df reports the amount of disk space used and available
+	on filesystems.
 
 config BUSYBOX_CONFIG_FEATURE_DF_FANCY
 	bool "Enable -a, -i, -B"
 	default BUSYBOX_DEFAULT_FEATURE_DF_FANCY
 	depends on BUSYBOX_CONFIG_DF
 	help
-	  -a Show all filesystems
-	  -i Inodes
-	  -B <SIZE> Blocksize
+	-a Show all filesystems
+	-i Inodes
+	-B <SIZE> Blocksize
 config BUSYBOX_CONFIG_DIRNAME
 	bool "dirname"
 	default BUSYBOX_DEFAULT_DIRNAME
 	help
-	  dirname is used to strip a non-directory suffix from
-	  a file name.
+	dirname is used to strip a non-directory suffix from
+	a file name.
 config BUSYBOX_CONFIG_DOS2UNIX
 	bool "dos2unix"
 	default BUSYBOX_DEFAULT_DOS2UNIX
 	help
-	  dos2unix is used to convert a text file from DOS format to
-	  UNIX format, and vice versa.
+	dos2unix is used to convert a text file from DOS format to
+	UNIX format, and vice versa.
 
 config BUSYBOX_CONFIG_UNIX2DOS
 	bool "unix2dos"
 	default BUSYBOX_DEFAULT_UNIX2DOS
 	help
-	  unix2dos is used to convert a text file from UNIX format to
-	  DOS format, and vice versa.
+	unix2dos is used to convert a text file from UNIX format to
+	DOS format, and vice versa.
 config BUSYBOX_CONFIG_DU
 	bool "du (default blocksize of 512 bytes)"
 	default BUSYBOX_DEFAULT_DU
 	help
-	  du is used to report the amount of disk space used
-	  for specified files.
+	du is used to report the amount of disk space used
+	for specified files.
 
 config BUSYBOX_CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
 	bool "Use a default blocksize of 1024 bytes (1K)"
 	default BUSYBOX_DEFAULT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
 	depends on BUSYBOX_CONFIG_DU
 	help
-	  Use a blocksize of (1K) instead of the default 512b.
+	Use a blocksize of (1K) instead of the default 512b.
 config BUSYBOX_CONFIG_ECHO
 	bool "echo (basic SuSv3 version taking no options)"
 	default BUSYBOX_DEFAULT_ECHO
 	help
-	  echo is used to print a specified string to stdout.
+	echo is used to print a specified string to stdout.
 
 # this entry also appears in shell/Config.in, next to the echo builtin
 config BUSYBOX_CONFIG_FEATURE_FANCY_ECHO
@@ -228,9 +228,9 @@ config BUSYBOX_CONFIG_ENV
 	bool "env"
 	default BUSYBOX_DEFAULT_ENV
 	help
-	  env is used to set an environment variable and run
-	  a command; without options it displays the current
-	  environment.
+	env is used to set an environment variable and run
+	a command; without options it displays the current
+	environment.
 
 config BUSYBOX_CONFIG_FEATURE_ENV_LONG_OPTIONS
 	bool "Enable long options"
@@ -240,7 +240,7 @@ config BUSYBOX_CONFIG_EXPAND
 	bool "expand"
 	default BUSYBOX_DEFAULT_EXPAND
 	help
-	  By default, convert all tabs to spaces.
+	By default, convert all tabs to spaces.
 
 config BUSYBOX_CONFIG_FEATURE_EXPAND_LONG_OPTIONS
 	bool "Enable long options"
@@ -251,7 +251,7 @@ config BUSYBOX_CONFIG_UNEXPAND
 	bool "unexpand"
 	default BUSYBOX_DEFAULT_UNEXPAND
 	help
-	  By default, convert only leading sequences of blanks to tabs.
+	By default, convert only leading sequences of blanks to tabs.
 
 config BUSYBOX_CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS
 	bool "Enable long options"
@@ -261,43 +261,43 @@ config BUSYBOX_CONFIG_EXPR
 	bool "expr"
 	default BUSYBOX_DEFAULT_EXPR
 	help
-	  expr is used to calculate numbers and print the result
-	  to standard output.
+	expr is used to calculate numbers and print the result
+	to standard output.
 
 config BUSYBOX_CONFIG_EXPR_MATH_SUPPORT_64
 	bool "Extend Posix numbers support to 64 bit"
 	default BUSYBOX_DEFAULT_EXPR_MATH_SUPPORT_64
 	depends on BUSYBOX_CONFIG_EXPR
 	help
-	  Enable 64-bit math support in the expr applet. This will make
-	  the applet slightly larger, but will allow computation with very
-	  large numbers.
+	Enable 64-bit math support in the expr applet. This will make
+	the applet slightly larger, but will allow computation with very
+	large numbers.
 config BUSYBOX_CONFIG_FACTOR
 	bool "factor"
 	default BUSYBOX_DEFAULT_FACTOR
 	help
-	  factor factorizes integers
+	factor factorizes integers
 config BUSYBOX_CONFIG_FALSE
 	bool "false"
 	default BUSYBOX_DEFAULT_FALSE
 	help
-	  false returns an exit code of FALSE (1).
+	false returns an exit code of FALSE (1).
 config BUSYBOX_CONFIG_FOLD
 	bool "fold"
 	default BUSYBOX_DEFAULT_FOLD
 	help
-	  Wrap text to fit a specific width.
+	Wrap text to fit a specific width.
 config BUSYBOX_CONFIG_FSYNC
 	bool "fsync"
 	default BUSYBOX_DEFAULT_FSYNC
 	help
-	  fsync is used to flush file-related cached blocks to disk.
+	fsync is used to flush file-related cached blocks to disk.
 config BUSYBOX_CONFIG_HEAD
 	bool "head"
 	default BUSYBOX_DEFAULT_HEAD
 	help
-	  head is used to print the first specified number of lines
-	  from files.
+	head is used to print the first specified number of lines
+	from files.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_HEAD
 	bool "Enable -c, -q, and -v"
@@ -307,24 +307,24 @@ config BUSYBOX_CONFIG_HOSTID
 	bool "hostid"
 	default BUSYBOX_DEFAULT_HOSTID
 	help
-	  hostid prints the numeric identifier (in hexadecimal) for
-	  the current host.
+	hostid prints the numeric identifier (in hexadecimal) for
+	the current host.
 config BUSYBOX_CONFIG_ID
 	bool "id"
 	default BUSYBOX_DEFAULT_ID
 	help
-	  id displays the current user and group ID names.
+	id displays the current user and group ID names.
 
 config BUSYBOX_CONFIG_GROUPS
 	bool "groups"
 	default BUSYBOX_DEFAULT_GROUPS
 	help
-	  Print the group names associated with current user id.
+	Print the group names associated with current user id.
 config BUSYBOX_CONFIG_INSTALL
 	bool "install"
 	default BUSYBOX_DEFAULT_INSTALL
 	help
-	  Copy files and set attributes.
+	Copy files and set attributes.
 
 config BUSYBOX_CONFIG_FEATURE_INSTALL_LONG_OPTIONS
 	bool "Enable long options"
@@ -334,22 +334,22 @@ config BUSYBOX_CONFIG_LINK
 	bool "link"
 	default BUSYBOX_DEFAULT_LINK
 	help
-	  link creates hard links between files.
+	link creates hard links between files.
 config BUSYBOX_CONFIG_LN
 	bool "ln"
 	default BUSYBOX_DEFAULT_LN
 	help
-	  ln is used to create hard or soft links between files.
+	ln is used to create hard or soft links between files.
 config BUSYBOX_CONFIG_LOGNAME
 	bool "logname"
 	default BUSYBOX_DEFAULT_LOGNAME
 	help
-	  logname is used to print the current user's login name.
+	logname is used to print the current user's login name.
 config BUSYBOX_CONFIG_LS
 	bool "ls"
 	default BUSYBOX_DEFAULT_LS
 	help
-	  ls is used to list the contents of directories.
+	ls is used to list the contents of directories.
 
 config BUSYBOX_CONFIG_FEATURE_LS_FILETYPES
 	bool "Enable filetyping options (-p and -F)"
@@ -376,68 +376,68 @@ config BUSYBOX_CONFIG_FEATURE_LS_SORTFILES
 	default BUSYBOX_DEFAULT_FEATURE_LS_SORTFILES
 	depends on BUSYBOX_CONFIG_LS
 	help
-	  Allow ls to sort file names alphabetically.
+	Allow ls to sort file names alphabetically.
 
 config BUSYBOX_CONFIG_FEATURE_LS_TIMESTAMPS
 	bool "Show file timestamps"
 	default BUSYBOX_DEFAULT_FEATURE_LS_TIMESTAMPS
 	depends on BUSYBOX_CONFIG_LS
 	help
-	  Allow ls to display timestamps for files.
+	Allow ls to display timestamps for files.
 
 config BUSYBOX_CONFIG_FEATURE_LS_USERNAME
 	bool "Show username/groupnames"
 	default BUSYBOX_DEFAULT_FEATURE_LS_USERNAME
 	depends on BUSYBOX_CONFIG_LS
 	help
-	  Allow ls to display username/groupname for files.
+	Allow ls to display username/groupname for files.
 
 config BUSYBOX_CONFIG_FEATURE_LS_COLOR
 	bool "Allow use of color to identify file types"
 	default BUSYBOX_DEFAULT_FEATURE_LS_COLOR
 	depends on BUSYBOX_CONFIG_LS && BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  This enables the --color option to ls.
+	This enables the --color option to ls.
 
 config BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT
 	bool "Produce colored ls output by default"
 	default BUSYBOX_DEFAULT_FEATURE_LS_COLOR_IS_DEFAULT
 	depends on BUSYBOX_CONFIG_FEATURE_LS_COLOR
 	help
-	  Saying yes here will turn coloring on by default,
-	  even if no "--color" option is given to the ls command.
-	  This is not recommended, since the colors are not
-	  configurable, and the output may not be legible on
-	  many output screens.
+	Saying yes here will turn coloring on by default,
+	even if no "--color" option is given to the ls command.
+	This is not recommended, since the colors are not
+	configurable, and the output may not be legible on
+	many output screens.
 config BUSYBOX_CONFIG_MD5SUM
 	bool "md5sum"
 	default BUSYBOX_DEFAULT_MD5SUM
 	help
-	  md5sum is used to print or check MD5 checksums.
+	md5sum is used to print or check MD5 checksums.
 
 config BUSYBOX_CONFIG_SHA1SUM
 	bool "sha1sum"
 	default BUSYBOX_DEFAULT_SHA1SUM
 	help
-	  Compute and check SHA1 message digest
+	Compute and check SHA1 message digest
 
 config BUSYBOX_CONFIG_SHA256SUM
 	bool "sha256sum"
 	default BUSYBOX_DEFAULT_SHA256SUM
 	help
-	  Compute and check SHA256 message digest
+	Compute and check SHA256 message digest
 
 config BUSYBOX_CONFIG_SHA512SUM
 	bool "sha512sum"
 	default BUSYBOX_DEFAULT_SHA512SUM
 	help
-	  Compute and check SHA512 message digest
+	Compute and check SHA512 message digest
 
 config BUSYBOX_CONFIG_SHA3SUM
 	bool "sha3sum"
 	default BUSYBOX_DEFAULT_SHA3SUM
 	help
-	  Compute and check SHA3 message digest
+	Compute and check SHA3 message digest
 
 comment "Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum"
 	depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM || BUSYBOX_CONFIG_SHA3SUM
@@ -447,14 +447,14 @@ config BUSYBOX_CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
 	default BUSYBOX_DEFAULT_FEATURE_MD5_SHA1_SUM_CHECK
 	depends on BUSYBOX_CONFIG_MD5SUM || BUSYBOX_CONFIG_SHA1SUM || BUSYBOX_CONFIG_SHA256SUM || BUSYBOX_CONFIG_SHA512SUM || BUSYBOX_CONFIG_SHA3SUM
 	help
-	  Enabling the -c options allows files to be checked
-	  against pre-calculated hash values.
-	  -s and -w are useful options when verifying checksums.
+	Enabling the -c options allows files to be checked
+	against pre-calculated hash values.
+	-s and -w are useful options when verifying checksums.
 config BUSYBOX_CONFIG_MKDIR
 	bool "mkdir"
 	default BUSYBOX_DEFAULT_MKDIR
 	help
-	  mkdir is used to create directories with the specified names.
+	mkdir is used to create directories with the specified names.
 
 config BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS
 	bool "Enable long options"
@@ -464,24 +464,24 @@ config BUSYBOX_CONFIG_MKFIFO
 	bool "mkfifo"
 	default BUSYBOX_DEFAULT_MKFIFO
 	help
-	  mkfifo is used to create FIFOs (named pipes).
-	  The 'mknod' program can also create FIFOs.
+	mkfifo is used to create FIFOs (named pipes).
+	The 'mknod' program can also create FIFOs.
 config BUSYBOX_CONFIG_MKNOD
 	bool "mknod"
 	default BUSYBOX_DEFAULT_MKNOD
 	help
-	  mknod is used to create FIFOs or block/character special
-	  files with the specified names.
+	mknod is used to create FIFOs or block/character special
+	files with the specified names.
 config BUSYBOX_CONFIG_MKTEMP
 	bool "mktemp"
 	default BUSYBOX_DEFAULT_MKTEMP
 	help
-	  mktemp is used to create unique temporary files
+	mktemp is used to create unique temporary files
 config BUSYBOX_CONFIG_MV
 	bool "mv"
 	default BUSYBOX_DEFAULT_MV
 	help
-	  mv is used to move or rename files or directories.
+	mv is used to move or rename files or directories.
 
 config BUSYBOX_CONFIG_FEATURE_MV_LONG_OPTIONS
 	bool "Enable long options"
@@ -491,173 +491,173 @@ config BUSYBOX_CONFIG_NICE
 	bool "nice"
 	default BUSYBOX_DEFAULT_NICE
 	help
-	  nice runs a program with modified scheduling priority.
+	nice runs a program with modified scheduling priority.
 config BUSYBOX_CONFIG_NL
 	bool "nl"
 	default BUSYBOX_DEFAULT_NL
 	help
-	  nl is used to number lines of files.
+	nl is used to number lines of files.
 config BUSYBOX_CONFIG_NOHUP
 	bool "nohup"
 	default BUSYBOX_DEFAULT_NOHUP
 	help
-	  run a command immune to hangups, with output to a non-tty.
+	run a command immune to hangups, with output to a non-tty.
 config BUSYBOX_CONFIG_NPROC
 	bool "nproc"
 	default BUSYBOX_DEFAULT_NPROC
 	help
-	  Print number of CPUs
+	Print number of CPUs
 config BUSYBOX_CONFIG_OD
 	bool "od"
 	default BUSYBOX_DEFAULT_OD
 	help
-	  od is used to dump binary files in octal and other formats.
+	od is used to dump binary files in octal and other formats.
 config BUSYBOX_CONFIG_PASTE
 	bool "paste"
 	default BUSYBOX_DEFAULT_PASTE
 	help
-	  paste is used to paste lines of different files together
-	  and write the result to stdout
+	paste is used to paste lines of different files together
+	and write the result to stdout
 config BUSYBOX_CONFIG_PRINTENV
 	bool "printenv"
 	default BUSYBOX_DEFAULT_PRINTENV
 	help
-	  printenv is used to print all or part of environment.
+	printenv is used to print all or part of environment.
 config BUSYBOX_CONFIG_PRINTF
 	bool "printf"
 	default BUSYBOX_DEFAULT_PRINTF
 	help
-	  printf is used to format and print specified strings.
-	  It's similar to `echo' except it has more options.
+	printf is used to format and print specified strings.
+	It's similar to `echo' except it has more options.
 config BUSYBOX_CONFIG_PWD
 	bool "pwd"
 	default BUSYBOX_DEFAULT_PWD
 	help
-	  pwd is used to print the current directory.
+	pwd is used to print the current directory.
 config BUSYBOX_CONFIG_READLINK
 	bool "readlink"
 	default BUSYBOX_DEFAULT_READLINK
 	help
-	  This program reads a symbolic link and returns the name
-	  of the file it points to
+	This program reads a symbolic link and returns the name
+	of the file it points to
 
 config BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW
 	bool "Enable canonicalization by following all symlinks (-f)"
 	default BUSYBOX_DEFAULT_FEATURE_READLINK_FOLLOW
 	depends on BUSYBOX_CONFIG_READLINK
 	help
-	  Enable the readlink option (-f).
+	Enable the readlink option (-f).
 config BUSYBOX_CONFIG_REALPATH
 	bool "realpath"
 	default BUSYBOX_DEFAULT_REALPATH
 	help
-	  Return the canonicalized absolute pathname.
-	  This isn't provided by GNU shellutils, but where else does it belong.
+	Return the canonicalized absolute pathname.
+	This isn't provided by GNU shellutils, but where else does it belong.
 config BUSYBOX_CONFIG_RM
 	bool "rm"
 	default BUSYBOX_DEFAULT_RM
 	help
-	  rm is used to remove files or directories.
+	rm is used to remove files or directories.
 config BUSYBOX_CONFIG_RMDIR
 	bool "rmdir"
 	default BUSYBOX_DEFAULT_RMDIR
 	help
-	  rmdir is used to remove empty directories.
+	rmdir is used to remove empty directories.
 
 config BUSYBOX_CONFIG_FEATURE_RMDIR_LONG_OPTIONS
 	bool "Enable long options"
 	default BUSYBOX_DEFAULT_FEATURE_RMDIR_LONG_OPTIONS
 	depends on BUSYBOX_CONFIG_RMDIR && BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  Support long options for the rmdir applet, including
-	  --ignore-fail-on-non-empty for compatibility with GNU rmdir.
+	Support long options for the rmdir applet, including
+	--ignore-fail-on-non-empty for compatibility with GNU rmdir.
 config BUSYBOX_CONFIG_SEQ
 	bool "seq"
 	default BUSYBOX_DEFAULT_SEQ
 	help
-	  print a sequence of numbers
+	print a sequence of numbers
 config BUSYBOX_CONFIG_SHRED
 	bool "shred"
 	default BUSYBOX_DEFAULT_SHRED
 	help
-	  Overwrite a file to hide its contents, and optionally delete it
+	Overwrite a file to hide its contents, and optionally delete it
 config BUSYBOX_CONFIG_SHUF
 	bool "shuf"
 	default BUSYBOX_DEFAULT_SHUF
 	help
-	  Generate random permutations
+	Generate random permutations
 config BUSYBOX_CONFIG_SLEEP
 	bool "sleep"
 	default BUSYBOX_DEFAULT_SLEEP
 	help
-	  sleep is used to pause for a specified number of seconds.
-	  It comes in 3 versions:
-	  - small: takes one integer parameter
-	  - fancy: takes multiple integer arguments with suffixes:
+	sleep is used to pause for a specified number of seconds.
+	It comes in 3 versions:
+	- small: takes one integer parameter
+	- fancy: takes multiple integer arguments with suffixes:
 	    sleep 1d 2h 3m 15s
-	  - fancy with fractional numbers:
+	- fancy with fractional numbers:
 	    sleep 2.3s 4.5h sleeps for 16202.3 seconds
-	  Last one is "the most compatible" with coreutils sleep,
-	  but it adds around 1k of code.
+	Last one is "the most compatible" with coreutils sleep,
+	but it adds around 1k of code.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
 	bool "Enable multiple arguments and s/m/h/d suffixes"
 	default BUSYBOX_DEFAULT_FEATURE_FANCY_SLEEP
 	depends on BUSYBOX_CONFIG_SLEEP
 	help
-	  Allow sleep to pause for specified minutes, hours, and days.
+	Allow sleep to pause for specified minutes, hours, and days.
 
 config BUSYBOX_CONFIG_FEATURE_FLOAT_SLEEP
 	bool "Enable fractional arguments"
 	default BUSYBOX_DEFAULT_FEATURE_FLOAT_SLEEP
 	depends on BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
 	help
-	  Allow for fractional numeric parameters.
+	Allow for fractional numeric parameters.
 config BUSYBOX_CONFIG_SORT
 	bool "sort"
 	default BUSYBOX_DEFAULT_SORT
 	help
-	  sort is used to sort lines of text in specified files.
+	sort is used to sort lines of text in specified files.
 
 config BUSYBOX_CONFIG_FEATURE_SORT_BIG
 	bool "Full SuSv3 compliant sort (support -ktcsbdfiozgM)"
 	default BUSYBOX_DEFAULT_FEATURE_SORT_BIG
 	depends on BUSYBOX_CONFIG_SORT
 	help
-	  Without this, sort only supports -r, -u, and an integer version
-	  of -n. Selecting this adds sort keys, floating point support, and
-	  more. This adds a little over 3k to a nonstatic build on x86.
+	Without this, sort only supports -r, -u, and an integer version
+	of -n. Selecting this adds sort keys, floating point support, and
+	more. This adds a little over 3k to a nonstatic build on x86.
 
-	  The SuSv3 sort standard is available at:
-	  http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html
+	The SuSv3 sort standard is available at:
+	http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html
 config BUSYBOX_CONFIG_SPLIT
 	bool "split"
 	default BUSYBOX_DEFAULT_SPLIT
 	help
-	  Split a file into pieces.
+	Split a file into pieces.
 
 config BUSYBOX_CONFIG_FEATURE_SPLIT_FANCY
 	bool "Fancy extensions"
 	default BUSYBOX_DEFAULT_FEATURE_SPLIT_FANCY
 	depends on BUSYBOX_CONFIG_SPLIT
 	help
-	  Add support for features not required by SUSv3.
-	  Supports additional suffixes 'b' for 512 bytes,
-	  'g' for 1GiB for the -b option.
+	Add support for features not required by SUSv3.
+	Supports additional suffixes 'b' for 512 bytes,
+	'g' for 1GiB for the -b option.
 config BUSYBOX_CONFIG_STAT
 	bool "stat"
 	default BUSYBOX_DEFAULT_STAT
 	help
-	  display file or filesystem status.
+	display file or filesystem status.
 
 config BUSYBOX_CONFIG_FEATURE_STAT_FORMAT
 	bool "Enable custom formats (-c)"
 	default BUSYBOX_DEFAULT_FEATURE_STAT_FORMAT
 	depends on BUSYBOX_CONFIG_STAT
 	help
-	  Without this, stat will not support the '-c format' option where
-	  users can pass a custom format string for output. This adds about
-	  7k to a nonstatic build on amd64.
+	Without this, stat will not support the '-c format' option where
+	users can pass a custom format string for output. This adds about
+	7k to a nonstatic build on amd64.
 
 config BUSYBOX_CONFIG_FEATURE_STAT_FILESYSTEM
 	bool "Enable display of filesystem status (-f)"
@@ -665,49 +665,49 @@ config BUSYBOX_CONFIG_FEATURE_STAT_FILESYSTEM
 	depends on BUSYBOX_CONFIG_STAT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX # statfs()
 	help
-	  Without this, stat will not support the '-f' option to display
-	  information about filesystem status.
+	Without this, stat will not support the '-f' option to display
+	information about filesystem status.
 config BUSYBOX_CONFIG_STTY
 	bool "stty"
 	default BUSYBOX_DEFAULT_STTY
 	help
-	  stty is used to change and print terminal line settings.
+	stty is used to change and print terminal line settings.
 config BUSYBOX_CONFIG_SUM
 	bool "sum"
 	default BUSYBOX_DEFAULT_SUM
 	help
-	  checksum and count the blocks in a file
+	checksum and count the blocks in a file
 config BUSYBOX_CONFIG_SYNC
 	bool "sync"
 	default BUSYBOX_DEFAULT_SYNC
 	help
-	  sync is used to flush filesystem buffers.
+	sync is used to flush filesystem buffers.
 config BUSYBOX_CONFIG_FEATURE_SYNC_FANCY
 	bool "Enable -d and -f flags (requires syncfs(2) in libc)"
 	default BUSYBOX_DEFAULT_FEATURE_SYNC_FANCY
 	depends on BUSYBOX_CONFIG_SYNC
 	help
-	  sync -d FILE... executes fdatasync() on each FILE.
-	  sync -f FILE... executes syncfs() on each FILE.
+	sync -d FILE... executes fdatasync() on each FILE.
+	sync -f FILE... executes syncfs() on each FILE.
 config BUSYBOX_CONFIG_TAC
 	bool "tac"
 	default BUSYBOX_DEFAULT_TAC
 	help
-	  tac is used to concatenate and print files in reverse.
+	tac is used to concatenate and print files in reverse.
 config BUSYBOX_CONFIG_TAIL
 	bool "tail"
 	default BUSYBOX_DEFAULT_TAIL
 	help
-	  tail is used to print the last specified number of lines
-	  from files.
+	tail is used to print the last specified number of lines
+	from files.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_TAIL
 	bool "Enable -q, -s, -v, and -F options"
 	default BUSYBOX_DEFAULT_FEATURE_FANCY_TAIL
 	depends on BUSYBOX_CONFIG_TAIL
 	help
-	  These options are provided by GNU tail, but
-	  are not specific in the SUSv3 standard:
+	These options are provided by GNU tail, but
+	are not specific in the SUSv3 standard:
 	    -q      Never output headers giving file names
 	    -s SEC  Wait SEC seconds between reads with -f
 	    -v      Always output headers giving file names
@@ -716,166 +716,166 @@ config BUSYBOX_CONFIG_TEE
 	bool "tee"
 	default BUSYBOX_DEFAULT_TEE
 	help
-	  tee is used to read from standard input and write
-	  to standard output and files.
+	tee is used to read from standard input and write
+	to standard output and files.
 
 config BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO
 	bool "Enable block I/O (larger/faster) instead of byte I/O"
 	default BUSYBOX_DEFAULT_FEATURE_TEE_USE_BLOCK_IO
 	depends on BUSYBOX_CONFIG_TEE
 	help
-	  Enable this option for a faster tee, at expense of size.
+	Enable this option for a faster tee, at expense of size.
 config BUSYBOX_CONFIG_TEST
 	bool "test"
 	default BUSYBOX_DEFAULT_TEST
 	help
-	  test is used to check file types and compare values,
-	  returning an appropriate exit code. The bash shell
-	  has test built in, ash can build it in optionally.
+	test is used to check file types and compare values,
+	returning an appropriate exit code. The bash shell
+	has test built in, ash can build it in optionally.
 
 config BUSYBOX_CONFIG_TEST1
 	bool "test as ["
 	default BUSYBOX_DEFAULT_TEST1
 	help
-	  Provide test command in the "[ EXPR ]" form
+	Provide test command in the "[ EXPR ]" form
 
 config BUSYBOX_CONFIG_TEST2
 	bool "test as [["
 	default BUSYBOX_DEFAULT_TEST2
 	help
-	  Provide test command in the "[[ EXPR ]]" form
+	Provide test command in the "[[ EXPR ]]" form
 
 config BUSYBOX_CONFIG_FEATURE_TEST_64
 	bool "Extend test to 64 bit"
 	default BUSYBOX_DEFAULT_FEATURE_TEST_64
 	depends on BUSYBOX_CONFIG_TEST || BUSYBOX_CONFIG_TEST1 || BUSYBOX_CONFIG_TEST2 || BUSYBOX_CONFIG_ASH_TEST || BUSYBOX_CONFIG_HUSH_TEST
 	help
-	  Enable 64-bit support in test.
+	Enable 64-bit support in test.
 config BUSYBOX_CONFIG_TIMEOUT
 	bool "timeout"
 	default BUSYBOX_DEFAULT_TIMEOUT
 	help
-	  Runs a program and watches it. If it does not terminate in
-	  specified number of seconds, it is sent a signal.
+	Runs a program and watches it. If it does not terminate in
+	specified number of seconds, it is sent a signal.
 config BUSYBOX_CONFIG_TOUCH
 	bool "touch"
 	default BUSYBOX_DEFAULT_TOUCH
 	help
-	  touch is used to create or change the access and/or
-	  modification timestamp of specified files.
+	touch is used to create or change the access and/or
+	modification timestamp of specified files.
 
 config BUSYBOX_CONFIG_FEATURE_TOUCH_NODEREF
 	bool "Add support for -h"
 	default BUSYBOX_DEFAULT_FEATURE_TOUCH_NODEREF
 	depends on BUSYBOX_CONFIG_TOUCH
 	help
-	  Enable touch to have the -h option.
-	  This requires libc support for lutimes() function.
+	Enable touch to have the -h option.
+	This requires libc support for lutimes() function.
 
 config BUSYBOX_CONFIG_FEATURE_TOUCH_SUSV3
 	bool "Add support for SUSV3 features (-d -t -r)"
 	default BUSYBOX_DEFAULT_FEATURE_TOUCH_SUSV3
 	depends on BUSYBOX_CONFIG_TOUCH
 	help
-	  Enable touch to use a reference file or a given date/time argument.
+	Enable touch to use a reference file or a given date/time argument.
 config BUSYBOX_CONFIG_TR
 	bool "tr"
 	default BUSYBOX_DEFAULT_TR
 	help
-	  tr is used to squeeze, and/or delete characters from standard
-	  input, writing to standard output.
+	tr is used to squeeze, and/or delete characters from standard
+	input, writing to standard output.
 
 config BUSYBOX_CONFIG_FEATURE_TR_CLASSES
 	bool "Enable character classes (such as [:upper:])"
 	default BUSYBOX_DEFAULT_FEATURE_TR_CLASSES
 	depends on BUSYBOX_CONFIG_TR
 	help
-	  Enable character classes, enabling commands such as:
-	  tr [:upper:] [:lower:] to convert input into lowercase.
+	Enable character classes, enabling commands such as:
+	tr [:upper:] [:lower:] to convert input into lowercase.
 
 config BUSYBOX_CONFIG_FEATURE_TR_EQUIV
 	bool "Enable equivalence classes"
 	default BUSYBOX_DEFAULT_FEATURE_TR_EQUIV
 	depends on BUSYBOX_CONFIG_TR
 	help
-	  Enable equivalence classes, which essentially add the enclosed
-	  character to the current set. For instance, tr [=a=] xyz would
-	  replace all instances of 'a' with 'xyz'. This option is mainly
-	  useful for cases when no other way of expressing a character
-	  is possible.
+	Enable equivalence classes, which essentially add the enclosed
+	character to the current set. For instance, tr [=a=] xyz would
+	replace all instances of 'a' with 'xyz'. This option is mainly
+	useful for cases when no other way of expressing a character
+	is possible.
 config BUSYBOX_CONFIG_TRUE
 	bool "true"
 	default BUSYBOX_DEFAULT_TRUE
 	help
-	  true returns an exit code of TRUE (0).
+	true returns an exit code of TRUE (0).
 config BUSYBOX_CONFIG_TRUNCATE
 	bool "truncate"
 	default BUSYBOX_DEFAULT_TRUNCATE
 	help
-	  truncate truncates files to a given size. If a file does
-	  not exist, it is created unless told otherwise.
+	truncate truncates files to a given size. If a file does
+	not exist, it is created unless told otherwise.
 config BUSYBOX_CONFIG_TTY
 	bool "tty"
 	default BUSYBOX_DEFAULT_TTY
 	help
-	  tty is used to print the name of the current terminal to
-	  standard output.
+	tty is used to print the name of the current terminal to
+	standard output.
 config BUSYBOX_CONFIG_UNAME
 	bool "uname"
 	default BUSYBOX_DEFAULT_UNAME
 	help
-	  uname is used to print system information.
+	uname is used to print system information.
 
 config BUSYBOX_CONFIG_UNAME_OSNAME
 	string "Operating system name"
 	default BUSYBOX_DEFAULT_UNAME_OSNAME
 	depends on BUSYBOX_CONFIG_UNAME
 	help
-	  Sets the operating system name reported by uname -o.  The
-	  default BUSYBOX_DEFAULT_UNAME_OSNAME "GNU/Linux".
+	Sets the operating system name reported by uname -o.  The
+	default BUSYBOX_DEFAULT_UNAME_OSNAME "GNU/Linux".
 config BUSYBOX_CONFIG_UNIQ
 	bool "uniq"
 	default BUSYBOX_DEFAULT_UNIQ
 	help
-	  uniq is used to remove duplicate lines from a sorted file.
+	uniq is used to remove duplicate lines from a sorted file.
 config BUSYBOX_CONFIG_UNLINK
 	bool "unlink"
 	default BUSYBOX_DEFAULT_UNLINK
 	help
-	  unlink deletes a file by calling unlink()
+	unlink deletes a file by calling unlink()
 config BUSYBOX_CONFIG_USLEEP
 	bool "usleep"
 	default BUSYBOX_DEFAULT_USLEEP
 	help
-	  usleep is used to pause for a specified number of microseconds.
+	usleep is used to pause for a specified number of microseconds.
 config BUSYBOX_CONFIG_UUDECODE
 	bool "uudecode"
 	default BUSYBOX_DEFAULT_UUDECODE
 	help
-	  uudecode is used to decode a uuencoded file.
+	uudecode is used to decode a uuencoded file.
 config BUSYBOX_CONFIG_BASE64
 	bool "base64"
 	default BUSYBOX_DEFAULT_BASE64
 	help
-	  Base64 encode and decode
+	Base64 encode and decode
 config BUSYBOX_CONFIG_UUENCODE
 	bool "uuencode"
 	default BUSYBOX_DEFAULT_UUENCODE
 	help
-	  uuencode is used to uuencode a file.
+	uuencode is used to uuencode a file.
 config BUSYBOX_CONFIG_WC
 	bool "wc"
 	default BUSYBOX_DEFAULT_WC
 	help
-	  wc is used to print the number of bytes, words, and lines,
-	  in specified files.
+	wc is used to print the number of bytes, words, and lines,
+	in specified files.
 
 config BUSYBOX_CONFIG_FEATURE_WC_LARGE
 	bool "Support very large counts"
 	default BUSYBOX_DEFAULT_FEATURE_WC_LARGE
 	depends on BUSYBOX_CONFIG_WC
 	help
-	  Use "unsigned long long" for counter variables.
+	Use "unsigned long long" for counter variables.
 config BUSYBOX_CONFIG_WHO
       bool "who"
       default BUSYBOX_DEFAULT_WHO
@@ -900,14 +900,14 @@ config BUSYBOX_CONFIG_WHOAMI
 	bool "whoami"
 	default BUSYBOX_DEFAULT_WHOAMI
 	help
-	  whoami is used to print the username of the current
-	  user id (same as id -un).
+	whoami is used to print the username of the current
+	user id (same as id -un).
 config BUSYBOX_CONFIG_YES
 	bool "yes"
 	default BUSYBOX_DEFAULT_YES
 	help
-	  yes is used to repeatedly output a specific string, or
-	  the default string `y'.
+	yes is used to repeatedly output a specific string, or
+	the default string `y'.
 
 comment "Common options"
 
@@ -915,9 +915,9 @@ config BUSYBOX_CONFIG_FEATURE_VERBOSE
 	bool "Support verbose options (usually -v) for various applets"
 	default BUSYBOX_DEFAULT_FEATURE_VERBOSE
 	help
-	  Enable cp -v, rm -v and similar messages.
-	  Also enables long option (--verbose) if it exists.
-	  Without this option, -v is accepted but ignored.
+	Enable cp -v, rm -v and similar messages.
+	Also enables long option (--verbose) if it exists.
+	Without this option, -v is accepted but ignored.
 
 comment "Common options for cp and mv"
 	depends on BUSYBOX_CONFIG_CP || BUSYBOX_CONFIG_MV
@@ -927,7 +927,7 @@ config BUSYBOX_CONFIG_FEATURE_PRESERVE_HARDLINKS
 	default BUSYBOX_DEFAULT_FEATURE_PRESERVE_HARDLINKS
 	depends on BUSYBOX_CONFIG_CP || BUSYBOX_CONFIG_MV
 	help
-	  Allow cp and mv to preserve hard links.
+	Allow cp and mv to preserve hard links.
 
 comment "Common options for df, du, ls"
 	depends on BUSYBOX_CONFIG_DF || BUSYBOX_CONFIG_DU || BUSYBOX_CONFIG_LS
@@ -937,6 +937,6 @@ config BUSYBOX_CONFIG_FEATURE_HUMAN_READABLE
 	default BUSYBOX_DEFAULT_FEATURE_HUMAN_READABLE
 	depends on BUSYBOX_CONFIG_DF || BUSYBOX_CONFIG_DU || BUSYBOX_CONFIG_LS
 	help
-	  Allow df, du, and ls to have human readable output.
+	Allow df, du, and ls to have human readable output.
 
 endmenu
diff --git a/package/utils/busybox/config/debianutils/Config.in b/package/utils/busybox/config/debianutils/Config.in
index 6b9de0de56..137481c989 100644
--- a/package/utils/busybox/config/debianutils/Config.in
+++ b/package/utils/busybox/config/debianutils/Config.in
@@ -10,21 +10,21 @@ config BUSYBOX_CONFIG_PIPE_PROGRESS
 	bool "pipe_progress"
 	default BUSYBOX_DEFAULT_PIPE_PROGRESS
 	help
-	  Display a dot to indicate pipe activity.
+	Display a dot to indicate pipe activity.
 config BUSYBOX_CONFIG_RUN_PARTS
 	bool "run-parts"
 	default BUSYBOX_DEFAULT_RUN_PARTS
 	help
-	  run-parts is a utility designed to run all the scripts in a directory.
+	run-parts is a utility designed to run all the scripts in a directory.
 
-	  It is useful to set up a directory like cron.daily, where you need to
-	  execute all the scripts in that directory.
+	It is useful to set up a directory like cron.daily, where you need to
+	execute all the scripts in that directory.
 
-	  In this implementation of run-parts some features (such as report
-	  mode) are not implemented.
+	In this implementation of run-parts some features (such as report
+	mode) are not implemented.
 
-	  Unless you know that run-parts is used in some of your scripts
-	  you can safely say N here.
+	Unless you know that run-parts is used in some of your scripts
+	you can safely say N here.
 
 config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS
 	bool "Enable long options"
@@ -36,16 +36,16 @@ config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_FANCY
 	default BUSYBOX_DEFAULT_FEATURE_RUN_PARTS_FANCY
 	depends on BUSYBOX_CONFIG_RUN_PARTS
 	help
-	  Support additional options:
-	  -l --list print the names of the all matching files (not
+	Support additional options:
+	-l --list print the names of the all matching files (not
 	            limited to executables), but don't actually run them.
 config BUSYBOX_CONFIG_START_STOP_DAEMON
 	bool "start-stop-daemon"
 	default BUSYBOX_DEFAULT_START_STOP_DAEMON
 	help
-	  start-stop-daemon is used to control the creation and
-	  termination of system-level processes, usually the ones
-	  started during the startup of the system.
+	start-stop-daemon is used to control the creation and
+	termination of system-level processes, usually the ones
+	started during the startup of the system.
 
 config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS
 	bool "Enable long options"
@@ -57,14 +57,14 @@ config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_FANCY
 	default BUSYBOX_DEFAULT_FEATURE_START_STOP_DAEMON_FANCY
 	depends on BUSYBOX_CONFIG_START_STOP_DAEMON
 	help
-	  -o|--oknodo ignored since we exit with 0 anyway
-	  -v|--verbose
-	  -N|--nicelevel N
+	-o|--oknodo ignored since we exit with 0 anyway
+	-v|--verbose
+	-N|--nicelevel N
 config BUSYBOX_CONFIG_WHICH
 	bool "which"
 	default BUSYBOX_DEFAULT_WHICH
 	help
-	  which is used to find programs in your PATH and
-	  print out their pathnames.
+	which is used to find programs in your PATH and
+	print out their pathnames.
 
 endmenu
diff --git a/package/utils/busybox/config/e2fsprogs/Config.in b/package/utils/busybox/config/e2fsprogs/Config.in
index df255481c3..bc3403bd70 100644
--- a/package/utils/busybox/config/e2fsprogs/Config.in
+++ b/package/utils/busybox/config/e2fsprogs/Config.in
@@ -10,26 +10,26 @@ config BUSYBOX_CONFIG_CHATTR
 	bool "chattr"
 	default BUSYBOX_DEFAULT_CHATTR
 	help
-	  chattr changes the file attributes on a second extended file system.
+	chattr changes the file attributes on a second extended file system.
 config BUSYBOX_CONFIG_FSCK
 	bool "fsck"
 	default BUSYBOX_DEFAULT_FSCK
 	help
-	  fsck is used to check and optionally repair one or more filesystems.
-	  In actuality, fsck is simply a front-end for the various file system
-	  checkers (fsck.fstype) available under Linux.
+	fsck is used to check and optionally repair one or more filesystems.
+	In actuality, fsck is simply a front-end for the various file system
+	checkers (fsck.fstype) available under Linux.
 config BUSYBOX_CONFIG_LSATTR
 	bool "lsattr"
 	default BUSYBOX_DEFAULT_LSATTR
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  lsattr lists the file attributes on a second extended file system.
+	lsattr lists the file attributes on a second extended file system.
 config BUSYBOX_CONFIG_TUNE2FS
 	bool "tune2fs"
 	default BUSYBOX_DEFAULT_TUNE2FS  # off: it is too limited compared to upstream version
 	help
-	  tune2fs allows the system administrator to adjust various tunable
-	  filesystem parameters on Linux ext2/ext3 filesystems.
+	tune2fs allows the system administrator to adjust various tunable
+	filesystem parameters on Linux ext2/ext3 filesystems.
 
 ### config E2FSCK
 ###	bool "e2fsck"
diff --git a/package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in b/package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
index d7a5396deb..cfa63131d0 100644
--- a/package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
+++ b/package/utils/busybox/config/e2fsprogs/old_e2fsprogs/Config.in
@@ -11,59 +11,59 @@ config BUSYBOX_CONFIG_CHATTR
 	bool "chattr"
 	default BUSYBOX_DEFAULT_CHATTR
 	help
-	  chattr changes the file attributes on a second extended file system.
+	chattr changes the file attributes on a second extended file system.
 
 config BUSYBOX_CONFIG_E2FSCK
 	bool "e2fsck"
 	default BUSYBOX_DEFAULT_E2FSCK
 	help
-	  e2fsck is used to check Linux second extended file systems (ext2fs).
-	  e2fsck also supports ext2 filesystems countaining a journal (ext3).
-	  The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
-	  provided.
+	e2fsck is used to check Linux second extended file systems (ext2fs).
+	e2fsck also supports ext2 filesystems countaining a journal (ext3).
+	The normal compat symlinks 'fsck.ext2' and 'fsck.ext3' are also
+	provided.
 
 config BUSYBOX_CONFIG_FSCK
 	bool "fsck"
 	default BUSYBOX_DEFAULT_FSCK
 	help
-	  fsck is used to check and optionally repair one or more filesystems.
-	  In actuality, fsck is simply a front-end for the various file system
-	  checkers (fsck.fstype) available under Linux.
+	fsck is used to check and optionally repair one or more filesystems.
+	In actuality, fsck is simply a front-end for the various file system
+	checkers (fsck.fstype) available under Linux.
 
 config BUSYBOX_CONFIG_LSATTR
 	bool "lsattr"
 	default BUSYBOX_DEFAULT_LSATTR
 	help
-	  lsattr lists the file attributes on a second extended file system.
+	lsattr lists the file attributes on a second extended file system.
 
 config BUSYBOX_CONFIG_MKE2FS
 	bool "mke2fs"
 	default BUSYBOX_DEFAULT_MKE2FS
 	help
-	  mke2fs is used to create an ext2/ext3 filesystem. The normal compat
-	  symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
+	mke2fs is used to create an ext2/ext3 filesystem. The normal compat
+	symlinks 'mkfs.ext2' and 'mkfs.ext3' are also provided.
 
 config BUSYBOX_CONFIG_TUNE2FS
 	bool "tune2fs"
 	default BUSYBOX_DEFAULT_TUNE2FS
 	help
-	  tune2fs allows the system administrator to adjust various tunable
-	  filesystem parameters on Linux ext2/ext3 filesystems.
+	tune2fs allows the system administrator to adjust various tunable
+	filesystem parameters on Linux ext2/ext3 filesystems.
 
 config BUSYBOX_CONFIG_E2LABEL
 	bool "e2label"
 	default BUSYBOX_DEFAULT_E2LABEL
 	depends on BUSYBOX_CONFIG_TUNE2FS
 	help
-	  e2label will display or change the filesystem label on the ext2
-	  filesystem located on device.
+	e2label will display or change the filesystem label on the ext2
+	filesystem located on device.
 
 config BUSYBOX_CONFIG_FINDFS
 	bool "findfs"
 	default BUSYBOX_DEFAULT_FINDFS
 	depends on BUSYBOX_CONFIG_TUNE2FS
 	help
-	  findfs will search the disks in the system looking for a filesystem
-	  which has a label matching label or a UUID equal to uuid.
+	findfs will search the disks in the system looking for a filesystem
+	which has a label matching label or a UUID equal to uuid.
 
 endmenu
diff --git a/package/utils/busybox/config/editors/Config.in b/package/utils/busybox/config/editors/Config.in
index da4eaedd79..46723bea76 100644
--- a/package/utils/busybox/config/editors/Config.in
+++ b/package/utils/busybox/config/editors/Config.in
@@ -10,40 +10,40 @@ config BUSYBOX_CONFIG_AWK
 	bool "awk"
 	default BUSYBOX_DEFAULT_AWK
 	help
-	  Awk is used as a pattern scanning and processing language. This is
-	  the BusyBox implementation of that programming language.
+	Awk is used as a pattern scanning and processing language. This is
+	the BusyBox implementation of that programming language.
 
 config BUSYBOX_CONFIG_FEATURE_AWK_LIBM
 	bool "Enable math functions (requires libm)"
 	default BUSYBOX_DEFAULT_FEATURE_AWK_LIBM
 	depends on BUSYBOX_CONFIG_AWK
 	help
-	  Enable math functions of the Awk programming language.
-	  NOTE: This will require libm to be present for linking.
+	Enable math functions of the Awk programming language.
+	NOTE: This will require libm to be present for linking.
 
 config BUSYBOX_CONFIG_FEATURE_AWK_GNU_EXTENSIONS
 	bool "Enable a few GNU extensions"
 	default BUSYBOX_DEFAULT_FEATURE_AWK_GNU_EXTENSIONS
 	depends on BUSYBOX_CONFIG_AWK
 	help
-	  Enable a few features from gawk:
-	  * command line option -e AWK_PROGRAM
-	  * simultaneous use of -f and -e on the command line.
+	Enable a few features from gawk:
+	* command line option -e AWK_PROGRAM
+	* simultaneous use of -f and -e on the command line.
 	    This enables the use of awk library files.
 	    Ex: awk -f mylib.awk -e '{print myfunction($1);}' ...
 config BUSYBOX_CONFIG_CMP
 	bool "cmp"
 	default BUSYBOX_DEFAULT_CMP
 	help
-	  cmp is used to compare two files and returns the result
-	  to standard output.
+	cmp is used to compare two files and returns the result
+	to standard output.
 config BUSYBOX_CONFIG_DIFF
 	bool "diff"
 	default BUSYBOX_DEFAULT_DIFF
 	help
-	  diff compares two files or directories and outputs the
-	  differences between them in a form that can be given to
-	  the patch command.
+	diff compares two files or directories and outputs the
+	differences between them in a form that can be given to
+	the patch command.
 
 config BUSYBOX_CONFIG_FEATURE_DIFF_LONG_OPTIONS
 	bool "Enable long options"
@@ -55,34 +55,34 @@ config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
 	default BUSYBOX_DEFAULT_FEATURE_DIFF_DIR
 	depends on BUSYBOX_CONFIG_DIFF
 	help
-	  This option enables support for directory and subdirectory
-	  comparison.
+	This option enables support for directory and subdirectory
+	comparison.
 config BUSYBOX_CONFIG_ED
 	bool "ed"
 	default BUSYBOX_DEFAULT_ED
 	help
-	  The original 1970's Unix text editor, from the days of teletypes.
-	  Small, simple, evil. Part of SUSv3. If you're not already using
-	  this, you don't need it.
+	The original 1970's Unix text editor, from the days of teletypes.
+	Small, simple, evil. Part of SUSv3. If you're not already using
+	this, you don't need it.
 config BUSYBOX_CONFIG_PATCH
 	bool "patch"
 	default BUSYBOX_DEFAULT_PATCH
 	help
-	  Apply a unified diff formatted patch.
+	Apply a unified diff formatted patch.
 config BUSYBOX_CONFIG_SED
 	bool "sed"
 	default BUSYBOX_DEFAULT_SED
 	help
-	  sed is used to perform text transformations on a file
-	  or input from a pipeline.
+	sed is used to perform text transformations on a file
+	or input from a pipeline.
 config BUSYBOX_CONFIG_VI
 	bool "vi"
 	default BUSYBOX_DEFAULT_VI
 	help
-	  'vi' is a text editor. More specifically, it is the One True
-	  text editor <grin>. It does, however, have a rather steep
-	  learning curve. If you are not already comfortable with 'vi'
-	  you may wish to use something else.
+	'vi' is a text editor. More specifically, it is the One True
+	text editor <grin>. It does, however, have a rather steep
+	learning curve. If you are not already comfortable with 'vi'
+	you may wish to use something else.
 
 config BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN
 	int "Maximum screen width"
@@ -90,77 +90,77 @@ config BUSYBOX_CONFIG_FEATURE_VI_MAX_LEN
 	default BUSYBOX_DEFAULT_FEATURE_VI_MAX_LEN
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Contrary to what you may think, this is not eating much.
-	  Make it smaller than 4k only if you are very limited on memory.
+	Contrary to what you may think, this is not eating much.
+	Make it smaller than 4k only if you are very limited on memory.
 
 config BUSYBOX_CONFIG_FEATURE_VI_8BIT
 	bool "Allow to display 8-bit chars (otherwise shows dots)"
 	default BUSYBOX_DEFAULT_FEATURE_VI_8BIT
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  If your terminal can display characters with high bit set,
-	  you may want to enable this. Note: vi is not Unicode-capable.
-	  If your terminal combines several 8-bit bytes into one character
-	  (as in Unicode mode), this will not work properly.
+	If your terminal can display characters with high bit set,
+	you may want to enable this. Note: vi is not Unicode-capable.
+	If your terminal combines several 8-bit bytes into one character
+	(as in Unicode mode), this will not work properly.
 
 config BUSYBOX_CONFIG_FEATURE_VI_COLON
 	bool "Enable \":\" colon commands (no \"ex\" mode)"
 	default BUSYBOX_DEFAULT_FEATURE_VI_COLON
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Enable a limited set of colon commands. This does not
-	  provide an "ex" mode.
+	Enable a limited set of colon commands. This does not
+	provide an "ex" mode.
 
 config BUSYBOX_CONFIG_FEATURE_VI_YANKMARK
 	bool "Enable yank/put commands and mark cmds"
 	default BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  This will enable you to use yank and put, as well as mark.
+	This will enable you to use yank and put, as well as mark.
 
 config BUSYBOX_CONFIG_FEATURE_VI_SEARCH
 	bool "Enable search and replace cmds"
 	default BUSYBOX_DEFAULT_FEATURE_VI_SEARCH
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Select this if you wish to be able to do search and replace.
+	Select this if you wish to be able to do search and replace.
 
 config BUSYBOX_CONFIG_FEATURE_VI_REGEX_SEARCH
 	bool "Enable regex in search and replace"
 	default BUSYBOX_DEFAULT_FEATURE_VI_REGEX_SEARCH   # Uses GNU regex, which may be unavailable. FIXME
 	depends on BUSYBOX_CONFIG_FEATURE_VI_SEARCH
 	help
-	  Use extended regex search.
+	Use extended regex search.
 
 config BUSYBOX_CONFIG_FEATURE_VI_USE_SIGNALS
 	bool "Catch signals"
 	default BUSYBOX_DEFAULT_FEATURE_VI_USE_SIGNALS
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Selecting this option will make vi signal aware. This will support
-	  SIGWINCH to deal with Window Changes, catch ^Z and ^C and alarms.
+	Selecting this option will make vi signal aware. This will support
+	SIGWINCH to deal with Window Changes, catch ^Z and ^C and alarms.
 
 config BUSYBOX_CONFIG_FEATURE_VI_DOT_CMD
 	bool "Remember previous cmd and \".\" cmd"
 	default BUSYBOX_DEFAULT_FEATURE_VI_DOT_CMD
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Make vi remember the last command and be able to repeat it.
+	Make vi remember the last command and be able to repeat it.
 
 config BUSYBOX_CONFIG_FEATURE_VI_READONLY
 	bool "Enable -R option and \"view\" mode"
 	default BUSYBOX_DEFAULT_FEATURE_VI_READONLY
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Enable the read-only command line option, which allows the user to
-	  open a file in read-only mode.
+	Enable the read-only command line option, which allows the user to
+	open a file in read-only mode.
 
 config BUSYBOX_CONFIG_FEATURE_VI_SETOPTS
 	bool "Enable settable options, ai ic showmatch"
 	default BUSYBOX_DEFAULT_FEATURE_VI_SETOPTS
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Enable the editor to set some (ai, ic, showmatch) options.
+	Enable the editor to set some (ai, ic, showmatch) options.
 
 config BUSYBOX_CONFIG_FEATURE_VI_SET
 	bool "Support :set"
@@ -172,37 +172,37 @@ config BUSYBOX_CONFIG_FEATURE_VI_WIN_RESIZE
 	default BUSYBOX_DEFAULT_FEATURE_VI_WIN_RESIZE
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Behave nicely with terminals that get resized.
+	Behave nicely with terminals that get resized.
 
 config BUSYBOX_CONFIG_FEATURE_VI_ASK_TERMINAL
 	bool "Use 'tell me cursor position' ESC sequence to measure window"
 	default BUSYBOX_DEFAULT_FEATURE_VI_ASK_TERMINAL
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  If terminal size can't be retrieved and $LINES/$COLUMNS are not set,
-	  this option makes vi perform a last-ditch effort to find it:
-	  position cursor to 999,999 and ask terminal to report real
-	  cursor position using "ESC [ 6 n" escape sequence, then read stdin.
-	  This is not clean but helps a lot on serial lines and such.
+	If terminal size can't be retrieved and $LINES/$COLUMNS are not set,
+	this option makes vi perform a last-ditch effort to find it:
+	position cursor to 999,999 and ask terminal to report real
+	cursor position using "ESC [ 6 n" escape sequence, then read stdin.
+	This is not clean but helps a lot on serial lines and such.
 
 config BUSYBOX_CONFIG_FEATURE_VI_UNDO
 	bool "Support undo command \"u\""
 	default BUSYBOX_DEFAULT_FEATURE_VI_UNDO
 	depends on BUSYBOX_CONFIG_VI
 	help
-	  Support the 'u' command to undo insertion, deletion, and replacement
-	  of text.
+	Support the 'u' command to undo insertion, deletion, and replacement
+	of text.
 
 config BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE
 	bool "Enable undo operation queuing"
 	default BUSYBOX_DEFAULT_FEATURE_VI_UNDO_QUEUE
 	depends on BUSYBOX_CONFIG_FEATURE_VI_UNDO
 	help
-	  The vi undo functions can use an intermediate queue to greatly lower
-	  malloc() calls and overhead. When the maximum size of this queue is
-	  reached, the contents of the queue are committed to the undo stack.
-	  This increases the size of the undo code and allows some undo
-	  operations (especially un-typing/backspacing) to be far more useful.
+	The vi undo functions can use an intermediate queue to greatly lower
+	malloc() calls and overhead. When the maximum size of this queue is
+	reached, the contents of the queue are committed to the undo stack.
+	This increases the size of the undo code and allows some undo
+	operations (especially un-typing/backspacing) to be far more useful.
 
 config BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE_MAX
 	int "Maximum undo character queue size"
@@ -210,20 +210,20 @@ config BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE_MAX
 	range 32 65536
 	depends on BUSYBOX_CONFIG_FEATURE_VI_UNDO_QUEUE
 	help
-	  This option sets the number of bytes used at runtime for the queue.
-	  Smaller values will create more undo objects and reduce the amount
-	  of typed or backspaced characters that are grouped into one undo
-	  operation; larger values increase the potential size of each undo
-	  and will generally malloc() larger objects and less frequently.
-	  Unless you want more (or less) frequent "undo points" while typing,
-	  you should probably leave this unchanged.
+	This option sets the number of bytes used at runtime for the queue.
+	Smaller values will create more undo objects and reduce the amount
+	of typed or backspaced characters that are grouped into one undo
+	operation; larger values increase the potential size of each undo
+	and will generally malloc() larger objects and less frequently.
+	Unless you want more (or less) frequent "undo points" while typing,
+	you should probably leave this unchanged.
 
 config BUSYBOX_CONFIG_FEATURE_ALLOW_EXEC
 	bool "Allow vi and awk to execute shell commands"
 	default BUSYBOX_DEFAULT_FEATURE_ALLOW_EXEC
 	depends on BUSYBOX_CONFIG_VI || BUSYBOX_CONFIG_AWK
 	help
-	  Enables vi and awk features which allow user to execute
-	  shell commands (using system() C call).
+	Enables vi and awk features which allow user to execute
+	shell commands (using system() C call).
 
 endmenu
diff --git a/package/utils/busybox/config/findutils/Config.in b/package/utils/busybox/config/findutils/Config.in
index 3393adbe3b..0e9a1392f7 100644
--- a/package/utils/busybox/config/findutils/Config.in
+++ b/package/utils/busybox/config/findutils/Config.in
@@ -10,33 +10,33 @@ config BUSYBOX_CONFIG_FIND
 	bool "find"
 	default BUSYBOX_DEFAULT_FIND
 	help
-	  find is used to search your system to find specified files.
+	find is used to search your system to find specified files.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PRINT0
 	bool "Enable -print0: NUL-terminated output"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_PRINT0
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Causes output names to be separated by a NUL character
-	  rather than a newline. This allows names that contain
-	  newlines and other whitespace to be more easily
-	  interpreted by other programs.
+	Causes output names to be separated by a NUL character
+	rather than a newline. This allows names that contain
+	newlines and other whitespace to be more easily
+	interpreted by other programs.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_MTIME
 	bool "Enable -mtime: modified time matching"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_MTIME
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Allow searching based on the modification time of
-	  files, in days.
+	Allow searching based on the modification time of
+	files, in days.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_MMIN
 	bool "Enable -mmin: modified time matching by minutes"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_MMIN
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Allow searching based on the modification time of
-	  files, in minutes.
+	Allow searching based on the modification time of
+	files, in minutes.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PERM
 	bool "Enable -perm: permissions matching"
@@ -48,8 +48,8 @@ config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
 	default BUSYBOX_DEFAULT_FEATURE_FIND_TYPE
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Enable searching based on file type (file,
-	  directory, socket, device, etc.).
+	Enable searching based on file type (file,
+	directory, socket, device, etc.).
 
 config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
 	bool "Enable -xdev: 'stay in filesystem'"
@@ -66,8 +66,8 @@ config BUSYBOX_CONFIG_FEATURE_FIND_NEWER
 	default BUSYBOX_DEFAULT_FEATURE_FIND_NEWER
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Support the 'find -newer' option for finding any files which have
-	  modification time that is more recent than the specified FILE.
+	Support the 'find -newer' option for finding any files which have
+	modification time that is more recent than the specified FILE.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_INUM
 	bool "Enable -inum: inode number matching"
@@ -79,18 +79,18 @@ config BUSYBOX_CONFIG_FEATURE_FIND_EXEC
 	default BUSYBOX_DEFAULT_FEATURE_FIND_EXEC
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Support the 'find -exec' option for executing commands based upon
-	  the files matched.
+	Support the 'find -exec' option for executing commands based upon
+	the files matched.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_EXEC_PLUS
 	bool "Enable -exec ... {} +"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_EXEC_PLUS
 	depends on BUSYBOX_CONFIG_FEATURE_FIND_EXEC
 	help
-	  Support the 'find -exec ... {} +' option for executing commands
-	  for all matched files at once.
-	  Without this option, -exec + is a synonym for -exec ;
-	  (IOW: it works correctly, but without expected speedup)
+	Support the 'find -exec ... {} +' option for executing commands
+	for all matched files at once.
+	Without this option, -exec + is a synonym for -exec ;
+	(IOW: it works correctly, but without expected speedup)
 
 config BUSYBOX_CONFIG_FEATURE_FIND_USER
 	bool "Enable -user: username/uid matching"
@@ -107,23 +107,23 @@ config BUSYBOX_CONFIG_FEATURE_FIND_NOT
 	default BUSYBOX_DEFAULT_FEATURE_FIND_NOT
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Support the '!' operator to invert the test results.
-	  If 'Enable full-blown desktop' is enabled, then will also support
-	  the non-POSIX notation '-not'.
+	Support the '!' operator to invert the test results.
+	If 'Enable full-blown desktop' is enabled, then will also support
+	the non-POSIX notation '-not'.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
 	bool "Enable -depth"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_DEPTH
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Process each directory's contents before the directory itself.
+	Process each directory's contents before the directory itself.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PAREN
 	bool "Enable parens in options"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_PAREN
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Enable usage of parens '(' to specify logical order of arguments.
+	Enable usage of parens '(' to specify logical order of arguments.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_SIZE
 	bool "Enable -size: file size matching"
@@ -135,115 +135,115 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PRUNE
 	default BUSYBOX_DEFAULT_FEATURE_FIND_PRUNE
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  If the file is a directory, don't descend into it. Useful for
-	  exclusion .svn and CVS directories.
+	If the file is a directory, don't descend into it. Useful for
+	exclusion .svn and CVS directories.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_DELETE
 	bool "Enable -delete: delete files/dirs"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_DELETE
 	depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_FEATURE_FIND_DEPTH
 	help
-	  Support the 'find -delete' option for deleting files and directories.
-	  WARNING: This option can do much harm if used wrong. Busybox will not
-	  try to protect the user from doing stupid things. Use with care.
+	Support the 'find -delete' option for deleting files and directories.
+	WARNING: This option can do much harm if used wrong. Busybox will not
+	try to protect the user from doing stupid things. Use with care.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_PATH
 	bool "Enable -path: match pathname with shell pattern"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_PATH
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  The -path option matches whole pathname instead of just filename.
+	The -path option matches whole pathname instead of just filename.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_REGEX
 	bool "Enable -regex: match pathname with regex"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_REGEX
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  The -regex option matches whole pathname against regular expression.
+	The -regex option matches whole pathname against regular expression.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_CONTEXT
 	bool "Enable -context: security context matching"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_CONTEXT
 	depends on BUSYBOX_CONFIG_FIND && BUSYBOX_CONFIG_SELINUX
 	help
-	  Support the 'find -context' option for matching security context.
+	Support the 'find -context' option for matching security context.
 
 config BUSYBOX_CONFIG_FEATURE_FIND_LINKS
 	bool "Enable -links: link count matching"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_LINKS
 	depends on BUSYBOX_CONFIG_FIND
 	help
-	  Support the 'find -links' option for matching number of links.
+	Support the 'find -links' option for matching number of links.
 config BUSYBOX_CONFIG_GREP
 	bool "grep"
 	default BUSYBOX_DEFAULT_GREP
 	help
-	  grep is used to search files for a specified pattern.
+	grep is used to search files for a specified pattern.
 
 config BUSYBOX_CONFIG_EGREP
 	bool "egrep"
 	default BUSYBOX_DEFAULT_EGREP
 	help
-	  Alias to "grep -E"
+	Alias to "grep -E"
 
 config BUSYBOX_CONFIG_FGREP
 	bool "fgrep"
 	default BUSYBOX_DEFAULT_FGREP
 	help
-	  Alias to "grep -F"
+	Alias to "grep -F"
 
 config BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT
 	bool "Enable before and after context flags (-A, -B and -C)"
 	default BUSYBOX_DEFAULT_FEATURE_GREP_CONTEXT
 	depends on BUSYBOX_CONFIG_GREP || BUSYBOX_CONFIG_EGREP || BUSYBOX_CONFIG_FGREP
 	help
-	  Print the specified number of leading (-B) and/or trailing (-A)
-	  context surrounding our matching lines.
-	  Print the specified number of context lines (-C).
+	Print the specified number of leading (-B) and/or trailing (-A)
+	context surrounding our matching lines.
+	Print the specified number of context lines (-C).
 config BUSYBOX_CONFIG_XARGS
 	bool "xargs"
 	default BUSYBOX_DEFAULT_XARGS
 	help
-	  xargs is used to execute a specified command for
-	  every item from standard input.
+	xargs is used to execute a specified command for
+	every item from standard input.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION
 	bool "Enable -p: prompt and confirmation"
 	default BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_CONFIRMATION
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Support -p: prompt the user whether to run each command
-	  line and read a line from the terminal.
+	Support -p: prompt the user whether to run each command
+	line and read a line from the terminal.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_QUOTES
 	bool "Enable single and double quotes and backslash"
 	default BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_QUOTES
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Support quoting in the input.
+	Support quoting in the input.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT
 	bool "Enable -x: exit if -s or -n is exceeded"
 	default BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_TERMOPT
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Support -x: exit if the command size (see the -s or -n option)
-	  is exceeded.
+	Support -x: exit if the command size (see the -s or -n option)
+	is exceeded.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM
 	bool "Enable -0: NUL-terminated input"
 	default BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ZERO_TERM
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Support -0: input items are terminated by a NUL character
-	  instead of whitespace, and the quotes and backslash
-	  are not special.
+	Support -0: input items are terminated by a NUL character
+	instead of whitespace, and the quotes and backslash
+	are not special.
 
 config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR
 	bool "Enable -I STR: string to replace"
 	default BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_REPL_STR
 	depends on BUSYBOX_CONFIG_XARGS
 	help
-	  Support -I STR and -i[STR] options.
+	Support -I STR and -i[STR] options.
 
 endmenu
diff --git a/package/utils/busybox/config/init/Config.in b/package/utils/busybox/config/init/Config.in
index 072df33893..00eb6175d1 100644
--- a/package/utils/busybox/config/init/Config.in
+++ b/package/utils/busybox/config/init/Config.in
@@ -10,110 +10,110 @@ config BUSYBOX_CONFIG_BOOTCHARTD
 	bool "bootchartd"
 	default BUSYBOX_DEFAULT_BOOTCHARTD
 	help
-	  bootchartd is commonly used to profile the boot process
-	  for the purpose of speeding it up. In this case, it is started
-	  by the kernel as the init process. This is configured by adding
-	  the init=/sbin/bootchartd option to the kernel command line.
+	bootchartd is commonly used to profile the boot process
+	for the purpose of speeding it up. In this case, it is started
+	by the kernel as the init process. This is configured by adding
+	the init=/sbin/bootchartd option to the kernel command line.
 
-	  It can also be used to monitor the resource usage of a specific
-	  application or the running system in general. In this case,
-	  bootchartd is started interactively by running bootchartd start
-	  and stopped using bootchartd stop.
+	It can also be used to monitor the resource usage of a specific
+	application or the running system in general. In this case,
+	bootchartd is started interactively by running bootchartd start
+	and stopped using bootchartd stop.
 
 config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER
 	bool "Compatible, bloated header"
 	default BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_BLOATED_HEADER
 	depends on BUSYBOX_CONFIG_BOOTCHARTD
 	help
-	  Create extended header file compatible with "big" bootchartd.
-	  "Big" bootchartd is a shell script and it dumps some
-	  "convenient" info int the header, such as:
+	Create extended header file compatible with "big" bootchartd.
+	"Big" bootchartd is a shell script and it dumps some
+	"convenient" info int the header, such as:
 	    title = Boot chart for `hostname` (`date`)
 	    system.uname = `uname -srvm`
 	    system.release = `cat /etc/DISTRO-release`
 	    system.cpu = `grep '^model name' /proc/cpuinfo | head -1` ($cpucount)
 	    system.kernel.options = `cat /proc/cmdline`
-	  This data is not mandatory for bootchart graph generation,
-	  and is considered bloat. Nevertheless, this option
-	  makes bootchartd applet to dump a subset of it.
+	This data is not mandatory for bootchart graph generation,
+	and is considered bloat. Nevertheless, this option
+	makes bootchartd applet to dump a subset of it.
 
 config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE
 	bool "Support bootchartd.conf"
 	default BUSYBOX_DEFAULT_FEATURE_BOOTCHARTD_CONFIG_FILE
 	depends on BUSYBOX_CONFIG_BOOTCHARTD
 	help
-	  Enable reading and parsing of $PWD/bootchartd.conf
-	  and /etc/bootchartd.conf files.
+	Enable reading and parsing of $PWD/bootchartd.conf
+	and /etc/bootchartd.conf files.
 config BUSYBOX_CONFIG_HALT
 	bool "halt"
 	default BUSYBOX_DEFAULT_HALT
 	help
-	  Stop all processes and halt the system.
+	Stop all processes and halt the system.
 
 config BUSYBOX_CONFIG_POWEROFF
 	bool "poweroff"
 	default BUSYBOX_DEFAULT_POWEROFF
 	help
-	  Stop all processes and power off the system.
+	Stop all processes and power off the system.
 
 config BUSYBOX_CONFIG_REBOOT
 	bool "reboot"
 	default BUSYBOX_DEFAULT_REBOOT
 	help
-	  Stop all processes and reboot the system.
+	Stop all processes and reboot the system.
 
 config BUSYBOX_CONFIG_FEATURE_CALL_TELINIT
 	bool "Call telinit on shutdown and reboot"
 	default BUSYBOX_DEFAULT_FEATURE_CALL_TELINIT
 	depends on (BUSYBOX_CONFIG_HALT || BUSYBOX_CONFIG_POWEROFF || BUSYBOX_CONFIG_REBOOT) && !BUSYBOX_CONFIG_INIT
 	help
-	  Call an external program (normally telinit) to facilitate
-	  a switch to a proper runlevel.
+	Call an external program (normally telinit) to facilitate
+	a switch to a proper runlevel.
 
-	  This option is only available if you selected halt and friends,
-	  but did not select init.
+	This option is only available if you selected halt and friends,
+	but did not select init.
 
 config BUSYBOX_CONFIG_TELINIT_PATH
 	string "Path to telinit executable"
 	default BUSYBOX_DEFAULT_TELINIT_PATH
 	depends on BUSYBOX_CONFIG_FEATURE_CALL_TELINIT
 	help
-	  When busybox halt and friends have to call external telinit
-	  to facilitate proper shutdown, this path is to be used when
-	  locating telinit executable.
+	When busybox halt and friends have to call external telinit
+	to facilitate proper shutdown, this path is to be used when
+	locating telinit executable.
 config BUSYBOX_CONFIG_INIT
 	bool "init"
 	default BUSYBOX_DEFAULT_INIT
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  init is the first program run when the system boots.
+	init is the first program run when the system boots.
 
 config BUSYBOX_CONFIG_LINUXRC
 	bool "linuxrc: support running init from initrd (not initramfs)"
 	default BUSYBOX_DEFAULT_LINUXRC
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  Legacy support for running init under the old-style initrd. Allows
-	  the name linuxrc to act as init, and it doesn't assume init is PID 1.
+	Legacy support for running init under the old-style initrd. Allows
+	the name linuxrc to act as init, and it doesn't assume init is PID 1.
 
-	  This does not apply to initramfs, which runs /init as PID 1 and
-	  requires no special support.
+	This does not apply to initramfs, which runs /init as PID 1 and
+	requires no special support.
 
 config BUSYBOX_CONFIG_FEATURE_USE_INITTAB
 	bool "Support reading an inittab file"
 	default BUSYBOX_DEFAULT_FEATURE_USE_INITTAB
 	depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
 	help
-	  Allow init to read an inittab file when the system boot.
+	Allow init to read an inittab file when the system boot.
 
 config BUSYBOX_CONFIG_FEATURE_KILL_REMOVED
 	bool "Support killing processes that have been removed from inittab"
 	default BUSYBOX_DEFAULT_FEATURE_KILL_REMOVED
 	depends on BUSYBOX_CONFIG_FEATURE_USE_INITTAB
 	help
-	  When respawn entries are removed from inittab and a SIGHUP is
-	  sent to init, this option will make init kill the processes
-	  that have been removed.
+	When respawn entries are removed from inittab and a SIGHUP is
+	sent to init, this option will make init kill the processes
+	that have been removed.
 
 config BUSYBOX_CONFIG_FEATURE_KILL_DELAY
 	int "How long to wait between TERM and KILL (0 - send TERM only)" if FEATURE_KILL_REMOVED
@@ -121,34 +121,34 @@ config BUSYBOX_CONFIG_FEATURE_KILL_DELAY
 	default BUSYBOX_DEFAULT_FEATURE_KILL_DELAY
 	depends on BUSYBOX_CONFIG_FEATURE_KILL_REMOVED
 	help
-	  With nonzero setting, init sends TERM, forks, child waits N
-	  seconds, sends KILL and exits. Setting it too high is unwise
-	  (child will hang around for too long and could actually kill
-	  the wrong process!)
+	With nonzero setting, init sends TERM, forks, child waits N
+	seconds, sends KILL and exits. Setting it too high is unwise
+	(child will hang around for too long and could actually kill
+	the wrong process!)
 
 config BUSYBOX_CONFIG_FEATURE_INIT_SCTTY
 	bool "Run commands with leading dash with controlling tty"
 	default BUSYBOX_DEFAULT_FEATURE_INIT_SCTTY
 	depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
 	help
-	  If this option is enabled, init will try to give a controlling
-	  tty to any command which has leading hyphen (often it's "-/bin/sh").
-	  More precisely, init will do "ioctl(STDIN_FILENO, TIOCSCTTY, 0)".
-	  If device attached to STDIN_FILENO can be a ctty but is not yet
-	  a ctty for other session, it will become this process' ctty.
-	  This is not the traditional init behavour, but is often what you want
-	  in an embedded system where the console is only accessed during
-	  development or for maintenance.
-	  NB: using cttyhack applet may work better.
+	If this option is enabled, init will try to give a controlling
+	tty to any command which has leading hyphen (often it's "-/bin/sh").
+	More precisely, init will do "ioctl(STDIN_FILENO, TIOCSCTTY, 0)".
+	If device attached to STDIN_FILENO can be a ctty but is not yet
+	a ctty for other session, it will become this process' ctty.
+	This is not the traditional init behavour, but is often what you want
+	in an embedded system where the console is only accessed during
+	development or for maintenance.
+	NB: using cttyhack applet may work better.
 
 config BUSYBOX_CONFIG_FEATURE_INIT_SYSLOG
 	bool "Enable init to write to syslog"
 	default BUSYBOX_DEFAULT_FEATURE_INIT_SYSLOG
 	depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
 	help
-	  If selected, some init messages are sent to syslog.
-	  Otherwise, they are sent to VT #5 if linux virtual tty is detected
-	  (if not, no separate logging is done).
+	If selected, some init messages are sent to syslog.
+	Otherwise, they are sent to VT #5 if linux virtual tty is detected
+	(if not, no separate logging is done).
 
 config BUSYBOX_CONFIG_FEATURE_INIT_QUIET
 	bool "Be quiet on boot (no 'init started:' message)"
@@ -160,36 +160,36 @@ config BUSYBOX_CONFIG_FEATURE_INIT_COREDUMPS
 	default BUSYBOX_DEFAULT_FEATURE_INIT_COREDUMPS	# not Y because this is a debug option
 	depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
 	help
-	  If this option is enabled and the file /.init_enable_core
-	  exists, then init will call setrlimit() to allow unlimited
-	  core file sizes. If this option is disabled, processes
-	  will not generate any core files.
+	If this option is enabled and the file /.init_enable_core
+	exists, then init will call setrlimit() to allow unlimited
+	core file sizes. If this option is disabled, processes
+	will not generate any core files.
 
 config BUSYBOX_CONFIG_INIT_TERMINAL_TYPE
 	string "Initial terminal type"
 	default BUSYBOX_DEFAULT_INIT_TERMINAL_TYPE
 	depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
 	help
-	  This is the initial value set by init for the TERM environment
-	  variable. This variable is used by programs which make use of
-	  extended terminal capabilities.
+	This is the initial value set by init for the TERM environment
+	variable. This variable is used by programs which make use of
+	extended terminal capabilities.
 
-	  Note that on Linux, init attempts to detect serial terminal and
-	  sets TERM to "vt102" if one is found.
+	Note that on Linux, init attempts to detect serial terminal and
+	sets TERM to "vt102" if one is found.
 
 config BUSYBOX_CONFIG_FEATURE_INIT_MODIFY_CMDLINE
 	bool "Clear init's command line"
 	default BUSYBOX_DEFAULT_FEATURE_INIT_MODIFY_CMDLINE
 	depends on BUSYBOX_CONFIG_INIT || BUSYBOX_CONFIG_LINUXRC
 	help
-	  When launched as PID 1 and after parsing its arguments, init
-	  wipes all the arguments but argv[0] and rewrites argv[0] to
-	  contain only "init", so that its command line appears solely as
-	  "init" in tools such as ps.
-	  If this option is set to Y, init will keep its original behavior,
-	  otherwise, all the arguments including argv[0] will be preserved,
-	  be they parsed or ignored by init.
-	  The original command-line used to launch init can then be
-	  retrieved in /proc/1/cmdline on Linux, for example.
+	When launched as PID 1 and after parsing its arguments, init
+	wipes all the arguments but argv[0] and rewrites argv[0] to
+	contain only "init", so that its command line appears solely as
+	"init" in tools such as ps.
+	If this option is set to Y, init will keep its original behavior,
+	otherwise, all the arguments including argv[0] will be preserved,
+	be they parsed or ignored by init.
+	The original command-line used to launch init can then be
+	retrieved in /proc/1/cmdline on Linux, for example.
 
 endmenu
diff --git a/package/utils/busybox/config/libbb/Config.in b/package/utils/busybox/config/libbb/Config.in
index 1687ed5c78..5be8aedc88 100644
--- a/package/utils/busybox/config/libbb/Config.in
+++ b/package/utils/busybox/config/libbb/Config.in
@@ -10,50 +10,50 @@ config BUSYBOX_CONFIG_FEATURE_USE_BSS_TAIL
 	bool "Use the end of BSS page"
 	default BUSYBOX_DEFAULT_FEATURE_USE_BSS_TAIL
 	help
-	  Attempt to reclaim a small unused part of BSS.
-
-	  Executables have the following parts:
-	  = read-only executable code and constants, also known as "text"
-	  = read-write data
-	  = non-initialized (zeroed on demand) data, also known as "bss"
-
-	  At link time, "text" is padded to a full page. At runtime, all "text"
-	  pages are mapped RO and executable.
-	  "Data" starts on the next page boundary, but is not padded
-	  to a full page at the end. "Bss" starts wherever "data" ends.
-	  At runtime, "data" pages are mapped RW and they are file-backed
-	  (this includes a small portion of "bss" which may live in the last
-	  partial page of "data").
-	  Pages which are fully in "bss" are mapped to anonymous memory.
-
-	  "Bss" end is usually not page-aligned. There is an unused space
-	  in the last page. Linker marks its start with the "_end" symbol.
-
-	  This option will attempt to use that space for bb_common_bufsiz1[]
-	  array. If it fits after _end, it will be used, and COMMON_BUFSIZE
-	  will be enlarged from its guaranteed minimum size of 1 kbyte.
-	  This may require recompilation a second time, since value of _end
-	  is known only after final link.
-
-	  If you are getting a build error like this:
+	Attempt to reclaim a small unused part of BSS.
+
+	Executables have the following parts:
+	= read-only executable code and constants, also known as "text"
+	= read-write data
+	= non-initialized (zeroed on demand) data, also known as "bss"
+
+	At link time, "text" is padded to a full page. At runtime, all "text"
+	pages are mapped RO and executable.
+	"Data" starts on the next page boundary, but is not padded
+	to a full page at the end. "Bss" starts wherever "data" ends.
+	At runtime, "data" pages are mapped RW and they are file-backed
+	(this includes a small portion of "bss" which may live in the last
+	partial page of "data").
+	Pages which are fully in "bss" are mapped to anonymous memory.
+
+	"Bss" end is usually not page-aligned. There is an unused space
+	in the last page. Linker marks its start with the "_end" symbol.
+
+	This option will attempt to use that space for bb_common_bufsiz1[]
+	array. If it fits after _end, it will be used, and COMMON_BUFSIZE
+	will be enlarged from its guaranteed minimum size of 1 kbyte.
+	This may require recompilation a second time, since value of _end
+	is known only after final link.
+
+	If you are getting a build error like this:
 	        appletlib.c:(.text.main+0xd): undefined reference to '_end'
-	  disable this option.
+	disable this option.
 config BUSYBOX_CONFIG_FEATURE_RTMINMAX
 	bool "Support RTMIN[+n] and RTMAX[-n] signal names"
 	default BUSYBOX_DEFAULT_FEATURE_RTMINMAX
 	help
-	  Support RTMIN[+n] and RTMAX[-n] signal names
-	  in kill, killall etc. This costs ~250 bytes.
+	Support RTMIN[+n] and RTMAX[-n] signal names
+	in kill, killall etc. This costs ~250 bytes.
 
 choice
 	prompt "Buffer allocation policy"
 	default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
 	help
-	  There are 3 ways BusyBox can handle buffer allocations:
-	  - Use malloc. This costs code size for the call to xmalloc.
-	  - Put them on stack. For some very small machines with limited stack
+	There are 3 ways BusyBox can handle buffer allocations:
+	- Use malloc. This costs code size for the call to xmalloc.
+	- Put them on stack. For some very small machines with limited stack
 	    space, this can be deadly. For most folks, this works just fine.
-	  - Put them in BSS. This works beautifully for computers with a real
+	- Put them in BSS. This works beautifully for computers with a real
 	    MMU (and OS support), but wastes runtime RAM for uCLinux. This
 	    behavior was the only one available for BusyBox versions 0.48 and
 	    earlier.
@@ -74,52 +74,52 @@ config BUSYBOX_CONFIG_PASSWORD_MINLEN
 	default BUSYBOX_DEFAULT_PASSWORD_MINLEN
 	range 5 32
 	help
-	  Minimum allowable password length.
+	Minimum allowable password length.
 
 config BUSYBOX_CONFIG_MD5_SMALL
 	int "MD5: Trade bytes for speed (0:fast, 3:slow)"
 	default BUSYBOX_DEFAULT_MD5_SMALL  # all "fast or small" options default to small
 	range 0 3
 	help
-	  Trade binary size versus speed for the md5sum algorithm.
-	  Approximate values running uClibc and hashing
-	  linux-2.4.4.tar.bz2 were:
+	Trade binary size versus speed for the md5sum algorithm.
+	Approximate values running uClibc and hashing
+	linux-2.4.4.tar.bz2 were:
 	                    user times (sec)  text size (386)
-	  0 (fastest)         1.1                6144
-	  1                   1.4                5392
-	  2                   3.0                5088
-	  3 (smallest)        5.1                4912
+	0 (fastest)         1.1                6144
+	1                   1.4                5392
+	2                   3.0                5088
+	3 (smallest)        5.1                4912
 
 config BUSYBOX_CONFIG_SHA3_SMALL
 	int "SHA3: Trade bytes for speed (0:fast, 1:slow)"
 	default BUSYBOX_DEFAULT_SHA3_SMALL  # all "fast or small" options default to small
 	range 0 1
 	help
-	  Trade binary size versus speed for the sha3sum algorithm.
-	  SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
-	  64-bit x86: +270 bytes of code, 45% faster
-	  32-bit x86: +450 bytes of code, 75% faster
+	Trade binary size versus speed for the sha3sum algorithm.
+	SHA3_SMALL=0 compared to SHA3_SMALL=1 (approximate):
+	64-bit x86: +270 bytes of code, 45% faster
+	32-bit x86: +450 bytes of code, 75% faster
 
 config BUSYBOX_CONFIG_FEATURE_FAST_TOP
 	bool "Faster /proc scanning code (+100 bytes)"
 	default BUSYBOX_DEFAULT_FEATURE_FAST_TOP  # all "fast or small" options default to small
 	help
-	  This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
-	  but code size is slightly bigger.
+	This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
+	but code size is slightly bigger.
 
 config BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS
 	bool "Support /etc/networks"
 	default BUSYBOX_DEFAULT_FEATURE_ETC_NETWORKS
 	help
-	  Enable support for network names in /etc/networks. This is
-	  a rarely used feature which allows you to use names
-	  instead of IP/mask pairs in route command.
+	Enable support for network names in /etc/networks. This is
+	a rarely used feature which allows you to use names
+	instead of IP/mask pairs in route command.
 
 config BUSYBOX_CONFIG_FEATURE_EDITING
 	bool "Command line editing"
 	default BUSYBOX_DEFAULT_FEATURE_EDITING
 	help
-	  Enable line editing (mainly for shell command line).
+	Enable line editing (mainly for shell command line).
 
 config BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN
 	int "Maximum length of input"
@@ -127,17 +127,17 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_MAX_LEN
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_MAX_LEN
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Line editing code uses on-stack buffers for storage.
-	  You may want to decrease this parameter if your target machine
-	  benefits from smaller stack usage.
+	Line editing code uses on-stack buffers for storage.
+	You may want to decrease this parameter if your target machine
+	benefits from smaller stack usage.
 
 config BUSYBOX_CONFIG_FEATURE_EDITING_VI
 	bool "vi-style line editing commands"
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_VI
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Enable vi-style line editing. In shells, this mode can be
-	  turned on and off with "set -o vi" and "set +o vi".
+	Enable vi-style line editing. In shells, this mode can be
+	turned on and off with "set -o vi" and "set +o vi".
 
 config BUSYBOX_CONFIG_FEATURE_EDITING_HISTORY
 	int "History size"
@@ -146,29 +146,29 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_HISTORY
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_HISTORY
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Specify command history size (0 - disable).
+	Specify command history size (0 - disable).
 
 config BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
 	bool "History saving"
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_SAVEHISTORY
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Enable history saving in shells.
+	Enable history saving in shells.
 
 config BUSYBOX_CONFIG_FEATURE_EDITING_SAVE_ON_EXIT
 	bool "Save history on shell exit, not after every command"
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_SAVE_ON_EXIT
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING_SAVEHISTORY
 	help
-	  Save history on shell exit, not after every command.
+	Save history on shell exit, not after every command.
 
 config BUSYBOX_CONFIG_FEATURE_REVERSE_SEARCH
 	bool "Reverse history search"
 	default BUSYBOX_DEFAULT_FEATURE_REVERSE_SEARCH
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Enable readline-like Ctrl-R combination for reverse history search.
-	  Increases code by about 0.5k.
+	Enable readline-like Ctrl-R combination for reverse history search.
+	Increases code by about 0.5k.
 
 config BUSYBOX_CONFIG_FEATURE_TAB_COMPLETION
 	bool "Tab completion"
@@ -185,236 +185,236 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_FANCY_PROMPT
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Setting this option allows for prompts to use things like \w and
-	  \$ and escape codes.
+	Setting this option allows for prompts to use things like \w and
+	\$ and escape codes.
 
 config BUSYBOX_CONFIG_FEATURE_EDITING_ASK_TERMINAL
 	bool "Query cursor position from terminal"
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_ASK_TERMINAL
 	depends on BUSYBOX_CONFIG_FEATURE_EDITING
 	help
-	  Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
-	  current cursor position. This information is used to make line
-	  editing more robust in some cases.
-	  If you are not sure whether your terminals respond to this code
-	  correctly, or want to save on code size (about 400 bytes),
-	  then do not turn this option on.
+	Allow usage of "ESC [ 6 n" sequence. Terminal answers back with
+	current cursor position. This information is used to make line
+	editing more robust in some cases.
+	If you are not sure whether your terminals respond to this code
+	correctly, or want to save on code size (about 400 bytes),
+	then do not turn this option on.
 
 config BUSYBOX_CONFIG_LOCALE_SUPPORT
 	bool "Enable locale support (system needs locale for this to work)"
 	default BUSYBOX_DEFAULT_LOCALE_SUPPORT
 	help
-	  Enable this if your system has locale support and you would like
-	  busybox to support locale settings.
+	Enable this if your system has locale support and you would like
+	busybox to support locale settings.
 
 config BUSYBOX_CONFIG_UNICODE_SUPPORT
 	bool "Support Unicode"
 	default BUSYBOX_DEFAULT_UNICODE_SUPPORT
 	help
-	  This makes various applets aware that one byte is not
-	  one character on screen.
+	This makes various applets aware that one byte is not
+	one character on screen.
 
-	  Busybox aims to eventually work correctly with Unicode displays.
-	  Any older encodings are not guaranteed to work.
-	  Probably by the time when busybox will be fully Unicode-clean,
-	  other encodings will be mainly of historic interest.
+	Busybox aims to eventually work correctly with Unicode displays.
+	Any older encodings are not guaranteed to work.
+	Probably by the time when busybox will be fully Unicode-clean,
+	other encodings will be mainly of historic interest.
 
 config BUSYBOX_CONFIG_UNICODE_USING_LOCALE
 	bool "Use libc routines for Unicode (else uses internal ones)"
 	default BUSYBOX_DEFAULT_UNICODE_USING_LOCALE
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && BUSYBOX_CONFIG_LOCALE_SUPPORT
 	help
-	  With this option on, Unicode support is implemented using libc
-	  routines. Otherwise, internal implementation is used.
-	  Internal implementation is smaller.
+	With this option on, Unicode support is implemented using libc
+	routines. Otherwise, internal implementation is used.
+	Internal implementation is smaller.
 
 config BUSYBOX_CONFIG_FEATURE_CHECK_UNICODE_IN_ENV
 	bool "Check $LC_ALL, $LC_CTYPE and $LANG environment variables"
 	default BUSYBOX_DEFAULT_FEATURE_CHECK_UNICODE_IN_ENV
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
 	help
-	  With this option on, Unicode support is activated
-	  only if locale-related variables have the value of the form
-	  "xxxx.utf8"
+	With this option on, Unicode support is activated
+	only if locale-related variables have the value of the form
+	"xxxx.utf8"
 
-	  Otherwise, Unicode support will be always enabled and active.
+	Otherwise, Unicode support will be always enabled and active.
 
 config BUSYBOX_CONFIG_SUBST_WCHAR
 	int "Character code to substitute unprintable characters with"
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
 	default BUSYBOX_DEFAULT_SUBST_WCHAR
 	help
-	  Typical values are 63 for '?' (works with any output device),
-	  30 for ASCII substitute control code,
-	  65533 (0xfffd) for Unicode replacement character.
+	Typical values are 63 for '?' (works with any output device),
+	30 for ASCII substitute control code,
+	65533 (0xfffd) for Unicode replacement character.
 
 config BUSYBOX_CONFIG_LAST_SUPPORTED_WCHAR
 	int "Range of supported Unicode characters"
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
 	default BUSYBOX_DEFAULT_LAST_SUPPORTED_WCHAR
 	help
-	  Any character with Unicode value bigger than this is assumed
-	  to be non-printable on output device. Many applets replace
-	  such characters with substitution character.
-
-	  The idea is that many valid printable Unicode chars
-	  nevertheless are not displayed correctly. Think about
-	  combining charachers, double-wide hieroglyphs, obscure
-	  characters in dozens of ancient scripts...
-	  Many terminals, terminal emulators, xterms etc will fail
-	  to handle them correctly. Choose the smallest value
-	  which suits your needs.
-
-	  Typical values are:
-	  126 - ASCII only
-	  767 (0x2ff) - there are no combining chars in [0..767] range
+	Any character with Unicode value bigger than this is assumed
+	to be non-printable on output device. Many applets replace
+	such characters with substitution character.
+
+	The idea is that many valid printable Unicode chars
+	nevertheless are not displayed correctly. Think about
+	combining charachers, double-wide hieroglyphs, obscure
+	characters in dozens of ancient scripts...
+	Many terminals, terminal emulators, xterms etc will fail
+	to handle them correctly. Choose the smallest value
+	which suits your needs.
+
+	Typical values are:
+	126 - ASCII only
+	767 (0x2ff) - there are no combining chars in [0..767] range
 			(the range includes Latin 1, Latin Ext. A and B),
 			code is ~700 bytes smaller for this case.
-	  4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
+	4351 (0x10ff) - there are no double-wide chars in [0..4351] range,
 			code is ~300 bytes smaller for this case.
-	  12799 (0x31ff) - nearly all non-ideographic characters are
+	12799 (0x31ff) - nearly all non-ideographic characters are
 			available in [0..12799] range, including
 			East Asian scripts like katakana, hiragana, hangul,
 			bopomofo...
-	  0 - off, any valid printable Unicode character will be printed.
+	0 - off, any valid printable Unicode character will be printed.
 
 config BUSYBOX_CONFIG_UNICODE_COMBINING_WCHARS
 	bool "Allow zero-width Unicode characters on output"
 	default BUSYBOX_DEFAULT_UNICODE_COMBINING_WCHARS
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
 	help
-	  With this option off, any Unicode char with width of 0
-	  is substituted on output.
+	With this option off, any Unicode char with width of 0
+	is substituted on output.
 
 config BUSYBOX_CONFIG_UNICODE_WIDE_WCHARS
 	bool "Allow wide Unicode characters on output"
 	default BUSYBOX_DEFAULT_UNICODE_WIDE_WCHARS
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
 	help
-	  With this option off, any Unicode char with width > 1
-	  is substituted on output.
+	With this option off, any Unicode char with width > 1
+	is substituted on output.
 
 config BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
 	bool "Bidirectional character-aware line input"
 	default BUSYBOX_DEFAULT_UNICODE_BIDI_SUPPORT
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT && !BUSYBOX_CONFIG_UNICODE_USING_LOCALE
 	help
-	  With this option on, right-to-left Unicode characters
-	  are treated differently on input (e.g. cursor movement).
+	With this option on, right-to-left Unicode characters
+	are treated differently on input (e.g. cursor movement).
 
 config BUSYBOX_CONFIG_UNICODE_NEUTRAL_TABLE
 	bool "In bidi input, support non-ASCII neutral chars too"
 	default BUSYBOX_DEFAULT_UNICODE_NEUTRAL_TABLE
 	depends on BUSYBOX_CONFIG_UNICODE_BIDI_SUPPORT
 	help
-	  In most cases it's enough to treat only ASCII non-letters
-	  (i.e. punctuation, numbers and space) as characters
-	  with neutral directionality.
-	  With this option on, more extensive (and bigger) table
-	  of neutral chars will be used.
+	In most cases it's enough to treat only ASCII non-letters
+	(i.e. punctuation, numbers and space) as characters
+	with neutral directionality.
+	With this option on, more extensive (and bigger) table
+	of neutral chars will be used.
 
 config BUSYBOX_CONFIG_UNICODE_PRESERVE_BROKEN
 	bool "Make it possible to enter sequences of chars which are not Unicode"
 	default BUSYBOX_DEFAULT_UNICODE_PRESERVE_BROKEN
 	depends on BUSYBOX_CONFIG_UNICODE_SUPPORT
 	help
-	  With this option on, on line-editing input (such as used by shells)
-	  invalid UTF-8 bytes are not substituted with the selected
-	  substitution character.
-	  For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
-	  at shell prompt will list file named 0xff (single char name
-	  with char value 255), not file named '?'.
+	With this option on, on line-editing input (such as used by shells)
+	invalid UTF-8 bytes are not substituted with the selected
+	substitution character.
+	For example, this means that entering 'l', 's', ' ', 0xff, [Enter]
+	at shell prompt will list file named 0xff (single char name
+	with char value 255), not file named '?'.
 
 config BUSYBOX_CONFIG_FEATURE_NON_POSIX_CP
 	bool "Non-POSIX, but safer, copying to special nodes"
 	default BUSYBOX_DEFAULT_FEATURE_NON_POSIX_CP
 	help
-	  With this option, "cp file symlink" will delete symlink
-	  and create a regular file. This does not conform to POSIX,
-	  but prevents a symlink attack.
-	  Similarly, "cp file device" will not send file's data
-	  to the device. (To do that, use "cat file >device")
+	With this option, "cp file symlink" will delete symlink
+	and create a regular file. This does not conform to POSIX,
+	but prevents a symlink attack.
+	Similarly, "cp file device" will not send file's data
+	to the device. (To do that, use "cat file >device")
 
 config BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE
 	bool "Give more precise messages when copy fails (cp, mv etc)"
 	default BUSYBOX_DEFAULT_FEATURE_VERBOSE_CP_MESSAGE
 	help
-	  Error messages with this feature enabled:
+	Error messages with this feature enabled:
 	    $ cp file /does_not_exist/file
 	    cp: cannot create '/does_not_exist/file': Path does not exist
 	    $ cp file /vmlinuz/file
 	    cp: cannot stat '/vmlinuz/file': Path has non-directory component
-	  If this feature is not enabled, they will be, respectively:
+	If this feature is not enabled, they will be, respectively:
 	    cp: cannot create '/does_not_exist/file': No such file or directory
 	    cp: cannot stat '/vmlinuz/file': Not a directory
-	  This will cost you ~60 bytes.
+	This will cost you ~60 bytes.
 
 config BUSYBOX_CONFIG_FEATURE_USE_SENDFILE
 	bool "Use sendfile system call"
 	default BUSYBOX_DEFAULT_FEATURE_USE_SENDFILE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  When enabled, busybox will use the kernel sendfile() function
-	  instead of read/write loops to copy data between file descriptors
-	  (for example, cp command does this a lot).
-	  If sendfile() doesn't work, copying code falls back to read/write
-	  loop. sendfile() was originally implemented for faster I/O
-	  from files to sockets, but since Linux 2.6.33 it was extended
-	  to work for many more file types.
+	When enabled, busybox will use the kernel sendfile() function
+	instead of read/write loops to copy data between file descriptors
+	(for example, cp command does this a lot).
+	If sendfile() doesn't work, copying code falls back to read/write
+	loop. sendfile() was originally implemented for faster I/O
+	from files to sockets, but since Linux 2.6.33 it was extended
+	to work for many more file types.
 
 config BUSYBOX_CONFIG_FEATURE_COPYBUF_KB
 	int "Copy buffer size, in kilobytes"
 	range 1 1024
 	default BUSYBOX_DEFAULT_FEATURE_COPYBUF_KB
 	help
-	  Size of buffer used by cp, mv, install, wget etc.
-	  Buffers which are 4 kb or less will be allocated on stack.
-	  Bigger buffers will be allocated with mmap, with fallback to 4 kb
-	  stack buffer if mmap fails.
+	Size of buffer used by cp, mv, install, wget etc.
+	Buffers which are 4 kb or less will be allocated on stack.
+	Bigger buffers will be allocated with mmap, with fallback to 4 kb
+	stack buffer if mmap fails.
 
 config BUSYBOX_CONFIG_FEATURE_SKIP_ROOTFS
 	bool "Skip rootfs in mount table"
 	default BUSYBOX_DEFAULT_FEATURE_SKIP_ROOTFS
 	help
-	  Ignore rootfs entry in mount table.
+	Ignore rootfs entry in mount table.
 
-	  In Linux, kernel has a special filesystem, rootfs, which is initially
-	  mounted on /. It contains initramfs data, if kernel is configured
-	  to have one. Usually, another file system is mounted over / early
-	  in boot process, and therefore most tools which manipulate
-	  mount table, such as df, will skip rootfs entry.
+	In Linux, kernel has a special filesystem, rootfs, which is initially
+	mounted on /. It contains initramfs data, if kernel is configured
+	to have one. Usually, another file system is mounted over / early
+	in boot process, and therefore most tools which manipulate
+	mount table, such as df, will skip rootfs entry.
 
-	  However, some systems do not mount anything on /.
-	  If you need to configure busybox for one of these systems,
-	  you may find it useful to turn this option off to make df show
-	  initramfs statistics.
+	However, some systems do not mount anything on /.
+	If you need to configure busybox for one of these systems,
+	you may find it useful to turn this option off to make df show
+	initramfs statistics.
 
-	  Otherwise, choose Y.
+	Otherwise, choose Y.
 
 config BUSYBOX_CONFIG_MONOTONIC_SYSCALL
 	bool "Use clock_gettime(CLOCK_MONOTONIC) syscall"
 	default BUSYBOX_DEFAULT_MONOTONIC_SYSCALL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
-	  time intervals (time, ping, traceroute etc need this).
-	  Probably requires Linux 2.6+. If not selected, gettimeofday
-	  will be used instead (which gives wrong results if date/time
-	  is reset).
+	Use clock_gettime(CLOCK_MONOTONIC) syscall for measuring
+	time intervals (time, ping, traceroute etc need this).
+	Probably requires Linux 2.6+. If not selected, gettimeofday
+	will be used instead (which gives wrong results if date/time
+	is reset).
 
 config BUSYBOX_CONFIG_IOCTL_HEX2STR_ERROR
 	bool "Use ioctl names rather than hex values in error messages"
 	default BUSYBOX_DEFAULT_IOCTL_HEX2STR_ERROR
 	help
-	  Use ioctl names rather than hex values in error messages
-	  (e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
-	  saves about 1400 bytes.
+	Use ioctl names rather than hex values in error messages
+	(e.g. VT_DISALLOCATE rather than 0x5608). If disabled this
+	saves about 1400 bytes.
 
 config BUSYBOX_CONFIG_FEATURE_HWIB
 	bool "Support infiniband HW"
 	default BUSYBOX_DEFAULT_FEATURE_HWIB
 	help
-	  Support for printing infiniband addresses in
-	  network applets.
+	Support for printing infiniband addresses in
+	network applets.
 
 endmenu
diff --git a/package/utils/busybox/config/loginutils/Config.in b/package/utils/busybox/config/loginutils/Config.in
index fa00595877..51bc1a1ad7 100644
--- a/package/utils/busybox/config/loginutils/Config.in
+++ b/package/utils/busybox/config/loginutils/Config.in
@@ -10,87 +10,87 @@ config BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
 	bool "Support shadow passwords"
 	default BUSYBOX_DEFAULT_FEATURE_SHADOWPASSWDS
 	help
-	  Build support for shadow password in /etc/shadow. This file is only
-	  readable by root and thus the encrypted passwords are no longer
-	  publicly readable.
+	Build support for shadow password in /etc/shadow. This file is only
+	readable by root and thus the encrypted passwords are no longer
+	publicly readable.
 
 config BUSYBOX_CONFIG_USE_BB_PWD_GRP
 	bool "Use internal password and group functions rather than system functions"
 	default BUSYBOX_DEFAULT_USE_BB_PWD_GRP
 	help
-	  If you leave this disabled, busybox will use the system's password
-	  and group functions. And if you are using the GNU C library
-	  (glibc), you will then need to install the /etc/nsswitch.conf
-	  configuration file and the required /lib/libnss_* libraries in
-	  order for the password and group functions to work. This generally
-	  makes your embedded system quite a bit larger.
-
-	  Enabling this option will cause busybox to directly access the
-	  system's /etc/password, /etc/group files (and your system will be
-	  smaller, and I will get fewer emails asking about how glibc NSS
-	  works). When this option is enabled, you will not be able to use
-	  PAM to access remote LDAP password servers and whatnot. And if you
-	  want hostname resolution to work with glibc, you still need the
-	  /lib/libnss_* libraries.
-
-	  If you need to use glibc's nsswitch.conf mechanism
-	  (e.g. if user/group database is NOT stored in /etc/passwd etc),
-	  you must NOT use this option.
-
-	  If you enable this option, it will add about 1.5k.
+	If you leave this disabled, busybox will use the system's password
+	and group functions. And if you are using the GNU C library
+	(glibc), you will then need to install the /etc/nsswitch.conf
+	configuration file and the required /lib/libnss_* libraries in
+	order for the password and group functions to work. This generally
+	makes your embedded system quite a bit larger.
+
+	Enabling this option will cause busybox to directly access the
+	system's /etc/password, /etc/group files (and your system will be
+	smaller, and I will get fewer emails asking about how glibc NSS
+	works). When this option is enabled, you will not be able to use
+	PAM to access remote LDAP password servers and whatnot. And if you
+	want hostname resolution to work with glibc, you still need the
+	/lib/libnss_* libraries.
+
+	If you need to use glibc's nsswitch.conf mechanism
+	(e.g. if user/group database is NOT stored in /etc/passwd etc),
+	you must NOT use this option.
+
+	If you enable this option, it will add about 1.5k.
 
 config BUSYBOX_CONFIG_USE_BB_SHADOW
 	bool "Use internal shadow password functions"
 	default BUSYBOX_DEFAULT_USE_BB_SHADOW
 	depends on BUSYBOX_CONFIG_USE_BB_PWD_GRP && BUSYBOX_CONFIG_FEATURE_SHADOWPASSWDS
 	help
-	  If you leave this disabled, busybox will use the system's shadow
-	  password handling functions. And if you are using the GNU C library
-	  (glibc), you will then need to install the /etc/nsswitch.conf
-	  configuration file and the required /lib/libnss_* libraries in
-	  order for the shadow password functions to work. This generally
-	  makes your embedded system quite a bit larger.
-
-	  Enabling this option will cause busybox to directly access the
-	  system's /etc/shadow file when handling shadow passwords. This
-	  makes your system smaller (and I will get fewer emails asking about
-	  how glibc NSS works). When this option is enabled, you will not be
-	  able to use PAM to access shadow passwords from remote LDAP
-	  password servers and whatnot.
+	If you leave this disabled, busybox will use the system's shadow
+	password handling functions. And if you are using the GNU C library
+	(glibc), you will then need to install the /etc/nsswitch.conf
+	configuration file and the required /lib/libnss_* libraries in
+	order for the shadow password functions to work. This generally
+	makes your embedded system quite a bit larger.
+
+	Enabling this option will cause busybox to directly access the
+	system's /etc/shadow file when handling shadow passwords. This
+	makes your system smaller (and I will get fewer emails asking about
+	how glibc NSS works). When this option is enabled, you will not be
+	able to use PAM to access shadow passwords from remote LDAP
+	password servers and whatnot.
 
 config BUSYBOX_CONFIG_USE_BB_CRYPT
 	bool "Use internal crypt functions"
 	default BUSYBOX_DEFAULT_USE_BB_CRYPT
 	help
-	  Busybox has internal DES and MD5 crypt functions.
-	  They produce results which are identical to corresponding
-	  standard C library functions.
+	Busybox has internal DES and MD5 crypt functions.
+	They produce results which are identical to corresponding
+	standard C library functions.
 
-	  If you leave this disabled, busybox will use the system's
-	  crypt functions. Most C libraries use large (~70k)
-	  static buffers there, and also combine them with more general
-	  DES encryption/decryption.
+	If you leave this disabled, busybox will use the system's
+	crypt functions. Most C libraries use large (~70k)
+	static buffers there, and also combine them with more general
+	DES encryption/decryption.
 
-	  For busybox, having large static buffers is undesirable,
-	  especially on NOMMU machines. Busybox also doesn't need
-	  DES encryption/decryption and can do with smaller code.
+	For busybox, having large static buffers is undesirable,
+	especially on NOMMU machines. Busybox also doesn't need
+	DES encryption/decryption and can do with smaller code.
 
-	  If you enable this option, it will add about 4.8k of code
-	  if you are building dynamically linked executable.
-	  In static build, it makes code _smaller_ by about 1.2k,
-	  and likely many kilobytes less of bss.
+	If you enable this option, it will add about 4.8k of code
+	if you are building dynamically linked executable.
+	In static build, it makes code _smaller_ by about 1.2k,
+	and likely many kilobytes less of bss.
 
 config BUSYBOX_CONFIG_USE_BB_CRYPT_SHA
 	bool "Enable SHA256/512 crypt functions"
 	default BUSYBOX_DEFAULT_USE_BB_CRYPT_SHA
 	depends on BUSYBOX_CONFIG_USE_BB_CRYPT
 	help
-	  Enable this if you have passwords starting with "$5$" or "$6$"
-	  in your /etc/passwd or /etc/shadow files. These passwords
-	  are hashed using SHA256 and SHA512 algorithms. Support for them
-	  was added to glibc in 2008.
-	  With this option off, login will fail password check for any
-	  user which has password encrypted with these algorithms.
+	Enable this if you have passwords starting with "$5$" or "$6$"
+	in your /etc/passwd or /etc/shadow files. These passwords
+	are hashed using SHA256 and SHA512 algorithms. Support for them
+	was added to glibc in 2008.
+	With this option off, login will fail password check for any
+	user which has password encrypted with these algorithms.
 
 config BUSYBOX_CONFIG_ADD_SHELL
        bool "add-shell"
@@ -107,7 +107,7 @@ config BUSYBOX_CONFIG_ADDGROUP
 	bool "addgroup"
 	default BUSYBOX_DEFAULT_ADDGROUP
 	help
-	  Utility for creating a new group account.
+	Utility for creating a new group account.
 
 config BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS
 	bool "Enable long options"
@@ -119,14 +119,14 @@ config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
 	default BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP
 	depends on BUSYBOX_CONFIG_ADDGROUP
 	help
-	  If called with two non-option arguments,
-	  addgroup will add an existing user to an
-	  existing group.
+	If called with two non-option arguments,
+	addgroup will add an existing user to an
+	existing group.
 config BUSYBOX_CONFIG_ADDUSER
 	bool "adduser"
 	default BUSYBOX_DEFAULT_ADDUSER
 	help
-	  Utility for creating a new user account.
+	Utility for creating a new user account.
 
 config BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS
 	bool "Enable long options"
@@ -138,19 +138,19 @@ config BUSYBOX_CONFIG_FEATURE_CHECK_NAMES
 	default BUSYBOX_DEFAULT_FEATURE_CHECK_NAMES
 	depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
 	help
-	  Enable sanity check on user and group names in adduser and addgroup.
-	  To avoid problems, the user or group name should consist only of
-	  letters, digits, underscores, periods, at signs and dashes,
-	  and not start with a dash (as defined by IEEE Std 1003.1-2001).
-	  For compatibility with Samba machine accounts "$" is also supported
-	  at the end of the user or group name.
+	Enable sanity check on user and group names in adduser and addgroup.
+	To avoid problems, the user or group name should consist only of
+	letters, digits, underscores, periods, at signs and dashes,
+	and not start with a dash (as defined by IEEE Std 1003.1-2001).
+	For compatibility with Samba machine accounts "$" is also supported
+	at the end of the user or group name.
 
 config BUSYBOX_CONFIG_LAST_ID
 	int "Last valid uid or gid for adduser and addgroup"
 	depends on BUSYBOX_CONFIG_ADDUSER || BUSYBOX_CONFIG_ADDGROUP
 	default BUSYBOX_DEFAULT_LAST_ID
 	help
-	  Last valid uid or gid for adduser and addgroup
+	Last valid uid or gid for adduser and addgroup
 
 config BUSYBOX_CONFIG_FIRST_SYSTEM_ID
 	int "First valid system uid or gid for adduser and addgroup"
@@ -158,7 +158,7 @@ config BUSYBOX_CONFIG_FIRST_SYSTEM_ID
 	range 0 BUSYBOX_CONFIG_LAST_ID
 	default BUSYBOX_DEFAULT_FIRST_SYSTEM_ID
 	help
-	  First valid system uid or gid for adduser and addgroup
+	First valid system uid or gid for adduser and addgroup
 
 config BUSYBOX_CONFIG_LAST_SYSTEM_ID
 	int "Last valid system uid or gid for adduser and addgroup"
@@ -166,144 +166,144 @@ config BUSYBOX_CONFIG_LAST_SYSTEM_ID
 	range BUSYBOX_CONFIG_FIRST_SYSTEM_ID BUSYBOX_CONFIG_LAST_ID
 	default BUSYBOX_DEFAULT_LAST_SYSTEM_ID
 	help
-	  Last valid system uid or gid for adduser and addgroup
+	Last valid system uid or gid for adduser and addgroup
 config BUSYBOX_CONFIG_CHPASSWD
 	bool "chpasswd"
 	default BUSYBOX_DEFAULT_CHPASSWD
 	help
-	  Reads a file of user name and password pairs from standard input
-	  and uses this information to update a group of existing users.
+	Reads a file of user name and password pairs from standard input
+	and uses this information to update a group of existing users.
 
 config BUSYBOX_CONFIG_FEATURE_DEFAULT_PASSWD_ALGO
 	string "Default encryption method (passwd -a, cryptpw -m, chpasswd -c ALG)"
 	default BUSYBOX_DEFAULT_FEATURE_DEFAULT_PASSWD_ALGO
 	depends on BUSYBOX_CONFIG_PASSWD || BUSYBOX_CONFIG_CRYPTPW || BUSYBOX_CONFIG_CHPASSWD
 	help
-	  Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
+	Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
 config BUSYBOX_CONFIG_CRYPTPW
 	bool "cryptpw"
 	default BUSYBOX_DEFAULT_CRYPTPW
 	help
-	  Encrypts the given password with the crypt(3) libc function
-	  using the given salt.
+	Encrypts the given password with the crypt(3) libc function
+	using the given salt.
 
 config BUSYBOX_CONFIG_MKPASSWD
 	bool "mkpasswd"
 	default BUSYBOX_DEFAULT_MKPASSWD
 	help
-	  Encrypts the given password with the crypt(3) libc function
-	  using the given salt. Debian has this utility under mkpasswd
-	  name. Busybox provides mkpasswd as an alias for cryptpw.
+	Encrypts the given password with the crypt(3) libc function
+	using the given salt. Debian has this utility under mkpasswd
+	name. Busybox provides mkpasswd as an alias for cryptpw.
 config BUSYBOX_CONFIG_DELUSER
 	bool "deluser"
 	default BUSYBOX_DEFAULT_DELUSER
 	help
-	  Utility for deleting a user account.
+	Utility for deleting a user account.
 
 config BUSYBOX_CONFIG_DELGROUP
 	bool "delgroup"
 	default BUSYBOX_DEFAULT_DELGROUP
 	help
-	  Utility for deleting a group account.
+	Utility for deleting a group account.
 
 config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
 	bool "Support removing users from groups"
 	default BUSYBOX_DEFAULT_FEATURE_DEL_USER_FROM_GROUP
 	depends on BUSYBOX_CONFIG_DELGROUP
 	help
-	  If called with two non-option arguments, deluser
-	  or delgroup will remove an user from a specified group.
+	If called with two non-option arguments, deluser
+	or delgroup will remove an user from a specified group.
 config BUSYBOX_CONFIG_GETTY
 	bool "getty"
 	default BUSYBOX_DEFAULT_GETTY
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  getty lets you log in on a tty. It is normally invoked by init.
-
-	  Note that you can save a few bytes by disabling it and
-	  using login applet directly.
-	  If you need to reset tty attributes before calling login,
-	  this script approximates getty:
-
-	  exec </dev/$1 >/dev/$1 2>&1 || exit 1
-	  reset
-	  stty sane; stty ispeed 38400; stty ospeed 38400
-	  printf "%s login: " "`hostname`"
-	  read -r login
-	  exec /bin/login "$login"
+	getty lets you log in on a tty. It is normally invoked by init.
+
+	Note that you can save a few bytes by disabling it and
+	using login applet directly.
+	If you need to reset tty attributes before calling login,
+	this script approximates getty:
+
+	exec </dev/$1 >/dev/$1 2>&1 || exit 1
+	reset
+	stty sane; stty ispeed 38400; stty ospeed 38400
+	printf "%s login: " "`hostname`"
+	read -r login
+	exec /bin/login "$login"
 config BUSYBOX_CONFIG_LOGIN
 	bool "login"
 	default BUSYBOX_DEFAULT_LOGIN
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  login is used when signing onto a system.
+	login is used when signing onto a system.
 
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
+	Note that Busybox binary must be setuid root for this applet to
+	work properly.
 
 config BUSYBOX_CONFIG_LOGIN_SESSION_AS_CHILD
 	bool "Run logged in session in a child process"
 	default BUSYBOX_DEFAULT_LOGIN_SESSION_AS_CHILD if BUSYBOX_CONFIG_PAM
 	depends on BUSYBOX_CONFIG_LOGIN
 	help
-	  Run the logged in session in a child process.  This allows
-	  login to clean up things such as utmp entries or PAM sessions
-	  when the login session is complete.  If you use PAM, you
-	  almost always would want this to be set to Y, else PAM session
-	  will not be cleaned up.
+	Run the logged in session in a child process.  This allows
+	login to clean up things such as utmp entries or PAM sessions
+	when the login session is complete.  If you use PAM, you
+	almost always would want this to be set to Y, else PAM session
+	will not be cleaned up.
 
 config BUSYBOX_CONFIG_LOGIN_SCRIPTS
 	bool "Support login scripts"
 	depends on BUSYBOX_CONFIG_LOGIN
 	default BUSYBOX_DEFAULT_LOGIN_SCRIPTS
 	help
-	  Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
-	  just prior to switching from root to logged-in user.
+	Enable this if you want login to execute $LOGIN_PRE_SUID_SCRIPT
+	just prior to switching from root to logged-in user.
 
 config BUSYBOX_CONFIG_FEATURE_NOLOGIN
 	bool "Support /etc/nologin"
 	default BUSYBOX_DEFAULT_FEATURE_NOLOGIN
 	depends on BUSYBOX_CONFIG_LOGIN
 	help
-	  The file /etc/nologin is used by (some versions of) login(1).
-	  If it exists, non-root logins are prohibited.
+	The file /etc/nologin is used by (some versions of) login(1).
+	If it exists, non-root logins are prohibited.
 
 config BUSYBOX_CONFIG_FEATURE_SECURETTY
 	bool "Support /etc/securetty"
 	default BUSYBOX_DEFAULT_FEATURE_SECURETTY
 	depends on BUSYBOX_CONFIG_LOGIN
 	help
-	  The file /etc/securetty is used by (some versions of) login(1).
-	  The file contains the device names of tty lines (one per line,
-	  without leading /dev/) on which root is allowed to login.
+	The file /etc/securetty is used by (some versions of) login(1).
+	The file contains the device names of tty lines (one per line,
+	without leading /dev/) on which root is allowed to login.
 config BUSYBOX_CONFIG_PASSWD
 	bool "passwd"
 	default BUSYBOX_DEFAULT_PASSWD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  passwd changes passwords for user and group accounts. A normal user
-	  may only change the password for his/her own account, the super user
-	  may change the password for any account. The administrator of a group
-	  may change the password for the group.
+	passwd changes passwords for user and group accounts. A normal user
+	may only change the password for his/her own account, the super user
+	may change the password for any account. The administrator of a group
+	may change the password for the group.
 
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
+	Note that Busybox binary must be setuid root for this applet to
+	work properly.
 
 config BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK
 	bool "Check new passwords for weakness"
 	default BUSYBOX_DEFAULT_FEATURE_PASSWD_WEAK_CHECK
 	depends on BUSYBOX_CONFIG_PASSWD
 	help
-	  With this option passwd will refuse new passwords which are "weak".
+	With this option passwd will refuse new passwords which are "weak".
 config BUSYBOX_CONFIG_SU
 	bool "su"
 	default BUSYBOX_DEFAULT_SU
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  su is used to become another user during a login session.
-	  Invoked without a username, su defaults to becoming the super user.
-	  Note that busybox binary must be setuid root for this applet to
-	  work properly.
+	su is used to become another user during a login session.
+	Invoked without a username, su defaults to becoming the super user.
+	Note that busybox binary must be setuid root for this applet to
+	work properly.
 
 config BUSYBOX_CONFIG_FEATURE_SU_SYSLOG
 	bool "Log to syslog all attempts to use su"
@@ -324,15 +324,15 @@ config BUSYBOX_CONFIG_SULOGIN
 	default BUSYBOX_DEFAULT_SULOGIN
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  sulogin is invoked when the system goes into single user
-	  mode (this is done through an entry in inittab).
+	sulogin is invoked when the system goes into single user
+	mode (this is done through an entry in inittab).
 config BUSYBOX_CONFIG_VLOCK
 	bool "vlock"
 	default BUSYBOX_DEFAULT_VLOCK
 	help
-	  Build the "vlock" applet which allows you to lock (virtual) terminals.
+	Build the "vlock" applet which allows you to lock (virtual) terminals.
 
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
+	Note that Busybox binary must be setuid root for this applet to
+	work properly.
 
 endmenu
diff --git a/package/utils/busybox/config/mailutils/Config.in b/package/utils/busybox/config/mailutils/Config.in
index 7e77407860..9c2f20c995 100644
--- a/package/utils/busybox/config/mailutils/Config.in
+++ b/package/utils/busybox/config/mailutils/Config.in
@@ -5,47 +5,47 @@ config BUSYBOX_CONFIG_MAKEMIME
 	bool "makemime"
 	default BUSYBOX_DEFAULT_MAKEMIME
 	help
-	  Create MIME-formatted messages.
+	Create MIME-formatted messages.
 config BUSYBOX_CONFIG_POPMAILDIR
 	bool "popmaildir"
 	default BUSYBOX_DEFAULT_POPMAILDIR
 	help
-	  Simple yet powerful POP3 mail popper. Delivers content
-	  of remote mailboxes to local Maildir.
+	Simple yet powerful POP3 mail popper. Delivers content
+	of remote mailboxes to local Maildir.
 
 config BUSYBOX_CONFIG_FEATURE_POPMAILDIR_DELIVERY
 	bool "Allow message filters and custom delivery program"
 	default BUSYBOX_DEFAULT_FEATURE_POPMAILDIR_DELIVERY
 	depends on BUSYBOX_CONFIG_POPMAILDIR
 	help
-	  Allow to use a custom program to filter the content
-	  of the message before actual delivery (-F "prog [args...]").
-	  Allow to use a custom program for message actual delivery
-	  (-M "prog [args...]").
+	Allow to use a custom program to filter the content
+	of the message before actual delivery (-F "prog [args...]").
+	Allow to use a custom program for message actual delivery
+	(-M "prog [args...]").
 config BUSYBOX_CONFIG_REFORMIME
 	bool "reformime"
 	default BUSYBOX_DEFAULT_REFORMIME
 	help
-	  Parse MIME-formatted messages.
+	Parse MIME-formatted messages.
 
 config BUSYBOX_CONFIG_FEATURE_REFORMIME_COMPAT
 	bool "Accept and ignore options other than -x and -X"
 	default BUSYBOX_DEFAULT_FEATURE_REFORMIME_COMPAT
 	depends on BUSYBOX_CONFIG_REFORMIME
 	help
-	  Accept (for compatibility only) and ignore options
-	  other than -x and -X.
+	Accept (for compatibility only) and ignore options
+	other than -x and -X.
 config BUSYBOX_CONFIG_SENDMAIL
 	bool "sendmail"
 	default BUSYBOX_DEFAULT_SENDMAIL
 	help
-	  Barebones sendmail.
+	Barebones sendmail.
 
 config BUSYBOX_CONFIG_FEATURE_MIME_CHARSET
 	string "Default charset"
 	default BUSYBOX_DEFAULT_FEATURE_MIME_CHARSET
 	depends on BUSYBOX_CONFIG_MAKEMIME || BUSYBOX_CONFIG_REFORMIME || BUSYBOX_CONFIG_SENDMAIL
 	help
-	  Default charset of the message.
+	Default charset of the message.
 
 endmenu
diff --git a/package/utils/busybox/config/miscutils/Config.in b/package/utils/busybox/config/miscutils/Config.in
index 61c5458b63..1f378206b1 100644
--- a/package/utils/busybox/config/miscutils/Config.in
+++ b/package/utils/busybox/config/miscutils/Config.in
@@ -11,34 +11,34 @@ config BUSYBOX_CONFIG_ADJTIMEX
 	default BUSYBOX_DEFAULT_ADJTIMEX
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Adjtimex reads and optionally sets adjustment parameters for
-	  the Linux clock adjustment algorithm.
+	Adjtimex reads and optionally sets adjustment parameters for
+	the Linux clock adjustment algorithm.
 config BUSYBOX_CONFIG_BBCONFIG
 	bool "bbconfig"
 	default BUSYBOX_DEFAULT_BBCONFIG
 	help
-	  The bbconfig applet will print the config file with which
-	  busybox was built.
+	The bbconfig applet will print the config file with which
+	busybox was built.
 
 config BUSYBOX_CONFIG_FEATURE_COMPRESS_BBCONFIG
 	bool "Compress bbconfig data"
 	default BUSYBOX_DEFAULT_FEATURE_COMPRESS_BBCONFIG
 	depends on BUSYBOX_CONFIG_BBCONFIG
 	help
-	  Store bbconfig data in compressed form, uncompress them on-the-fly
-	  before output.
+	Store bbconfig data in compressed form, uncompress them on-the-fly
+	before output.
 
-	  If you have a really tiny busybox with few applets enabled (and
-	  bunzip2 isn't one of them), the overhead of the decompressor might
-	  be noticeable. Also, if you run executables directly from ROM
-	  and have very little memory, this might not be a win. Otherwise,
-	  you probably want this.
+	If you have a really tiny busybox with few applets enabled (and
+	bunzip2 isn't one of them), the overhead of the decompressor might
+	be noticeable. Also, if you run executables directly from ROM
+	and have very little memory, this might not be a win. Otherwise,
+	you probably want this.
 config BUSYBOX_CONFIG_BEEP
 	bool "beep"
 	default BUSYBOX_DEFAULT_BEEP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The beep applets beeps in a given freq/Hz.
+	The beep applets beeps in a given freq/Hz.
 
 config BUSYBOX_CONFIG_FEATURE_BEEP_FREQ
 	int "default frequency"
@@ -46,7 +46,7 @@ config BUSYBOX_CONFIG_FEATURE_BEEP_FREQ
 	default BUSYBOX_DEFAULT_FEATURE_BEEP_FREQ
 	depends on BUSYBOX_CONFIG_BEEP
 	help
-	  Frequency for default beep.
+	Frequency for default beep.
 
 config BUSYBOX_CONFIG_FEATURE_BEEP_LENGTH_MS
 	int "default length"
@@ -54,91 +54,91 @@ config BUSYBOX_CONFIG_FEATURE_BEEP_LENGTH_MS
 	default BUSYBOX_DEFAULT_FEATURE_BEEP_LENGTH_MS
 	depends on BUSYBOX_CONFIG_BEEP
 	help
-	  Length in ms for default beep.
+	Length in ms for default beep.
 config BUSYBOX_CONFIG_CHAT
 	bool "chat"
 	default BUSYBOX_DEFAULT_CHAT
 	help
-	  Simple chat utility.
+	Simple chat utility.
 
 config BUSYBOX_CONFIG_FEATURE_CHAT_NOFAIL
 	bool "Enable NOFAIL expect strings"
 	depends on BUSYBOX_CONFIG_CHAT
 	default BUSYBOX_DEFAULT_FEATURE_CHAT_NOFAIL
 	help
-	  When enabled expect strings which are started with a dash trigger
-	  no-fail mode. That is when expectation is not met within timeout
-	  the script is not terminated but sends next SEND string and waits
-	  for next EXPECT string. This allows to compose far more flexible
-	  scripts.
+	When enabled expect strings which are started with a dash trigger
+	no-fail mode. That is when expectation is not met within timeout
+	the script is not terminated but sends next SEND string and waits
+	for next EXPECT string. This allows to compose far more flexible
+	scripts.
 
 config BUSYBOX_CONFIG_FEATURE_CHAT_TTY_HIFI
 	bool "Force STDIN to be a TTY"
 	depends on BUSYBOX_CONFIG_CHAT
 	default BUSYBOX_DEFAULT_FEATURE_CHAT_TTY_HIFI
 	help
-	  Original chat always treats STDIN as a TTY device and sets for it
-	  so-called raw mode. This option turns on such behaviour.
+	Original chat always treats STDIN as a TTY device and sets for it
+	so-called raw mode. This option turns on such behaviour.
 
 config BUSYBOX_CONFIG_FEATURE_CHAT_IMPLICIT_CR
 	bool "Enable implicit Carriage Return"
 	depends on BUSYBOX_CONFIG_CHAT
 	default BUSYBOX_DEFAULT_FEATURE_CHAT_IMPLICIT_CR
 	help
-	  When enabled make chat to terminate all SEND strings with a "\r"
-	  unless "\c" is met anywhere in the string.
+	When enabled make chat to terminate all SEND strings with a "\r"
+	unless "\c" is met anywhere in the string.
 
 config BUSYBOX_CONFIG_FEATURE_CHAT_SWALLOW_OPTS
 	bool "Swallow options"
 	depends on BUSYBOX_CONFIG_CHAT
 	default BUSYBOX_DEFAULT_FEATURE_CHAT_SWALLOW_OPTS
 	help
-	  Busybox chat require no options. To make it not fail when used
-	  in place of original chat (which has a bunch of options) turn
-	  this on.
+	Busybox chat require no options. To make it not fail when used
+	in place of original chat (which has a bunch of options) turn
+	this on.
 
 config BUSYBOX_CONFIG_FEATURE_CHAT_SEND_ESCAPES
 	bool "Support weird SEND escapes"
 	depends on BUSYBOX_CONFIG_CHAT
 	default BUSYBOX_DEFAULT_FEATURE_CHAT_SEND_ESCAPES
 	help
-	  Original chat uses some escape sequences in SEND arguments which
-	  are not sent to device but rather performs special actions.
-	  E.g. "\K" means to send a break sequence to device.
-	  "\d" delays execution for a second, "\p" -- for a 1/100 of second.
-	  Before turning this option on think twice: do you really need them?
+	Original chat uses some escape sequences in SEND arguments which
+	are not sent to device but rather performs special actions.
+	E.g. "\K" means to send a break sequence to device.
+	"\d" delays execution for a second, "\p" -- for a 1/100 of second.
+	Before turning this option on think twice: do you really need them?
 
 config BUSYBOX_CONFIG_FEATURE_CHAT_VAR_ABORT_LEN
 	bool "Support variable-length ABORT conditions"
 	depends on BUSYBOX_CONFIG_CHAT
 	default BUSYBOX_DEFAULT_FEATURE_CHAT_VAR_ABORT_LEN
 	help
-	  Original chat uses fixed 50-bytes length ABORT conditions. Say N here.
+	Original chat uses fixed 50-bytes length ABORT conditions. Say N here.
 
 config BUSYBOX_CONFIG_FEATURE_CHAT_CLR_ABORT
 	bool "Support revoking of ABORT conditions"
 	depends on BUSYBOX_CONFIG_CHAT
 	default BUSYBOX_DEFAULT_FEATURE_CHAT_CLR_ABORT
 	help
-	  Support CLR_ABORT directive.
+	Support CLR_ABORT directive.
 config BUSYBOX_CONFIG_CONSPY
 	bool "conspy"
 	default BUSYBOX_DEFAULT_CONSPY
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  A text-mode VNC like program for Linux virtual terminals.
-	  example:  conspy NUM      shared access to console num
-	  or        conspy -nd NUM  screenshot of console num
-	  or        conspy -cs NUM  poor man's GNU screen like
+	A text-mode VNC like program for Linux virtual terminals.
+	example:  conspy NUM      shared access to console num
+	or        conspy -nd NUM  screenshot of console num
+	or        conspy -cs NUM  poor man's GNU screen like
 config BUSYBOX_CONFIG_CROND
 	bool "crond"
 	default BUSYBOX_DEFAULT_CROND
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  Crond is a background daemon that parses individual crontab
-	  files and executes commands on behalf of the users in question.
-	  This is a port of dcron from slackware. It uses files of the
-	  format /var/spool/cron/crontabs/<username> files, for example:
+	Crond is a background daemon that parses individual crontab
+	files and executes commands on behalf of the users in question.
+	This is a port of dcron from slackware. It uses files of the
+	format /var/spool/cron/crontabs/<username> files, for example:
 	      $ cat /var/spool/cron/crontabs/root
 	      # Run daily cron jobs at 4:40 every day:
 	      40 4 * * * /etc/cron/daily > /dev/null 2>&1
@@ -148,78 +148,78 @@ config BUSYBOX_CONFIG_FEATURE_CROND_D
 	depends on BUSYBOX_CONFIG_CROND
 	default BUSYBOX_DEFAULT_FEATURE_CROND_D
 	help
-	  -d N sets loglevel (0:most verbose) and directs all output to stderr.
+	-d N sets loglevel (0:most verbose) and directs all output to stderr.
 
 config BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL
 	bool "Report command output via email (using sendmail)"
 	default BUSYBOX_DEFAULT_FEATURE_CROND_CALL_SENDMAIL
 	depends on BUSYBOX_CONFIG_CROND
 	help
-	  Command output will be sent to corresponding user via email.
+	Command output will be sent to corresponding user via email.
 
 config BUSYBOX_CONFIG_FEATURE_CROND_DIR
 	string "crond spool directory"
 	default BUSYBOX_DEFAULT_FEATURE_CROND_DIR
 	depends on BUSYBOX_CONFIG_CROND || BUSYBOX_CONFIG_CRONTAB
 	help
-	  Location of crond spool.
+	Location of crond spool.
 config BUSYBOX_CONFIG_CRONTAB
 	bool "crontab"
 	default BUSYBOX_DEFAULT_CRONTAB
 	help
-	  Crontab manipulates the crontab for a particular user. Only
-	  the superuser may specify a different user and/or crontab directory.
-	  Note that Busybox binary must be setuid root for this applet to
-	  work properly.
+	Crontab manipulates the crontab for a particular user. Only
+	the superuser may specify a different user and/or crontab directory.
+	Note that Busybox binary must be setuid root for this applet to
+	work properly.
 config BUSYBOX_CONFIG_DC
 	bool "dc"
 	default BUSYBOX_DEFAULT_DC
 	help
-	  Dc is a reverse-polish desk calculator which supports unlimited
-	  precision arithmetic.
+	Dc is a reverse-polish desk calculator which supports unlimited
+	precision arithmetic.
 
 config BUSYBOX_CONFIG_FEATURE_DC_LIBM
 	bool "Enable power and exp functions (requires libm)"
 	default BUSYBOX_DEFAULT_FEATURE_DC_LIBM
 	depends on BUSYBOX_CONFIG_DC
 	help
-	  Enable power and exp functions.
-	  NOTE: This will require libm to be present for linking.
+	Enable power and exp functions.
+	NOTE: This will require libm to be present for linking.
 config BUSYBOX_CONFIG_DEVFSD
 	bool "devfsd (obsolete)"
 	default BUSYBOX_DEFAULT_DEVFSD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  This is deprecated and should NOT be used anymore.
-	  Use linux >= 2.6 (optionally with hotplug) and mdev instead!
-	  See docs/mdev.txt for detailed instructions on how to use mdev
-	  instead.
+	This is deprecated and should NOT be used anymore.
+	Use linux >= 2.6 (optionally with hotplug) and mdev instead!
+	See docs/mdev.txt for detailed instructions on how to use mdev
+	instead.
 
-	  Provides compatibility with old device names on a devfs systems.
-	  You should set it to true if you have devfs enabled.
-	  The following keywords in devsfd.conf are supported:
-	  "CLEAR_CONFIG", "INCLUDE", "OPTIONAL_INCLUDE", "RESTORE",
-	  "PERMISSIONS", "EXECUTE", "COPY", "IGNORE",
-	  "MKOLDCOMPAT", "MKNEWCOMPAT","RMOLDCOMPAT", "RMNEWCOMPAT".
+	Provides compatibility with old device names on a devfs systems.
+	You should set it to true if you have devfs enabled.
+	The following keywords in devsfd.conf are supported:
+	"CLEAR_CONFIG", "INCLUDE", "OPTIONAL_INCLUDE", "RESTORE",
+	"PERMISSIONS", "EXECUTE", "COPY", "IGNORE",
+	"MKOLDCOMPAT", "MKNEWCOMPAT","RMOLDCOMPAT", "RMNEWCOMPAT".
 
-	  But only if they are written UPPERCASE!!!!!!!!
+	But only if they are written UPPERCASE!!!!!!!!
 
 config BUSYBOX_CONFIG_DEVFSD_MODLOAD
 	bool "Adds support for MODLOAD keyword in devsfd.conf"
 	default BUSYBOX_DEFAULT_DEVFSD_MODLOAD
 	depends on BUSYBOX_CONFIG_DEVFSD
 	help
-	  This actually doesn't work with busybox modutils but needs
-	  the external modutils.
+	This actually doesn't work with busybox modutils but needs
+	the external modutils.
 
 config BUSYBOX_CONFIG_DEVFSD_FG_NP
 	bool "Enable the -fg and -np options"
 	default BUSYBOX_DEFAULT_DEVFSD_FG_NP
 	depends on BUSYBOX_CONFIG_DEVFSD
 	help
-	  -fg  Run the daemon in the foreground.
-	  -np  Exit after parsing the configuration file.
+	-fg  Run the daemon in the foreground.
+	-np  Exit after parsing the configuration file.
 	       Do not poll for events.
 
 config BUSYBOX_CONFIG_DEVFSD_VERBOSE
@@ -227,170 +227,170 @@ config BUSYBOX_CONFIG_DEVFSD_VERBOSE
 	default BUSYBOX_DEFAULT_DEVFSD_VERBOSE
 	depends on BUSYBOX_CONFIG_DEVFSD
 	help
-	  Increases logging to stderr or syslog.
+	Increases logging to stderr or syslog.
 
 config BUSYBOX_CONFIG_FEATURE_DEVFS
 	bool "Use devfs names for all devices (obsolete)"
 	default BUSYBOX_DEFAULT_FEATURE_DEVFS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This is obsolete and should NOT be used anymore.
-	  Use linux >= 2.6 (optionally with hotplug) and mdev instead!
+	This is obsolete and should NOT be used anymore.
+	Use linux >= 2.6 (optionally with hotplug) and mdev instead!
 
-	  For legacy systems -- if there is no way around devfsd -- this
-	  tells busybox to look for names like /dev/loop/0 instead of
-	  /dev/loop0. If your /dev directory has normal names instead of
-	  devfs names, you don't want this.
+	For legacy systems -- if there is no way around devfsd -- this
+	tells busybox to look for names like /dev/loop/0 instead of
+	/dev/loop0. If your /dev directory has normal names instead of
+	devfs names, you don't want this.
 config BUSYBOX_CONFIG_DEVMEM
 	bool "devmem"
 	default BUSYBOX_DEFAULT_DEVMEM
 	help
-	  devmem is a small program that reads and writes from physical
-	  memory using /dev/mem.
+	devmem is a small program that reads and writes from physical
+	memory using /dev/mem.
 config BUSYBOX_CONFIG_FBSPLASH
 	bool "fbsplash"
 	default BUSYBOX_DEFAULT_FBSPLASH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Shows splash image and progress bar on framebuffer device.
-	  Can be used during boot phase of an embedded device. ~2kb.
-	  Usage:
-	  - use kernel option 'vga=xxx' or otherwise enable fb device.
-	  - put somewhere fbsplash.cfg file and an image in .ppm format.
-	  - $ setsid fbsplash [params] &
+	Shows splash image and progress bar on framebuffer device.
+	Can be used during boot phase of an embedded device. ~2kb.
+	Usage:
+	- use kernel option 'vga=xxx' or otherwise enable fb device.
+	- put somewhere fbsplash.cfg file and an image in .ppm format.
+	- $ setsid fbsplash [params] &
 	    -c: hide cursor
 	    -d /dev/fbN: framebuffer device (if not /dev/fb0)
 	    -s path_to_image_file (can be "-" for stdin)
 	    -i path_to_cfg_file (can be "-" for stdin)
 	    -f path_to_fifo (can be "-" for stdin)
-	  - if you want to run it only in presence of kernel parameter:
+	- if you want to run it only in presence of kernel parameter:
 	    grep -q "fbsplash=on" </proc/cmdline && setsid fbsplash [params] &
-	  - commands for fifo:
+	- commands for fifo:
 	    "NN" (ASCII decimal number) - percentage to show on progress bar
 	    "exit" - well you guessed it
 config BUSYBOX_CONFIG_FLASH_ERASEALL
 	bool "flash_eraseall"
 	default BUSYBOX_DEFAULT_FLASH_ERASEALL  # doesn't build on Ubuntu 8.04
 	help
-	  The flash_eraseall binary from mtd-utils as of git head c4c6a59eb.
-	  This utility is used to erase the whole MTD device.
+	The flash_eraseall binary from mtd-utils as of git head c4c6a59eb.
+	This utility is used to erase the whole MTD device.
 config BUSYBOX_CONFIG_FLASH_LOCK
 	bool "flash_lock"
 	default BUSYBOX_DEFAULT_FLASH_LOCK  # doesn't build on Ubuntu 8.04
 	help
-	  The flash_lock binary from mtd-utils as of git head 5ec0c10d0. This
-	  utility locks part or all of the flash device.
+	The flash_lock binary from mtd-utils as of git head 5ec0c10d0. This
+	utility locks part or all of the flash device.
 
 config BUSYBOX_CONFIG_FLASH_UNLOCK
 	bool "flash_unlock"
 	default BUSYBOX_DEFAULT_FLASH_UNLOCK  # doesn't build on Ubuntu 8.04
 	help
-	  The flash_unlock binary from mtd-utils as of git head 5ec0c10d0. This
-	  utility unlocks part or all of the flash device.
+	The flash_unlock binary from mtd-utils as of git head 5ec0c10d0. This
+	utility unlocks part or all of the flash device.
 config BUSYBOX_CONFIG_FLASHCP
 	bool "flashcp"
 	default BUSYBOX_DEFAULT_FLASHCP  # doesn't build on Ubuntu 8.04
 	help
-	  The flashcp binary, inspired by mtd-utils as of git head 5eceb74f7.
-	  This utility is used to copy images into a MTD device.
+	The flashcp binary, inspired by mtd-utils as of git head 5eceb74f7.
+	This utility is used to copy images into a MTD device.
 config BUSYBOX_CONFIG_HDPARM
 	bool "hdparm"
 	default BUSYBOX_DEFAULT_HDPARM
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Get/Set hard drive parameters. Primarily intended for ATA
-	  drives. Adds about 13k (or around 30k if you enable the
-	  FEATURE_HDPARM_GET_IDENTITY option)....
+	Get/Set hard drive parameters. Primarily intended for ATA
+	drives. Adds about 13k (or around 30k if you enable the
+	FEATURE_HDPARM_GET_IDENTITY option)....
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_GET_IDENTITY
 	bool "Support obtaining detailed information directly from drives"
 	default BUSYBOX_DEFAULT_FEATURE_HDPARM_GET_IDENTITY
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
-	  Enable the -I and -i options to obtain detailed information
-	  directly from drives about their capabilities and supported ATA
-	  feature set. If no device name is specified, hdparm will read
-	  identify data from stdin. Enabling this option will add about 16k...
+	Enable the -I and -i options to obtain detailed information
+	directly from drives about their capabilities and supported ATA
+	feature set. If no device name is specified, hdparm will read
+	identify data from stdin. Enabling this option will add about 16k...
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF
 	bool "Register an IDE interface (DANGEROUS)"
 	default BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_SCAN_HWIF
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
-	  Enable the 'hdparm -R' option to register an IDE interface.
-	  This is dangerous stuff, so you should probably say N.
+	Enable the 'hdparm -R' option to register an IDE interface.
+	This is dangerous stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
 	bool "Un-register an IDE interface (DANGEROUS)"
 	default BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
-	  Enable the 'hdparm -U' option to un-register an IDE interface.
-	  This is dangerous stuff, so you should probably say N.
+	Enable the 'hdparm -U' option to un-register an IDE interface.
+	This is dangerous stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET
 	bool "Perform device reset (DANGEROUS)"
 	default BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_DRIVE_RESET
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
-	  Enable the 'hdparm -w' option to perform a device reset.
-	  This is dangerous stuff, so you should probably say N.
+	Enable the 'hdparm -w' option to perform a device reset.
+	This is dangerous stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
 	bool "Tristate device for hotswap (DANGEROUS)"
 	default BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_TRISTATE_HWIF
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
-	  Enable the 'hdparm -x' option to tristate device for hotswap,
-	  and the '-b' option to get/set bus state. This is dangerous
-	  stuff, so you should probably say N.
+	Enable the 'hdparm -x' option to tristate device for hotswap,
+	and the '-b' option to get/set bus state. This is dangerous
+	stuff, so you should probably say N.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
 	bool "Get/set using_dma flag"
 	default BUSYBOX_DEFAULT_FEATURE_HDPARM_HDIO_GETSET_DMA
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
-	  Enable the 'hdparm -d' option to get/set using_dma flag.
+	Enable the 'hdparm -d' option to get/set using_dma flag.
 config BUSYBOX_CONFIG_I2CGET
 	bool "i2cget"
 	default BUSYBOX_DEFAULT_I2CGET
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Read from I2C/SMBus chip registers.
+	Read from I2C/SMBus chip registers.
 
 config BUSYBOX_CONFIG_I2CSET
 	bool "i2cset"
 	default BUSYBOX_DEFAULT_I2CSET
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Set I2C registers.
+	Set I2C registers.
 
 config BUSYBOX_CONFIG_I2CDUMP
 	bool "i2cdump"
 	default BUSYBOX_DEFAULT_I2CDUMP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Examine I2C registers.
+	Examine I2C registers.
 
 config BUSYBOX_CONFIG_I2CDETECT
 	bool "i2cdetect"
 	default BUSYBOX_DEFAULT_I2CDETECT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Detect I2C chips.
+	Detect I2C chips.
 
 config BUSYBOX_CONFIG_INOTIFYD
 	bool "inotifyd"
 	default BUSYBOX_DEFAULT_INOTIFYD  # doesn't build on Knoppix 5
 	help
-	  Simple inotify daemon. Reports filesystem changes. Requires
-	  kernel >= 2.6.13
+	Simple inotify daemon. Reports filesystem changes. Requires
+	kernel >= 2.6.13
 config BUSYBOX_CONFIG_LESS
 	bool "less"
 	default BUSYBOX_DEFAULT_LESS
 	help
-	  'less' is a pager, meaning that it displays text files. It possesses
-	  a wide array of features, and is an improvement over 'more'.
+	'less' is a pager, meaning that it displays text files. It possesses
+	a wide array of features, and is an improvement over 'more'.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_MAXLINES
 	int "Max number of input lines less will try to eat"
@@ -402,64 +402,64 @@ config BUSYBOX_CONFIG_FEATURE_LESS_BRACKETS
 	default BUSYBOX_DEFAULT_FEATURE_LESS_BRACKETS
 	depends on BUSYBOX_CONFIG_LESS
 	help
-	  This option adds the capability to search for matching left and right
-	  brackets, facilitating programming.
+	This option adds the capability to search for matching left and right
+	brackets, facilitating programming.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_FLAGS
 	bool "Enable -m/-M"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_FLAGS
 	depends on BUSYBOX_CONFIG_LESS
 	help
-	  The -M/-m flag enables a more sophisticated status line.
+	The -M/-m flag enables a more sophisticated status line.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_TRUNCATE
 	bool "Enable -S"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_TRUNCATE
 	depends on BUSYBOX_CONFIG_LESS
 	help
-	  The -S flag causes long lines to be truncated rather than
-	  wrapped.
+	The -S flag causes long lines to be truncated rather than
+	wrapped.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_MARKS
 	bool "Enable marks"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_MARKS
 	depends on BUSYBOX_CONFIG_LESS
 	help
-	  Marks enable positions in a file to be stored for easy reference.
+	Marks enable positions in a file to be stored for easy reference.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_REGEXP
 	bool "Enable regular expressions"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_REGEXP
 	depends on BUSYBOX_CONFIG_LESS
 	help
-	  Enable regular expressions, allowing complex file searches.
+	Enable regular expressions, allowing complex file searches.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_WINCH
 	bool "Enable automatic resizing on window size changes"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_WINCH
 	depends on BUSYBOX_CONFIG_LESS
 	help
-	  Makes less track window size changes.
+	Makes less track window size changes.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_ASK_TERMINAL
 	bool "Use 'tell me cursor position' ESC sequence to measure window"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_ASK_TERMINAL
 	depends on BUSYBOX_CONFIG_FEATURE_LESS_WINCH
 	help
-	  Makes less track window size changes.
-	  If terminal size can't be retrieved and $LINES/$COLUMNS are not set,
-	  this option makes less perform a last-ditch effort to find it:
-	  position cursor to 999,999 and ask terminal to report real
-	  cursor position using "ESC [ 6 n" escape sequence, then read stdin.
-	  This is not clean but helps a lot on serial lines and such.
+	Makes less track window size changes.
+	If terminal size can't be retrieved and $LINES/$COLUMNS are not set,
+	this option makes less perform a last-ditch effort to find it:
+	position cursor to 999,999 and ask terminal to report real
+	cursor position using "ESC [ 6 n" escape sequence, then read stdin.
+	This is not clean but helps a lot on serial lines and such.
 
 config BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD
 	bool "Enable flag changes ('-' command)"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_DASHCMD
 	depends on BUSYBOX_CONFIG_LESS
 	help
-	  This enables the ability to change command-line flags within
-	  less itself ('-' keyboard command).
+	This enables the ability to change command-line flags within
+	less itself ('-' keyboard command).
 
 config BUSYBOX_CONFIG_FEATURE_LESS_LINENUMS
 	bool "Enable -N (dynamic switching of line numbers)"
@@ -469,34 +469,34 @@ config BUSYBOX_CONFIG_LOCK
 	bool "lock"
 	default BUSYBOX_DEFAULT_LOCK
 	help
-	  Small utility for using locks in scripts
+	Small utility for using locks in scripts
 config BUSYBOX_CONFIG_LSSCSI
 	bool "lsscsi"
 	default BUSYBOX_DEFAULT_LSSCSI
 	#select PLATFORM_LINUX
 	help
-	  lsscsi is a utility for displaying information about SCSI buses in the
-	  system and devices connected to them.
+	lsscsi is a utility for displaying information about SCSI buses in the
+	system and devices connected to them.
 
-	  This version uses sysfs (/sys/bus/scsi/devices) only.
+	This version uses sysfs (/sys/bus/scsi/devices) only.
 config BUSYBOX_CONFIG_MAKEDEVS
 	bool "makedevs"
 	default BUSYBOX_DEFAULT_MAKEDEVS
 	help
-	  'makedevs' is a utility used to create a batch of devices with
-	  one command.
+	'makedevs' is a utility used to create a batch of devices with
+	one command.
 
-	  There are two choices for command line behaviour, the interface
-	  as used by LEAF/Linux Router Project, or a device table file.
+	There are two choices for command line behaviour, the interface
+	as used by LEAF/Linux Router Project, or a device table file.
 
-	  'leaf' is traditionally what busybox follows, it allows multiple
-	  devices of a particluar type to be created per command.
-	  e.g. /dev/hda[0-9]
-	  Device properties are passed as command line arguments.
+	'leaf' is traditionally what busybox follows, it allows multiple
+	devices of a particluar type to be created per command.
+	e.g. /dev/hda[0-9]
+	Device properties are passed as command line arguments.
 
-	  'table' reads device properties from a file or stdin, allowing
-	  a batch of unrelated devices to be made with one command.
-	  User/group names are allowed as an alternative to uid/gid.
+	'table' reads device properties from a file or stdin, allowing
+	a batch of unrelated devices to be made with one command.
+	User/group names are allowed as an alternative to uid/gid.
 
 choice
 	prompt "Choose makedevs behaviour"
@@ -514,178 +514,178 @@ config BUSYBOX_CONFIG_MAN
 	bool "man"
 	default BUSYBOX_DEFAULT_MAN
 	help
-	  Format and display manual pages.
+	Format and display manual pages.
 config BUSYBOX_CONFIG_MICROCOM
 	bool "microcom"
 	default BUSYBOX_DEFAULT_MICROCOM
 	help
-	  The poor man's minicom utility for chatting with serial port devices.
+	The poor man's minicom utility for chatting with serial port devices.
 config BUSYBOX_CONFIG_MT
 	bool "mt"
 	default BUSYBOX_DEFAULT_MT
 	help
-	  mt is used to control tape devices. You can use the mt utility
-	  to advance or rewind a tape past a specified number of archive
-	  files on the tape.
+	mt is used to control tape devices. You can use the mt utility
+	to advance or rewind a tape past a specified number of archive
+	files on the tape.
 config BUSYBOX_CONFIG_NANDWRITE
 	bool "nandwrite"
 	default BUSYBOX_DEFAULT_NANDWRITE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Write to the specified MTD device, with bad blocks awareness
+	Write to the specified MTD device, with bad blocks awareness
 
 config BUSYBOX_CONFIG_NANDDUMP
 	bool "nanddump"
 	default BUSYBOX_DEFAULT_NANDDUMP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Dump the content of raw NAND chip
+	Dump the content of raw NAND chip
 config BUSYBOX_CONFIG_PARTPROBE
 	bool "partprobe"
 	default BUSYBOX_DEFAULT_PARTPROBE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Ask kernel to rescan partition table.
+	Ask kernel to rescan partition table.
 config BUSYBOX_CONFIG_RAIDAUTORUN
 	bool "raidautorun"
 	default BUSYBOX_DEFAULT_RAIDAUTORUN
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  raidautorun tells the kernel md driver to
-	  search and start RAID arrays.
+	raidautorun tells the kernel md driver to
+	search and start RAID arrays.
 config BUSYBOX_CONFIG_READAHEAD
 	bool "readahead"
 	default BUSYBOX_DEFAULT_READAHEAD
 	depends on BUSYBOX_CONFIG_LFS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Preload the files listed on the command line into RAM cache so that
-	  subsequent reads on these files will not block on disk I/O.
+	Preload the files listed on the command line into RAM cache so that
+	subsequent reads on these files will not block on disk I/O.
 
-	  This applet just calls the readahead(2) system call on each file.
-	  It is mainly useful in system startup scripts to preload files
-	  or executables before they are used. When used at the right time
-	  (in particular when a CPU bound process is running) it can
-	  significantly speed up system startup.
+	This applet just calls the readahead(2) system call on each file.
+	It is mainly useful in system startup scripts to preload files
+	or executables before they are used. When used at the right time
+	(in particular when a CPU bound process is running) it can
+	significantly speed up system startup.
 
-	  As readahead(2) blocks until each file has been read, it is best to
-	  run this applet as a background job.
+	As readahead(2) blocks until each file has been read, it is best to
+	run this applet as a background job.
 config BUSYBOX_CONFIG_RFKILL
 	bool "rfkill"
 	default BUSYBOX_DEFAULT_RFKILL # doesn't build on Ubuntu 9.04
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Enable/disable wireless devices.
+	Enable/disable wireless devices.
 
-	  rfkill list : list all wireless devices
-	  rfkill list bluetooth : list all bluetooth devices
-	  rfkill list 1 : list device corresponding to the given index
-	  rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
+	rfkill list : list all wireless devices
+	rfkill list bluetooth : list all bluetooth devices
+	rfkill list 1 : list device corresponding to the given index
+	rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
 
 config BUSYBOX_CONFIG_RUNLEVEL
 	bool "runlevel"
 	default BUSYBOX_DEFAULT_RUNLEVEL
 	depends on BUSYBOX_CONFIG_FEATURE_UTMP
 	help
-	  find the current and previous system runlevel.
+	find the current and previous system runlevel.
 
-	  This applet uses utmp but does not rely on busybox supporing
-	  utmp on purpose. It is used by e.g. emdebian via /etc/init.d/rc.
+	This applet uses utmp but does not rely on busybox supporing
+	utmp on purpose. It is used by e.g. emdebian via /etc/init.d/rc.
 config BUSYBOX_CONFIG_RX
 	bool "rx"
 	default BUSYBOX_DEFAULT_RX
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Receive files using the Xmodem protocol.
+	Receive files using the Xmodem protocol.
 config BUSYBOX_CONFIG_SETSERIAL
 	bool "setserial"
 	default BUSYBOX_DEFAULT_SETSERIAL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Retrieve or set Linux serial port.
+	Retrieve or set Linux serial port.
 config BUSYBOX_CONFIG_STRINGS
 	bool "strings"
 	default BUSYBOX_DEFAULT_STRINGS
 	help
-	  strings prints the printable character sequences for each file
-	  specified.
+	strings prints the printable character sequences for each file
+	specified.
 config BUSYBOX_CONFIG_TIME
 	bool "time"
 	default BUSYBOX_DEFAULT_TIME
 	help
-	  The time command runs the specified program with the given arguments.
-	  When the command finishes, time writes a message to standard output
-	  giving timing statistics about this program run.
+	The time command runs the specified program with the given arguments.
+	When the command finishes, time writes a message to standard output
+	giving timing statistics about this program run.
 config BUSYBOX_CONFIG_TTYSIZE
 	bool "ttysize"
 	default BUSYBOX_DEFAULT_TTYSIZE
 	help
-	  A replacement for "stty size". Unlike stty, can report only width,
-	  only height, or both, in any order. It also does not complain on
-	  error, but returns default 80x24.
-	  Usage in shell scripts: width=`ttysize w`.
+	A replacement for "stty size". Unlike stty, can report only width,
+	only height, or both, in any order. It also does not complain on
+	error, but returns default 80x24.
+	Usage in shell scripts: width=`ttysize w`.
 config BUSYBOX_CONFIG_UBIATTACH
 	bool "ubiattach"
 	default BUSYBOX_DEFAULT_UBIATTACH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Attach MTD device to an UBI device.
+	Attach MTD device to an UBI device.
 
 config BUSYBOX_CONFIG_UBIDETACH
 	bool "ubidetach"
 	default BUSYBOX_DEFAULT_UBIDETACH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Detach MTD device from an UBI device.
+	Detach MTD device from an UBI device.
 
 config BUSYBOX_CONFIG_UBIMKVOL
 	bool "ubimkvol"
 	default BUSYBOX_DEFAULT_UBIMKVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Create a UBI volume.
+	Create a UBI volume.
 
 config BUSYBOX_CONFIG_UBIRMVOL
 	bool "ubirmvol"
 	default BUSYBOX_DEFAULT_UBIRMVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Delete a UBI volume.
+	Delete a UBI volume.
 
 config BUSYBOX_CONFIG_UBIRSVOL
 	bool "ubirsvol"
 	default BUSYBOX_DEFAULT_UBIRSVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Resize a UBI volume.
+	Resize a UBI volume.
 
 config BUSYBOX_CONFIG_UBIUPDATEVOL
 	bool "ubiupdatevol"
 	default BUSYBOX_DEFAULT_UBIUPDATEVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Update a UBI volume.
+	Update a UBI volume.
 config BUSYBOX_CONFIG_UBIRENAME
 	bool "ubirename"
 	default BUSYBOX_DEFAULT_UBIRENAME
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Utility to rename UBI volumes
+	Utility to rename UBI volumes
 config BUSYBOX_CONFIG_VOLNAME
 	bool "volname"
 	default BUSYBOX_DEFAULT_VOLNAME
 	help
-	  Prints a CD-ROM volume name.
+	Prints a CD-ROM volume name.
 config BUSYBOX_CONFIG_WATCHDOG
 	bool "watchdog"
 	default BUSYBOX_DEFAULT_WATCHDOG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The watchdog utility is used with hardware or software watchdog
-	  device drivers. It opens the specified watchdog device special file
-	  and periodically writes a magic character to the device. If the
-	  watchdog applet ever fails to write the magic character within a
-	  certain amount of time, the watchdog device assumes the system has
-	  hung, and will cause the hardware to reboot.
+	The watchdog utility is used with hardware or software watchdog
+	device drivers. It opens the specified watchdog device special file
+	and periodically writes a magic character to the device. If the
+	watchdog applet ever fails to write the magic character within a
+	certain amount of time, the watchdog device assumes the system has
+	hung, and will cause the hardware to reboot.
 
 endmenu
diff --git a/package/utils/busybox/config/modutils/Config.in b/package/utils/busybox/config/modutils/Config.in
index 9791af65a0..de88af6e72 100644
--- a/package/utils/busybox/config/modutils/Config.in
+++ b/package/utils/busybox/config/modutils/Config.in
@@ -10,89 +10,89 @@ config BUSYBOX_CONFIG_MODPROBE_SMALL
 	bool "Simplified modutils"
 	default BUSYBOX_DEFAULT_MODPROBE_SMALL
 	help
-	  Build smaller (~1.5 kbytes), simplified module tools.
+	Build smaller (~1.5 kbytes), simplified module tools.
 
-	  This option by itself does not enable any applets -
-	  you need to select applets individually below.
+	This option by itself does not enable any applets -
+	you need to select applets individually below.
 
-	  With this option modprobe does not require modules.dep file
-	  and does not use /etc/modules.conf file.
-	  It scans module files in /lib/modules/`uname -r` and
-	  determines dependencies and module alias names on the fly.
-	  This may make module loading slower, most notably
-	  when one needs to load module by alias (this requires
-	  scanning through module _bodies_).
+	With this option modprobe does not require modules.dep file
+	and does not use /etc/modules.conf file.
+	It scans module files in /lib/modules/`uname -r` and
+	determines dependencies and module alias names on the fly.
+	This may make module loading slower, most notably
+	when one needs to load module by alias (this requires
+	scanning through module _bodies_).
 
-	  At the first attempt to load a module by alias modprobe
-	  will try to generate modules.dep.bb file in order to speed up
-	  future loads by alias. Failure to do so (read-only /lib/modules,
-	  etc) is not reported, and future modprobes will be slow too.
+	At the first attempt to load a module by alias modprobe
+	will try to generate modules.dep.bb file in order to speed up
+	future loads by alias. Failure to do so (read-only /lib/modules,
+	etc) is not reported, and future modprobes will be slow too.
 
-	  NB: modules.dep.bb file format is not compatible
-	  with modules.dep file as created/used by standard module tools.
+	NB: modules.dep.bb file format is not compatible
+	with modules.dep file as created/used by standard module tools.
 
-	  Additional module parameters can be stored in
-	  /etc/modules/$module_name files.
+	Additional module parameters can be stored in
+	/etc/modules/$module_name files.
 
 config BUSYBOX_CONFIG_DEPMOD
 	bool "depmod"
 	default BUSYBOX_DEFAULT_DEPMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  depmod generates modules.dep (and potentially modules.alias
-	  and modules.symbols) that contain dependency information
-	  for modprobe.
+	depmod generates modules.dep (and potentially modules.alias
+	and modules.symbols) that contain dependency information
+	for modprobe.
 config BUSYBOX_CONFIG_INSMOD
 	bool "insmod"
 	default BUSYBOX_DEFAULT_INSMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  insmod is used to load specified modules in the running kernel.
+	insmod is used to load specified modules in the running kernel.
 config BUSYBOX_CONFIG_LSMOD
 	bool "lsmod"
 	default BUSYBOX_DEFAULT_LSMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  lsmod is used to display a list of loaded modules.
+	lsmod is used to display a list of loaded modules.
 
 config BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
 	bool "Pretty output"
 	default BUSYBOX_DEFAULT_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
 	depends on BUSYBOX_CONFIG_LSMOD && !BUSYBOX_CONFIG_MODPROBE_SMALL
 	help
-	  This option makes output format of lsmod adjusted to
-	  the format of module-init-tools for Linux kernel 2.6.
-	  Increases size somewhat.
+	This option makes output format of lsmod adjusted to
+	the format of module-init-tools for Linux kernel 2.6.
+	Increases size somewhat.
 config BUSYBOX_CONFIG_MODINFO
 	bool "modinfo"
 	default BUSYBOX_DEFAULT_MODINFO
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Show information about a Linux Kernel module
+	Show information about a Linux Kernel module
 config BUSYBOX_CONFIG_MODPROBE
 	bool "modprobe"
 	default BUSYBOX_DEFAULT_MODPROBE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Handle the loading of modules, and their dependencies on a high
-	  level.
+	Handle the loading of modules, and their dependencies on a high
+	level.
 
 config BUSYBOX_CONFIG_FEATURE_MODPROBE_BLACKLIST
 	bool "Blacklist support"
 	default BUSYBOX_DEFAULT_FEATURE_MODPROBE_BLACKLIST
 	depends on BUSYBOX_CONFIG_MODPROBE && !BUSYBOX_CONFIG_MODPROBE_SMALL
 	help
-	  Say 'y' here to enable support for the 'blacklist' command in
-	  modprobe.conf. This prevents the alias resolver to resolve
-	  blacklisted modules. This is useful if you want to prevent your
-	  hardware autodetection scripts to load modules like evdev, frame
-	  buffer drivers etc.
+	Say 'y' here to enable support for the 'blacklist' command in
+	modprobe.conf. This prevents the alias resolver to resolve
+	blacklisted modules. This is useful if you want to prevent your
+	hardware autodetection scripts to load modules like evdev, frame
+	buffer drivers etc.
 config BUSYBOX_CONFIG_RMMOD
 	bool "rmmod"
 	default BUSYBOX_DEFAULT_RMMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  rmmod is used to unload specified modules from the kernel.
+	rmmod is used to unload specified modules from the kernel.
 
 comment "Options common to multiple modutils"
 
@@ -101,145 +101,145 @@ config BUSYBOX_CONFIG_FEATURE_CMDLINE_MODULE_OPTIONS
 	default BUSYBOX_DEFAULT_FEATURE_CMDLINE_MODULE_OPTIONS
 	depends on BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE
 	help
-	  Allow insmod and modprobe take module options from the applets'
-	  command line.
+	Allow insmod and modprobe take module options from the applets'
+	command line.
 
 config BUSYBOX_CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED
 	bool "Skip loading of already loaded modules"
 	default BUSYBOX_DEFAULT_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED
 	depends on BUSYBOX_CONFIG_MODPROBE_SMALL && (BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE)
 	help
-	  Check if the module is already loaded.
+	Check if the module is already loaded.
 
 config BUSYBOX_CONFIG_FEATURE_2_4_MODULES
 	bool "Support version 2.2/2.4 Linux kernels"
 	default BUSYBOX_DEFAULT_FEATURE_2_4_MODULES
 	depends on (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_LSMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_RMMOD) && !BUSYBOX_CONFIG_MODPROBE_SMALL
 	help
-	  Support module loading for 2.2.x and 2.4.x Linux kernels.
-	  This increases size considerably. Say N unless you plan
-	  to run ancient kernels.
+	Support module loading for 2.2.x and 2.4.x Linux kernels.
+	This increases size considerably. Say N unless you plan
+	to run ancient kernels.
 
 config BUSYBOX_CONFIG_FEATURE_INSMOD_VERSION_CHECKING
 	bool "Enable module version checking"
 	default BUSYBOX_DEFAULT_FEATURE_INSMOD_VERSION_CHECKING
 	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE)
 	help
-	  Support checking of versions for modules. This is used to
-	  ensure that the kernel and module are made for each other.
+	Support checking of versions for modules. This is used to
+	ensure that the kernel and module are made for each other.
 
 config BUSYBOX_CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
 	bool "Add module symbols to kernel symbol table"
 	default BUSYBOX_DEFAULT_FEATURE_INSMOD_KSYMOOPS_SYMBOLS
 	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE)
 	help
-	  By adding module symbols to the kernel symbol table, Oops messages
-	  occurring within kernel modules can be properly debugged. By enabling
-	  this feature, module symbols will always be added to the kernel symbol
-	  table for proper debugging support. If you are not interested in
-	  Oops messages from kernel modules, say N.
+	By adding module symbols to the kernel symbol table, Oops messages
+	occurring within kernel modules can be properly debugged. By enabling
+	this feature, module symbols will always be added to the kernel symbol
+	table for proper debugging support. If you are not interested in
+	Oops messages from kernel modules, say N.
 
 config BUSYBOX_CONFIG_FEATURE_INSMOD_LOADINKMEM
 	bool "In kernel memory optimization (uClinux only)"
 	default BUSYBOX_DEFAULT_FEATURE_INSMOD_LOADINKMEM
 	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE)
 	help
-	  This is a special uClinux only memory optimization that lets insmod
-	  load the specified kernel module directly into kernel space, reducing
-	  memory usage by preventing the need for two copies of the module
-	  being loaded into memory.
+	This is a special uClinux only memory optimization that lets insmod
+	load the specified kernel module directly into kernel space, reducing
+	memory usage by preventing the need for two copies of the module
+	being loaded into memory.
 
 config BUSYBOX_CONFIG_FEATURE_INSMOD_LOAD_MAP
 	bool "Enable insmod load map (-m) option"
 	default BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP
 	depends on BUSYBOX_CONFIG_FEATURE_2_4_MODULES && BUSYBOX_CONFIG_INSMOD
 	help
-	  Enabling this, one would be able to get a load map
-	  output on stdout. This makes kernel module debugging
-	  easier.
-	  If you don't plan to debug kernel modules, you
-	  don't need this option.
+	Enabling this, one would be able to get a load map
+	output on stdout. This makes kernel module debugging
+	easier.
+	If you don't plan to debug kernel modules, you
+	don't need this option.
 
 config BUSYBOX_CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL
 	bool "Symbols in load map"
 	default BUSYBOX_DEFAULT_FEATURE_INSMOD_LOAD_MAP_FULL
 	depends on BUSYBOX_CONFIG_FEATURE_INSMOD_LOAD_MAP
 	help
-	  Without this option, -m will only output section
-	  load map. With this option, -m will also output
-	  symbols load map.
+	Without this option, -m will only output section
+	load map. With this option, -m will also output
+	symbols load map.
 
 config BUSYBOX_CONFIG_FEATURE_CHECK_TAINTED_MODULE
 	bool "Support tainted module checking with new kernels"
 	default BUSYBOX_DEFAULT_FEATURE_CHECK_TAINTED_MODULE
 	depends on (BUSYBOX_CONFIG_LSMOD || BUSYBOX_CONFIG_FEATURE_2_4_MODULES) && !BUSYBOX_CONFIG_MODPROBE_SMALL
 	help
-	  Support checking for tainted modules. These are usually binary
-	  only modules that will make the linux-kernel list ignore your
-	  support request.
-	  This option is required to support GPLONLY modules.
+	Support checking for tainted modules. These are usually binary
+	only modules that will make the linux-kernel list ignore your
+	support request.
+	This option is required to support GPLONLY modules.
 
 config BUSYBOX_CONFIG_FEATURE_INSMOD_TRY_MMAP
 	bool "Try to load module from a mmap'ed area"
 	default BUSYBOX_DEFAULT_FEATURE_INSMOD_TRY_MMAP
 	depends on (BUSYBOX_CONFIG_INSMOD || BUSYBOX_CONFIG_MODPROBE) && !BUSYBOX_CONFIG_MODPROBE_SMALL
 	help
-	  This option causes module loading code to try to mmap
-	  module first. If it does not work (for example,
-	  it does not work for compressed modules), module will be read
-	  (and unpacked if needed) into a memory block allocated by malloc.
+	This option causes module loading code to try to mmap
+	module first. If it does not work (for example,
+	it does not work for compressed modules), module will be read
+	(and unpacked if needed) into a memory block allocated by malloc.
 
-	  The only case when mmap works but malloc does not is when
-	  you are trying to load a big module on a very memory-constrained
-	  machine. Malloc will momentarily need 2x as much memory as mmap.
+	The only case when mmap works but malloc does not is when
+	you are trying to load a big module on a very memory-constrained
+	machine. Malloc will momentarily need 2x as much memory as mmap.
 
-	  Choosing N saves about 250 bytes of code (on 32-bit x86).
+	Choosing N saves about 250 bytes of code (on 32-bit x86).
 
 config BUSYBOX_CONFIG_FEATURE_MODUTILS_ALIAS
 	bool "Support module.aliases file"
 	default BUSYBOX_DEFAULT_FEATURE_MODUTILS_ALIAS
 	depends on (BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE) && !BUSYBOX_CONFIG_MODPROBE_SMALL
 	help
-	  Generate and parse modules.alias containing aliases for bus
-	  identifiers:
+	Generate and parse modules.alias containing aliases for bus
+	identifiers:
 	    alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
 
-	  and aliases for logical modules names e.g.:
+	and aliases for logical modules names e.g.:
 	    alias padlock_aes aes
 	    alias aes_i586 aes
 	    alias aes_generic aes
 
-	  Say Y if unsure.
+	Say Y if unsure.
 
 config BUSYBOX_CONFIG_FEATURE_MODUTILS_SYMBOLS
 	bool "Support module.symbols file"
 	default BUSYBOX_DEFAULT_FEATURE_MODUTILS_SYMBOLS
 	depends on (BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE) && !BUSYBOX_CONFIG_MODPROBE_SMALL
 	help
-	  Generate and parse modules.symbols containing aliases for
-	  symbol_request() kernel calls, such as:
+	Generate and parse modules.symbols containing aliases for
+	symbol_request() kernel calls, such as:
 	    alias symbol:usb_sg_init usbcore
 
-	  Say Y if unsure.
+	Say Y if unsure.
 
 config BUSYBOX_CONFIG_DEFAULT_MODULES_DIR
 	string "Default directory containing modules"
 	default BUSYBOX_DEFAULT_DEFAULT_MODULES_DIR
 	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODINFO
 	help
-	  Directory that contains kernel modules.
-	  Defaults to "/lib/modules"
+	Directory that contains kernel modules.
+	Defaults to "/lib/modules"
 
 config BUSYBOX_CONFIG_DEFAULT_DEPMOD_FILE
 	string "Default name of modules.dep"
 	default BUSYBOX_DEFAULT_DEFAULT_DEPMOD_FILE
 	depends on BUSYBOX_CONFIG_DEPMOD || BUSYBOX_CONFIG_MODPROBE || BUSYBOX_CONFIG_MODINFO
 	help
-	  Filename that contains kernel modules dependencies.
-	  Defaults to "modules.dep".
-	  If you configured the "simplified modutils" (MODPROBE_SMALL), a
-	  ".bb" suffix will be added after this name. Do not specify ".bb"
-	  here unless you intend your depmod or modprobe to work on
-	  "modules.dep.bb.bb" or such.
+	Filename that contains kernel modules dependencies.
+	Defaults to "modules.dep".
+	If you configured the "simplified modutils" (MODPROBE_SMALL), a
+	".bb" suffix will be added after this name. Do not specify ".bb"
+	here unless you intend your depmod or modprobe to work on
+	"modules.dep.bb.bb" or such.
 
 endmenu
diff --git a/package/utils/busybox/config/networking/Config.in b/package/utils/busybox/config/networking/Config.in
index 97a1bfbce5..f9063d367e 100644
--- a/package/utils/busybox/config/networking/Config.in
+++ b/package/utils/busybox/config/networking/Config.in
@@ -11,134 +11,134 @@ config BUSYBOX_CONFIG_FEATURE_IPV6
 	default BUSYBOX_DEFAULT_FEATURE_IPV6
 	depends on IPV6
 	help
-	  Enable IPv6 support in busybox.
-	  This adds IPv6 support in the networking applets.
+	Enable IPv6 support in busybox.
+	This adds IPv6 support in the networking applets.
 
 config BUSYBOX_CONFIG_FEATURE_UNIX_LOCAL
 	bool "Enable Unix domain socket support (usually not needed)"
 	default BUSYBOX_DEFAULT_FEATURE_UNIX_LOCAL
 	help
-	  Enable Unix domain socket support in all busybox networking
-	  applets.  Address of the form local:/path/to/unix/socket
-	  will be recognized.
+	Enable Unix domain socket support in all busybox networking
+	applets.  Address of the form local:/path/to/unix/socket
+	will be recognized.
 
-	  This extension is almost never used in real world usage.
-	  You most likely want to say N.
+	This extension is almost never used in real world usage.
+	You most likely want to say N.
 
 config BUSYBOX_CONFIG_FEATURE_PREFER_IPV4_ADDRESS
 	bool "Prefer IPv4 addresses from DNS queries"
 	default BUSYBOX_DEFAULT_FEATURE_PREFER_IPV4_ADDRESS
 	depends on BUSYBOX_CONFIG_FEATURE_IPV6
 	help
-	  Use IPv4 address of network host if it has one.
+	Use IPv4 address of network host if it has one.
 
-	  If this option is off, the first returned address will be used.
-	  This may cause problems when your DNS server is IPv6-capable and
-	  is returning IPv6 host addresses too. If IPv6 address
-	  precedes IPv4 one in DNS reply, busybox network applets
-	  (e.g. wget) will use IPv6 address. On an IPv6-incapable host
-	  or network applets will fail to connect to the host
-	  using IPv6 address.
+	If this option is off, the first returned address will be used.
+	This may cause problems when your DNS server is IPv6-capable and
+	is returning IPv6 host addresses too. If IPv6 address
+	precedes IPv4 one in DNS reply, busybox network applets
+	(e.g. wget) will use IPv6 address. On an IPv6-incapable host
+	or network applets will fail to connect to the host
+	using IPv6 address.
 
 config BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS
 	bool "Verbose resolution errors"
 	default BUSYBOX_DEFAULT_VERBOSE_RESOLUTION_ERRORS
 	help
-	  Enable if you are not satisfied with simplistic
-	  "can't resolve 'hostname.com'" and want to know more.
-	  This may increase size of your executable a bit.
+	Enable if you are not satisfied with simplistic
+	"can't resolve 'hostname.com'" and want to know more.
+	This may increase size of your executable a bit.
 
 config BUSYBOX_CONFIG_ARP
 	bool "arp"
 	default BUSYBOX_DEFAULT_ARP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Manipulate the system ARP cache.
+	Manipulate the system ARP cache.
 config BUSYBOX_CONFIG_ARPING
 	bool "arping"
 	default BUSYBOX_DEFAULT_ARPING
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Ping hosts by ARP packets.
+	Ping hosts by ARP packets.
 
 config BUSYBOX_CONFIG_BRCTL
 	bool "brctl"
 	default BUSYBOX_DEFAULT_BRCTL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Manage ethernet bridges.
-	  Supports addbr/delbr and addif/delif.
+	Manage ethernet bridges.
+	Supports addbr/delbr and addif/delif.
 
 config BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
 	bool "Fancy options"
 	default BUSYBOX_DEFAULT_FEATURE_BRCTL_FANCY
 	depends on BUSYBOX_CONFIG_BRCTL
 	help
-	  Add support for extended option like:
+	Add support for extended option like:
 	    setageing, setfd, sethello, setmaxage,
 	    setpathcost, setportprio, setbridgeprio,
 	    stp
-	  This adds about 600 bytes.
+	This adds about 600 bytes.
 
 config BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW
 	bool "Support show"
 	default BUSYBOX_DEFAULT_FEATURE_BRCTL_SHOW
 	depends on BUSYBOX_CONFIG_BRCTL && BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
 	help
-	  Add support for option which prints the current config:
+	Add support for option which prints the current config:
 	    show
 config BUSYBOX_CONFIG_DNSD
 	bool "dnsd"
 	default BUSYBOX_DEFAULT_DNSD
 	help
-	  Small and static DNS server daemon.
+	Small and static DNS server daemon.
 config BUSYBOX_CONFIG_ETHER_WAKE
 	bool "ether-wake"
 	default BUSYBOX_DEFAULT_ETHER_WAKE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Send a magic packet to wake up sleeping machines.
+	Send a magic packet to wake up sleeping machines.
 config BUSYBOX_CONFIG_FTPD
 	bool "ftpd"
 	default BUSYBOX_DEFAULT_FTPD
 	help
-	  Simple FTP daemon. You have to run it via inetd.
+	Simple FTP daemon. You have to run it via inetd.
 
 config BUSYBOX_CONFIG_FEATURE_FTPD_WRITE
 	bool "Enable upload commands"
 	default BUSYBOX_DEFAULT_FEATURE_FTPD_WRITE
 	depends on BUSYBOX_CONFIG_FTPD
 	help
-	  Enable all kinds of FTP upload commands (-w option)
+	Enable all kinds of FTP upload commands (-w option)
 
 config BUSYBOX_CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST
 	bool "Enable workaround for RFC-violating clients"
 	default BUSYBOX_DEFAULT_FEATURE_FTPD_ACCEPT_BROKEN_LIST
 	depends on BUSYBOX_CONFIG_FTPD
 	help
-	  Some ftp clients (among them KDE's Konqueror) issue illegal
-	  "LIST -l" requests. This option works around such problems.
-	  It might prevent you from listing files starting with "-" and
-	  it increases the code size by ~40 bytes.
-	  Most other ftp servers seem to behave similar to this.
+	Some ftp clients (among them KDE's Konqueror) issue illegal
+	"LIST -l" requests. This option works around such problems.
+	It might prevent you from listing files starting with "-" and
+	it increases the code size by ~40 bytes.
+	Most other ftp servers seem to behave similar to this.
 
 config BUSYBOX_CONFIG_FEATURE_FTPD_AUTHENTICATION
 	bool "Enable authentication"
 	default BUSYBOX_DEFAULT_FEATURE_FTPD_AUTHENTICATION
 	depends on BUSYBOX_CONFIG_FTPD
 	help
-	  Enable basic system login as seen in telnet etc.
+	Enable basic system login as seen in telnet etc.
 config BUSYBOX_CONFIG_FTPGET
 	bool "ftpget"
 	default BUSYBOX_DEFAULT_FTPGET
 	help
-	  Retrieve a remote file via FTP.
+	Retrieve a remote file via FTP.
 
 config BUSYBOX_CONFIG_FTPPUT
 	bool "ftpput"
 	default BUSYBOX_DEFAULT_FTPPUT
 	help
-	  Store a remote file via FTP.
+	Store a remote file via FTP.
 
 config BUSYBOX_CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS
 	bool "Enable long options in ftpget/ftpput"
@@ -148,252 +148,252 @@ config BUSYBOX_CONFIG_HOSTNAME
 	bool "hostname"
 	default BUSYBOX_DEFAULT_HOSTNAME
 	help
-	  Show or set the system's host name.
+	Show or set the system's host name.
 
 config BUSYBOX_CONFIG_DNSDOMAINNAME
 	bool "dnsdomainname"
 	default BUSYBOX_DEFAULT_DNSDOMAINNAME
 	help
-	  Alias to "hostname -d".
+	Alias to "hostname -d".
 config BUSYBOX_CONFIG_HTTPD
 	bool "httpd"
 	default BUSYBOX_DEFAULT_HTTPD
 	help
-	  HTTP server.
+	HTTP server.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_RANGES
 	bool "Support 'Ranges:' header"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_RANGES
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  Makes httpd emit "Accept-Ranges: bytes" header and understand
-	  "Range: bytes=NNN-[MMM]" header. Allows for resuming interrupted
-	  downloads, seeking in multimedia players etc.
+	Makes httpd emit "Accept-Ranges: bytes" header and understand
+	"Range: bytes=NNN-[MMM]" header. Allows for resuming interrupted
+	downloads, seeking in multimedia players etc.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_SETUID
 	bool "Enable -u <user> option"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_SETUID
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  This option allows the server to run as a specific user
-	  rather than defaulting to the user that starts the server.
-	  Use of this option requires special privileges to change to a
-	  different user.
+	This option allows the server to run as a specific user
+	rather than defaulting to the user that starts the server.
+	Use of this option requires special privileges to change to a
+	different user.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
 	bool "Enable Basic http Authentication"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_BASIC_AUTH
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  Utilizes password settings from /etc/httpd.conf for basic
-	  authentication on a per url basis.
-	  Example for httpd.conf file:
-	  /adm:toor:PaSsWd
+	Utilizes password settings from /etc/httpd.conf for basic
+	authentication on a per url basis.
+	Example for httpd.conf file:
+	/adm:toor:PaSsWd
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5
 	bool "Support MD5 crypted passwords for http Authentication"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_AUTH_MD5
 	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
 	help
-	  Enables encrypted passwords, and wildcard user/passwords
-	  in httpd.conf file.
-	  User '*' means 'any system user name is ok',
-	  password of '*' means 'use system password for this user'
-	  Examples:
-	  /adm:toor:$1$P/eKnWXS$aI1aPGxT.dJD5SzqAKWrF0
-	  /adm:root:*
-	  /wiki:*:*
+	Enables encrypted passwords, and wildcard user/passwords
+	in httpd.conf file.
+	User '*' means 'any system user name is ok',
+	password of '*' means 'use system password for this user'
+	Examples:
+	/adm:toor:$1$P/eKnWXS$aI1aPGxT.dJD5SzqAKWrF0
+	/adm:root:*
+	/wiki:*:*
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
 	bool "Support Common Gateway Interface (CGI)"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_CGI
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  This option allows scripts and executables to be invoked
-	  when specific URLs are requested.
+	This option allows scripts and executables to be invoked
+	when specific URLs are requested.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
 	bool "Support running scripts through an interpreter"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR
 	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
 	help
-	  This option enables support for running scripts through an
-	  interpreter. Turn this on if you want PHP scripts to work
-	  properly. You need to supply an additional line in your
-	  httpd.conf file:
-	  *.php:/path/to/your/php
+	This option enables support for running scripts through an
+	interpreter. Turn this on if you want PHP scripts to work
+	properly. You need to supply an additional line in your
+	httpd.conf file:
+	*.php:/path/to/your/php
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
 	bool "Set REMOTE_PORT environment variable for CGI"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV
 	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_CGI
 	help
-	  Use of this option can assist scripts in generating
-	  references that contain a unique port number.
+	Use of this option can assist scripts in generating
+	references that contain a unique port number.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_ENCODE_URL_STR
 	bool "Enable -e option (useful for CGIs written as shell scripts)"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_ENCODE_URL_STR
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  This option allows html encoding of arbitrary strings for display
-	  by the browser. Output goes to stdout.
-	  For example, httpd -e "<Hello World>" produces
-	  "&#60Hello&#32World&#62".
+	This option allows html encoding of arbitrary strings for display
+	by the browser. Output goes to stdout.
+	For example, httpd -e "<Hello World>" produces
+	"&#60Hello&#32World&#62".
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
 	bool "Support custom error pages"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_ERROR_PAGES
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  This option allows you to define custom error pages in
-	  the configuration file instead of the default HTTP status
-	  error pages. For instance, if you add the line:
+	This option allows you to define custom error pages in
+	the configuration file instead of the default HTTP status
+	error pages. For instance, if you add the line:
 	        E404:/path/e404.html
-	  in the config file, the server will respond the specified
-	  '/path/e404.html' file instead of the terse '404 NOT FOUND'
-	  message.
+	in the config file, the server will respond the specified
+	'/path/e404.html' file instead of the terse '404 NOT FOUND'
+	message.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_PROXY
 	bool "Support reverse proxy"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_PROXY
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  This option allows you to define URLs that will be forwarded
-	  to another HTTP server. To setup add the following line to the
-	  configuration file
+	This option allows you to define URLs that will be forwarded
+	to another HTTP server. To setup add the following line to the
+	configuration file
 	        P:/url/:http://hostname[:port]/new/path/
-	  Then a request to /url/myfile will be forwarded to
-	  http://hostname[:port]/new/path/myfile.
+	Then a request to /url/myfile will be forwarded to
+	http://hostname[:port]/new/path/myfile.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_GZIP
 	bool "Support GZIP content encoding"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_GZIP
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
-	  Makes httpd send files using GZIP content encoding if the
-	  client supports it and a pre-compressed <file>.gz exists.
+	Makes httpd send files using GZIP content encoding if the
+	client supports it and a pre-compressed <file>.gz exists.
 config BUSYBOX_CONFIG_IFCONFIG
 	bool "ifconfig"
 	default BUSYBOX_DEFAULT_IFCONFIG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Ifconfig is used to configure the kernel-resident network interfaces.
+	Ifconfig is used to configure the kernel-resident network interfaces.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_STATUS
 	bool "Enable status reporting output (+7k)"
 	default BUSYBOX_DEFAULT_FEATURE_IFCONFIG_STATUS
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
-	  If ifconfig is called with no arguments it will display the status
-	  of the currently active interfaces.
+	If ifconfig is called with no arguments it will display the status
+	of the currently active interfaces.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_SLIP
 	bool "Enable slip-specific options \"keepalive\" and \"outfill\""
 	default BUSYBOX_DEFAULT_FEATURE_IFCONFIG_SLIP
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
-	  Allow "keepalive" and "outfill" support for SLIP. If you're not
-	  planning on using serial lines, leave this unchecked.
+	Allow "keepalive" and "outfill" support for SLIP. If you're not
+	planning on using serial lines, leave this unchecked.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
 	bool "Enable options \"mem_start\", \"io_addr\", and \"irq\""
 	default BUSYBOX_DEFAULT_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
-	  Allow the start address for shared memory, start address for I/O,
-	  and/or the interrupt line used by the specified device.
+	Allow the start address for shared memory, start address for I/O,
+	and/or the interrupt line used by the specified device.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_HW
 	bool "Enable option \"hw\" (ether only)"
 	default BUSYBOX_DEFAULT_FEATURE_IFCONFIG_HW
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
-	  Set the hardware address of this interface, if the device driver
-	  supports  this  operation. Currently, we only support the 'ether'
-	  class.
+	Set the hardware address of this interface, if the device driver
+	supports  this  operation. Currently, we only support the 'ether'
+	class.
 
 config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
 	bool "Set the broadcast automatically"
 	default BUSYBOX_DEFAULT_FEATURE_IFCONFIG_BROADCAST_PLUS
 	depends on BUSYBOX_CONFIG_IFCONFIG
 	help
-	  Setting this will make ifconfig attempt to find the broadcast
-	  automatically if the value '+' is used.
+	Setting this will make ifconfig attempt to find the broadcast
+	automatically if the value '+' is used.
 config BUSYBOX_CONFIG_IFENSLAVE
 	bool "ifenslave"
 	default BUSYBOX_DEFAULT_IFENSLAVE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Userspace application to bind several interfaces
-	  to a logical interface (use with kernel bonding driver).
+	Userspace application to bind several interfaces
+	to a logical interface (use with kernel bonding driver).
 config BUSYBOX_CONFIG_IFPLUGD
 	bool "ifplugd"
 	default BUSYBOX_DEFAULT_IFPLUGD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Network interface plug detection daemon.
+	Network interface plug detection daemon.
 config BUSYBOX_CONFIG_IFUP
 	bool "ifup"
 	default BUSYBOX_DEFAULT_IFUP
 	help
-	  Activate the specified interfaces. This applet makes use
-	  of either "ifconfig" and "route" or the "ip" command to actually
-	  configure network interfaces. Therefore, you will probably also want
-	  to enable either IFCONFIG and ROUTE, or enable
-	  FEATURE_IFUPDOWN_IP and the various IP options. Of
-	  course you could use non-busybox versions of these programs, so
-	  against my better judgement (since this will surely result in plenty
-	  of support questions on the mailing list), I do not force you to
-	  enable these additional options. It is up to you to supply either
-	  "ifconfig", "route" and "run-parts" or the "ip" command, either
-	  via busybox or via standalone utilities.
+	Activate the specified interfaces. This applet makes use
+	of either "ifconfig" and "route" or the "ip" command to actually
+	configure network interfaces. Therefore, you will probably also want
+	to enable either IFCONFIG and ROUTE, or enable
+	FEATURE_IFUPDOWN_IP and the various IP options. Of
+	course you could use non-busybox versions of these programs, so
+	against my better judgement (since this will surely result in plenty
+	of support questions on the mailing list), I do not force you to
+	enable these additional options. It is up to you to supply either
+	"ifconfig", "route" and "run-parts" or the "ip" command, either
+	via busybox or via standalone utilities.
 
 config BUSYBOX_CONFIG_IFDOWN
 	bool "ifdown"
 	default BUSYBOX_DEFAULT_IFDOWN
 	help
-	  Deactivate the specified interfaces.
+	Deactivate the specified interfaces.
 
 config BUSYBOX_CONFIG_IFUPDOWN_IFSTATE_PATH
 	string "Absolute path to ifstate file"
 	default BUSYBOX_DEFAULT_IFUPDOWN_IFSTATE_PATH
 	depends on BUSYBOX_CONFIG_IFUP || BUSYBOX_CONFIG_IFDOWN
 	help
-	  ifupdown keeps state information in a file called ifstate.
-	  Typically it is located in /var/run/ifstate, however
-	  some distributions tend to put it in other places
-	  (debian, for example, uses /etc/network/run/ifstate).
-	  This config option defines location of ifstate.
+	ifupdown keeps state information in a file called ifstate.
+	Typically it is located in /var/run/ifstate, however
+	some distributions tend to put it in other places
+	(debian, for example, uses /etc/network/run/ifstate).
+	This config option defines location of ifstate.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
 	bool "Use ip tool (else ifconfig/route is used)"
 	default BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IP
 	depends on BUSYBOX_CONFIG_IFUP || BUSYBOX_CONFIG_IFDOWN
 	help
-	  Use the iproute "ip" command to implement "ifup" and "ifdown", rather
-	  than the default of using the older "ifconfig" and "route" utilities.
+	Use the iproute "ip" command to implement "ifup" and "ifdown", rather
+	than the default of using the older "ifconfig" and "route" utilities.
 
-	  If Y: you must install either the full-blown iproute2 package
-	  or enable "ip" applet in Busybox, or the "ifup" and "ifdown" applets
-	  will not work.
+	If Y: you must install either the full-blown iproute2 package
+	or enable "ip" applet in Busybox, or the "ifup" and "ifdown" applets
+	will not work.
 
-	  If N: you must install either the full-blown ifconfig and route
-	  utilities, or enable these applets in Busybox.
+	If N: you must install either the full-blown ifconfig and route
+	utilities, or enable these applets in Busybox.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV4
 	bool "Support IPv4"
 	default BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV4
 	depends on BUSYBOX_CONFIG_IFUP || BUSYBOX_CONFIG_IFDOWN
 	help
-	  If you want ifup/ifdown to talk IPv4, leave this on.
+	If you want ifup/ifdown to talk IPv4, leave this on.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV6
 	bool "Support IPv6"
 	default BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_IPV6
 	depends on (BUSYBOX_CONFIG_IFUP || BUSYBOX_CONFIG_IFDOWN) && BUSYBOX_CONFIG_FEATURE_IPV6
 	help
-	  If you need support for IPv6, turn this option on.
+	If you need support for IPv6, turn this option on.
 
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
@@ -401,68 +401,68 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_MAPPING
 	default BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_MAPPING
 	depends on BUSYBOX_CONFIG_IFUP || BUSYBOX_CONFIG_IFDOWN
 	help
-	  This enables support for the "mapping" stanza, unless you have
-	  a weird network setup you don't need it.
+	This enables support for the "mapping" stanza, unless you have
+	a weird network setup you don't need it.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP
 	bool "Support external DHCP clients"
 	default BUSYBOX_DEFAULT_FEATURE_IFUPDOWN_EXTERNAL_DHCP
 	depends on BUSYBOX_CONFIG_IFUP || BUSYBOX_CONFIG_IFDOWN
 	help
-	  This enables support for the external dhcp clients. Clients are
-	  tried in the following order: dhcpcd, dhclient, pump and udhcpc.
-	  Otherwise, if udhcpc applet is enabled, it is used.
-	  Otherwise, ifup/ifdown will have no support for DHCP.
+	This enables support for the external dhcp clients. Clients are
+	tried in the following order: dhcpcd, dhclient, pump and udhcpc.
+	Otherwise, if udhcpc applet is enabled, it is used.
+	Otherwise, ifup/ifdown will have no support for DHCP.
 config BUSYBOX_CONFIG_INETD
 	bool "inetd"
 	default BUSYBOX_DEFAULT_INETD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  Internet superserver daemon
+	Internet superserver daemon
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
 	bool "Support echo service"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	  Echo received data internal inetd service
+	Echo received data internal inetd service
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
 	bool "Support discard service"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	  Internet /dev/null internal inetd service
+	Internet /dev/null internal inetd service
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
 	bool "Support time service"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_TIME
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	  Return 32 bit time since 1900 internal inetd service
+	Return 32 bit time since 1900 internal inetd service
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
 	bool "Support daytime service"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	  Return human-readable time internal inetd service
+	Return human-readable time internal inetd service
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 	bool "Support chargen service"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	  Familiar character generator internal inetd service
+	Familiar character generator internal inetd service
 
 config BUSYBOX_CONFIG_IP
 	bool "ip"
 	default BUSYBOX_DEFAULT_IP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The "ip" applet is a TCP/IP interface configuration and routing
-	  utility. You generally don't need "ip" to use busybox with
-	  TCP/IP.
+	The "ip" applet is a TCP/IP interface configuration and routing
+	utility. You generally don't need "ip" to use busybox with
+	TCP/IP.
 
 config BUSYBOX_CONFIG_IPADDR
 	bool "ipaddr"
@@ -470,7 +470,7 @@ config BUSYBOX_CONFIG_IPADDR
 	select BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Support short form of ip addr: ipaddr
+	Support short form of ip addr: ipaddr
 
 config BUSYBOX_CONFIG_IPLINK
 	bool "iplink"
@@ -478,7 +478,7 @@ config BUSYBOX_CONFIG_IPLINK
 	select BUSYBOX_CONFIG_FEATURE_IP_LINK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Support short form of ip link: iplink
+	Support short form of ip link: iplink
 
 config BUSYBOX_CONFIG_IPROUTE
 	bool "iproute"
@@ -486,7 +486,7 @@ config BUSYBOX_CONFIG_IPROUTE
 	select BUSYBOX_CONFIG_FEATURE_IP_ROUTE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Support short form of ip route: iproute
+	Support short form of ip route: iproute
 
 config BUSYBOX_CONFIG_IPTUNNEL
 	bool "iptunnel"
@@ -494,7 +494,7 @@ config BUSYBOX_CONFIG_IPTUNNEL
 	select BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Support short form of ip tunnel: iptunnel
+	Support short form of ip tunnel: iptunnel
 
 config BUSYBOX_CONFIG_IPRULE
 	bool "iprule"
@@ -502,7 +502,7 @@ config BUSYBOX_CONFIG_IPRULE
 	select BUSYBOX_CONFIG_FEATURE_IP_RULE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Support short form of ip rule: iprule
+	Support short form of ip rule: iprule
 
 config BUSYBOX_CONFIG_IPNEIGH
 	bool "ipneigh"
@@ -510,72 +510,72 @@ config BUSYBOX_CONFIG_IPNEIGH
 	select BUSYBOX_CONFIG_FEATURE_IP_NEIGH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Support short form of ip neigh: ipneigh
+	Support short form of ip neigh: ipneigh
 
 config BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
 	bool "ip address"
 	default BUSYBOX_DEFAULT_FEATURE_IP_ADDRESS
 	depends on BUSYBOX_CONFIG_IP || BUSYBOX_CONFIG_IPADDR
 	help
-	  Address manipulation support for the "ip" applet.
+	Address manipulation support for the "ip" applet.
 
 config BUSYBOX_CONFIG_FEATURE_IP_LINK
 	bool "ip link"
 	default BUSYBOX_DEFAULT_FEATURE_IP_LINK
 	depends on BUSYBOX_CONFIG_IP || BUSYBOX_CONFIG_IPLINK
 	help
-	  Configure network devices with "ip".
+	Configure network devices with "ip".
 
 config BUSYBOX_CONFIG_FEATURE_IP_ROUTE
 	bool "ip route"
 	default BUSYBOX_DEFAULT_FEATURE_IP_ROUTE
 	depends on BUSYBOX_CONFIG_IP || BUSYBOX_CONFIG_IPROUTE
 	help
-	  Add support for routing table management to "ip".
+	Add support for routing table management to "ip".
 
 config BUSYBOX_CONFIG_FEATURE_IP_ROUTE_DIR
 	string "ip route configuration directory"
 	default BUSYBOX_DEFAULT_FEATURE_IP_ROUTE_DIR
 	depends on BUSYBOX_CONFIG_FEATURE_IP_ROUTE
 	help
-	  Location of the "ip" applet routing configuration.
+	Location of the "ip" applet routing configuration.
 
 config BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
 	bool "ip tunnel"
 	default BUSYBOX_DEFAULT_FEATURE_IP_TUNNEL
 	depends on BUSYBOX_CONFIG_IP || BUSYBOX_CONFIG_IPTUNNEL
 	help
-	  Add support for tunneling commands to "ip".
+	Add support for tunneling commands to "ip".
 
 config BUSYBOX_CONFIG_FEATURE_IP_RULE
 	bool "ip rule"
 	default BUSYBOX_DEFAULT_FEATURE_IP_RULE
 	depends on BUSYBOX_CONFIG_IP || BUSYBOX_CONFIG_IPRULE
 	help
-	  Add support for rule commands to "ip".
+	Add support for rule commands to "ip".
 
 config BUSYBOX_CONFIG_FEATURE_IP_NEIGH
 	bool "ip neighbor"
 	default BUSYBOX_DEFAULT_FEATURE_IP_NEIGH
 	depends on BUSYBOX_CONFIG_IP || BUSYBOX_CONFIG_IPNEIGH
 	help
-	  Add support for neighbor commands to "ip".
+	Add support for neighbor commands to "ip".
 
 config BUSYBOX_CONFIG_FEATURE_IP_RARE_PROTOCOLS
 	bool "Support displaying rarely used link types"
 	default BUSYBOX_DEFAULT_FEATURE_IP_RARE_PROTOCOLS
 	depends on BUSYBOX_CONFIG_IP || BUSYBOX_CONFIG_IPADDR || BUSYBOX_CONFIG_IPLINK || BUSYBOX_CONFIG_IPROUTE || BUSYBOX_CONFIG_IPTUNNEL || BUSYBOX_CONFIG_IPRULE || BUSYBOX_CONFIG_IPNEIGH
 	help
-	  If you are not going to use links of type "frad", "econet",
-	  "bif" etc, you probably don't need to enable this.
-	  Ethernet, wireless, infrared, ppp/slip, ip tunnelling
-	  link types are supported without this option selected.
+	If you are not going to use links of type "frad", "econet",
+	"bif" etc, you probably don't need to enable this.
+	Ethernet, wireless, infrared, ppp/slip, ip tunnelling
+	link types are supported without this option selected.
 config BUSYBOX_CONFIG_IPCALC
 	bool "ipcalc"
 	default BUSYBOX_DEFAULT_IPCALC
 	help
-	  ipcalc takes an IP address and netmask and calculates the
-	  resulting broadcast, network, and host range.
+	ipcalc takes an IP address and netmask and calculates the
+	resulting broadcast, network, and host range.
 
 config BUSYBOX_CONFIG_FEATURE_IPCALC_LONG_OPTIONS
 	bool "Enable long options"
@@ -587,39 +587,39 @@ config BUSYBOX_CONFIG_FEATURE_IPCALC_FANCY
 	default BUSYBOX_DEFAULT_FEATURE_IPCALC_FANCY
 	depends on BUSYBOX_CONFIG_IPCALC
 	help
-	  Adds the options hostname, prefix and silent to the output of
-	  "ipcalc".
+	Adds the options hostname, prefix and silent to the output of
+	"ipcalc".
 config BUSYBOX_CONFIG_FAKEIDENTD
 	bool "fakeidentd"
 	default BUSYBOX_DEFAULT_FAKEIDENTD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  fakeidentd listens on the ident port and returns a predefined
-	  fake value on any query.
+	fakeidentd listens on the ident port and returns a predefined
+	fake value on any query.
 config BUSYBOX_CONFIG_NAMEIF
 	bool "nameif"
 	default BUSYBOX_DEFAULT_NAMEIF
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  nameif is used to rename network interface by its MAC address.
-	  Renamed interfaces MUST be in the down state.
-	  It is possible to use a file (default: /etc/mactab)
-	  with list of new interface names and MACs.
-	  Maximum interface name length: IFNAMSIZ = 16
-	  File fields are separated by space or tab.
-	  File format:
-	  # Comment
-	  new_interface_name    XX:XX:XX:XX:XX:XX
+	nameif is used to rename network interface by its MAC address.
+	Renamed interfaces MUST be in the down state.
+	It is possible to use a file (default: /etc/mactab)
+	with list of new interface names and MACs.
+	Maximum interface name length: IFNAMSIZ = 16
+	File fields are separated by space or tab.
+	File format:
+	# Comment
+	new_interface_name    XX:XX:XX:XX:XX:XX
 
 config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED
 	bool "Extended nameif"
 	default BUSYBOX_DEFAULT_FEATURE_NAMEIF_EXTENDED
 	depends on BUSYBOX_CONFIG_NAMEIF
 	help
-	  This extends the nameif syntax to support the bus_info, driver,
-	  phyaddr selectors. The syntax is compatible to the normal nameif.
-	  File format:
+	This extends the nameif syntax to support the bus_info, driver,
+	phyaddr selectors. The syntax is compatible to the normal nameif.
+	File format:
 	    new_interface_name  driver=asix bus=usb-0000:00:08.2-3
 	    new_interface_name  bus=usb-0000:00:08.2-3 00:80:C8:38:91:B5
 	    new_interface_name  phy_address=2 00:80:C8:38:91:B5
@@ -629,77 +629,77 @@ config BUSYBOX_CONFIG_NBDCLIENT
 	bool "nbd-client"
 	default BUSYBOX_DEFAULT_NBDCLIENT
 	help
-	  Network block device client
+	Network block device client
 config BUSYBOX_CONFIG_NC
 	bool "nc"
 	default BUSYBOX_DEFAULT_NC
 	help
-	  A simple Unix utility which reads and writes data across network
-	  connections.
+	A simple Unix utility which reads and writes data across network
+	connections.
 
 config BUSYBOX_CONFIG_NC_SERVER
 	bool "Netcat server options (-l)"
 	default BUSYBOX_DEFAULT_NC_SERVER
 	depends on BUSYBOX_CONFIG_NC
 	help
-	  Allow netcat to act as a server.
+	Allow netcat to act as a server.
 
 config BUSYBOX_CONFIG_NC_EXTRA
 	bool "Netcat extensions (-eiw and -f FILE)"
 	default BUSYBOX_DEFAULT_NC_EXTRA
 	depends on BUSYBOX_CONFIG_NC
 	help
-	  Add -e (support for executing the rest of the command line after
-	  making or receiving a successful connection), -i (delay interval for
-	  lines sent), -w (timeout for initial connection).
+	Add -e (support for executing the rest of the command line after
+	making or receiving a successful connection), -i (delay interval for
+	lines sent), -w (timeout for initial connection).
 
 config BUSYBOX_CONFIG_NC_110_COMPAT
 	bool "Netcat 1.10 compatibility (+2.5k)"
 	default BUSYBOX_DEFAULT_NC_110_COMPAT  # off specially for Rob
 	depends on BUSYBOX_CONFIG_NC
 	help
-	  This option makes nc closely follow original nc-1.10.
-	  The code is about 2.5k bigger. It enables
-	  -s ADDR, -n, -u, -v, -o FILE, -z options, but loses
-	  busybox-specific extensions: -f FILE.
+	This option makes nc closely follow original nc-1.10.
+	The code is about 2.5k bigger. It enables
+	-s ADDR, -n, -u, -v, -o FILE, -z options, but loses
+	busybox-specific extensions: -f FILE.
 config BUSYBOX_CONFIG_NETMSG
 	bool "netmsg"
 	default BUSYBOX_DEFAULT_NETMSG
 	help
-	  simple program for sending udp broadcast messages
+	simple program for sending udp broadcast messages
 config BUSYBOX_CONFIG_NETSTAT
 	bool "netstat"
 	default BUSYBOX_DEFAULT_NETSTAT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  netstat prints information about the Linux networking subsystem.
+	netstat prints information about the Linux networking subsystem.
 
 config BUSYBOX_CONFIG_FEATURE_NETSTAT_WIDE
 	bool "Enable wide output"
 	default BUSYBOX_DEFAULT_FEATURE_NETSTAT_WIDE
 	depends on BUSYBOX_CONFIG_NETSTAT
 	help
-	  Add support for wide columns. Useful when displaying IPv6 addresses
-	  (-W option).
+	Add support for wide columns. Useful when displaying IPv6 addresses
+	(-W option).
 
 config BUSYBOX_CONFIG_FEATURE_NETSTAT_PRG
 	bool "Enable PID/Program name output"
 	default BUSYBOX_DEFAULT_FEATURE_NETSTAT_PRG
 	depends on BUSYBOX_CONFIG_NETSTAT
 	help
-	  Add support for -p flag to print out PID and program name.
-	  +700 bytes of code.
+	Add support for -p flag to print out PID and program name.
+	+700 bytes of code.
 config BUSYBOX_CONFIG_NSLOOKUP
 	bool "nslookup"
 	default BUSYBOX_DEFAULT_NSLOOKUP
 	help
-	  nslookup is a tool to query Internet name servers.
+	nslookup is a tool to query Internet name servers.
 config BUSYBOX_CONFIG_NSLOOKUP_OPENWRT
 	bool "nslookup_lede"
 	depends on !BUSYBOX_CONFIG_NSLOOKUP
 	default BUSYBOX_DEFAULT_NSLOOKUP_OPENWRT
 	help
-	  nslookup is a tool to query Internet name servers (OpenWrt flavor).
+	nslookup is a tool to query Internet name servers (OpenWrt flavor).
 
 config BUSYBOX_CONFIG_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS
        bool "Enable long options"
@@ -712,107 +712,107 @@ config BUSYBOX_CONFIG_NTPD
 	default BUSYBOX_DEFAULT_NTPD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The NTP client/server daemon.
+	The NTP client/server daemon.
 
 config BUSYBOX_CONFIG_FEATURE_NTPD_SERVER
 	bool "Make ntpd usable as a NTP server"
 	default BUSYBOX_DEFAULT_FEATURE_NTPD_SERVER
 	depends on BUSYBOX_CONFIG_NTPD
 	help
-	  Make ntpd usable as a NTP server. If you disable this option
-	  ntpd will be usable only as a NTP client.
+	Make ntpd usable as a NTP server. If you disable this option
+	ntpd will be usable only as a NTP client.
 
 config BUSYBOX_CONFIG_FEATURE_NTPD_CONF
 	bool "Make ntpd understand /etc/ntp.conf"
 	default BUSYBOX_DEFAULT_FEATURE_NTPD_CONF
 	depends on BUSYBOX_CONFIG_NTPD
 	help
-	  Make ntpd look in /etc/ntp.conf for peers. Only "server address"
-	  is supported.
+	Make ntpd look in /etc/ntp.conf for peers. Only "server address"
+	is supported.
 config BUSYBOX_CONFIG_PING
 	bool "ping"
 	default BUSYBOX_DEFAULT_PING
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
-	  elicit an ICMP ECHO_RESPONSE from a host or gateway.
+	ping uses the ICMP protocol's mandatory ECHO_REQUEST datagram to
+	elicit an ICMP ECHO_RESPONSE from a host or gateway.
 
 config BUSYBOX_CONFIG_PING6
 	bool "ping6"
 	default BUSYBOX_DEFAULT_PING6
 	depends on BUSYBOX_CONFIG_FEATURE_IPV6
 	help
-	  This will give you a ping that can talk IPv6.
+	This will give you a ping that can talk IPv6.
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_PING
 	bool "Enable fancy ping output"
 	default BUSYBOX_DEFAULT_FEATURE_FANCY_PING
 	depends on BUSYBOX_CONFIG_PING || BUSYBOX_CONFIG_PING6
 	help
-	  Make the output from the ping applet include statistics, and at the
-	  same time provide full support for ICMP packets.
+	Make the output from the ping applet include statistics, and at the
+	same time provide full support for ICMP packets.
 config BUSYBOX_CONFIG_PSCAN
 	bool "pscan"
 	default BUSYBOX_DEFAULT_PSCAN
 	help
-	  Simple network port scanner.
+	Simple network port scanner.
 config BUSYBOX_CONFIG_ROUTE
 	bool "route"
 	default BUSYBOX_DEFAULT_ROUTE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Route displays or manipulates the kernel's IP routing tables.
+	Route displays or manipulates the kernel's IP routing tables.
 config BUSYBOX_CONFIG_SLATTACH
 	bool "slattach"
 	default BUSYBOX_DEFAULT_SLATTACH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  slattach is a small utility to attach network interfaces to serial
-	  lines.
+	slattach is a small utility to attach network interfaces to serial
+	lines.
 config BUSYBOX_CONFIG_SSL_CLIENT
 	bool "ssl_client"
 	default BUSYBOX_DEFAULT_SSL_CLIENT
 	select BUSYBOX_CONFIG_TLS
 	help
-	  This tool pipes data to/from a socket, TLS-encrypting it.
+	This tool pipes data to/from a socket, TLS-encrypting it.
 config BUSYBOX_CONFIG_TCPSVD
 	bool "tcpsvd"
 	default BUSYBOX_DEFAULT_TCPSVD
 	help
-	  tcpsvd listens on a TCP port and runs a program for each new
-	  connection.
+	tcpsvd listens on a TCP port and runs a program for each new
+	connection.
 
 config BUSYBOX_CONFIG_UDPSVD
 	bool "udpsvd"
 	default BUSYBOX_DEFAULT_UDPSVD
 	help
-	  udpsvd listens on an UDP port and runs a program for each new
-	  connection.
+	udpsvd listens on an UDP port and runs a program for each new
+	connection.
 config BUSYBOX_CONFIG_TELNET
 	bool "telnet"
 	default BUSYBOX_DEFAULT_TELNET
 	help
-	  Telnet is an interface to the TELNET protocol, but is also commonly
-	  used to test other simple protocols.
+	Telnet is an interface to the TELNET protocol, but is also commonly
+	used to test other simple protocols.
 
 config BUSYBOX_CONFIG_FEATURE_TELNET_TTYPE
 	bool "Pass TERM type to remote host"
 	default BUSYBOX_DEFAULT_FEATURE_TELNET_TTYPE
 	depends on BUSYBOX_CONFIG_TELNET
 	help
-	  Setting this option will forward the TERM environment variable to the
-	  remote host you are connecting to. This is useful to make sure that
-	  things like ANSI colors and other control sequences behave.
+	Setting this option will forward the TERM environment variable to the
+	remote host you are connecting to. This is useful to make sure that
+	things like ANSI colors and other control sequences behave.
 
 config BUSYBOX_CONFIG_FEATURE_TELNET_AUTOLOGIN
 	bool "Pass USER type to remote host"
 	default BUSYBOX_DEFAULT_FEATURE_TELNET_AUTOLOGIN
 	depends on BUSYBOX_CONFIG_TELNET
 	help
-	  Setting this option will forward the USER environment variable to the
-	  remote host you are connecting to. This is useful when you need to
-	  log into a machine without telling the username (autologin). This
-	  option enables `-a' and `-l USER' arguments.
+	Setting this option will forward the USER environment variable to the
+	remote host you are connecting to. This is useful when you need to
+	log into a machine without telling the username (autologin). This
+	option enables `-a' and `-l USER' arguments.
 
 config BUSYBOX_CONFIG_FEATURE_TELNET_WIDTH
 	bool "Enable window size autodetection"
@@ -823,86 +823,86 @@ config BUSYBOX_CONFIG_TELNETD
 	default BUSYBOX_DEFAULT_TELNETD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  A daemon for the TELNET protocol, allowing you to log onto the host
-	  running the daemon. Please keep in mind that the TELNET protocol
-	  sends passwords in plain text. If you can't afford the space for an
-	  SSH daemon and you trust your network, you may say 'y' here. As a
-	  more secure alternative, you should seriously consider installing the
-	  very small Dropbear SSH daemon instead:
+	A daemon for the TELNET protocol, allowing you to log onto the host
+	running the daemon. Please keep in mind that the TELNET protocol
+	sends passwords in plain text. If you can't afford the space for an
+	SSH daemon and you trust your network, you may say 'y' here. As a
+	more secure alternative, you should seriously consider installing the
+	very small Dropbear SSH daemon instead:
 		http://matt.ucc.asn.au/dropbear/dropbear.html
 
-	  Note that for busybox telnetd to work you need several things:
-	  First of all, your kernel needs:
+	Note that for busybox telnetd to work you need several things:
+	First of all, your kernel needs:
 		  CONFIG_UNIX98_PTYS=y
 
-	  Next, you need a /dev/pts directory on your root filesystem:
+	Next, you need a /dev/pts directory on your root filesystem:
 
 		  $ ls -ld /dev/pts
 		  drwxr-xr-x  2 root root 0 Sep 23 13:21 /dev/pts/
 
-	  Next you need the pseudo terminal master multiplexer /dev/ptmx:
+	Next you need the pseudo terminal master multiplexer /dev/ptmx:
 
 		  $ ls -la /dev/ptmx
 		  crw-rw-rw-  1 root tty 5, 2 Sep 23 13:55 /dev/ptmx
 
-	  Any /dev/ttyp[0-9]* files you may have can be removed.
-	  Next, you need to mount the devpts filesystem on /dev/pts using:
+	Any /dev/ttyp[0-9]* files you may have can be removed.
+	Next, you need to mount the devpts filesystem on /dev/pts using:
 
 		  mount -t devpts devpts /dev/pts
 
-	  You need to be sure that busybox has LOGIN and
-	  FEATURE_SUID enabled. And finally, you should make
-	  certain that Busybox has been installed setuid root:
+	You need to be sure that busybox has LOGIN and
+	FEATURE_SUID enabled. And finally, you should make
+	certain that Busybox has been installed setuid root:
 
 		chown root.root /bin/busybox
 		chmod 4755 /bin/busybox
 
-	  with all that done, telnetd _should_ work....
+	with all that done, telnetd _should_ work....
 
 config BUSYBOX_CONFIG_FEATURE_TELNETD_STANDALONE
 	bool "Support standalone telnetd (not inetd only)"
 	default BUSYBOX_DEFAULT_FEATURE_TELNETD_STANDALONE
 	depends on BUSYBOX_CONFIG_TELNETD
 	help
-	  Selecting this will make telnetd able to run standalone.
+	Selecting this will make telnetd able to run standalone.
 
 config BUSYBOX_CONFIG_FEATURE_TELNETD_INETD_WAIT
 	bool "Support -w SEC option (inetd wait mode)"
 	default BUSYBOX_DEFAULT_FEATURE_TELNETD_INETD_WAIT
 	depends on BUSYBOX_CONFIG_FEATURE_TELNETD_STANDALONE
 	help
-	  This option allows you to run telnetd in "inet wait" mode.
-	  Example inetd.conf line (note "wait", not usual "nowait"):
+	This option allows you to run telnetd in "inet wait" mode.
+	Example inetd.conf line (note "wait", not usual "nowait"):
 
-	  telnet stream tcp wait root /bin/telnetd telnetd -w10
+	telnet stream tcp wait root /bin/telnetd telnetd -w10
 
-	  In this example, inetd passes _listening_ socket_ as fd 0
-	  to telnetd when connection appears.
-	  telnetd will wait for connections until all existing
-	  connections are closed, and no new connections
-	  appear during 10 seconds. Then it exits, and inetd continues
-	  to listen for new connections.
+	In this example, inetd passes _listening_ socket_ as fd 0
+	to telnetd when connection appears.
+	telnetd will wait for connections until all existing
+	connections are closed, and no new connections
+	appear during 10 seconds. Then it exits, and inetd continues
+	to listen for new connections.
 
-	  This option is rarely used. "tcp nowait" is much more usual
-	  way of running tcp services, including telnetd.
-	  You most probably want to say N here.
+	This option is rarely used. "tcp nowait" is much more usual
+	way of running tcp services, including telnetd.
+	You most probably want to say N here.
 config BUSYBOX_CONFIG_TFTP
 	bool "tftp"
 	default BUSYBOX_DEFAULT_TFTP
 	help
-	  This enables the Trivial File Transfer Protocol client program. TFTP
-	  is usually used for simple, small transfers such as a root image
-	  for a network-enabled bootloader.
+	This enables the Trivial File Transfer Protocol client program. TFTP
+	is usually used for simple, small transfers such as a root image
+	for a network-enabled bootloader.
 
 config BUSYBOX_CONFIG_TFTPD
 	bool "tftpd"
 	default BUSYBOX_DEFAULT_TFTPD
 	help
-	  This enables the Trivial File Transfer Protocol server program.
-	  It expects that stdin is a datagram socket and a packet
-	  is already pending on it. It will exit after one transfer.
-	  In other words: it should be run from inetd in nowait mode,
-	  or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR"
+	This enables the Trivial File Transfer Protocol server program.
+	It expects that stdin is a datagram socket and a packet
+	is already pending on it. It will exit after one transfer.
+	In other words: it should be run from inetd in nowait mode,
+	or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR"
 
 comment "Common options for tftp/tftpd"
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
@@ -912,29 +912,29 @@ config BUSYBOX_CONFIG_FEATURE_TFTP_GET
 	default BUSYBOX_DEFAULT_FEATURE_TFTP_GET
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
 	help
-	  Add support for the GET command within the TFTP client. This allows
-	  a client to retrieve a file from a TFTP server.
-	  Also enable upload support in tftpd, if tftpd is selected.
+	Add support for the GET command within the TFTP client. This allows
+	a client to retrieve a file from a TFTP server.
+	Also enable upload support in tftpd, if tftpd is selected.
 
-	  Note: this option does _not_ make tftpd capable of download
-	  (the usual operation people need from it)!
+	Note: this option does _not_ make tftpd capable of download
+	(the usual operation people need from it)!
 
 config BUSYBOX_CONFIG_FEATURE_TFTP_PUT
 	bool "Enable 'tftp put' and/or tftpd download code"
 	default BUSYBOX_DEFAULT_FEATURE_TFTP_PUT
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
 	help
-	  Add support for the PUT command within the TFTP client. This allows
-	  a client to transfer a file to a TFTP server.
-	  Also enable download support in tftpd, if tftpd is selected.
+	Add support for the PUT command within the TFTP client. This allows
+	a client to transfer a file to a TFTP server.
+	Also enable download support in tftpd, if tftpd is selected.
 
 config BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
 	bool "Enable 'blksize' and 'tsize' protocol options"
 	default BUSYBOX_DEFAULT_FEATURE_TFTP_BLOCKSIZE
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
 	help
-	  Allow tftp to specify block size, and tftpd to understand
-	  "blksize" and "tsize" options.
+	Allow tftp to specify block size, and tftpd to understand
+	"blksize" and "tsize" options.
 
 config BUSYBOX_CONFIG_FEATURE_TFTP_PROGRESS_BAR
 	bool "Enable progress bar"
@@ -946,8 +946,8 @@ config BUSYBOX_CONFIG_TFTP_DEBUG
 	default BUSYBOX_DEFAULT_TFTP_DEBUG
 	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
 	help
-	  Make tftp[d] print debugging messages on stderr.
-	  This is useful if you are diagnosing a bug in tftp[d].
+	Make tftp[d] print debugging messages on stderr.
+	This is useful if you are diagnosing a bug in tftp[d].
 config BUSYBOX_CONFIG_TLS
 	bool #No description makes it a hidden option
 	default BUSYBOX_DEFAULT_TLS
@@ -956,22 +956,22 @@ config BUSYBOX_CONFIG_TRACEROUTE
 	default BUSYBOX_DEFAULT_TRACEROUTE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Utility to trace the route of IP packets.
+	Utility to trace the route of IP packets.
 
 config BUSYBOX_CONFIG_TRACEROUTE6
 	bool "traceroute6"
 	default BUSYBOX_DEFAULT_TRACEROUTE6
 	depends on BUSYBOX_CONFIG_FEATURE_IPV6
 	help
-	  Utility to trace the route of IPv6 packets.
+	Utility to trace the route of IPv6 packets.
 
 config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_VERBOSE
 	bool "Enable verbose output"
 	default BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_VERBOSE
 	depends on BUSYBOX_CONFIG_TRACEROUTE || BUSYBOX_CONFIG_TRACEROUTE6
 	help
-	  Add some verbosity to traceroute. This includes among other things
-	  hostnames and ICMP response types.
+	Add some verbosity to traceroute. This includes among other things
+	hostnames and ICMP response types.
 
 config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP
 	bool "Enable -I option (use ICMP instead of UDP)"
@@ -982,27 +982,27 @@ config BUSYBOX_CONFIG_TUNCTL
 	default BUSYBOX_DEFAULT_TUNCTL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  tunctl creates or deletes tun devices.
+	tunctl creates or deletes tun devices.
 
 config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG
 	bool "Support owner:group assignment"
 	default BUSYBOX_DEFAULT_FEATURE_TUNCTL_UG
 	depends on BUSYBOX_CONFIG_TUNCTL
 	help
-	  Allow to specify owner and group of newly created interface.
-	  340 bytes of pure bloat. Say no here.
+	Allow to specify owner and group of newly created interface.
+	340 bytes of pure bloat. Say no here.
 config BUSYBOX_CONFIG_VCONFIG
 	bool "vconfig"
 	default BUSYBOX_DEFAULT_VCONFIG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Creates, removes, and configures VLAN interfaces
+	Creates, removes, and configures VLAN interfaces
 config BUSYBOX_CONFIG_WGET
 	bool "wget"
 	default BUSYBOX_DEFAULT_WGET
 	help
-	  wget is a utility for non-interactive download of files from HTTP
-	  and FTP servers.
+	wget is a utility for non-interactive download of files from HTTP
+	and FTP servers.
 
 config BUSYBOX_CONFIG_FEATURE_WGET_LONG_OPTIONS
 	bool "Enable long options"
@@ -1019,21 +1019,21 @@ config BUSYBOX_CONFIG_FEATURE_WGET_AUTHENTICATION
 	default BUSYBOX_DEFAULT_FEATURE_WGET_AUTHENTICATION
 	depends on BUSYBOX_CONFIG_WGET
 	help
-	  Support authenticated HTTP transfers.
+	Support authenticated HTTP transfers.
 
 config BUSYBOX_CONFIG_FEATURE_WGET_TIMEOUT
 	bool "Enable timeout option -T SEC"
 	default BUSYBOX_DEFAULT_FEATURE_WGET_TIMEOUT
 	depends on BUSYBOX_CONFIG_WGET
 	help
-	  Supports network read and connect timeouts for wget,
-	  so that wget will give up and timeout, through the -T
-	  command line option.
+	Supports network read and connect timeouts for wget,
+	so that wget will give up and timeout, through the -T
+	command line option.
 
-	  Currently only connect and network data read timeout are
-	  supported (i.e., timeout is not applied to the DNS query). When
-	  FEATURE_WGET_LONG_OPTIONS is also enabled, the --timeout option
-	  will work in addition to -T.
+	Currently only connect and network data read timeout are
+	supported (i.e., timeout is not applied to the DNS query). When
+	FEATURE_WGET_LONG_OPTIONS is also enabled, the --timeout option
+	will work in addition to -T.
 
 config BUSYBOX_CONFIG_FEATURE_WGET_HTTPS
 	bool "Support HTTPS using internal TLS code"
@@ -1041,85 +1041,85 @@ config BUSYBOX_CONFIG_FEATURE_WGET_HTTPS
 	depends on BUSYBOX_CONFIG_WGET
 	select BUSYBOX_CONFIG_TLS
 	help
-	  wget will use internal TLS code to connect to https:// URLs.
-	  Note:
-	  On NOMMU machines, ssl_helper applet should be available
-	  in the $PATH for this to work. Make sure to select that applet.
-
-	  Note: currently, TLS code only makes TLS I/O work, it
-	  does *not* check that the peer is who it claims to be, etc.
-	  IOW: it uses peer-supplied public keys to establish encryption
-	  and signing keys, then encrypts and signs outgoing data and
-	  decrypts incoming data.
-	  It does not check signature hashes on the incoming data:
-	  this means that attackers manipulating TCP packets can
-	  send altered data and we unknowingly receive garbage.
-	  (This check might be relatively easy to add).
-	  It does not check public key's certificate:
-	  this means that the peer may be an attacker impersonating
-	  the server we think we are talking to.
-
-	  If you think this is unacceptable, consider this. As more and more
-	  servers switch to HTTPS-only operation, without such "crippled"
-	  TLS code it is *impossible* to simply download a kernel source
-	  from kernel.org. Which can in real world translate into
-	  "my small automatic tooling to build cross-compilers from sources
-	  no longer works, I need to additionally keep a local copy
-	  of ~4 megabyte source tarball of a SSL library and ~2 megabyte
-	  source of wget, need to compile and built both before I can
-	  download anything. All this despite the fact that the build
-	  is done in a QEMU sandbox on a machine with absolutely nothing
-	  worth stealing, so I don't care if someone would go to a lot
-	  of trouble to intercept my HTTPS download to send me an altered
-	  kernel tarball".
-
-	  If you still think this is unacceptable, send patches.
-
-	  If you still think this is unacceptable, do not want to send
-	  patches, but do want to waste bandwidth expaining how wrong
-	  it is, you will be ignored.
+	wget will use internal TLS code to connect to https:// URLs.
+	Note:
+	On NOMMU machines, ssl_helper applet should be available
+	in the $PATH for this to work. Make sure to select that applet.
+
+	Note: currently, TLS code only makes TLS I/O work, it
+	does *not* check that the peer is who it claims to be, etc.
+	IOW: it uses peer-supplied public keys to establish encryption
+	and signing keys, then encrypts and signs outgoing data and
+	decrypts incoming data.
+	It does not check signature hashes on the incoming data:
+	this means that attackers manipulating TCP packets can
+	send altered data and we unknowingly receive garbage.
+	(This check might be relatively easy to add).
+	It does not check public key's certificate:
+	this means that the peer may be an attacker impersonating
+	the server we think we are talking to.
+
+	If you think this is unacceptable, consider this. As more and more
+	servers switch to HTTPS-only operation, without such "crippled"
+	TLS code it is *impossible* to simply download a kernel source
+	from kernel.org. Which can in real world translate into
+	"my small automatic tooling to build cross-compilers from sources
+	no longer works, I need to additionally keep a local copy
+	of ~4 megabyte source tarball of a SSL library and ~2 megabyte
+	source of wget, need to compile and built both before I can
+	download anything. All this despite the fact that the build
+	is done in a QEMU sandbox on a machine with absolutely nothing
+	worth stealing, so I don't care if someone would go to a lot
+	of trouble to intercept my HTTPS download to send me an altered
+	kernel tarball".
+
+	If you still think this is unacceptable, send patches.
+
+	If you still think this is unacceptable, do not want to send
+	patches, but do want to waste bandwidth expaining how wrong
+	it is, you will be ignored.
 
 config BUSYBOX_CONFIG_FEATURE_WGET_OPENSSL
 	bool "Try to connect to HTTPS using openssl"
 	default BUSYBOX_DEFAULT_FEATURE_WGET_OPENSSL
 	depends on BUSYBOX_CONFIG_WGET
 	help
-	  Try to use openssl to handle HTTPS.
-
-	  OpenSSL has a simple SSL client for debug purposes.
-	  If you select this option, wget will effectively run:
-	  "openssl s_client -quiet -connect hostname:443
-	  -servername hostname 2>/dev/null" and pipe its data
-	  through it. -servername is not used if hostname is numeric.
-	  Note inconvenient API: host resolution is done twice,
-	  and there is no guarantee openssl's idea of IPv6 address
-	  format is the same as ours.
-	  Another problem is that s_client prints debug information
-	  to stderr, and it needs to be suppressed. This means
-	  all error messages get suppressed too.
-	  openssl is also a big binary, often dynamically linked
-	  against ~15 libraries.
-
-	  If openssl can't be executed, internal TLS code will be used
-	  (if you enabled it); if openssl can be executed but fails later,
-	  wget can't detect this, and download will fail.
+	Try to use openssl to handle HTTPS.
+
+	OpenSSL has a simple SSL client for debug purposes.
+	If you select this option, wget will effectively run:
+	"openssl s_client -quiet -connect hostname:443
+	-servername hostname 2>/dev/null" and pipe its data
+	through it. -servername is not used if hostname is numeric.
+	Note inconvenient API: host resolution is done twice,
+	and there is no guarantee openssl's idea of IPv6 address
+	format is the same as ours.
+	Another problem is that s_client prints debug information
+	to stderr, and it needs to be suppressed. This means
+	all error messages get suppressed too.
+	openssl is also a big binary, often dynamically linked
+	against ~15 libraries.
+
+	If openssl can't be executed, internal TLS code will be used
+	(if you enabled it); if openssl can be executed but fails later,
+	wget can't detect this, and download will fail.
 config BUSYBOX_CONFIG_WHOIS
 	bool "whois"
 	default BUSYBOX_DEFAULT_WHOIS
 	help
-	  whois is a client for the whois directory service
+	whois is a client for the whois directory service
 config BUSYBOX_CONFIG_ZCIP
 	bool "zcip"
 	default BUSYBOX_DEFAULT_ZCIP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	  ZCIP provides ZeroConf IPv4 address selection, according to RFC 3927.
-	  It's a daemon that allocates and defends a dynamically assigned
-	  address on the 169.254/16 network, requiring no system administrator.
+	ZCIP provides ZeroConf IPv4 address selection, according to RFC 3927.
+	It's a daemon that allocates and defends a dynamically assigned
+	address on the 169.254/16 network, requiring no system administrator.
 
-	  See http://www.zeroconf.org for further details, and "zcip.script"
-	  in the busybox examples.
+	See http://www.zeroconf.org for further details, and "zcip.script"
+	in the busybox examples.
 
 source udhcp/Config.in
 
@@ -1128,8 +1128,8 @@ config BUSYBOX_CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS
 	default BUSYBOX_DEFAULT_IFUPDOWN_UDHCPC_CMD_OPTIONS
 	depends on BUSYBOX_CONFIG_IFUP || BUSYBOX_CONFIG_IFDOWN
 	help
-	  Command line options to pass to udhcpc from ifup.
-	  Intended to alter options not available in /etc/network/interfaces.
-	  (IE: --syslog --background etc...)
+	Command line options to pass to udhcpc from ifup.
+	Intended to alter options not available in /etc/network/interfaces.
+	(IE: --syslog --background etc...)
 
 endmenu
diff --git a/package/utils/busybox/config/networking/udhcp/Config.in b/package/utils/busybox/config/networking/udhcp/Config.in
index e7a98750d2..6066ded078 100644
--- a/package/utils/busybox/config/networking/udhcp/Config.in
+++ b/package/utils/busybox/config/networking/udhcp/Config.in
@@ -9,136 +9,136 @@ config BUSYBOX_CONFIG_UDHCPC6
 	default BUSYBOX_DEFAULT_UDHCPC6  # not yet ready
 	depends on BUSYBOX_CONFIG_FEATURE_IPV6
 	help
-	  udhcpc6 is a DHCPv6 client
+	udhcpc6 is a DHCPv6 client
 
 config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC3646
 	bool "Support RFC 3646 (DNS server and search list)"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC3646
 	depends on BUSYBOX_CONFIG_UDHCPC6
 	help
-	  List of DNS servers and domain search list can be requested with
-	  "-O dns" and "-O search". If server gives these values,
-	  they will be set in environment variables "dns" and "search".
+	List of DNS servers and domain search list can be requested with
+	"-O dns" and "-O search". If server gives these values,
+	they will be set in environment variables "dns" and "search".
 
 config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC4704
 	bool "Support RFC 4704 (Client FQDN)"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4704
 	depends on BUSYBOX_CONFIG_UDHCPC6
 	help
-	  You can request FQDN to be given by server using "-O fqdn".
+	You can request FQDN to be given by server using "-O fqdn".
 
 config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC4833
 	bool "Support RFC 4833 (Timezones)"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833
 	depends on BUSYBOX_CONFIG_UDHCPC6
 	help
-	  You can request POSIX timezone with "-O tz" and timezone name
-	  with "-O timezone".
+	You can request POSIX timezone with "-O tz" and timezone name
+	with "-O timezone".
 
 config BUSYBOX_CONFIG_UDHCPD
 	bool "udhcpd (DHCP server)"
 	default BUSYBOX_DEFAULT_UDHCPD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  udhcpd is a DHCP server geared primarily toward embedded systems,
-	  while striving to be fully functional and RFC compliant.
+	udhcpd is a DHCP server geared primarily toward embedded systems,
+	while striving to be fully functional and RFC compliant.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY
 	bool "Rewrite the lease file at every new acknowledge"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY
 	depends on BUSYBOX_CONFIG_UDHCPD
 	help
-	  If selected, udhcpd will write a new file with leases every
-	  time a new lease has been accepted, thus eliminating the need
-	  to send SIGUSR1 for the initial writing or updating. Any timed
-	  rewriting remains undisturbed.
+	If selected, udhcpd will write a new file with leases every
+	time a new lease has been accepted, thus eliminating the need
+	to send SIGUSR1 for the initial writing or updating. Any timed
+	rewriting remains undisturbed.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC
 	bool "Select IP address based on client MAC"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPD_BASE_IP_ON_MAC
 	depends on BUSYBOX_CONFIG_UDHCPD
 	help
-	  If selected, udhcpd will base its selection of IP address to offer
-	  on the client's hardware address. Otherwise udhcpd uses the next
-	  consecutive free address.
+	If selected, udhcpd will base its selection of IP address to offer
+	on the client's hardware address. Otherwise udhcpd uses the next
+	consecutive free address.
 
-	  This reduces the frequency of IP address changes for clients
-	  which let their lease expire, and makes consecutive DHCPOFFERS
-	  for the same client to (almost always) contain the same
-	  IP address.
+	This reduces the frequency of IP address changes for clients
+	which let their lease expire, and makes consecutive DHCPOFFERS
+	for the same client to (almost always) contain the same
+	IP address.
 
 config BUSYBOX_CONFIG_DHCPD_LEASES_FILE
 	string "Absolute path to lease file"
 	default BUSYBOX_DEFAULT_DHCPD_LEASES_FILE
 	depends on BUSYBOX_CONFIG_UDHCPD
 	help
-	  udhcpd stores addresses in a lease file. This is the absolute path
-	  of the file. Normally it is safe to leave it untouched.
+	udhcpd stores addresses in a lease file. This is the absolute path
+	of the file. Normally it is safe to leave it untouched.
 
 config BUSYBOX_CONFIG_DUMPLEASES
 	bool "dumpleases"
 	default BUSYBOX_DEFAULT_DUMPLEASES
 	help
-	  dumpleases displays the leases written out by the udhcpd.
-	  Lease times are stored in the file by time remaining in lease, or
-	  by the absolute time that it expires in seconds from epoch.
+	dumpleases displays the leases written out by the udhcpd.
+	Lease times are stored in the file by time remaining in lease, or
+	by the absolute time that it expires in seconds from epoch.
 
 config BUSYBOX_CONFIG_DHCPRELAY
 	bool "dhcprelay"
 	default BUSYBOX_DEFAULT_DHCPRELAY
 	help
-	  dhcprelay listens for dhcp requests on one or more interfaces
-	  and forwards these requests to a different interface or dhcp
-	  server.
+	dhcprelay listens for dhcp requests on one or more interfaces
+	and forwards these requests to a different interface or dhcp
+	server.
 
 config BUSYBOX_CONFIG_UDHCPC
 	bool "udhcpc (DHCP client)"
 	default BUSYBOX_DEFAULT_UDHCPC
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  udhcpc is a DHCP client geared primarily toward embedded systems,
-	  while striving to be fully functional and RFC compliant.
+	udhcpc is a DHCP client geared primarily toward embedded systems,
+	while striving to be fully functional and RFC compliant.
 
-	  The udhcp client negotiates a lease with the DHCP server and
-	  runs a script when a lease is obtained or lost.
+	The udhcp client negotiates a lease with the DHCP server and
+	runs a script when a lease is obtained or lost.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCPC_ARPING
 	bool "Verify that the offered address is free, using ARP ping"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPC_ARPING
 	depends on BUSYBOX_CONFIG_UDHCPC
 	help
-	  If selected, udhcpc will send ARP probes and make sure
-	  the offered address is really not in use by anyone. The client
-	  will DHCPDECLINE the offer if the address is in use,
-	  and restart the discover process.
+	If selected, udhcpc will send ARP probes and make sure
+	the offered address is really not in use by anyone. The client
+	will DHCPDECLINE the offer if the address is in use,
+	and restart the discover process.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCPC_SANITIZEOPT
 	bool "Do not pass malformed host and domain names"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPC_SANITIZEOPT
 	depends on BUSYBOX_CONFIG_UDHCPC
 	help
-	  If selected, udhcpc will check some options (such as option 12 -
-	  hostname) and if they don't look like valid hostnames
-	  (for example, if they start with dash or contain spaces),
-	  they will be replaced with string "bad" when exporting
-	  to the environment.
+	If selected, udhcpc will check some options (such as option 12 -
+	hostname) and if they don't look like valid hostnames
+	(for example, if they start with dash or contain spaces),
+	they will be replaced with string "bad" when exporting
+	to the environment.
 
 config BUSYBOX_CONFIG_UDHCPC_DEFAULT_SCRIPT
 	string "Absolute path to config script"
 	default BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT
 	depends on BUSYBOX_CONFIG_UDHCPC
 	help
-	  This script is called after udhcpc receives an answer. See
-	  examples/udhcp for a working example. Normally it is safe
-	  to leave this untouched.
+	This script is called after udhcpc receives an answer. See
+	examples/udhcp for a working example. Normally it is safe
+	to leave this untouched.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCP_PORT
 	bool "Enable '-P port' option for udhcpd and udhcpc"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT
 	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
 	help
-	  At the cost of ~300 bytes, enables -P port option.
-	  This feature is typically not needed.
+	At the cost of ~300 bytes, enables -P port option.
+	This feature is typically not needed.
 
 config BUSYBOX_CONFIG_UDHCP_DEBUG
 	int "Maximum verbosity level for udhcp applets (0..9)"
@@ -146,28 +146,28 @@ config BUSYBOX_CONFIG_UDHCP_DEBUG
 	range 0 9
 	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_DHCPRELAY
 	help
-	  Verbosity can be increased with multiple -v options.
-	  This option controls how high it can be cranked up.
+	Verbosity can be increased with multiple -v options.
+	This option controls how high it can be cranked up.
 
-	  Bigger values result in bigger code. Levels above 1
-	  are very verbose and useful for debugging only.
+	Bigger values result in bigger code. Levels above 1
+	are very verbose and useful for debugging only.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397
 	bool "Support RFC3397 domain search (experimental)"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397
 	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
 	help
-	  If selected, both client and server will support passing of domain
-	  search lists via option 119, specified in RFC 3397,
-	  and SIP servers option 120, specified in RFC 3361.
+	If selected, both client and server will support passing of domain
+	search lists via option 119, specified in RFC 3397,
+	and SIP servers option 120, specified in RFC 3361.
 
 config BUSYBOX_CONFIG_FEATURE_UDHCP_8021Q
 	bool "Support 802.1Q VLAN parameters"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q
 	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
 	help
-	  If selected, both client and server will support passing of VLAN
-	  ID and priority via options 132 and 133 as per 802.1Q.
+	If selected, both client and server will support passing of VLAN
+	ID and priority via options 132 and 133 as per 802.1Q.
 
 config BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS
 	int "DHCP options slack buffer size"
@@ -175,19 +175,19 @@ config BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS
 	range 0 924
 	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
 	help
-	  Some buggy DHCP servers send DHCP offer packets with option
-	  field larger than we expect (which might also be considered a
-	  buffer overflow attempt). These packets are normally discarded.
-	  If circumstances beyond your control force you to support such
-	  servers, this may help. The upper limit (924) makes dhcpc accept
-	  even 1500 byte packets (maximum-sized ethernet packets).
+	Some buggy DHCP servers send DHCP offer packets with option
+	field larger than we expect (which might also be considered a
+	buffer overflow attempt). These packets are normally discarded.
+	If circumstances beyond your control force you to support such
+	servers, this may help. The upper limit (924) makes dhcpc accept
+	even 1500 byte packets (maximum-sized ethernet packets).
 
-	  This option does not make dhcp[cd] emit non-standard
-	  sized packets.
+	This option does not make dhcp[cd] emit non-standard
+	sized packets.
 
-	  Known buggy DHCP servers:
-	  3Com OfficeConnect Remote 812 ADSL Router:
+	Known buggy DHCP servers:
+	3Com OfficeConnect Remote 812 ADSL Router:
 	    seems to confuse maximum allowed UDP packet size with
 	    maximum size of entire IP packet, and sends packets which are
 	    28 bytes too large.
-	  Seednet (ISP) VDSL: sends packets 2 bytes too large.
+	Seednet (ISP) VDSL: sends packets 2 bytes too large.
diff --git a/package/utils/busybox/config/printutils/Config.in b/package/utils/busybox/config/printutils/Config.in
index 3a2baa311d..2c608af989 100644
--- a/package/utils/busybox/config/printutils/Config.in
+++ b/package/utils/busybox/config/printutils/Config.in
@@ -10,17 +10,17 @@ config BUSYBOX_CONFIG_LPD
 	bool "lpd"
 	default BUSYBOX_DEFAULT_LPD
 	help
-	  lpd is a print spooling daemon.
+	lpd is a print spooling daemon.
 config BUSYBOX_CONFIG_LPR
 	bool "lpr"
 	default BUSYBOX_DEFAULT_LPR
 	help
-	  lpr sends files (or standard input) to a print spooling daemon.
+	lpr sends files (or standard input) to a print spooling daemon.
 
 config BUSYBOX_CONFIG_LPQ
 	bool "lpq"
 	default BUSYBOX_DEFAULT_LPQ
 	help
-	  lpq is a print spool queue examination and manipulation program.
+	lpq is a print spool queue examination and manipulation program.
 
 endmenu
diff --git a/package/utils/busybox/config/procps/Config.in b/package/utils/busybox/config/procps/Config.in
index acd4ed882b..227e2a0f5e 100644
--- a/package/utils/busybox/config/procps/Config.in
+++ b/package/utils/busybox/config/procps/Config.in
@@ -11,94 +11,94 @@ config BUSYBOX_CONFIG_FREE
 	default BUSYBOX_DEFAULT_FREE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
 	help
-	  free displays the total amount of free and used physical and swap
-	  memory in the system, as well as the buffers used by the kernel.
-	  The shared memory column should be ignored; it is obsolete.
+	free displays the total amount of free and used physical and swap
+	memory in the system, as well as the buffers used by the kernel.
+	The shared memory column should be ignored; it is obsolete.
 config BUSYBOX_CONFIG_FUSER
 	bool "fuser"
 	default BUSYBOX_DEFAULT_FUSER
 	help
-	  fuser lists all PIDs (Process IDs) that currently have a given
-	  file open. fuser can also list all PIDs that have a given network
-	  (TCP or UDP) port open.
+	fuser lists all PIDs (Process IDs) that currently have a given
+	file open. fuser can also list all PIDs that have a given network
+	(TCP or UDP) port open.
 config BUSYBOX_CONFIG_IOSTAT
 	bool "iostat"
 	default BUSYBOX_DEFAULT_IOSTAT
 	help
-	  Report CPU and I/O statistics
+	Report CPU and I/O statistics
 config BUSYBOX_CONFIG_KILL
 	bool "kill"
 	default BUSYBOX_DEFAULT_KILL
 	help
-	  The command kill sends the specified signal to the specified
-	  process or process group. If no signal is specified, the TERM
-	  signal is sent.
+	The command kill sends the specified signal to the specified
+	process or process group. If no signal is specified, the TERM
+	signal is sent.
 
 config BUSYBOX_CONFIG_KILLALL
 	bool "killall"
 	default BUSYBOX_DEFAULT_KILLALL
 	help
-	  killall sends a signal to all processes running any of the
-	  specified commands. If no signal name is specified, SIGTERM is
-	  sent.
+	killall sends a signal to all processes running any of the
+	specified commands. If no signal name is specified, SIGTERM is
+	sent.
 
 config BUSYBOX_CONFIG_KILLALL5
 	bool "killall5"
 	default BUSYBOX_DEFAULT_KILLALL5
 	help
-	  The SystemV killall command. killall5 sends a signal
-	  to all processes except kernel threads and the processes
-	  in its own session, so it won't kill the shell that is running
-	  the script it was called from.
+	The SystemV killall command. killall5 sends a signal
+	to all processes except kernel threads and the processes
+	in its own session, so it won't kill the shell that is running
+	the script it was called from.
 config BUSYBOX_CONFIG_LSOF
 	bool "lsof"
 	default BUSYBOX_DEFAULT_LSOF
 	help
-	  Show open files in the format of:
-	  PID <TAB> /path/to/executable <TAB> /path/to/opened/file
+	Show open files in the format of:
+	PID <TAB> /path/to/executable <TAB> /path/to/opened/file
 config BUSYBOX_CONFIG_MPSTAT
 	bool "mpstat"
 	default BUSYBOX_DEFAULT_MPSTAT
 	help
-	  Per-processor statistics
+	Per-processor statistics
 config BUSYBOX_CONFIG_NMETER
 	bool "nmeter"
 	default BUSYBOX_DEFAULT_NMETER
 	help
-	  Prints selected system stats continuously, one line per update.
+	Prints selected system stats continuously, one line per update.
 config BUSYBOX_CONFIG_PGREP
 	bool "pgrep"
 	default BUSYBOX_DEFAULT_PGREP
 	help
-	  Look for processes by name.
+	Look for processes by name.
 
 config BUSYBOX_CONFIG_PKILL
 	bool "pkill"
 	default BUSYBOX_DEFAULT_PKILL
 	help
-	  Send signals to processes by name.
+	Send signals to processes by name.
 config BUSYBOX_CONFIG_PIDOF
 	bool "pidof"
 	default BUSYBOX_DEFAULT_PIDOF
 	help
-	  Pidof finds the process id's (pids) of the named programs. It prints
-	  those id's on the standard output.
+	Pidof finds the process id's (pids) of the named programs. It prints
+	those id's on the standard output.
 
 config BUSYBOX_CONFIG_FEATURE_PIDOF_SINGLE
 	bool "Enable single shot (-s)"
 	default BUSYBOX_DEFAULT_FEATURE_PIDOF_SINGLE
 	depends on BUSYBOX_CONFIG_PIDOF
 	help
-	  Support '-s' for returning only the first pid found.
+	Support '-s' for returning only the first pid found.
 
 config BUSYBOX_CONFIG_FEATURE_PIDOF_OMIT
 	bool "Enable omitting pids (-o PID)"
 	default BUSYBOX_DEFAULT_FEATURE_PIDOF_OMIT
 	depends on BUSYBOX_CONFIG_PIDOF
 	help
-	  Support '-o PID' for omitting the given pid(s) in output.
-	  The special pid %PPID can be used to name the parent process
-	  of the pidof, in other words the calling shell or shell script.
+	Support '-o PID' for omitting the given pid(s) in output.
+	The special pid %PPID can be used to name the parent process
+	of the pidof, in other words the calling shell or shell script.
 config BUSYBOX_CONFIG_PMAP
        bool "pmap"
        default BUSYBOX_DEFAULT_PMAP
@@ -108,37 +108,37 @@ config BUSYBOX_CONFIG_POWERTOP
 	bool "powertop"
 	default BUSYBOX_DEFAULT_POWERTOP
 	help
-	  Analyze power consumption on Intel-based laptops
+	Analyze power consumption on Intel-based laptops
 
 config BUSYBOX_CONFIG_FEATURE_POWERTOP_INTERACTIVE
 	bool "Accept keyboard commands"
 	default BUSYBOX_DEFAULT_FEATURE_POWERTOP_INTERACTIVE
 	depends on BUSYBOX_CONFIG_POWERTOP
 	help
-	  Without this, powertop will only refresh display every 10 seconds.
-	  No keyboard commands will work, only ^C to terminate.
+	Without this, powertop will only refresh display every 10 seconds.
+	No keyboard commands will work, only ^C to terminate.
 config BUSYBOX_CONFIG_PS
 	bool "ps"
 	default BUSYBOX_DEFAULT_PS
 	help
-	  ps gives a snapshot of the current processes.
+	ps gives a snapshot of the current processes.
 
 config BUSYBOX_CONFIG_FEATURE_PS_WIDE
 	bool "Enable wide output option (-w)"
 	default BUSYBOX_DEFAULT_FEATURE_PS_WIDE
 	depends on BUSYBOX_CONFIG_PS && !BUSYBOX_CONFIG_DESKTOP
 	help
-	  Support argument 'w' for wide output.
-	  If given once, 132 chars are printed, and if given more
-	  than once, the length is unlimited.
+	Support argument 'w' for wide output.
+	If given once, 132 chars are printed, and if given more
+	than once, the length is unlimited.
 
 config BUSYBOX_CONFIG_FEATURE_PS_LONG
 	bool "Enable long output option (-l)"
 	default BUSYBOX_DEFAULT_FEATURE_PS_LONG
 	depends on BUSYBOX_CONFIG_PS && !BUSYBOX_CONFIG_DESKTOP
 	help
-	  Support argument 'l' for long output.
-	  Adds fields PPID, RSS, START, TIME & TTY
+	Support argument 'l' for long output.
+	Adds fields PPID, RSS, START, TIME & TTY
 
 config BUSYBOX_CONFIG_FEATURE_PS_TIME
 	bool "Support -o time and -o etime output specifiers"
@@ -151,8 +151,8 @@ config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
 	default BUSYBOX_DEFAULT_FEATURE_PS_UNUSUAL_SYSTEMS
 	depends on BUSYBOX_CONFIG_FEATURE_PS_TIME
 	help
-	  Include support for measuring HZ on old kernels and non-ELF systems
-	  (if you are on Linux 2.4.0+ and use ELF, you don't need this)
+	Include support for measuring HZ on old kernels and non-ELF systems
+	(if you are on Linux 2.4.0+ and use ELF, you don't need this)
 
 config BUSYBOX_CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS
 	bool "Support -o rgroup, -o ruser, -o nice specifiers"
@@ -162,112 +162,112 @@ config BUSYBOX_CONFIG_PSTREE
 	bool "pstree"
 	default BUSYBOX_DEFAULT_PSTREE
 	help
-	  Display a tree of processes.
+	Display a tree of processes.
 config BUSYBOX_CONFIG_PWDX
 	bool "pwdx"
 	default BUSYBOX_DEFAULT_PWDX
 	help
-	  Report current working directory of a process
+	Report current working directory of a process
 config BUSYBOX_CONFIG_SMEMCAP
 	bool "smemcap"
 	default BUSYBOX_DEFAULT_SMEMCAP
 	help
-	  smemcap is a tool for capturing process data for smem,
-	  a memory usage statistic tool.
+	smemcap is a tool for capturing process data for smem,
+	a memory usage statistic tool.
 config BUSYBOX_CONFIG_BB_SYSCTL
 	bool "sysctl"
 	default BUSYBOX_DEFAULT_BB_SYSCTL
 	help
-	  Configure kernel parameters at runtime.
+	Configure kernel parameters at runtime.
 config BUSYBOX_CONFIG_TOP
 	bool "top"
 	default BUSYBOX_DEFAULT_TOP
 	help
-	  The top program provides a dynamic real-time view of a running
-	  system.
+	The top program provides a dynamic real-time view of a running
+	system.
 
 config BUSYBOX_CONFIG_FEATURE_TOP_INTERACTIVE
 	bool "Accept keyboard commands"
 	default BUSYBOX_DEFAULT_FEATURE_TOP_INTERACTIVE
 	depends on BUSYBOX_CONFIG_TOP
 	help
-	  Without this, top will only refresh display every 5 seconds.
-	  No keyboard commands will work, only ^C to terminate.
+	Without this, top will only refresh display every 5 seconds.
+	No keyboard commands will work, only ^C to terminate.
 
 config BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
 	bool "Show CPU per-process usage percentage"
 	default BUSYBOX_DEFAULT_FEATURE_TOP_CPU_USAGE_PERCENTAGE
 	depends on BUSYBOX_CONFIG_TOP
 	help
-	  Make top display CPU usage for each process.
-	  This adds about 2k.
+	Make top display CPU usage for each process.
+	This adds about 2k.
 
 config BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
 	bool "Show CPU global usage percentage"
 	default BUSYBOX_DEFAULT_FEATURE_TOP_CPU_GLOBAL_PERCENTS
 	depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
 	help
-	  Makes top display "CPU: NN% usr NN% sys..." line.
-	  This adds about 0.5k.
+	Makes top display "CPU: NN% usr NN% sys..." line.
+	This adds about 0.5k.
 
 config BUSYBOX_CONFIG_FEATURE_TOP_SMP_CPU
 	bool "SMP CPU usage display ('c' key)"
 	default BUSYBOX_DEFAULT_FEATURE_TOP_SMP_CPU
 	depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS
 	help
-	  Allow 'c' key to switch between individual/cumulative CPU stats
-	  This adds about 0.5k.
+	Allow 'c' key to switch between individual/cumulative CPU stats
+	This adds about 0.5k.
 
 config BUSYBOX_CONFIG_FEATURE_TOP_DECIMALS
 	bool "Show 1/10th of a percent in CPU/mem statistics"
 	default BUSYBOX_DEFAULT_FEATURE_TOP_DECIMALS
 	depends on BUSYBOX_CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE
 	help
-	  Show 1/10th of a percent in CPU/mem statistics.
-	  This adds about 0.3k.
+	Show 1/10th of a percent in CPU/mem statistics.
+	This adds about 0.3k.
 
 config BUSYBOX_CONFIG_FEATURE_TOP_SMP_PROCESS
 	bool "Show CPU process runs on ('j' field)"
 	default BUSYBOX_DEFAULT_FEATURE_TOP_SMP_PROCESS
 	depends on BUSYBOX_CONFIG_TOP
 	help
-	  Show CPU where process was last found running on.
-	  This is the 'j' field.
+	Show CPU where process was last found running on.
+	This is the 'j' field.
 
 config BUSYBOX_CONFIG_FEATURE_TOPMEM
 	bool "Topmem command ('s' key)"
 	default BUSYBOX_DEFAULT_FEATURE_TOPMEM
 	depends on BUSYBOX_CONFIG_TOP
 	help
-	  Enable 's' in top (gives lots of memory info).
+	Enable 's' in top (gives lots of memory info).
 config BUSYBOX_CONFIG_UPTIME
 	bool "uptime"
 	default BUSYBOX_DEFAULT_UPTIME
 	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
 	help
-	  uptime gives a one line display of the current time, how long
-	  the system has been running, how many users are currently logged
-	  on, and the system load averages for the past 1, 5, and 15 minutes.
+	uptime gives a one line display of the current time, how long
+	the system has been running, how many users are currently logged
+	on, and the system load averages for the past 1, 5, and 15 minutes.
 
 config BUSYBOX_CONFIG_FEATURE_UPTIME_UTMP_SUPPORT
 	bool "Show the number of users"
 	default BUSYBOX_DEFAULT_FEATURE_UPTIME_UTMP_SUPPORT
 	depends on BUSYBOX_CONFIG_UPTIME && BUSYBOX_CONFIG_FEATURE_UTMP
 	help
-	  Display the number of users currently logged on.
+	Display the number of users currently logged on.
 config BUSYBOX_CONFIG_WATCH
 	bool "watch"
 	default BUSYBOX_DEFAULT_WATCH
 	help
-	  watch is used to execute a program periodically, showing
-	  output to the screen.
+	watch is used to execute a program periodically, showing
+	output to the screen.
 
 config BUSYBOX_CONFIG_FEATURE_SHOW_THREADS
 	bool "Support thread display in ps/pstree/top"
 	default BUSYBOX_DEFAULT_FEATURE_SHOW_THREADS
 	depends on BUSYBOX_CONFIG_PS || BUSYBOX_CONFIG_TOP || BUSYBOX_CONFIG_PSTREE
 	help
-	  Enables the ps -T option, showing of threads in pstree,
-	  and 'h' command in top.
+	Enables the ps -T option, showing of threads in pstree,
+	and 'h' command in top.
 
 endmenu
diff --git a/package/utils/busybox/config/runit/Config.in b/package/utils/busybox/config/runit/Config.in
index 8750b597e5..6c10519ebe 100644
--- a/package/utils/busybox/config/runit/Config.in
+++ b/package/utils/busybox/config/runit/Config.in
@@ -10,82 +10,82 @@ config BUSYBOX_CONFIG_CHPST
 	bool "chpst"
 	default BUSYBOX_DEFAULT_CHPST
 	help
-	  chpst changes the process state according to the given options, and
-	  execs specified program.
+	chpst changes the process state according to the given options, and
+	execs specified program.
 
 config BUSYBOX_CONFIG_SETUIDGID
 	bool "setuidgid"
 	default BUSYBOX_DEFAULT_SETUIDGID
 	help
-	  Sets soft resource limits as specified by options
+	Sets soft resource limits as specified by options
 
 config BUSYBOX_CONFIG_ENVUIDGID
 	bool "envuidgid"
 	default BUSYBOX_DEFAULT_ENVUIDGID
 	help
-	  Sets $UID to account's uid and $GID to account's gid
+	Sets $UID to account's uid and $GID to account's gid
 
 config BUSYBOX_CONFIG_ENVDIR
 	bool "envdir"
 	default BUSYBOX_DEFAULT_ENVDIR
 	help
-	  Sets various environment variables as specified by files
-	  in the given directory
+	Sets various environment variables as specified by files
+	in the given directory
 
 config BUSYBOX_CONFIG_SOFTLIMIT
 	bool "softlimit"
 	default BUSYBOX_DEFAULT_SOFTLIMIT
 	help
-	  Sets soft resource limits as specified by options
+	Sets soft resource limits as specified by options
 config BUSYBOX_CONFIG_RUNSV
 	bool "runsv"
 	default BUSYBOX_DEFAULT_RUNSV
 	help
-	  runsv starts and monitors a service and optionally an appendant log
-	  service.
+	runsv starts and monitors a service and optionally an appendant log
+	service.
 config BUSYBOX_CONFIG_RUNSVDIR
 	bool "runsvdir"
 	default BUSYBOX_DEFAULT_RUNSVDIR
 	help
-	  runsvdir starts a runsv process for each subdirectory, or symlink to
-	  a directory, in the services directory dir, up to a limit of 1000
-	  subdirectories, and restarts a runsv process if it terminates.
+	runsvdir starts a runsv process for each subdirectory, or symlink to
+	a directory, in the services directory dir, up to a limit of 1000
+	subdirectories, and restarts a runsv process if it terminates.
 
 config BUSYBOX_CONFIG_FEATURE_RUNSVDIR_LOG
 	bool "Enable scrolling argument log"
 	depends on BUSYBOX_CONFIG_RUNSVDIR
 	default BUSYBOX_DEFAULT_FEATURE_RUNSVDIR_LOG
 	help
-	  Enable feature where second parameter of runsvdir holds last error
-	  message (viewable via top/ps). Otherwise (feature is off
-	  or no parameter), error messages go to stderr only.
+	Enable feature where second parameter of runsvdir holds last error
+	message (viewable via top/ps). Otherwise (feature is off
+	or no parameter), error messages go to stderr only.
 config BUSYBOX_CONFIG_SV
 	bool "sv"
 	default BUSYBOX_DEFAULT_SV
 	help
-	  sv reports the current status and controls the state of services
-	  monitored by the runsv supervisor.
+	sv reports the current status and controls the state of services
+	monitored by the runsv supervisor.
 
 config BUSYBOX_CONFIG_SV_DEFAULT_SERVICE_DIR
 	string "Default directory for services"
 	default BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR
 	depends on BUSYBOX_CONFIG_SV
 	help
-	  Default directory for services.
-	  Defaults to "/var/service"
+	Default directory for services.
+	Defaults to "/var/service"
 
 config BUSYBOX_CONFIG_SVC
 	bool "svc"
 	default BUSYBOX_DEFAULT_SVC
 	help
-	  svc controls the state of services monitored by the runsv supervisor.
-	  It is comaptible with daemontools command with the same name.
+	svc controls the state of services monitored by the runsv supervisor.
+	It is comaptible with daemontools command with the same name.
 config BUSYBOX_CONFIG_SVLOGD
 	bool "svlogd"
 	default BUSYBOX_DEFAULT_SVLOGD
 	help
-	  svlogd continuously reads log data from its standard input, optionally
-	  filters log messages, and writes the data to one or more automatically
-	  rotated logs.
+	svlogd continuously reads log data from its standard input, optionally
+	filters log messages, and writes the data to one or more automatically
+	rotated logs.
 
 endmenu
diff --git a/package/utils/busybox/config/selinux/Config.in b/package/utils/busybox/config/selinux/Config.in
index 71eb0dcd77..d572509239 100644
--- a/package/utils/busybox/config/selinux/Config.in
+++ b/package/utils/busybox/config/selinux/Config.in
@@ -12,7 +12,7 @@ config BUSYBOX_CONFIG_CHCON
 	default BUSYBOX_DEFAULT_CHCON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to change the security context of file.
+	Enable support to change the security context of file.
 
 config BUSYBOX_CONFIG_FEATURE_CHCON_LONG_OPTIONS
 	bool "Enable long options"
@@ -23,32 +23,32 @@ config BUSYBOX_CONFIG_GETENFORCE
 	default BUSYBOX_DEFAULT_GETENFORCE
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to get the current mode of SELinux.
+	Enable support to get the current mode of SELinux.
 config BUSYBOX_CONFIG_GETSEBOOL
 	bool "getsebool"
 	default BUSYBOX_DEFAULT_GETSEBOOL
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to get SELinux boolean values.
+	Enable support to get SELinux boolean values.
 config BUSYBOX_CONFIG_LOAD_POLICY
 	bool "load_policy"
 	default BUSYBOX_DEFAULT_LOAD_POLICY
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to load SELinux policy.
+	Enable support to load SELinux policy.
 config BUSYBOX_CONFIG_MATCHPATHCON
 	bool "matchpathcon"
 	default BUSYBOX_DEFAULT_MATCHPATHCON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to get default security context of the
-	  specified path from the file contexts configuration.
+	Enable support to get default security context of the
+	specified path from the file contexts configuration.
 config BUSYBOX_CONFIG_RUNCON
 	bool "runcon"
 	default BUSYBOX_DEFAULT_RUNCON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to run command in specified security context.
+	Enable support to run command in specified security context.
 
 config BUSYBOX_CONFIG_FEATURE_RUNCON_LONG_OPTIONS
 	bool "Enable long options"
@@ -59,51 +59,51 @@ config BUSYBOX_CONFIG_SELINUXENABLED
 	default BUSYBOX_DEFAULT_SELINUXENABLED
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support for this command to be used within shell scripts
-	  to determine if selinux is enabled.
+	Enable support for this command to be used within shell scripts
+	to determine if selinux is enabled.
 config BUSYBOX_CONFIG_SESTATUS
 	bool "sestatus"
 	default BUSYBOX_DEFAULT_SESTATUS
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Displays the status of SELinux.
+	Displays the status of SELinux.
 config BUSYBOX_CONFIG_SETENFORCE
 	bool "setenforce"
 	default BUSYBOX_DEFAULT_SETENFORCE
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to modify the mode SELinux is running in.
+	Enable support to modify the mode SELinux is running in.
 config BUSYBOX_CONFIG_SETFILES
 	bool "setfiles"
 	default BUSYBOX_DEFAULT_SETFILES
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to modify to relabel files.
-	  Notice: If you built libselinux with -D_FILE_OFFSET_BITS=64,
-	  (It is default in libselinux's Makefile), you _must_ enable
-	  CONFIG_LFS.
+	Enable support to modify to relabel files.
+	Notice: If you built libselinux with -D_FILE_OFFSET_BITS=64,
+	(It is default in libselinux's Makefile), you _must_ enable
+	CONFIG_LFS.
 
 config BUSYBOX_CONFIG_FEATURE_SETFILES_CHECK_OPTION
 	bool "Enable check option"
 	default BUSYBOX_DEFAULT_FEATURE_SETFILES_CHECK_OPTION
 	depends on BUSYBOX_CONFIG_SETFILES
 	help
-	  Support "-c" option (check the validity of the contexts against
-	  the specified binary policy) for setfiles. Requires libsepol.
+	Support "-c" option (check the validity of the contexts against
+	the specified binary policy) for setfiles. Requires libsepol.
 
 config BUSYBOX_CONFIG_RESTORECON
 	bool "restorecon"
 	default BUSYBOX_DEFAULT_RESTORECON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support to relabel files. The feature is almost
-	  the same as setfiles, but usage is a little different.
+	Enable support to relabel files. The feature is almost
+	the same as setfiles, but usage is a little different.
 config BUSYBOX_CONFIG_SETSEBOOL
 	bool "setsebool"
 	default BUSYBOX_DEFAULT_SETSEBOOL
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
-	  Enable support for change boolean.
-	  semanage and -P option is not supported yet.
+	Enable support for change boolean.
+	semanage and -P option is not supported yet.
 
 endmenu
diff --git a/package/utils/busybox/config/shell/Config.in b/package/utils/busybox/config/shell/Config.in
index e455d3832d..97b7f1cfc8 100644
--- a/package/utils/busybox/config/shell/Config.in
+++ b/package/utils/busybox/config/shell/Config.in
@@ -11,26 +11,26 @@ choice
 	prompt "Choose which shell is aliased to 'sh' name"
 	default BUSYBOX_CONFIG_SH_IS_ASH
 	help
-	  Choose which shell you want to be executed by 'sh' alias.
-	  The ash shell is the most bash compatible and full featured one.
+	Choose which shell you want to be executed by 'sh' alias.
+	The ash shell is the most bash compatible and full featured one.
 
 # note: cannot use "select ASH" here, it breaks "make allnoconfig"
 config BUSYBOX_CONFIG_SH_IS_ASH
 	depends on !BUSYBOX_CONFIG_NOMMU
 	bool "ash"
 	help
-	  Choose ash to be the shell executed by 'sh' name.
-	  The ash code will be built into busybox. If you don't select
-	  "ash" choice (CONFIG_ASH), this shell may only be invoked by
-	  the name 'sh' (and not 'ash').
+	Choose ash to be the shell executed by 'sh' name.
+	The ash code will be built into busybox. If you don't select
+	"ash" choice (CONFIG_ASH), this shell may only be invoked by
+	the name 'sh' (and not 'ash').
 
 config BUSYBOX_CONFIG_SH_IS_HUSH
 	bool "hush"
 	help
-	  Choose hush to be the shell executed by 'sh' name.
-	  The hush code will be built into busybox. If you don't select
-	  "hush" choice (CONFIG_HUSH), this shell may only be invoked by
-	  the name 'sh' (and not 'hush').
+	Choose hush to be the shell executed by 'sh' name.
+	The hush code will be built into busybox. If you don't select
+	"hush" choice (CONFIG_HUSH), this shell may only be invoked by
+	the name 'sh' (and not 'hush').
 
 config BUSYBOX_CONFIG_SH_IS_NONE
 	bool "none"
@@ -41,36 +41,36 @@ choice
 	prompt "Choose which shell is aliased to 'bash' name"
 	default BUSYBOX_CONFIG_BASH_IS_NONE
 	help
-	  Choose which shell you want to be executed by 'bash' alias.
-	  The ash shell is the most bash compatible and full featured one,
-	  although compatibility is far from being complete.
+	Choose which shell you want to be executed by 'bash' alias.
+	The ash shell is the most bash compatible and full featured one,
+	although compatibility is far from being complete.
 
-	  Note that selecting this option does not switch on any bash
-	  compatibility code. It merely makes it possible to install
-	  /bin/bash (sym)link and run scripts which start with
-	  #!/bin/bash line.
+	Note that selecting this option does not switch on any bash
+	compatibility code. It merely makes it possible to install
+	/bin/bash (sym)link and run scripts which start with
+	#!/bin/bash line.
 
-	  Many systems use it in scripts which use bash-specific features,
-	  even simple ones like $RANDOM. Without this option, busybox
-	  can't be used for running them because it won't recongnize
-	  "bash" as a supported applet name.
+	Many systems use it in scripts which use bash-specific features,
+	even simple ones like $RANDOM. Without this option, busybox
+	can't be used for running them because it won't recongnize
+	"bash" as a supported applet name.
 
 config BUSYBOX_CONFIG_BASH_IS_ASH
 	depends on !BUSYBOX_CONFIG_NOMMU
 	bool "ash"
 	help
-	  Choose ash to be the shell executed by 'bash' name.
-	  The ash code will be built into busybox. If you don't select
-	  "ash" choice (CONFIG_ASH), this shell may only be invoked by
-	  the name 'bash' (and not 'ash').
+	Choose ash to be the shell executed by 'bash' name.
+	The ash code will be built into busybox. If you don't select
+	"ash" choice (CONFIG_ASH), this shell may only be invoked by
+	the name 'bash' (and not 'ash').
 
 config BUSYBOX_CONFIG_BASH_IS_HUSH
 	bool "hush"
 	help
-	  Choose hush to be the shell executed by 'bash' name.
-	  The hush code will be built into busybox. If you don't select
-	  "hush" choice (CONFIG_HUSH), this shell may only be invoked by
-	  the name 'bash' (and not 'hush').
+	Choose hush to be the shell executed by 'bash' name.
+	The hush code will be built into busybox. If you don't select
+	"hush" choice (CONFIG_HUSH), this shell may only be invoked by
+	the name 'bash' (and not 'hush').
 
 config BUSYBOX_CONFIG_BASH_IS_NONE
 	bool "none"
@@ -83,11 +83,11 @@ config BUSYBOX_CONFIG_ASH
 	default BUSYBOX_DEFAULT_ASH
 	depends on !BUSYBOX_CONFIG_NOMMU
 	help
-	  Tha 'ash' shell adds about 60k in the default configuration and is
-	  the most complete and most pedantically correct shell included with
-	  busybox. This shell is actually a derivative of the Debian 'dash'
-	  shell (by Herbert Xu), which was created by porting the 'ash' shell
-	  (written by Kenneth Almquist) from NetBSD.
+	Tha 'ash' shell adds about 60k in the default configuration and is
+	the most complete and most pedantically correct shell included with
+	busybox. This shell is actually a derivative of the Debian 'dash'
+	shell (by Herbert Xu), which was created by porting the 'ash' shell
+	(written by Kenneth Almquist) from NetBSD.
 
 # ash options
 # note: Don't remove !NOMMU part in the next line; it would break
@@ -104,11 +104,11 @@ config BUSYBOX_CONFIG_ASH_INTERNAL_GLOB
 	default BUSYBOX_DEFAULT_ASH_INTERNAL_GLOB	# Y is bigger, but because of uclibc glob() bug, let Y be default for now
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
 	help
-	  Do not use glob() function from libc, use internal implementation.
-	  Use this if you are getting "glob.h: No such file or directory"
-	  or similar build errors.
-	  Note that as of now (2017-01), uclibc and musl glob() both have bugs
-	  which would break ash if you select N here.
+	Do not use glob() function from libc, use internal implementation.
+	Use this if you are getting "glob.h: No such file or directory"
+	or similar build errors.
+	Note that as of now (2017-01), uclibc and musl glob() both have bugs
+	which would break ash if you select N here.
 
 config BUSYBOX_CONFIG_ASH_BASH_COMPAT
 	bool "bash-compatible extensions"
@@ -130,37 +130,37 @@ config BUSYBOX_CONFIG_ASH_RANDOM_SUPPORT
 	default BUSYBOX_DEFAULT_ASH_RANDOM_SUPPORT
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
 	help
-	  Enable pseudorandom generator and dynamic variable "$RANDOM".
-	  Each read of "$RANDOM" will generate a new pseudorandom value.
-	  You can reset the generator by using a specified start value.
-	  After "unset RANDOM" the generator will switch off and this
-	  variable will no longer have special treatment.
+	Enable pseudorandom generator and dynamic variable "$RANDOM".
+	Each read of "$RANDOM" will generate a new pseudorandom value.
+	You can reset the generator by using a specified start value.
+	After "unset RANDOM" the generator will switch off and this
+	variable will no longer have special treatment.
 
 config BUSYBOX_CONFIG_ASH_EXPAND_PRMT
 	bool "Expand prompt string"
 	default BUSYBOX_DEFAULT_ASH_EXPAND_PRMT
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
 	help
-	  $PS# may contain volatile content, such as backquote commands.
-	  This option recreates the prompt string from the environment
-	  variable each time it is displayed.
+	$PS# may contain volatile content, such as backquote commands.
+	This option recreates the prompt string from the environment
+	variable each time it is displayed.
 
 config BUSYBOX_CONFIG_ASH_IDLE_TIMEOUT
 	bool "Idle timeout variable $TMOUT"
 	default BUSYBOX_DEFAULT_ASH_IDLE_TIMEOUT
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
 	help
-	  Enable bash-like auto-logout after $TMOUT seconds of idle time.
+	Enable bash-like auto-logout after $TMOUT seconds of idle time.
 
 config BUSYBOX_CONFIG_ASH_MAIL
 	bool "Check for new mail in interactive shell"
 	default BUSYBOX_DEFAULT_ASH_MAIL
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
 	help
-	  Enable "check for new mail" function:
-	  if set, $MAIL file and $MAILPATH list of files
-	  are checked for mtime changes, and "you have mail"
-	  message is printed if change is detected.
+	Enable "check for new mail" function:
+	if set, $MAIL file and $MAILPATH list of files
+	are checked for mtime changes, and "you have mail"
+	message is printed if change is detected.
 
 config BUSYBOX_CONFIG_ASH_ECHO
 	bool "echo builtin"
@@ -192,67 +192,67 @@ config BUSYBOX_CONFIG_ASH_CMDCMD
 	default BUSYBOX_DEFAULT_ASH_CMDCMD
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
 	help
-	  Enable support for the 'command' builtin, which allows
-	  you to run the specified command or builtin,
-	  even when there is a function with the same name.
+	Enable support for the 'command' builtin, which allows
+	you to run the specified command or builtin,
+	even when there is a function with the same name.
 
 endif # ash options
 config BUSYBOX_CONFIG_CTTYHACK
 	bool "cttyhack"
 	default BUSYBOX_DEFAULT_CTTYHACK
 	help
-	  One common problem reported on the mailing list is the "can't
-	  access tty; job control turned off" error message, which typically
-	  appears when one tries to use a shell with stdin/stdout on
-	  /dev/console.
-	  This device is special - it cannot be a controlling tty.
+	One common problem reported on the mailing list is the "can't
+	access tty; job control turned off" error message, which typically
+	appears when one tries to use a shell with stdin/stdout on
+	/dev/console.
+	This device is special - it cannot be a controlling tty.
 
-	  The proper solution is to use the correct device instead of
-	  /dev/console.
+	The proper solution is to use the correct device instead of
+	/dev/console.
 
-	  cttyhack provides a "quick and dirty" solution to this problem.
-	  It analyzes stdin with various ioctls, trying to determine whether
-	  it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
-	  On Linux it also checks sysfs for a pointer to the active console.
-	  If cttyhack is able to find the real console device, it closes
-	  stdin/out/err and reopens that device.
-	  Then it executes the given program. Opening the device will make
-	  that device a controlling tty. This may require cttyhack
-	  to be a session leader.
+	cttyhack provides a "quick and dirty" solution to this problem.
+	It analyzes stdin with various ioctls, trying to determine whether
+	it is a /dev/ttyN or /dev/ttySN (virtual terminal or serial line).
+	On Linux it also checks sysfs for a pointer to the active console.
+	If cttyhack is able to find the real console device, it closes
+	stdin/out/err and reopens that device.
+	Then it executes the given program. Opening the device will make
+	that device a controlling tty. This may require cttyhack
+	to be a session leader.
 
-	  Example for /etc/inittab (for busybox init):
+	Example for /etc/inittab (for busybox init):
 
-	  ::respawn:/bin/cttyhack /bin/sh
+	::respawn:/bin/cttyhack /bin/sh
 
-	  Starting an interactive shell from boot shell script:
+	Starting an interactive shell from boot shell script:
 
-	  setsid cttyhack sh
+	setsid cttyhack sh
 
-	  Giving controlling tty to shell running with PID 1:
+	Giving controlling tty to shell running with PID 1:
 
-	  # exec cttyhack sh
+	# exec cttyhack sh
 
-	  Without cttyhack, you need to know exact tty name,
-	  and do something like this:
+	Without cttyhack, you need to know exact tty name,
+	and do something like this:
 
-	  # exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
+	# exec setsid sh -c 'exec sh </dev/tty1 >/dev/tty1 2>&1'
 
-	  Starting getty on a controlling tty from a shell script:
+	Starting getty on a controlling tty from a shell script:
 
-	  # getty 115200 $(cttyhack)
+	# getty 115200 $(cttyhack)
 config BUSYBOX_CONFIG_HUSH
 	bool "hush"
 	default BUSYBOX_DEFAULT_HUSH
 	help
-	  hush is a small shell (25k). It handles the normal flow control
-	  constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
-	  case/esac. Redirections, here documents, $((arithmetic))
-	  and functions are supported.
+	hush is a small shell (25k). It handles the normal flow control
+	constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
+	case/esac. Redirections, here documents, $((arithmetic))
+	and functions are supported.
 
-	  It will compile and work on no-mmu systems.
+	It will compile and work on no-mmu systems.
 
-	  It does not handle select, aliases, tilde expansion,
-	  &>file and >&file redirection of stdout+stderr.
+	It does not handle select, aliases, tilde expansion,
+	&>file and >&file redirection of stdout+stderr.
 
 config BUSYBOX_CONFIG_HUSH_BASH_COMPAT
 	bool "bash-compatible extensions"
@@ -264,17 +264,17 @@ config BUSYBOX_CONFIG_HUSH_BRACE_EXPANSION
 	default BUSYBOX_DEFAULT_HUSH_BRACE_EXPANSION
 	depends on BUSYBOX_CONFIG_HUSH_BASH_COMPAT
 	help
-	  Enable {abc,def} extension.
+	Enable {abc,def} extension.
 
 config BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	bool "Interactive mode"
 	default BUSYBOX_DEFAULT_HUSH_INTERACTIVE
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  Enable interactive mode (prompt and command editing).
-	  Without this, hush simply reads and executes commands
-	  from stdin just like a shell script from a file.
-	  No prompt, no PS1/PS2 magic shell variables.
+	Enable interactive mode (prompt and command editing).
+	Without this, hush simply reads and executes commands
+	from stdin just like a shell script from a file.
+	No prompt, no PS1/PS2 magic shell variables.
 
 config BUSYBOX_CONFIG_HUSH_SAVEHISTORY
 	bool "Save command history to .hush_history"
@@ -286,18 +286,18 @@ config BUSYBOX_CONFIG_HUSH_JOB
 	default BUSYBOX_DEFAULT_HUSH_JOB
 	depends on BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	help
-	  Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
-	  command (not entire shell), fg/bg builtins work. Without this option,
-	  "cmd &" still works by simply spawning a process and immediately
-	  prompting for next command (or executing next command in a script),
-	  but no separate process group is formed.
+	Enable job control: Ctrl-Z backgrounds, Ctrl-C interrupts current
+	command (not entire shell), fg/bg builtins work. Without this option,
+	"cmd &" still works by simply spawning a process and immediately
+	prompting for next command (or executing next command in a script),
+	but no separate process group is formed.
 
 config BUSYBOX_CONFIG_HUSH_TICK
 	bool "Support process substitution"
 	default BUSYBOX_DEFAULT_HUSH_TICK
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  Enable `command` and $(command).
+	Enable `command` and $(command).
 
 config BUSYBOX_CONFIG_HUSH_IF
 	bool "Support if/then/elif/else/fi"
@@ -314,37 +314,37 @@ config BUSYBOX_CONFIG_HUSH_CASE
 	default BUSYBOX_DEFAULT_HUSH_CASE
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  Enable case ... esac statement. +400 bytes.
+	Enable case ... esac statement. +400 bytes.
 
 config BUSYBOX_CONFIG_HUSH_FUNCTIONS
 	bool "Support funcname() { commands; } syntax"
 	default BUSYBOX_DEFAULT_HUSH_FUNCTIONS
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  Enable support for shell functions. +800 bytes.
+	Enable support for shell functions. +800 bytes.
 
 config BUSYBOX_CONFIG_HUSH_LOCAL
 	bool "local builtin"
 	default BUSYBOX_DEFAULT_HUSH_LOCAL
 	depends on BUSYBOX_CONFIG_HUSH_FUNCTIONS
 	help
-	  Enable support for local variables in functions.
+	Enable support for local variables in functions.
 
 config BUSYBOX_CONFIG_HUSH_RANDOM_SUPPORT
 	bool "Pseudorandom generator and $RANDOM variable"
 	default BUSYBOX_DEFAULT_HUSH_RANDOM_SUPPORT
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  Enable pseudorandom generator and dynamic variable "$RANDOM".
-	  Each read of "$RANDOM" will generate a new pseudorandom value.
+	Enable pseudorandom generator and dynamic variable "$RANDOM".
+	Each read of "$RANDOM" will generate a new pseudorandom value.
 
 config BUSYBOX_CONFIG_HUSH_MODE_X
 	bool "Support 'hush -x' option and 'set -x' command"
 	default BUSYBOX_DEFAULT_HUSH_MODE_X
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  This instructs hush to print commands before execution.
-	  Adds ~300 bytes.
+	This instructs hush to print commands before execution.
+	Adds ~300 bytes.
 
 config BUSYBOX_CONFIG_HUSH_ECHO
 	bool "echo builtin"
@@ -376,7 +376,7 @@ config BUSYBOX_CONFIG_HUSH_EXPORT_N
 	default BUSYBOX_DEFAULT_HUSH_EXPORT_N
 	depends on BUSYBOX_CONFIG_HUSH_EXPORT
 	help
-	  export -n unexports variables. It is a bash extension.
+	export -n unexports variables. It is a bash extension.
 
 config BUSYBOX_CONFIG_HUSH_KILL
 	bool "kill builtin (supports kill %jobspec)"
@@ -433,7 +433,7 @@ config BUSYBOX_CONFIG_MSH
 	default BUSYBOX_DEFAULT_MSH
 	select BUSYBOX_CONFIG_HUSH
 	help
-	  msh is deprecated and will be removed, please migrate to hush.
+	msh is deprecated and will be removed, please migrate to hush.
 
 
 comment "Options common to all shells"
@@ -444,71 +444,71 @@ config BUSYBOX_CONFIG_FEATURE_SH_MATH
 	default BUSYBOX_DEFAULT_FEATURE_SH_MATH
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  Enable math support in the shell via $((...)) syntax.
+	Enable math support in the shell via $((...)) syntax.
 
 config BUSYBOX_CONFIG_FEATURE_SH_MATH_64
 	bool "Extend POSIX math support to 64 bit"
 	default BUSYBOX_DEFAULT_FEATURE_SH_MATH_64
 	depends on BUSYBOX_CONFIG_FEATURE_SH_MATH
 	help
-	  Enable 64-bit math support in the shell. This will make the shell
-	  slightly larger, but will allow computation with very large numbers.
-	  This is not in POSIX, so do not rely on this in portable code.
+	Enable 64-bit math support in the shell. This will make the shell
+	slightly larger, but will allow computation with very large numbers.
+	This is not in POSIX, so do not rely on this in portable code.
 
 config BUSYBOX_CONFIG_FEATURE_SH_EXTRA_QUIET
 	bool "Hide message on interactive shell startup"
 	default BUSYBOX_DEFAULT_FEATURE_SH_EXTRA_QUIET
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  Remove the busybox introduction when starting a shell.
+	Remove the busybox introduction when starting a shell.
 
 config BUSYBOX_CONFIG_FEATURE_SH_STANDALONE
 	bool "Standalone shell"
 	default BUSYBOX_DEFAULT_FEATURE_SH_STANDALONE
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  This option causes busybox shells to use busybox applets
-	  in preference to executables in the PATH whenever possible. For
-	  example, entering the command 'ifconfig' into the shell would cause
-	  busybox to use the ifconfig busybox applet. Specifying the fully
-	  qualified executable name, such as '/sbin/ifconfig' will still
-	  execute the /sbin/ifconfig executable on the filesystem. This option
-	  is generally used when creating a statically linked version of busybox
-	  for use as a rescue shell, in the event that you screw up your system.
+	This option causes busybox shells to use busybox applets
+	in preference to executables in the PATH whenever possible. For
+	example, entering the command 'ifconfig' into the shell would cause
+	busybox to use the ifconfig busybox applet. Specifying the fully
+	qualified executable name, such as '/sbin/ifconfig' will still
+	execute the /sbin/ifconfig executable on the filesystem. This option
+	is generally used when creating a statically linked version of busybox
+	for use as a rescue shell, in the event that you screw up your system.
 
-	  This is implemented by re-execing /proc/self/exe (typically)
-	  with right parameters.
+	This is implemented by re-execing /proc/self/exe (typically)
+	with right parameters.
 
-	  However, there are drawbacks: it is problematic in chroot jails
-	  without mounted /proc, and ps/top may show command name as 'exe'
-	  for applets started this way.
+	However, there are drawbacks: it is problematic in chroot jails
+	without mounted /proc, and ps/top may show command name as 'exe'
+	for applets started this way.
 
 config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
 	bool "Run 'nofork' applets directly"
 	default BUSYBOX_DEFAULT_FEATURE_SH_NOFORK
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  This option causes busybox shells to not execute typical
-	  fork/exec/wait sequence, but call <applet>_main directly,
-	  if possible. (Sometimes it is not possible: for example,
-	  this is not possible in pipes).
+	This option causes busybox shells to not execute typical
+	fork/exec/wait sequence, but call <applet>_main directly,
+	if possible. (Sometimes it is not possible: for example,
+	this is not possible in pipes).
 
-	  This will be done only for some applets (those which are marked
-	  NOFORK in include/applets.h).
+	This will be done only for some applets (those which are marked
+	NOFORK in include/applets.h).
 
-	  This may significantly speed up some shell scripts.
+	This may significantly speed up some shell scripts.
 
-	  This feature is relatively new. Use with care. Report bugs
-	  to project mailing list.
+	This feature is relatively new. Use with care. Report bugs
+	to project mailing list.
 
 config BUSYBOX_CONFIG_FEATURE_SH_HISTFILESIZE
 	bool "Use $HISTFILESIZE"
 	default BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
-	  This option makes busybox shells to use $HISTFILESIZE variable
-	  to set shell history size. Note that its max value is capped
-	  by "History size" setting in library tuning section.
+	This option makes busybox shells to use $HISTFILESIZE variable
+	to set shell history size. Note that its max value is capped
+	by "History size" setting in library tuning section.
 
 endif # Options common to all shells
 
diff --git a/package/utils/busybox/config/sysklogd/Config.in b/package/utils/busybox/config/sysklogd/Config.in
index 2045a7ae38..2fe20f2102 100644
--- a/package/utils/busybox/config/sysklogd/Config.in
+++ b/package/utils/busybox/config/sysklogd/Config.in
@@ -10,11 +10,11 @@ config BUSYBOX_CONFIG_KLOGD
 	bool "klogd"
 	default BUSYBOX_DEFAULT_KLOGD
 	help
-	  klogd is a utility which intercepts and logs all
-	  messages from the Linux kernel and sends the messages
-	  out to the 'syslogd' utility so they can be logged. If
-	  you wish to record the messages produced by the kernel,
-	  you should enable this option.
+	klogd is a utility which intercepts and logs all
+	messages from the Linux kernel and sends the messages
+	out to the 'syslogd' utility so they can be logged. If
+	you wish to record the messages produced by the kernel,
+	you should enable this option.
 
 comment "klogd should not be used together with syslog to kernel printk buffer"
 	depends on BUSYBOX_CONFIG_KLOGD && BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
@@ -25,16 +25,16 @@ config BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL
 	depends on BUSYBOX_CONFIG_KLOGD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The klogd applet supports two interfaces for reading
-	  kernel messages. Linux provides the klogctl() interface
-	  which allows reading messages from the kernel ring buffer
-	  independently from the file system.
+	The klogd applet supports two interfaces for reading
+	kernel messages. Linux provides the klogctl() interface
+	which allows reading messages from the kernel ring buffer
+	independently from the file system.
 
-	  If you answer 'N' here, klogd will use the more portable
-	  approach of reading them from /proc or a device node.
-	  However, this method requires the file to be available.
+	If you answer 'N' here, klogd will use the more portable
+	approach of reading them from /proc or a device node.
+	However, this method requires the file to be available.
 
-	  If in doubt, say 'Y'.
+	If in doubt, say 'Y'.
 config BUSYBOX_CONFIG_LOGGER
 	bool "logger"
 	default BUSYBOX_DEFAULT_LOGGER
@@ -48,73 +48,73 @@ config BUSYBOX_CONFIG_LOGREAD
 	bool "logread"
 	default BUSYBOX_DEFAULT_LOGREAD
 	help
-	  If you enabled Circular Buffer support, you almost
-	  certainly want to enable this feature as well. This
-	  utility will allow you to read the messages that are
-	  stored in the syslogd circular buffer.
+	If you enabled Circular Buffer support, you almost
+	certainly want to enable this feature as well. This
+	utility will allow you to read the messages that are
+	stored in the syslogd circular buffer.
 
 config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
 	bool "Double buffering"
 	default BUSYBOX_DEFAULT_FEATURE_LOGREAD_REDUCED_LOCKING
 	depends on BUSYBOX_CONFIG_LOGREAD
 	help
-	  'logread' output to slow serial terminals can have
-	  side effects on syslog because of the semaphore.
-	  This option make logread to double buffer copy
-	  from circular buffer, minimizing semaphore
-	  contention at some minor memory expense.
+	'logread' output to slow serial terminals can have
+	side effects on syslog because of the semaphore.
+	This option make logread to double buffer copy
+	from circular buffer, minimizing semaphore
+	contention at some minor memory expense.
 
 config BUSYBOX_CONFIG_SYSLOGD
 	bool "syslogd"
 	default BUSYBOX_DEFAULT_SYSLOGD
 	help
-	  The syslogd utility is used to record logs of all the
-	  significant events that occur on a system. Every
-	  message that is logged records the date and time of the
-	  event, and will generally also record the name of the
-	  application that generated the message. When used in
-	  conjunction with klogd, messages from the Linux kernel
-	  can also be recorded. This is terribly useful,
-	  especially for finding what happened when something goes
-	  wrong. And something almost always will go wrong if
-	  you wait long enough....
+	The syslogd utility is used to record logs of all the
+	significant events that occur on a system. Every
+	message that is logged records the date and time of the
+	event, and will generally also record the name of the
+	application that generated the message. When used in
+	conjunction with klogd, messages from the Linux kernel
+	can also be recorded. This is terribly useful,
+	especially for finding what happened when something goes
+	wrong. And something almost always will go wrong if
+	you wait long enough....
 
 config BUSYBOX_CONFIG_FEATURE_ROTATE_LOGFILE
 	bool "Rotate message files"
 	default BUSYBOX_DEFAULT_FEATURE_ROTATE_LOGFILE
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
-	  This enables syslogd to rotate the message files
-	  on his own. No need to use an external rotate script.
+	This enables syslogd to rotate the message files
+	on his own. No need to use an external rotate script.
 
 config BUSYBOX_CONFIG_FEATURE_REMOTE_LOG
 	bool "Remote Log support"
 	default BUSYBOX_DEFAULT_FEATURE_REMOTE_LOG
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
-	  When you enable this feature, the syslogd utility can
-	  be used to send system log messages to another system
-	  connected via a network. This allows the remote
-	  machine to log all the system messages, which can be
-	  terribly useful for reducing the number of serial
-	  cables you use. It can also be a very good security
-	  measure to prevent system logs from being tampered with
-	  by an intruder.
+	When you enable this feature, the syslogd utility can
+	be used to send system log messages to another system
+	connected via a network. This allows the remote
+	machine to log all the system messages, which can be
+	terribly useful for reducing the number of serial
+	cables you use. It can also be a very good security
+	measure to prevent system logs from being tampered with
+	by an intruder.
 
 config BUSYBOX_CONFIG_FEATURE_SYSLOGD_DUP
 	bool "Support -D (drop dups) option"
 	default BUSYBOX_DEFAULT_FEATURE_SYSLOGD_DUP
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
-	  Option -D instructs syslogd to drop consecutive messages
-	  which are totally the same.
+	Option -D instructs syslogd to drop consecutive messages
+	which are totally the same.
 
 config BUSYBOX_CONFIG_FEATURE_SYSLOGD_CFG
 	bool "Support syslog.conf"
 	default BUSYBOX_DEFAULT_FEATURE_SYSLOGD_CFG
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
-	  Supports restricted syslogd config. See docs/syslog.conf.txt
+	Supports restricted syslogd config. See docs/syslog.conf.txt
 
 config BUSYBOX_CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE
 	int "Read buffer size in bytes"
@@ -122,23 +122,23 @@ config BUSYBOX_CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE
 	range 256 20000
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
-	  This option sets the size of the syslog read buffer.
-	  Actual memory usage increases around five times the
-	  change done here.
+	This option sets the size of the syslog read buffer.
+	Actual memory usage increases around five times the
+	change done here.
 
 config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
 	bool "Circular Buffer support"
 	default BUSYBOX_DEFAULT_FEATURE_IPC_SYSLOG
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	help
-	  When you enable this feature, the syslogd utility will
-	  use a circular buffer to record system log messages.
-	  When the buffer is filled it will continue to overwrite
-	  the oldest messages. This can be very useful for
-	  systems with little or no permanent storage, since
-	  otherwise system logs can eventually fill up your
-	  entire filesystem, which may cause your system to
-	  break badly.
+	When you enable this feature, the syslogd utility will
+	use a circular buffer to record system log messages.
+	When the buffer is filled it will continue to overwrite
+	the oldest messages. This can be very useful for
+	systems with little or no permanent storage, since
+	otherwise system logs can eventually fill up your
+	entire filesystem, which may cause your system to
+	break badly.
 
 config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
 	int "Circular buffer size in Kbytes (minimum 4KB)"
@@ -146,8 +146,8 @@ config BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE
 	range 4 2147483647
 	depends on BUSYBOX_CONFIG_FEATURE_IPC_SYSLOG
 	help
-	  This option sets the size of the circular buffer
-	  used to record system log messages.
+	This option sets the size of the circular buffer
+	used to record system log messages.
 
 config BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
 	bool "Linux kernel printk buffer support"
@@ -155,11 +155,11 @@ config BUSYBOX_CONFIG_FEATURE_KMSG_SYSLOG
 	depends on BUSYBOX_CONFIG_SYSLOGD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  When you enable this feature, the syslogd utility will
-	  write system log message to the Linux kernel's printk buffer.
-	  This can be used as a smaller alternative to the syslogd IPC
-	  support, as klogd and logread aren't needed.
+	When you enable this feature, the syslogd utility will
+	write system log message to the Linux kernel's printk buffer.
+	This can be used as a smaller alternative to the syslogd IPC
+	support, as klogd and logread aren't needed.
 
-	  NOTICE: Syslog facilities in log entries needs kernel 3.5+.
+	NOTICE: Syslog facilities in log entries needs kernel 3.5+.
 
 endmenu
diff --git a/package/utils/busybox/config/util-linux/Config.in b/package/utils/busybox/config/util-linux/Config.in
index 9ce25e00ef..28b66fc818 100644
--- a/package/utils/busybox/config/util-linux/Config.in
+++ b/package/utils/busybox/config/util-linux/Config.in
@@ -11,89 +11,89 @@ config BUSYBOX_CONFIG_ACPID
 	default BUSYBOX_DEFAULT_ACPID
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  acpid listens to ACPI events coming either in textual form from
-	  /proc/acpi/event (though it is marked deprecated it is still widely
-	  used and _is_ a standard) or in binary form from specified evdevs
-	  (just use /dev/input/event*).
+	acpid listens to ACPI events coming either in textual form from
+	/proc/acpi/event (though it is marked deprecated it is still widely
+	used and _is_ a standard) or in binary form from specified evdevs
+	(just use /dev/input/event*).
 
-	  It parses the event to retrieve ACTION and a possible PARAMETER.
-	  It then spawns /etc/acpi/<ACTION>[/<PARAMETER>] either via run-parts
-	  (if the resulting path is a directory) or directly as an executable.
+	It parses the event to retrieve ACTION and a possible PARAMETER.
+	It then spawns /etc/acpi/<ACTION>[/<PARAMETER>] either via run-parts
+	(if the resulting path is a directory) or directly as an executable.
 
-	  N.B. acpid relies on run-parts so have the latter installed.
+	N.B. acpid relies on run-parts so have the latter installed.
 
 config BUSYBOX_CONFIG_FEATURE_ACPID_COMPAT
 	bool "Accept and ignore redundant options"
 	default BUSYBOX_DEFAULT_FEATURE_ACPID_COMPAT
 	depends on BUSYBOX_CONFIG_ACPID
 	help
-	  Accept and ignore compatibility options -g -m -s -S -v.
+	Accept and ignore compatibility options -g -m -s -S -v.
 config BUSYBOX_CONFIG_BLKDISCARD
 	bool "blkdiscard"
 	default BUSYBOX_DEFAULT_BLKDISCARD
 	help
-	  blkdiscard discards sectors on a given device.
+	blkdiscard discards sectors on a given device.
 config BUSYBOX_CONFIG_BLKID
 	bool "blkid"
 	default BUSYBOX_DEFAULT_BLKID
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
-	  Lists labels and UUIDs of all filesystems.
-	  WARNING:
-	  With all submodules selected, it will add ~8k to busybox.
+	Lists labels and UUIDs of all filesystems.
+	WARNING:
+	With all submodules selected, it will add ~8k to busybox.
 
 config BUSYBOX_CONFIG_FEATURE_BLKID_TYPE
 	bool "Print filesystem type"
 	default BUSYBOX_DEFAULT_FEATURE_BLKID_TYPE
 	depends on BUSYBOX_CONFIG_BLKID
 	help
-	  Show TYPE="filesystem type"
+	Show TYPE="filesystem type"
 config BUSYBOX_CONFIG_BLOCKDEV
 	bool "blockdev"
 	default BUSYBOX_DEFAULT_BLOCKDEV
 	help
-	  Performs some ioctls with block devices.
+	Performs some ioctls with block devices.
 config BUSYBOX_CONFIG_CAL
 	bool "cal"
 	default BUSYBOX_DEFAULT_CAL
 	help
-	  cal is used to display a monthly calendar.
+	cal is used to display a monthly calendar.
 config BUSYBOX_CONFIG_CHRT
 	bool "chrt"
 	default BUSYBOX_DEFAULT_CHRT
 	help
-	  manipulate real-time attributes of a process.
-	  This requires sched_{g,s}etparam support in your libc.
+	manipulate real-time attributes of a process.
+	This requires sched_{g,s}etparam support in your libc.
 config BUSYBOX_CONFIG_DMESG
 	bool "dmesg"
 	default BUSYBOX_DEFAULT_DMESG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  dmesg is used to examine or control the kernel ring buffer. When the
-	  Linux kernel prints messages to the system log, they are stored in
-	  the kernel ring buffer. You can use dmesg to print the kernel's ring
-	  buffer, clear the kernel ring buffer, change the size of the kernel
-	  ring buffer, and change the priority level at which kernel messages
-	  are also logged to the system console. Enable this option if you
-	  wish to enable the 'dmesg' utility.
+	dmesg is used to examine or control the kernel ring buffer. When the
+	Linux kernel prints messages to the system log, they are stored in
+	the kernel ring buffer. You can use dmesg to print the kernel's ring
+	buffer, clear the kernel ring buffer, change the size of the kernel
+	ring buffer, and change the priority level at which kernel messages
+	are also logged to the system console. Enable this option if you
+	wish to enable the 'dmesg' utility.
 
 config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
 	bool "Pretty output"
 	default BUSYBOX_DEFAULT_FEATURE_DMESG_PRETTY
 	depends on BUSYBOX_CONFIG_DMESG
 	help
-	  If you wish to scrub the syslog level from the output, say 'Y' here.
-	  The syslog level is a string prefixed to every line with the form
-	  "<#>".
+	If you wish to scrub the syslog level from the output, say 'Y' here.
+	The syslog level is a string prefixed to every line with the form
+	"<#>".
 
-	  With this option you will see:
+	With this option you will see:
 	    # dmesg
 	    Linux version 2.6.17.4 .....
 	    BIOS-provided physical RAM map:
 	     BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
 
-	  Without this option you will see:
+	Without this option you will see:
 	    # dmesg
 	    <5>Linux version 2.6.17.4 .....
 	    <6>BIOS-provided physical RAM map:
@@ -103,69 +103,69 @@ config BUSYBOX_CONFIG_EJECT
 	default BUSYBOX_DEFAULT_EJECT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Used to eject cdroms. (defaults to /dev/cdrom)
+	Used to eject cdroms. (defaults to /dev/cdrom)
 
 config BUSYBOX_CONFIG_FEATURE_EJECT_SCSI
 	bool "SCSI support"
 	default BUSYBOX_DEFAULT_FEATURE_EJECT_SCSI
 	depends on BUSYBOX_CONFIG_EJECT
 	help
-	  Add the -s option to eject, this allows to eject SCSI-Devices and
-	  usb-storage devices.
+	Add the -s option to eject, this allows to eject SCSI-Devices and
+	usb-storage devices.
 config BUSYBOX_CONFIG_FALLOCATE
 	bool "fallocate"
 	default BUSYBOX_DEFAULT_FALLOCATE
 	help
-	  Preallocate space for files.
+	Preallocate space for files.
 config BUSYBOX_CONFIG_FATATTR
 	bool "fatattr"
 	default BUSYBOX_DEFAULT_FATATTR
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  fatattr lists or changes the file attributes on a fat file system.
+	fatattr lists or changes the file attributes on a fat file system.
 config BUSYBOX_CONFIG_FBSET
 	bool "fbset"
 	default BUSYBOX_DEFAULT_FBSET
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  fbset is used to show or change the settings of a Linux frame buffer
-	  device. The frame buffer device provides a simple and unique
-	  interface to access a graphics display. Enable this option
-	  if you wish to enable the 'fbset' utility.
+	fbset is used to show or change the settings of a Linux frame buffer
+	device. The frame buffer device provides a simple and unique
+	interface to access a graphics display. Enable this option
+	if you wish to enable the 'fbset' utility.
 
 config BUSYBOX_CONFIG_FEATURE_FBSET_FANCY
 	bool "Enable extra options"
 	default BUSYBOX_DEFAULT_FEATURE_FBSET_FANCY
 	depends on BUSYBOX_CONFIG_FBSET
 	help
-	  This option enables extended fbset options, allowing one to set the
-	  framebuffer size, color depth, etc. interface to access a graphics
-	  display. Enable this option if you wish to enable extended fbset
-	  options.
+	This option enables extended fbset options, allowing one to set the
+	framebuffer size, color depth, etc. interface to access a graphics
+	display. Enable this option if you wish to enable extended fbset
+	options.
 
 config BUSYBOX_CONFIG_FEATURE_FBSET_READMODE
 	bool "Enable readmode support"
 	default BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE
 	depends on BUSYBOX_CONFIG_FBSET
 	help
-	  This option allows fbset to read the video mode database stored by
-	  default BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE /etc/fb.modes, which can be used to set frame buffer
-	  device to pre-defined video modes.
+	This option allows fbset to read the video mode database stored by
+	default BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE /etc/fb.modes, which can be used to set frame buffer
+	device to pre-defined video modes.
 config BUSYBOX_CONFIG_FDFORMAT
 	bool "fdformat"
 	default BUSYBOX_DEFAULT_FDFORMAT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  fdformat is used to low-level format a floppy disk.
+	fdformat is used to low-level format a floppy disk.
 config BUSYBOX_CONFIG_FDISK
 	bool "fdisk"
 	default BUSYBOX_DEFAULT_FDISK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The fdisk utility is used to divide hard disks into one or more
-	  logical disks, which are generally called partitions. This utility
-	  can be used to list and edit the set of partitions or BSD style
-	  'disk slices' that are defined on a hard drive.
+	The fdisk utility is used to divide hard disks into one or more
+	logical disks, which are generally called partitions. This utility
+	can be used to list and edit the set of partitions or BSD style
+	'disk slices' that are defined on a hard drive.
 
 config BUSYBOX_CONFIG_FDISK_SUPPORT_LARGE_DISKS
 	bool "Support over 4GB disks"
@@ -178,174 +178,174 @@ config BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	default BUSYBOX_DEFAULT_FEATURE_FDISK_WRITABLE
 	depends on BUSYBOX_CONFIG_FDISK
 	help
-	  Enabling this option allows you to create or change a partition table
-	  and write those changes out to disk. If you leave this option
-	  disabled, you will only be able to view the partition table.
+	Enabling this option allows you to create or change a partition table
+	and write those changes out to disk. If you leave this option
+	disabled, you will only be able to view the partition table.
 
 config BUSYBOX_CONFIG_FEATURE_AIX_LABEL
 	bool "Support AIX disklabels"
 	default BUSYBOX_DEFAULT_FEATURE_AIX_LABEL
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
-	  Enabling this option allows you to create or change AIX disklabels.
-	  Most people can safely leave this option disabled.
+	Enabling this option allows you to create or change AIX disklabels.
+	Most people can safely leave this option disabled.
 
 config BUSYBOX_CONFIG_FEATURE_SGI_LABEL
 	bool "Support SGI disklabels"
 	default BUSYBOX_DEFAULT_FEATURE_SGI_LABEL
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
-	  Enabling this option allows you to create or change SGI disklabels.
-	  Most people can safely leave this option disabled.
+	Enabling this option allows you to create or change SGI disklabels.
+	Most people can safely leave this option disabled.
 
 config BUSYBOX_CONFIG_FEATURE_SUN_LABEL
 	bool "Support SUN disklabels"
 	default BUSYBOX_DEFAULT_FEATURE_SUN_LABEL
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
-	  Enabling this option allows you to create or change SUN disklabels.
-	  Most people can safely leave this option disabled.
+	Enabling this option allows you to create or change SUN disklabels.
+	Most people can safely leave this option disabled.
 
 config BUSYBOX_CONFIG_FEATURE_OSF_LABEL
 	bool "Support BSD disklabels"
 	default BUSYBOX_DEFAULT_FEATURE_OSF_LABEL
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
-	  Enabling this option allows you to create or change BSD disklabels
-	  and define and edit BSD disk slices.
+	Enabling this option allows you to create or change BSD disklabels
+	and define and edit BSD disk slices.
 
 config BUSYBOX_CONFIG_FEATURE_GPT_LABEL
 	bool "Support GPT disklabels"
 	default BUSYBOX_DEFAULT_FEATURE_GPT_LABEL
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
-	  Enabling this option allows you to view GUID Partition Table
-	  disklabels.
+	Enabling this option allows you to view GUID Partition Table
+	disklabels.
 
 config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
 	bool "Support expert mode"
 	default BUSYBOX_DEFAULT_FEATURE_FDISK_ADVANCED
 	depends on BUSYBOX_CONFIG_FDISK && BUSYBOX_CONFIG_FEATURE_FDISK_WRITABLE
 	help
-	  Enabling this option allows you to do terribly unsafe things like
-	  define arbitrary drive geometry, move the beginning of data in a
-	  partition, and similarly evil things. Unless you have a very good
-	  reason you would be wise to leave this disabled.
+	Enabling this option allows you to do terribly unsafe things like
+	define arbitrary drive geometry, move the beginning of data in a
+	partition, and similarly evil things. Unless you have a very good
+	reason you would be wise to leave this disabled.
 config BUSYBOX_CONFIG_FINDFS
 	bool "findfs"
 	default BUSYBOX_DEFAULT_FINDFS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
-	  Prints the name of a filesystem with given label or UUID.
-	  WARNING:
-	  With all submodules selected, it will add ~8k to busybox.
+	Prints the name of a filesystem with given label or UUID.
+	WARNING:
+	With all submodules selected, it will add ~8k to busybox.
 config BUSYBOX_CONFIG_FLOCK
 	bool "flock"
 	default BUSYBOX_DEFAULT_FLOCK
 	help
-	  Manage locks from shell scripts
+	Manage locks from shell scripts
 config BUSYBOX_CONFIG_FDFLUSH
 	bool "fdflush"
 	default BUSYBOX_DEFAULT_FDFLUSH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  fdflush is only needed when changing media on slightly-broken
-	  removable media drives. It is used to make Linux believe that a
-	  hardware disk-change switch has been actuated, which causes Linux to
-	  forget anything it has cached from the previous media. If you have
-	  such a slightly-broken drive, you will need to run fdflush every time
-	  you change a disk. Most people have working hardware and can safely
-	  leave this disabled.
+	fdflush is only needed when changing media on slightly-broken
+	removable media drives. It is used to make Linux believe that a
+	hardware disk-change switch has been actuated, which causes Linux to
+	forget anything it has cached from the previous media. If you have
+	such a slightly-broken drive, you will need to run fdflush every time
+	you change a disk. Most people have working hardware and can safely
+	leave this disabled.
 
 config BUSYBOX_CONFIG_FREERAMDISK
 	bool "freeramdisk"
 	default BUSYBOX_DEFAULT_FREERAMDISK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Linux allows you to create ramdisks. This utility allows you to
-	  delete them and completely free all memory that was used for the
-	  ramdisk. For example, if you boot Linux into a ramdisk and later
-	  pivot_root, you may want to free the memory that is allocated to the
-	  ramdisk. If you have no use for freeing memory from a ramdisk, leave
-	  this disabled.
+	Linux allows you to create ramdisks. This utility allows you to
+	delete them and completely free all memory that was used for the
+	ramdisk. For example, if you boot Linux into a ramdisk and later
+	pivot_root, you may want to free the memory that is allocated to the
+	ramdisk. If you have no use for freeing memory from a ramdisk, leave
+	this disabled.
 config BUSYBOX_CONFIG_FSCK_MINIX
 	bool "fsck_minix"
 	default BUSYBOX_DEFAULT_FSCK_MINIX
 	help
-	  The minix filesystem is a nice, small, compact, read-write filesystem
-	  with little overhead. It is not a journaling filesystem however and
-	  can experience corruption if it is not properly unmounted or if the
-	  power goes off in the middle of a write. This utility allows you to
-	  check for and attempt to repair any corruption that occurs to a minix
-	  filesystem.
+	The minix filesystem is a nice, small, compact, read-write filesystem
+	with little overhead. It is not a journaling filesystem however and
+	can experience corruption if it is not properly unmounted or if the
+	power goes off in the middle of a write. This utility allows you to
+	check for and attempt to repair any corruption that occurs to a minix
+	filesystem.
 config BUSYBOX_CONFIG_FSFREEZE
 	bool "fsfreeze"
 	default BUSYBOX_DEFAULT_FSFREEZE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  Halt new accesses and flush writes on a mounted filesystem.
+	Halt new accesses and flush writes on a mounted filesystem.
 config BUSYBOX_CONFIG_FSTRIM
 	bool "fstrim"
 	default BUSYBOX_DEFAULT_FSTRIM
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Discard unused blocks on a mounted filesystem.
+	Discard unused blocks on a mounted filesystem.
 config BUSYBOX_CONFIG_GETOPT
 	bool "getopt"
 	default BUSYBOX_DEFAULT_GETOPT
 	help
-	  The getopt utility is used to break up (parse) options in command
-	  lines to make it easy to write complex shell scripts that also check
-	  for legal (and illegal) options. If you want to write horribly
-	  complex shell scripts, or use some horribly complex shell script
-	  written by others, this utility may be for you. Most people will
-	  wisely leave this disabled.
+	The getopt utility is used to break up (parse) options in command
+	lines to make it easy to write complex shell scripts that also check
+	for legal (and illegal) options. If you want to write horribly
+	complex shell scripts, or use some horribly complex shell script
+	written by others, this utility may be for you. Most people will
+	wisely leave this disabled.
 
 config BUSYBOX_CONFIG_FEATURE_GETOPT_LONG
 	bool "Support option -l"
 	default BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG if BUSYBOX_CONFIG_LONG_OPTS
 	depends on BUSYBOX_CONFIG_GETOPT
 	help
-	  Enable support for long options (option -l).
+	Enable support for long options (option -l).
 config BUSYBOX_CONFIG_HEXDUMP
 	bool "hexdump"
 	default BUSYBOX_DEFAULT_HEXDUMP
 	help
-	  The hexdump utility is used to display binary data in a readable
-	  way that is comparable to the output from most hex editors.
+	The hexdump utility is used to display binary data in a readable
+	way that is comparable to the output from most hex editors.
 
 config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE
 	bool "Support -R, reverse of 'hexdump -Cv'"
 	default BUSYBOX_DEFAULT_FEATURE_HEXDUMP_REVERSE
 	depends on BUSYBOX_CONFIG_HEXDUMP
 	help
-	  The hexdump utility is used to display binary data in an ascii
-	  readable way. This option creates binary data from an ascii input.
-	  NB: this option is non-standard. It's unwise to use it in scripts
-	  aimed to be portable.
+	The hexdump utility is used to display binary data in an ascii
+	readable way. This option creates binary data from an ascii input.
+	NB: this option is non-standard. It's unwise to use it in scripts
+	aimed to be portable.
 
 config BUSYBOX_CONFIG_HD
 	bool "hd"
 	default BUSYBOX_DEFAULT_HD
 	help
-	  hd is an alias to hexdump -C.
+	hd is an alias to hexdump -C.
 config BUSYBOX_CONFIG_XXD
 	bool "xxd"
 	default BUSYBOX_DEFAULT_XXD
 	help
-	  The xxd utility is used to display binary data in a readable
-	  way that is comparable to the output from most hex editors.
+	The xxd utility is used to display binary data in a readable
+	way that is comparable to the output from most hex editors.
 config BUSYBOX_CONFIG_HWCLOCK
 	bool "hwclock"
 	default BUSYBOX_DEFAULT_HWCLOCK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The hwclock utility is used to read and set the hardware clock
-	  on a system. This is primarily used to set the current time on
-	  shutdown in the hardware clock, so the hardware will keep the
-	  correct time when Linux is _not_ running.
+	The hwclock utility is used to read and set the hardware clock
+	on a system. This is primarily used to set the current time on
+	shutdown in the hardware clock, so the hardware will keep the
+	correct time when Linux is _not_ running.
 
 config BUSYBOX_CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS
 	bool "Support long options (--hctosys,...)"
@@ -357,265 +357,265 @@ config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
 	default BUSYBOX_DEFAULT_FEATURE_HWCLOCK_ADJTIME_FHS  # util-linux-ng in Fedora 13 still uses /etc/adjtime
 	depends on BUSYBOX_CONFIG_HWCLOCK
 	help
-	  Starting with FHS 2.3, the adjtime state file is supposed to exist
-	  at /var/lib/hwclock/adjtime instead of /etc/adjtime. If you wish
-	  to use the FHS behavior, answer Y here, otherwise answer N for the
-	  classic /etc/adjtime path.
+	Starting with FHS 2.3, the adjtime state file is supposed to exist
+	at /var/lib/hwclock/adjtime instead of /etc/adjtime. If you wish
+	to use the FHS behavior, answer Y here, otherwise answer N for the
+	classic /etc/adjtime path.
 
-	  pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO
+	pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO
 config BUSYBOX_CONFIG_IONICE
 	bool "ionice"
 	default BUSYBOX_DEFAULT_IONICE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Set/set program io scheduling class and priority
-	  Requires kernel >= 2.6.13
+	Set/set program io scheduling class and priority
+	Requires kernel >= 2.6.13
 config BUSYBOX_CONFIG_IPCRM
 	bool "ipcrm"
 	default BUSYBOX_DEFAULT_IPCRM
 	help
-	  The ipcrm utility allows the removal of System V interprocess
-	  communication (IPC) objects and the associated data structures
-	  from the system.
+	The ipcrm utility allows the removal of System V interprocess
+	communication (IPC) objects and the associated data structures
+	from the system.
 config BUSYBOX_CONFIG_IPCS
 	bool "ipcs"
 	default BUSYBOX_DEFAULT_IPCS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The ipcs utility is used to provide information on the currently
-	  allocated System V interprocess (IPC) objects in the system.
+	The ipcs utility is used to provide information on the currently
+	allocated System V interprocess (IPC) objects in the system.
 config BUSYBOX_CONFIG_LAST
 	bool "last"
 	default BUSYBOX_DEFAULT_LAST
 	depends on BUSYBOX_CONFIG_FEATURE_WTMP
 	help
-	  'last' displays a list of the last users that logged into the system.
+	'last' displays a list of the last users that logged into the system.
 
 config BUSYBOX_CONFIG_FEATURE_LAST_FANCY
 	bool "Output extra information"
 	default BUSYBOX_DEFAULT_FEATURE_LAST_FANCY
 	depends on BUSYBOX_CONFIG_LAST
 	help
-	  'last' displays detailed information about the last users that
-	  logged into the system (mimics sysvinit last). +900 bytes.
+	'last' displays detailed information about the last users that
+	logged into the system (mimics sysvinit last). +900 bytes.
 config BUSYBOX_CONFIG_LOSETUP
 	bool "losetup"
 	default BUSYBOX_DEFAULT_LOSETUP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  losetup is used to associate or detach a loop device with a regular
-	  file or block device, and to query the status of a loop device. This
-	  version does not currently support enabling data encryption.
+	losetup is used to associate or detach a loop device with a regular
+	file or block device, and to query the status of a loop device. This
+	version does not currently support enabling data encryption.
 config BUSYBOX_CONFIG_LSPCI
 	bool "lspci"
 	default BUSYBOX_DEFAULT_LSPCI
 	#select PLATFORM_LINUX
 	help
-	  lspci is a utility for displaying information about PCI buses in the
-	  system and devices connected to them.
+	lspci is a utility for displaying information about PCI buses in the
+	system and devices connected to them.
 
-	  This version uses sysfs (/sys/bus/pci/devices) only.
+	This version uses sysfs (/sys/bus/pci/devices) only.
 config BUSYBOX_CONFIG_LSUSB
 	bool "lsusb"
 	default BUSYBOX_DEFAULT_LSUSB
 	#select PLATFORM_LINUX
 	help
-	  lsusb is a utility for displaying information about USB buses in the
-	  system and devices connected to them.
+	lsusb is a utility for displaying information about USB buses in the
+	system and devices connected to them.
 
-	  This version uses sysfs (/sys/bus/usb/devices) only.
+	This version uses sysfs (/sys/bus/usb/devices) only.
 config BUSYBOX_CONFIG_MDEV
 	bool "mdev"
 	default BUSYBOX_DEFAULT_MDEV
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  mdev is a mini-udev implementation for dynamically creating device
-	  nodes in the /dev directory.
+	mdev is a mini-udev implementation for dynamically creating device
+	nodes in the /dev directory.
 
-	  For more information, please see docs/mdev.txt
+	For more information, please see docs/mdev.txt
 
 config BUSYBOX_CONFIG_FEATURE_MDEV_CONF
 	bool "Support /etc/mdev.conf"
 	default BUSYBOX_DEFAULT_FEATURE_MDEV_CONF
 	depends on BUSYBOX_CONFIG_MDEV
 	help
-	  Add support for the mdev config file to control ownership and
-	  permissions of the device nodes.
+	Add support for the mdev config file to control ownership and
+	permissions of the device nodes.
 
-	  For more information, please see docs/mdev.txt
+	For more information, please see docs/mdev.txt
 
 config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
 	bool "Support subdirs/symlinks"
 	default BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME
 	depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
 	help
-	  Add support for renaming devices and creating symlinks.
+	Add support for renaming devices and creating symlinks.
 
-	  For more information, please see docs/mdev.txt
+	For more information, please see docs/mdev.txt
 
 config BUSYBOX_CONFIG_FEATURE_MDEV_RENAME_REGEXP
 	bool "Support regular expressions substitutions when renaming device"
 	default BUSYBOX_DEFAULT_FEATURE_MDEV_RENAME_REGEXP
 	depends on BUSYBOX_CONFIG_FEATURE_MDEV_RENAME
 	help
-	  Add support for regular expressions substitutions when renaming
-	  device.
+	Add support for regular expressions substitutions when renaming
+	device.
 
 config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
 	bool "Support command execution at device addition/removal"
 	default BUSYBOX_DEFAULT_FEATURE_MDEV_EXEC
 	depends on BUSYBOX_CONFIG_FEATURE_MDEV_CONF
 	help
-	  This adds support for an optional field to /etc/mdev.conf for
-	  executing commands when devices are created/removed.
+	This adds support for an optional field to /etc/mdev.conf for
+	executing commands when devices are created/removed.
 
-	  For more information, please see docs/mdev.txt
+	For more information, please see docs/mdev.txt
 
 config BUSYBOX_CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
 	bool "Support loading of firmwares"
 	default BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE
 	depends on BUSYBOX_CONFIG_MDEV
 	help
-	  Some devices need to load firmware before they can be usable.
+	Some devices need to load firmware before they can be usable.
 
-	  These devices will request userspace look up the files in
-	  /lib/firmware/ and if it exists, send it to the kernel for
-	  loading into the hardware.
+	These devices will request userspace look up the files in
+	/lib/firmware/ and if it exists, send it to the kernel for
+	loading into the hardware.
 config BUSYBOX_CONFIG_MESG
 	bool "mesg"
 	default BUSYBOX_DEFAULT_MESG
 	help
-	  Mesg controls access to your terminal by others. It is typically
-	  used to allow or disallow other users to write to your terminal
+	Mesg controls access to your terminal by others. It is typically
+	used to allow or disallow other users to write to your terminal
 
 config BUSYBOX_CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP
 	bool "Enable writing to tty only by group, not by everybody"
 	default BUSYBOX_DEFAULT_FEATURE_MESG_ENABLE_ONLY_GROUP
 	depends on BUSYBOX_CONFIG_MESG
 	help
-	  Usually, ttys are owned by group "tty", and "write" tool is
-	  setgid to this group. This way, "mesg y" only needs to enable
-	  "write by owning group" bit in tty mode.
+	Usually, ttys are owned by group "tty", and "write" tool is
+	setgid to this group. This way, "mesg y" only needs to enable
+	"write by owning group" bit in tty mode.
 
-	  If you set this option to N, "mesg y" will enable writing
-	  by anybody at all. This is not recommended.
+	If you set this option to N, "mesg y" will enable writing
+	by anybody at all. This is not recommended.
 config BUSYBOX_CONFIG_MKE2FS
 	bool "mke2fs"
 	default BUSYBOX_DEFAULT_MKE2FS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Utility to create EXT2 filesystems.
+	Utility to create EXT2 filesystems.
 
 config BUSYBOX_CONFIG_MKFS_EXT2
 	bool "mkfs.ext2"
 	default BUSYBOX_DEFAULT_MKFS_EXT2
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Alias to "mke2fs".
+	Alias to "mke2fs".
 config BUSYBOX_CONFIG_MKFS_MINIX
 	bool "mkfs_minix"
 	default BUSYBOX_DEFAULT_MKFS_MINIX
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The minix filesystem is a nice, small, compact, read-write filesystem
-	  with little overhead. If you wish to be able to create minix
-	  filesystems this utility will do the job for you.
+	The minix filesystem is a nice, small, compact, read-write filesystem
+	with little overhead. If you wish to be able to create minix
+	filesystems this utility will do the job for you.
 
 config BUSYBOX_CONFIG_FEATURE_MINIX2
 	bool "Support Minix fs v2 (fsck_minix/mkfs_minix)"
 	default BUSYBOX_DEFAULT_FEATURE_MINIX2
 	depends on BUSYBOX_CONFIG_FSCK_MINIX || BUSYBOX_CONFIG_MKFS_MINIX
 	help
-	  If you wish to be able to create version 2 minix filesystems, enable
-	  this. If you enabled 'mkfs_minix' then you almost certainly want to
-	  be using the version 2 filesystem support.
+	If you wish to be able to create version 2 minix filesystems, enable
+	this. If you enabled 'mkfs_minix' then you almost certainly want to
+	be using the version 2 filesystem support.
 config BUSYBOX_CONFIG_MKFS_REISER
 	bool "mkfs_reiser"
 	default BUSYBOX_DEFAULT_MKFS_REISER
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Utility to create ReiserFS filesystems.
-	  Note: this applet needs a lot of testing and polishing.
+	Utility to create ReiserFS filesystems.
+	Note: this applet needs a lot of testing and polishing.
 config BUSYBOX_CONFIG_MKDOSFS
 	bool "mkdosfs"
 	default BUSYBOX_DEFAULT_MKDOSFS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Utility to create FAT32 filesystems.
+	Utility to create FAT32 filesystems.
 
 config BUSYBOX_CONFIG_MKFS_VFAT
 	bool "mkfs.vfat"
 	default BUSYBOX_DEFAULT_MKFS_VFAT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Alias to "mkdosfs".
+	Alias to "mkdosfs".
 config BUSYBOX_CONFIG_MKSWAP
 	bool "mkswap"
 	default BUSYBOX_DEFAULT_MKSWAP
 	help
-	  The mkswap utility is used to configure a file or disk partition as
-	  Linux swap space. This allows Linux to use the entire file or
-	  partition as if it were additional RAM, which can greatly increase
-	  the capability of low-memory machines. This additional memory is
-	  much slower than real RAM, but can be very helpful at preventing your
-	  applications being killed by the Linux out of memory (OOM) killer.
-	  Once you have created swap space using 'mkswap' you need to enable
-	  the swap space using the 'swapon' utility.
+	The mkswap utility is used to configure a file or disk partition as
+	Linux swap space. This allows Linux to use the entire file or
+	partition as if it were additional RAM, which can greatly increase
+	the capability of low-memory machines. This additional memory is
+	much slower than real RAM, but can be very helpful at preventing your
+	applications being killed by the Linux out of memory (OOM) killer.
+	Once you have created swap space using 'mkswap' you need to enable
+	the swap space using the 'swapon' utility.
 
 config BUSYBOX_CONFIG_FEATURE_MKSWAP_UUID
 	bool "UUID support"
 	default BUSYBOX_DEFAULT_FEATURE_MKSWAP_UUID
 	depends on BUSYBOX_CONFIG_MKSWAP
 	help
-	  Generate swap spaces with universally unique identifiers.
+	Generate swap spaces with universally unique identifiers.
 config BUSYBOX_CONFIG_MORE
 	bool "more"
 	default BUSYBOX_DEFAULT_MORE
 	help
-	  more is a simple utility which allows you to read text one screen
-	  sized page at a time. If you want to read text that is larger than
-	  the screen, and you are using anything faster than a 300 baud modem,
-	  you will probably find this utility very helpful. If you don't have
-	  any need to reading text files, you can leave this disabled.
+	more is a simple utility which allows you to read text one screen
+	sized page at a time. If you want to read text that is larger than
+	the screen, and you are using anything faster than a 300 baud modem,
+	you will probably find this utility very helpful. If you don't have
+	any need to reading text files, you can leave this disabled.
 config BUSYBOX_CONFIG_MOUNT
 	bool "mount"
 	default BUSYBOX_DEFAULT_MOUNT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  All files and filesystems in Unix are arranged into one big directory
-	  tree. The 'mount' utility is used to graft a filesystem onto a
-	  particular part of the tree. A filesystem can either live on a block
-	  device, or it can be accessible over the network, as is the case with
-	  NFS filesystems. Most people using BusyBox will also want to enable
-	  the 'mount' utility.
+	All files and filesystems in Unix are arranged into one big directory
+	tree. The 'mount' utility is used to graft a filesystem onto a
+	particular part of the tree. A filesystem can either live on a block
+	device, or it can be accessible over the network, as is the case with
+	NFS filesystems. Most people using BusyBox will also want to enable
+	the 'mount' utility.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
 	bool "Support option -f"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_FAKE
 	depends on BUSYBOX_CONFIG_MOUNT
 	help
-	  Enable support for faking a file system mount.
+	Enable support for faking a file system mount.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE
 	bool "Support option -v"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_VERBOSE
 	depends on BUSYBOX_CONFIG_MOUNT
 	help
-	  Enable multi-level -v[vv...] verbose messages. Useful if you
-	  debug mount problems and want to see what is exactly passed
-	  to the kernel.
+	Enable multi-level -v[vv...] verbose messages. Useful if you
+	debug mount problems and want to see what is exactly passed
+	to the kernel.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_HELPERS
 	bool "Support mount helpers"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_HELPERS
 	depends on BUSYBOX_CONFIG_MOUNT
 	help
-	  Enable mounting of virtual file systems via external helpers.
-	  E.g. "mount obexfs#-b00.11.22.33.44.55 /mnt" will in effect call
-	  "obexfs -b00.11.22.33.44.55 /mnt"
-	  Also "mount -t sometype [-o opts] fs /mnt" will try
-	  "sometype [-o opts] fs /mnt" if simple mount syscall fails.
-	  The idea is to use such virtual filesystems in /etc/fstab.
+	Enable mounting of virtual file systems via external helpers.
+	E.g. "mount obexfs#-b00.11.22.33.44.55 /mnt" will in effect call
+	"obexfs -b00.11.22.33.44.55 /mnt"
+	Also "mount -t sometype [-o opts] fs /mnt" will try
+	"sometype [-o opts] fs /mnt" if simple mount syscall fails.
+	The idea is to use such virtual filesystems in /etc/fstab.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
 	bool "Support specifying devices by label or UUID"
@@ -623,245 +623,245 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
 	depends on BUSYBOX_CONFIG_MOUNT
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
-	  This allows for specifying a device by label or uuid, rather than by
-	  name. This feature utilizes the same functionality as blkid/findfs.
-	  This also enables label or uuid support for swapon.
+	This allows for specifying a device by label or uuid, rather than by
+	name. This feature utilizes the same functionality as blkid/findfs.
+	This also enables label or uuid support for swapon.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_CIFS
 	bool "Support mounting CIFS/SMB file systems"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_CIFS
 	depends on BUSYBOX_CONFIG_MOUNT
 	help
-	  Enable support for samba mounts.
+	Enable support for samba mounts.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_FLAGS
 	depends on BUSYBOX_CONFIG_MOUNT
 	bool "Support lots of -o flags"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_FLAGS
 	help
-	  Without this, mount only supports ro/rw/remount. With this, it
-	  supports nosuid, suid, dev, nodev, exec, noexec, sync, async, atime,
-	  noatime, diratime, nodiratime, loud, bind, move, shared, slave,
-	  private, unbindable, rshared, rslave, rprivate, and runbindable.
+	Without this, mount only supports ro/rw/remount. With this, it
+	supports nosuid, suid, dev, nodev, exec, noexec, sync, async, atime,
+	noatime, diratime, nodiratime, loud, bind, move, shared, slave,
+	private, unbindable, rshared, rslave, rprivate, and runbindable.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB
 	depends on BUSYBOX_CONFIG_MOUNT
 	bool "Support /etc/fstab and -a"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_FSTAB
 	help
-	  Support mount all and looking for files in /etc/fstab.
+	Support mount all and looking for files in /etc/fstab.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_OTHERTAB
 	depends on BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB
 	bool "Support -T <alt_fstab>"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_OTHERTAB
 	help
-	  Support mount -T (specifying an alternate fstab)
+	Support mount -T (specifying an alternate fstab)
 config BUSYBOX_CONFIG_MOUNTPOINT
 	bool "mountpoint"
 	default BUSYBOX_DEFAULT_MOUNTPOINT
 	help
-	  mountpoint checks if the directory is a mountpoint.
+	mountpoint checks if the directory is a mountpoint.
 config BUSYBOX_CONFIG_NSENTER
 	bool "nsenter"
 	default BUSYBOX_DEFAULT_NSENTER
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Run program with namespaces of other processes.
+	Run program with namespaces of other processes.
 
 config BUSYBOX_CONFIG_FEATURE_NSENTER_LONG_OPTS
 	bool "Enable long options"
 	default BUSYBOX_DEFAULT_FEATURE_NSENTER_LONG_OPTS
 	depends on BUSYBOX_CONFIG_NSENTER && BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  Support long options for the nsenter applet. This makes
-	  the busybox implementation more compatible with upstream.
+	Support long options for the nsenter applet. This makes
+	the busybox implementation more compatible with upstream.
 config BUSYBOX_CONFIG_PIVOT_ROOT
 	bool "pivot_root"
 	default BUSYBOX_DEFAULT_PIVOT_ROOT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The pivot_root utility swaps the mount points for the root filesystem
-	  with some other mounted filesystem. This allows you to do all sorts
-	  of wild and crazy things with your Linux system and is far more
-	  powerful than 'chroot'.
+	The pivot_root utility swaps the mount points for the root filesystem
+	with some other mounted filesystem. This allows you to do all sorts
+	of wild and crazy things with your Linux system and is far more
+	powerful than 'chroot'.
 
-	  Note: This is for initrd in linux 2.4. Under initramfs (introduced
-	  in linux 2.6) use switch_root instead.
+	Note: This is for initrd in linux 2.4. Under initramfs (introduced
+	in linux 2.6) use switch_root instead.
 config BUSYBOX_CONFIG_RDATE
 	bool "rdate"
 	default BUSYBOX_DEFAULT_RDATE
 	help
-	  The rdate utility allows you to synchronize the date and time of your
-	  system clock with the date and time of a remote networked system using
-	  the RFC868 protocol, which is built into the inetd daemon on most
-	  systems.
+	The rdate utility allows you to synchronize the date and time of your
+	system clock with the date and time of a remote networked system using
+	the RFC868 protocol, which is built into the inetd daemon on most
+	systems.
 config BUSYBOX_CONFIG_RDEV
 	bool "rdev"
 	default BUSYBOX_DEFAULT_RDEV
 	help
-	  Print the device node associated with the filesystem mounted at '/'.
+	Print the device node associated with the filesystem mounted at '/'.
 config BUSYBOX_CONFIG_READPROFILE
 	bool "readprofile"
 	default BUSYBOX_DEFAULT_READPROFILE
 	#select PLATFORM_LINUX
 	help
-	  This allows you to parse /proc/profile for basic profiling.
+	This allows you to parse /proc/profile for basic profiling.
 config BUSYBOX_CONFIG_RENICE
 	bool "renice"
 	default BUSYBOX_DEFAULT_RENICE
 	help
-	  Renice alters the scheduling priority of one or more running
-	  processes.
+	Renice alters the scheduling priority of one or more running
+	processes.
 config BUSYBOX_CONFIG_REV
 	bool "rev"
 	default BUSYBOX_DEFAULT_REV
 	help
-	  Reverse lines of a file or files.
+	Reverse lines of a file or files.
 config BUSYBOX_CONFIG_RTCWAKE
 	bool "rtcwake"
 	default BUSYBOX_DEFAULT_RTCWAKE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Enter a system sleep state until specified wakeup time.
+	Enter a system sleep state until specified wakeup time.
 config BUSYBOX_CONFIG_SCRIPT
 	bool "script"
 	default BUSYBOX_DEFAULT_SCRIPT
 	help
-	  The script makes typescript of terminal session.
+	The script makes typescript of terminal session.
 config BUSYBOX_CONFIG_SCRIPTREPLAY
 	bool "scriptreplay"
 	default BUSYBOX_DEFAULT_SCRIPTREPLAY
 	help
-	  This program replays a typescript, using timing information
-	  given by script -t.
+	This program replays a typescript, using timing information
+	given by script -t.
 config BUSYBOX_CONFIG_SETARCH
 	bool "setarch"
 	default BUSYBOX_DEFAULT_SETARCH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The linux32 utility is used to create a 32bit environment for the
-	  specified program (usually a shell). It only makes sense to have
-	  this util on a system that supports both 64bit and 32bit userland
-	  (like amd64/x86, ppc64/ppc, sparc64/sparc, etc...).
+	The linux32 utility is used to create a 32bit environment for the
+	specified program (usually a shell). It only makes sense to have
+	this util on a system that supports both 64bit and 32bit userland
+	(like amd64/x86, ppc64/ppc, sparc64/sparc, etc...).
 
 config BUSYBOX_CONFIG_LINUX32
 	bool "linux32"
 	default BUSYBOX_DEFAULT_LINUX32
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Alias to "setarch linux32".
+	Alias to "setarch linux32".
 
 config BUSYBOX_CONFIG_LINUX64
 	bool "linux64"
 	default BUSYBOX_DEFAULT_LINUX64
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  Alias to "setarch linux64".
+	Alias to "setarch linux64".
 config BUSYBOX_CONFIG_SETPRIV
 	bool "setpriv"
 	default BUSYBOX_DEFAULT_SETPRIV
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  Run a program with different Linux privilege settings.
-	  Requires kernel >= 3.5
+	Run a program with different Linux privilege settings.
+	Requires kernel >= 3.5
 config BUSYBOX_CONFIG_SETSID
 	bool "setsid"
 	default BUSYBOX_DEFAULT_SETSID
 	help
-	  setsid runs a program in a new session
+	setsid runs a program in a new session
 config BUSYBOX_CONFIG_SWAPON
 	bool "swapon"
 	default BUSYBOX_DEFAULT_SWAPON
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This option enables the 'swapon' utility.
-	  Once you have created some swap space using 'mkswap', you also need
-	  to enable your swap space with the 'swapon' utility. The 'swapoff'
-	  utility is used, typically at system shutdown, to disable any swap
-	  space. If you are not using any swap space, you can leave this
-	  option disabled.
+	This option enables the 'swapon' utility.
+	Once you have created some swap space using 'mkswap', you also need
+	to enable your swap space with the 'swapon' utility. The 'swapoff'
+	utility is used, typically at system shutdown, to disable any swap
+	space. If you are not using any swap space, you can leave this
+	option disabled.
 
 config BUSYBOX_CONFIG_FEATURE_SWAPON_DISCARD
 	bool "Support discard option -d"
 	default BUSYBOX_DEFAULT_FEATURE_SWAPON_DISCARD
 	depends on BUSYBOX_CONFIG_SWAPON
 	help
-	  Enable support for discarding swap area blocks at swapon and/or as
-	  the kernel frees them. This option enables both the -d option on
-	  'swapon' and the 'discard' option for swap entries in /etc/fstab.
+	Enable support for discarding swap area blocks at swapon and/or as
+	the kernel frees them. This option enables both the -d option on
+	'swapon' and the 'discard' option for swap entries in /etc/fstab.
 
 config BUSYBOX_CONFIG_FEATURE_SWAPON_PRI
 	bool "Support priority option -p"
 	default BUSYBOX_DEFAULT_FEATURE_SWAPON_PRI
 	depends on BUSYBOX_CONFIG_SWAPON
 	help
-	  Enable support for setting swap device priority in swapon.
+	Enable support for setting swap device priority in swapon.
 
 config BUSYBOX_CONFIG_SWAPOFF
 	bool "swapoff"
 	default BUSYBOX_DEFAULT_SWAPOFF
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  This option enables the 'swapoff' utility.
+	This option enables the 'swapoff' utility.
 config BUSYBOX_CONFIG_SWITCH_ROOT
 	bool "switch_root"
 	default BUSYBOX_DEFAULT_SWITCH_ROOT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  The switch_root utility is used from initramfs to select a new
-	  root device. Under initramfs, you have to use this instead of
-	  pivot_root. (Stop reading here if you don't care why.)
+	The switch_root utility is used from initramfs to select a new
+	root device. Under initramfs, you have to use this instead of
+	pivot_root. (Stop reading here if you don't care why.)
 
-	  Booting with initramfs extracts a gzipped cpio archive into rootfs
-	  (which is a variant of ramfs/tmpfs). Because rootfs can't be moved
-	  or unmounted*, pivot_root will not work from initramfs. Instead,
-	  switch_root deletes everything out of rootfs (including itself),
-	  does a mount --move that overmounts rootfs with the new root, and
-	  then execs the specified init program.
+	Booting with initramfs extracts a gzipped cpio archive into rootfs
+	(which is a variant of ramfs/tmpfs). Because rootfs can't be moved
+	or unmounted*, pivot_root will not work from initramfs. Instead,
+	switch_root deletes everything out of rootfs (including itself),
+	does a mount --move that overmounts rootfs with the new root, and
+	then execs the specified init program.
 
-	  * Because the Linux kernel uses rootfs internally as the starting
-	  and ending point for searching through the kernel's doubly linked
-	  list of active mount points. That's why.
+	* Because the Linux kernel uses rootfs internally as the starting
+	and ending point for searching through the kernel's doubly linked
+	list of active mount points. That's why.
 config BUSYBOX_CONFIG_TASKSET
 	bool "taskset"
 	default BUSYBOX_DEFAULT_TASKSET
 	help
-	  Retrieve or set a processes's CPU affinity.
-	  This requires sched_{g,s}etaffinity support in your libc.
+	Retrieve or set a processes's CPU affinity.
+	This requires sched_{g,s}etaffinity support in your libc.
 
 config BUSYBOX_CONFIG_FEATURE_TASKSET_FANCY
 	bool "Fancy output"
 	default BUSYBOX_DEFAULT_FEATURE_TASKSET_FANCY
 	depends on BUSYBOX_CONFIG_TASKSET
 	help
-	  Needed for machines with more than 32-64 CPUs:
-	  affinity parameter 0xHHHHHHHHHHHHHHHHHHHH can be arbitrarily long
-	  in this case. Otherwise, it is limited to sizeof(long).
+	Needed for machines with more than 32-64 CPUs:
+	affinity parameter 0xHHHHHHHHHHHHHHHHHHHH can be arbitrarily long
+	in this case. Otherwise, it is limited to sizeof(long).
 config BUSYBOX_CONFIG_UEVENT
 	bool "uevent"
 	default BUSYBOX_DEFAULT_UEVENT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  uevent is a netlink listener for kernel uevent notifications
-	  sent via netlink. It is usually used for dynamic device creation.
+	uevent is a netlink listener for kernel uevent notifications
+	sent via netlink. It is usually used for dynamic device creation.
 config BUSYBOX_CONFIG_UMOUNT
 	bool "umount"
 	default BUSYBOX_DEFAULT_UMOUNT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	  When you want to remove a mounted filesystem from its current mount
-	  point, for example when you are shutting down the system, the
-	  'umount' utility is the tool to use. If you enabled the 'mount'
-	  utility, you almost certainly also want to enable 'umount'.
+	When you want to remove a mounted filesystem from its current mount
+	point, for example when you are shutting down the system, the
+	'umount' utility is the tool to use. If you enabled the 'mount'
+	utility, you almost certainly also want to enable 'umount'.
 
 config BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL
 	bool "Support option -a"
 	default BUSYBOX_DEFAULT_FEATURE_UMOUNT_ALL
 	depends on BUSYBOX_CONFIG_UMOUNT
 	help
-	  Support -a option to unmount all currently mounted filesystems.
+	Support -a option to unmount all currently mounted filesystems.
 config BUSYBOX_CONFIG_UNSHARE
 	bool "unshare"
 	default BUSYBOX_DEFAULT_UNSHARE
@@ -869,13 +869,13 @@ config BUSYBOX_CONFIG_UNSHARE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
-	  Run program with some namespaces unshared from parent.
+	Run program with some namespaces unshared from parent.
 config BUSYBOX_CONFIG_WALL
 	bool "wall"
 	default BUSYBOX_DEFAULT_WALL
 	depends on BUSYBOX_CONFIG_FEATURE_UTMP
 	help
-	  Write a message to all users that are logged in.
+	Write a message to all users that are logged in.
 
 comment "Common options for mount/umount"
 	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
@@ -885,29 +885,29 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP
 	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
 	help
-	  Enabling this feature allows automatic mounting of files (containing
-	  filesystem images) via the linux kernel's loopback devices.
-	  The mount command will detect you are trying to mount a file instead
-	  of a block device, and transparently associate the file with a
-	  loopback device. The umount command will also free that loopback
-	  device.
+	Enabling this feature allows automatic mounting of files (containing
+	filesystem images) via the linux kernel's loopback devices.
+	The mount command will detect you are trying to mount a file instead
+	of a block device, and transparently associate the file with a
+	loopback device. The umount command will also free that loopback
+	device.
 
-	  You can still use the 'losetup' utility (to manually associate files
-	  with loop devices) if you need to do something advanced, such as
-	  specify an offset or cryptographic options to the loopback device.
-	  (If you don't want umount to free the loop device, use "umount -D".)
+	You can still use the 'losetup' utility (to manually associate files
+	with loop devices) if you need to do something advanced, such as
+	specify an offset or cryptographic options to the loopback device.
+	(If you don't want umount to free the loop device, use "umount -D".)
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP_CREATE
 	bool "Create new loopback devices if needed"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_LOOP_CREATE
 	depends on BUSYBOX_CONFIG_FEATURE_MOUNT_LOOP
 	help
-	  Linux kernels >= 2.6.24 support unlimited loopback devices. They are
-	  allocated for use when trying to use a loop device. The loop device
-	  must however exist.
+	Linux kernels >= 2.6.24 support unlimited loopback devices. They are
+	allocated for use when trying to use a loop device. The loop device
+	must however exist.
 
-	  This feature lets mount to try to create next /dev/loopN device
-	  if it does not find a free one.
+	This feature lets mount to try to create next /dev/loopN device
+	if it does not find a free one.
 
 config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
 	bool "Support old /etc/mtab file"
@@ -915,23 +915,23 @@ config BUSYBOX_CONFIG_FEATURE_MTAB_SUPPORT
 	depends on BUSYBOX_CONFIG_MOUNT || BUSYBOX_CONFIG_UMOUNT
 	select BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
 	help
-	  Historically, Unix systems kept track of the currently mounted
-	  partitions in the file "/etc/mtab". These days, the kernel exports
-	  the list of currently mounted partitions in "/proc/mounts", rendering
-	  the old mtab file obsolete. (In modern systems, /etc/mtab should be
-	  a symlink to /proc/mounts.)
-
-	  The only reason to have mount maintain an /etc/mtab file itself is if
-	  your stripped-down embedded system does not have a /proc directory.
-	  If you must use this, keep in mind it's inherently brittle (for
-	  example a mount under chroot won't update it), can't handle modern
-	  features like separate per-process filesystem namespaces, requires
-	  that your /etc directory be writable, tends to get easily confused
-	  by --bind or --move mounts, won't update if you rename a directory
-	  that contains a mount point, and so on. (In brief: avoid.)
-
-	  About the only reason to use this is if you've removed /proc from
-	  your kernel.
+	Historically, Unix systems kept track of the currently mounted
+	partitions in the file "/etc/mtab". These days, the kernel exports
+	the list of currently mounted partitions in "/proc/mounts", rendering
+	the old mtab file obsolete. (In modern systems, /etc/mtab should be
+	a symlink to /proc/mounts.)
+
+	The only reason to have mount maintain an /etc/mtab file itself is if
+	your stripped-down embedded system does not have a /proc directory.
+	If you must use this, keep in mind it's inherently brittle (for
+	example a mount under chroot won't update it), can't handle modern
+	features like separate per-process filesystem namespaces, requires
+	that your /etc directory be writable, tends to get easily confused
+	by --bind or --move mounts, won't update if you rename a directory
+	that contains a mount point, and so on. (In brief: avoid.)
+
+	About the only reason to use this is if you've removed /proc from
+	your kernel.
 
 source volume_id/Config.in
 
diff --git a/package/utils/busybox/config/util-linux/volume_id/Config.in b/package/utils/busybox/config/util-linux/volume_id/Config.in
index afbfa4ae5e..bfe724fa66 100644
--- a/package/utils/busybox/config/util-linux/volume_id/Config.in
+++ b/package/utils/busybox/config/util-linux/volume_id/Config.in
@@ -28,9 +28,9 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXFAT
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXFAT
 	depends on BUSYBOX_CONFIG_VOLUMEID
 	help
-	  exFAT (extended FAT) is a proprietary file system designed especially
-	  for flash drives. It has many features from NTFS, but with less
-	  overhead. exFAT is used on most SDXC cards for consumer electronics.
+	exFAT (extended FAT) is a proprietary file system designed especially
+	for flash drives. It has many features from NTFS, but with less
+	overhead. exFAT is used on most SDXC cards for consumer electronics.
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_EXT
 	bool "Ext filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_EXT
@@ -40,10 +40,10 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_F2FS
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_F2FS
 	depends on BUSYBOX_CONFIG_VOLUMEID
 	help
-	  F2FS (aka Flash-Friendly File System) is a log-structured file system,
-	  which is adapted to newer forms of storage. F2FS also remedies some
-	  known issues of the older log structured file systems, such as high
-	  cleaning overhead.
+	F2FS (aka Flash-Friendly File System) is a log-structured file system,
+	which is adapted to newer forms of storage. F2FS also remedies some
+	known issues of the older log structured file systems, such as high
+	cleaning overhead.
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_FAT
 	bool "fat filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_FAT
@@ -77,16 +77,16 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NILFS
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS
 	depends on BUSYBOX_CONFIG_VOLUMEID
 	help
-	  NILFS is a New Implementation of a Log-Structured File System (LFS)
-	  that supports continuous snapshots. This provides features like
-	  versioning of the entire filesystem, restoration of files that
-	  were deleted a few minutes ago. NILFS keeps consistency like
-	  conventional LFS, so it provides quick recovery after system crashes.
+	NILFS is a New Implementation of a Log-Structured File System (LFS)
+	that supports continuous snapshots. This provides features like
+	versioning of the entire filesystem, restoration of files that
+	were deleted a few minutes ago. NILFS keeps consistency like
+	conventional LFS, so it provides quick recovery after system crashes.
 
-	  The possible use of NILFS includes versioning, tamper detection,
-	  SOX compliance logging, and so forth. It can serve as an alternative
-	  filesystem for Linux desktop environment, or as a basis of advanced
-	  storage appliances.
+	The possible use of NILFS includes versioning, tamper detection,
+	SOX compliance logging, and so forth. It can serve as an alternative
+	filesystem for Linux desktop environment, or as a basis of advanced
+	storage appliances.
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NTFS
 	bool "ntfs filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NTFS
@@ -108,10 +108,10 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SQUASHFS
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SQUASHFS
 	depends on BUSYBOX_CONFIG_VOLUMEID && BUSYBOX_CONFIG_FEATURE_BLKID_TYPE
 	help
-	  Squashfs is a compressed read-only filesystem for Linux. Squashfs is
-	  intended for general read-only filesystem use and in constrained block
-	  device/memory systems (e.g. embedded systems) where low overhead is
-	  needed.
+	Squashfs is a compressed read-only filesystem for Linux. Squashfs is
+	intended for general read-only filesystem use and in constrained block
+	device/memory systems (e.g. embedded systems) where low overhead is
+	needed.
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_SYSV
 	bool "sysv filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_SYSV
@@ -121,8 +121,8 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UBIFS
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UBIFS
 	depends on BUSYBOX_CONFIG_VOLUMEID
 	help
-	  UBIFS (Unsorted Block Image File System) is a file
-	  system for use with raw flash memory media.
+	UBIFS (Unsorted Block Image File System) is a file
+	system for use with raw flash memory media.
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
 	bool "udf filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_UDF

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From yszhou4tech at gmail.com  Wed Feb 27 00:44:12 2019
From: yszhou4tech at gmail.com (Yousong Zhou)
Date: Wed, 27 Feb 2019 05:44:12 +0000
Subject: [OpenWrt-Devel] [PATCH 2/2] busybox: sync Config.in files
In-Reply-To: <20190227054412.29935-1-yszhou4tech@gmail.com>
References: <20190227054412.29935-1-yszhou4tech@gmail.com>
Message-ID: <20190227054412.29935-2-yszhou4tech@gmail.com>

The change was made with the following commands

	cd package/utils/busybox/config
	../convert_menuconfig.pl ~/git-repo/openwrt/openwrt/build_dir/target-mips_24kc_musl/busybox-1.30.1

convert_defaults.pl has no changes other than overwriting defaults for
BUSYBOX_DEFAULT_FEATURE_IPV6

Resolves FS#2146

Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
---
 package/utils/busybox/config/Config.in        |   7 +-
 .../utils/busybox/config/archival/Config.in   |  97 +++---
 .../busybox/config/console-tools/Config.in    |  38 ++-
 .../utils/busybox/config/coreutils/Config.in  | 314 +++++++++---------
 .../busybox/config/debianutils/Config.in      |  12 +-
 .../utils/busybox/config/e2fsprogs/Config.in  |  10 +-
 .../utils/busybox/config/editors/Config.in    |  27 +-
 .../utils/busybox/config/findutils/Config.in  |  38 ++-
 package/utils/busybox/config/init/Config.in   |  35 +-
 .../busybox/config/klibc-utils/Config.in      |  43 +++
 package/utils/busybox/config/libbb/Config.in  |  75 +++--
 .../utils/busybox/config/loginutils/Config.in |  62 ++--
 .../utils/busybox/config/mailutils/Config.in  |   8 +-
 .../utils/busybox/config/miscutils/Config.in  | 258 ++++++++++----
 .../utils/busybox/config/modutils/Config.in   |  24 +-
 .../utils/busybox/config/networking/Config.in | 304 ++++++++++-------
 .../busybox/config/networking/udhcp/Config.in | 160 ++++-----
 .../utils/busybox/config/printutils/Config.in |   8 +-
 package/utils/busybox/config/procps/Config.in |  68 ++--
 package/utils/busybox/config/runit/Config.in  |  33 +-
 .../utils/busybox/config/selinux/Config.in    |  36 +-
 package/utils/busybox/config/shell/Config.in  |  93 +++++-
 .../utils/busybox/config/sysklogd/Config.in   |  18 +-
 .../utils/busybox/config/util-linux/Config.in | 262 +++++++++------
 .../config/util-linux/volume_id/Config.in     |  20 +-
 25 files changed, 1225 insertions(+), 825 deletions(-)
 create mode 100644 package/utils/busybox/config/klibc-utils/Config.in

diff --git a/package/utils/busybox/config/Config.in b/package/utils/busybox/config/Config.in
index dc279c520b..74493aa475 100644
--- a/package/utils/busybox/config/Config.in
+++ b/package/utils/busybox/config/Config.in
@@ -8,7 +8,7 @@ config BUSYBOX_CONFIG_HAVE_DOT_CONFIG
 	bool
 	default BUSYBOX_DEFAULT_HAVE_DOT_CONFIG
 
-menu "Busybox Settings"
+menu "Settings"
 
 config BUSYBOX_CONFIG_DESKTOP
 	bool "Enable compatibility for full-blown desktop systems"
@@ -693,16 +693,17 @@ config BUSYBOX_CONFIG_EFENCE
 
 endchoice
 
-endmenu
-
 source libbb/Config.in
 
+endmenu
+
 comment "Applets"
 
 source archival/Config.in
 source coreutils/Config.in
 source console-tools/Config.in
 source debianutils/Config.in
+source klibc-utils/Config.in
 source editors/Config.in
 source findutils/Config.in
 source init/Config.in
diff --git a/package/utils/busybox/config/archival/Config.in b/package/utils/busybox/config/archival/Config.in
index 53e81e0cd9..64e4601a86 100644
--- a/package/utils/busybox/config/archival/Config.in
+++ b/package/utils/busybox/config/archival/Config.in
@@ -1,7 +1,7 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Archival Utilities"
@@ -27,15 +27,13 @@ config BUSYBOX_CONFIG_FEATURE_SEAMLESS_Z
 	default BUSYBOX_DEFAULT_FEATURE_SEAMLESS_Z  # it is ancient
 
 config BUSYBOX_CONFIG_AR
-	bool "ar"
+	bool "ar (9.5 kb)"
 	default BUSYBOX_DEFAULT_AR  # needs to be improved to be able to replace binutils ar
 	help
 	ar is an archival utility program used to create, modify, and
 	extract contents from archives. In practice, it is used exclusively
 	for object module archives used by compilers.
 
-	On an x86 system, the ar applet adds about 1K.
-
 	Unless you have a specific application which requires ar, you should
 	probably say N here: most compilers come with their own ar utility.
 
@@ -56,22 +54,22 @@ config BUSYBOX_CONFIG_FEATURE_AR_CREATE
 	help
 	This enables archive creation (-c and -r) with busybox ar.
 config BUSYBOX_CONFIG_UNCOMPRESS
-	bool "uncompress"
+	bool "uncompress (7.1 kb)"
 	default BUSYBOX_DEFAULT_UNCOMPRESS  # ancient
 	help
 	uncompress is used to decompress archives created by compress.
 	Not much used anymore, replaced by gzip/gunzip.
 config BUSYBOX_CONFIG_GUNZIP
-	bool "gunzip"
+	bool "gunzip (11 kb)"
 	default BUSYBOX_DEFAULT_GUNZIP
 	select BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS
 	help
 	gunzip is used to decompress archives created by gzip.
-	You can use the `-t' option to test the integrity of
+	You can use the '-t' option to test the integrity of
 	an archive, without decompressing it.
 
 config BUSYBOX_CONFIG_ZCAT
-	bool "zcat"
+	bool "zcat (24 kb)"
 	default BUSYBOX_DEFAULT_ZCAT
 	select BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS
 	help
@@ -82,7 +80,7 @@ config BUSYBOX_CONFIG_FEATURE_GUNZIP_LONG_OPTIONS
 	default BUSYBOX_DEFAULT_FEATURE_GUNZIP_LONG_OPTIONS
 	depends on (BUSYBOX_CONFIG_GUNZIP || BUSYBOX_CONFIG_ZCAT) && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_BUNZIP2
-	bool "bunzip2"
+	bool "bunzip2 (8.7 kb)"
 	default BUSYBOX_DEFAULT_BUNZIP2
 	select BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS
 	help
@@ -96,13 +94,13 @@ config BUSYBOX_CONFIG_BUNZIP2
 	should probably say N here.
 
 config BUSYBOX_CONFIG_BZCAT
-	bool "bzcat"
+	bool "bzcat (8.7 kb)"
 	default BUSYBOX_DEFAULT_BZCAT
 	select BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS
 	help
 	Alias to "bunzip2 -c".
 config BUSYBOX_CONFIG_UNLZMA
-	bool "unlzma"
+	bool "unlzma (7.5 kb)"
 	default BUSYBOX_DEFAULT_UNLZMA
 	help
 	unlzma is a compression utility using the Lempel-Ziv-Markov chain
@@ -110,20 +108,11 @@ config BUSYBOX_CONFIG_UNLZMA
 	is generally considerably better than that achieved by the bzip2
 	compressors.
 
-	The BusyBox unlzma applet is limited to decompression only.
-	On an x86 system, this applet adds about 4K.
-
 config BUSYBOX_CONFIG_LZCAT
-	bool "lzcat"
+	bool "lzcat (7.5 kb)"
 	default BUSYBOX_DEFAULT_LZCAT
 	help
-	unlzma is a compression utility using the Lempel-Ziv-Markov chain
-	compression algorithm, and range coding. Compression
-	is generally considerably better than that achieved by the bzip2
-	compressors.
-
-	The BusyBox unlzma applet is limited to decompression only.
-	On an x86 system, this applet adds about 4K.
+	Alias to "unlzma -c".
 
 config BUSYBOX_CONFIG_LZMA
 	bool "lzma -d"
@@ -131,22 +120,14 @@ config BUSYBOX_CONFIG_LZMA
 	help
 	Enable this option if you want commands like "lzma -d" to work.
 	IOW: you'll get lzma applet, but it will always require -d option.
-
-config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
-	bool "Optimize for speed"
-	default BUSYBOX_DEFAULT_FEATURE_LZMA_FAST
-	depends on BUSYBOX_CONFIG_UNLZMA || BUSYBOX_CONFIG_LZCAT || BUSYBOX_CONFIG_LZMA
-	help
-	This option reduces decompression time by about 25% at the cost of
-	a 1K bigger binary.
 config BUSYBOX_CONFIG_UNXZ
-	bool "unxz"
+	bool "unxz (13 kb)"
 	default BUSYBOX_DEFAULT_UNXZ
 	help
 	unxz is a unlzma successor.
 
 config BUSYBOX_CONFIG_XZCAT
-	bool "xzcat"
+	bool "xzcat (13 kb)"
 	default BUSYBOX_DEFAULT_XZCAT
 	help
 	Alias to "unxz -c".
@@ -158,7 +139,7 @@ config BUSYBOX_CONFIG_XZ
 	Enable this option if you want commands like "xz -d" to work.
 	IOW: you'll get xz applet, but it will always require -d option.
 config BUSYBOX_CONFIG_BZIP2
-	bool "bzip2"
+	bool "bzip2 (16 kb)"
 	default BUSYBOX_DEFAULT_BZIP2
 	help
 	bzip2 is a compression utility using the Burrows-Wheeler block
@@ -171,13 +152,21 @@ config BUSYBOX_CONFIG_BZIP2
 	should probably say N here.
 
 config BUSYBOX_CONFIG_BZIP2_SMALL
-	int "Trade size for speed (0:fast 9:slow)"
-	default BUSYBOX_DEFAULT_BZIP2_SMALL
+	int "Trade bytes for speed (0:fast, 9:small)"
+	default BUSYBOX_DEFAULT_BZIP2_SMALL  # all "fast or small" options default to small
 	range 0 9
 	depends on BUSYBOX_CONFIG_BZIP2
 	help
-	0 is faster but larger
-	9 is smaller but slower
+	Trade code size versus speed.
+	Approximate values with gcc-6.3.0 "bzip -9" compressing
+	linux-4.15.tar were:
+	value         time (sec)  code size (386)
+	9 (smallest)       70.11             7687
+	8                  67.93             8091
+	7                  67.88             8405
+	6                  67.78             8624
+	5                  67.05             9427
+	4-0 (fastest)      64.14            12083
 
 config BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS
 	bool "Enable decompression"
@@ -188,7 +177,7 @@ config BUSYBOX_CONFIG_FEATURE_BZIP2_DECOMPRESS
 	This will be automatically selected if bunzip2 or bzcat is
 	enabled.
 config BUSYBOX_CONFIG_CPIO
-	bool "cpio"
+	bool "cpio (15 kb)"
 	default BUSYBOX_DEFAULT_CPIO
 	help
 	cpio is an archival utility program used to create, modify, and
@@ -216,7 +205,7 @@ config BUSYBOX_CONFIG_FEATURE_CPIO_P
 	help
 	Passthrough mode. Rarely used.
 config BUSYBOX_CONFIG_DPKG
-	bool "dpkg"
+	bool "dpkg (43 kb)"
 	default BUSYBOX_DEFAULT_DPKG
 	select BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
 	help
@@ -226,7 +215,7 @@ config BUSYBOX_CONFIG_DPKG
 	This implementation of dpkg has a number of limitations,
 	you should use the official dpkg if possible.
 config BUSYBOX_CONFIG_DPKG_DEB
-	bool "dpkg_deb"
+	bool "dpkg-deb (30 kb)"
 	default BUSYBOX_DEFAULT_DPKG_DEB
 	select BUSYBOX_CONFIG_FEATURE_SEAMLESS_GZ
 	help
@@ -237,7 +226,7 @@ config BUSYBOX_CONFIG_DPKG_DEB
 	Unless you have a specific application which requires dpkg-deb,
 	say N here.
 config BUSYBOX_CONFIG_GZIP
-	bool "gzip"
+	bool "gzip (17 kb)"
 	default BUSYBOX_DEFAULT_GZIP
 	help
 	gzip is used to compress files.
@@ -279,22 +268,22 @@ config BUSYBOX_CONFIG_FEATURE_GZIP_DECOMPRESS
 	This will be automatically selected if gunzip or zcat is
 	enabled.
 config BUSYBOX_CONFIG_LZOP
-	bool "lzop"
+	bool "lzop (12 kb)"
 	default BUSYBOX_DEFAULT_LZOP
 	help
 	Lzop compression/decompresion.
 
 config BUSYBOX_CONFIG_UNLZOP
-	bool "unlzop"
+	bool "unlzop (13 kb)"
 	default BUSYBOX_DEFAULT_UNLZOP  # INCOMPAT: upstream lzop does not provide such tool
 	help
 	Lzop decompresion.
 
 config BUSYBOX_CONFIG_LZOPCAT
-	bool "lzopcat"
+	bool "lzopcat (13 kb)"
 	default BUSYBOX_DEFAULT_LZOPCAT  # INCOMPAT: upstream lzop does not provide such tool
 	help
-	Alias to "unlzop -c".
+	Alias to "lzop -dc".
 
 config BUSYBOX_CONFIG_LZOP_COMPR_HIGH
 	bool "lzop compression levels 7,8,9 (not very useful)"
@@ -305,17 +294,17 @@ config BUSYBOX_CONFIG_LZOP_COMPR_HIGH
 	are actually slower than gzip at equivalent compression ratios
 	and take up 3.2K of code.
 config BUSYBOX_CONFIG_RPM
-	bool "rpm"
+	bool "rpm (32 kb)"
 	default BUSYBOX_DEFAULT_RPM
 	help
 	Mini RPM applet - queries and extracts RPM packages.
 config BUSYBOX_CONFIG_RPM2CPIO
-	bool "rpm2cpio"
+	bool "rpm2cpio (21 kb)"
 	default BUSYBOX_DEFAULT_RPM2CPIO
 	help
 	Converts a RPM file into a CPIO archive.
 config BUSYBOX_CONFIG_TAR
-	bool "tar"
+	bool "tar (39 kb)"
 	default BUSYBOX_DEFAULT_TAR
 	help
 	tar is an archiving program. It's commonly used with gzip to
@@ -341,7 +330,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_AUTODETECT
 	tarballs. Currently it works only on files (not pipes etc).
 
 config BUSYBOX_CONFIG_FEATURE_TAR_FROM
-	bool "Enable -X (exclude from) and -T (include from) options)"
+	bool "Enable -X (exclude from) and -T (include from) options"
 	default BUSYBOX_DEFAULT_FEATURE_TAR_FROM
 	depends on BUSYBOX_CONFIG_TAR
 	help
@@ -403,7 +392,7 @@ config BUSYBOX_CONFIG_FEATURE_TAR_SELINUX
 	With this option busybox supports restoring SELinux labels
 	when extracting files from tar archives.
 config BUSYBOX_CONFIG_UNZIP
-	bool "unzip"
+	bool "unzip (26 kb)"
 	default BUSYBOX_DEFAULT_UNZIP
 	help
 	unzip will list or extract files from a ZIP archive,
@@ -436,4 +425,12 @@ config BUSYBOX_CONFIG_FEATURE_UNZIP_XZ
 	default BUSYBOX_DEFAULT_FEATURE_UNZIP_XZ
 	depends on BUSYBOX_CONFIG_FEATURE_UNZIP_CDF && BUSYBOX_CONFIG_DESKTOP
 
+config BUSYBOX_CONFIG_FEATURE_LZMA_FAST
+	bool "Optimize lzma for speed"
+	default BUSYBOX_DEFAULT_FEATURE_LZMA_FAST
+	depends on BUSYBOX_CONFIG_UNLZMA || BUSYBOX_CONFIG_LZCAT || BUSYBOX_CONFIG_LZMA || BUSYBOX_CONFIG_FEATURE_SEAMLESS_LZMA
+	help
+	This option reduces decompression time by about 25% at the cost of
+	a 1K bigger binary.
+
 endmenu
diff --git a/package/utils/busybox/config/console-tools/Config.in b/package/utils/busybox/config/console-tools/Config.in
index 69815efa57..9f8a257ebe 100644
--- a/package/utils/busybox/config/console-tools/Config.in
+++ b/package/utils/busybox/config/console-tools/Config.in
@@ -1,57 +1,57 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Console Utilities"
 
 config BUSYBOX_CONFIG_CHVT
-	bool "chvt"
+	bool "chvt (2 kb)"
 	default BUSYBOX_DEFAULT_CHVT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program is used to change to another terminal.
 	Example: chvt 4 (change to terminal /dev/tty4)
 config BUSYBOX_CONFIG_CLEAR
-	bool "clear"
+	bool "clear (tiny)"
 	default BUSYBOX_DEFAULT_CLEAR
 	help
 	This program clears the terminal screen.
 config BUSYBOX_CONFIG_DEALLOCVT
-	bool "deallocvt"
+	bool "deallocvt (1.9 kb)"
 	default BUSYBOX_DEFAULT_DEALLOCVT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program deallocates unused virtual consoles.
 config BUSYBOX_CONFIG_DUMPKMAP
-	bool "dumpkmap"
+	bool "dumpkmap (1.6 kb)"
 	default BUSYBOX_DEFAULT_DUMPKMAP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program dumps the kernel's keyboard translation table to
 	stdout, in binary format. You can then use loadkmap to load it.
 config BUSYBOX_CONFIG_FGCONSOLE
-	bool "fgconsole"
+	bool "fgconsole (1.5 kb)"
 	default BUSYBOX_DEFAULT_FGCONSOLE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program prints active (foreground) console number.
 config BUSYBOX_CONFIG_KBD_MODE
-	bool "kbd_mode"
+	bool "kbd_mode (4.1 kb)"
 	default BUSYBOX_DEFAULT_KBD_MODE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program reports and sets keyboard mode.
 config BUSYBOX_CONFIG_LOADFONT
-	bool "loadfont"
+	bool "loadfont (5.2 kb)"
 	default BUSYBOX_DEFAULT_LOADFONT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program loads a console font from standard input.
 
 config BUSYBOX_CONFIG_SETFONT
-	bool "setfont"
+	bool "setfont (24 kb)"
 	default BUSYBOX_DEFAULT_SETFONT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -85,27 +85,27 @@ config BUSYBOX_CONFIG_FEATURE_LOADFONT_RAW
 	default BUSYBOX_DEFAULT_FEATURE_LOADFONT_RAW
 	depends on BUSYBOX_CONFIG_LOADFONT || BUSYBOX_CONFIG_SETFONT
 config BUSYBOX_CONFIG_LOADKMAP
-	bool "loadkmap"
+	bool "loadkmap (1.8 kb)"
 	default BUSYBOX_DEFAULT_LOADKMAP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program loads a keyboard translation table from
 	standard input.
 config BUSYBOX_CONFIG_OPENVT
-	bool "openvt"
+	bool "openvt (7.2 kb)"
 	default BUSYBOX_DEFAULT_OPENVT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program is used to start a command on an unused
 	virtual terminal.
 config BUSYBOX_CONFIG_RESET
-	bool "reset"
+	bool "reset (345 bytes)"
 	default BUSYBOX_DEFAULT_RESET
 	help
 	This program is used to reset the terminal screen, if it
 	gets messed up.
 config BUSYBOX_CONFIG_RESIZE
-	bool "resize"
+	bool "resize (903 bytes)"
 	default BUSYBOX_DEFAULT_RESIZE
 	help
 	This program is used to (re)set the width and height of your current
@@ -121,32 +121,34 @@ config BUSYBOX_CONFIG_FEATURE_RESIZE_PRINT
 	E.g.:
 	COLUMNS=80;LINES=44;export COLUMNS LINES;
 config BUSYBOX_CONFIG_SETCONSOLE
-	bool "setconsole"
+	bool "setconsole (3.6 kb)"
 	default BUSYBOX_DEFAULT_SETCONSOLE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	This program redirects the system console to another device,
+	Redirect writes to /dev/console to another device,
 	like the current tty while logged in via telnet.
+	This does not redirect kernel log, only writes
+	from user space.
 
 config BUSYBOX_CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS
 	bool "Enable long options"
 	default BUSYBOX_DEFAULT_FEATURE_SETCONSOLE_LONG_OPTIONS
 	depends on BUSYBOX_CONFIG_SETCONSOLE && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_SETKEYCODES
-	bool "setkeycodes"
+	bool "setkeycodes (2.1 kb)"
 	default BUSYBOX_DEFAULT_SETKEYCODES
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program loads entries into the kernel's scancode-to-keycode
 	map, allowing unusual keyboards to generate usable keycodes.
 config BUSYBOX_CONFIG_SETLOGCONS
-	bool "setlogcons"
+	bool "setlogcons (1.8 kb)"
 	default BUSYBOX_DEFAULT_SETLOGCONS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	This program redirects the output console of kernel messages.
 config BUSYBOX_CONFIG_SHOWKEY
-	bool "showkey"
+	bool "showkey (4.7 kb)"
 	default BUSYBOX_DEFAULT_SHOWKEY
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
diff --git a/package/utils/busybox/config/coreutils/Config.in b/package/utils/busybox/config/coreutils/Config.in
index 5a36d34204..76e59a571d 100644
--- a/package/utils/busybox/config/coreutils/Config.in
+++ b/package/utils/busybox/config/coreutils/Config.in
@@ -1,25 +1,32 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Coreutils"
 
 config BUSYBOX_CONFIG_BASENAME
-	bool "basename"
+	bool "basename (438 bytes)"
 	default BUSYBOX_DEFAULT_BASENAME
 	help
 	basename is used to strip the directory and suffix from filenames,
 	leaving just the filename itself. Enable this option if you wish
 	to enable the 'basename' utility.
 config BUSYBOX_CONFIG_CAT
-	bool "cat"
+	bool "cat (5.6 kb)"
 	default BUSYBOX_DEFAULT_CAT
 	help
 	cat is used to concatenate files and print them to the standard
 	output. Enable this option if you wish to enable the 'cat' utility.
 
+config BUSYBOX_CONFIG_FEATURE_CATN
+	bool "Enable -n and -b options"
+	default BUSYBOX_DEFAULT_FEATURE_CATN
+	depends on BUSYBOX_CONFIG_CAT
+	help
+	-n numbers all output lines while -b numbers nonempty output lines.
+
 config BUSYBOX_CONFIG_FEATURE_CATV
 	bool "cat -v[etA]"
 	default BUSYBOX_DEFAULT_FEATURE_CATV
@@ -27,17 +34,17 @@ config BUSYBOX_CONFIG_FEATURE_CATV
 	help
 	Display nonprinting characters as escape sequences
 config BUSYBOX_CONFIG_CHGRP
-	bool "chgrp"
+	bool "chgrp (7.6 kb)"
 	default BUSYBOX_DEFAULT_CHGRP
 	help
 	chgrp is used to change the group ownership of files.
 config BUSYBOX_CONFIG_CHMOD
-	bool "chmod"
+	bool "chmod (5.5 kb)"
 	default BUSYBOX_DEFAULT_CHMOD
 	help
 	chmod is used to change the access permission of files.
 config BUSYBOX_CONFIG_CHOWN
-	bool "chown"
+	bool "chown (7.6 kb)"
 	default BUSYBOX_DEFAULT_CHOWN
 	help
 	chown is used to change the user and/or group ownership
@@ -48,24 +55,24 @@ config BUSYBOX_CONFIG_FEATURE_CHOWN_LONG_OPTIONS
 	default BUSYBOX_DEFAULT_FEATURE_CHOWN_LONG_OPTIONS
 	depends on BUSYBOX_CONFIG_CHOWN && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_CHROOT
-	bool "chroot"
+	bool "chroot (3.7 kb)"
 	default BUSYBOX_DEFAULT_CHROOT
 	help
 	chroot is used to change the root directory and run a command.
-	The default command is `/bin/sh'.
+	The default command is '/bin/sh'.
 config BUSYBOX_CONFIG_CKSUM
-	bool "cksum"
+	bool "cksum (4.1 kb)"
 	default BUSYBOX_DEFAULT_CKSUM
 	help
 	cksum is used to calculate the CRC32 checksum of a file.
 config BUSYBOX_CONFIG_COMM
-	bool "comm"
+	bool "comm (4.2 kb)"
 	default BUSYBOX_DEFAULT_COMM
 	help
 	comm is used to compare two files line by line and return
 	a three-column output.
 config BUSYBOX_CONFIG_CP
-	bool "cp"
+	bool "cp (10 kb)"
 	default BUSYBOX_DEFAULT_CP
 	help
 	cp is used to copy files and directories.
@@ -77,14 +84,19 @@ config BUSYBOX_CONFIG_FEATURE_CP_LONG_OPTIONS
 	help
 	Enable long options.
 	Also add support for --parents option.
+
+config BUSYBOX_CONFIG_FEATURE_CP_REFLINK
+	bool "Enable --reflink[=auto]"
+	default BUSYBOX_DEFAULT_FEATURE_CP_REFLINK
+	depends on BUSYBOX_CONFIG_FEATURE_CP_LONG_OPTIONS
 config BUSYBOX_CONFIG_CUT
-	bool "cut"
+	bool "cut (5.8 kb)"
 	default BUSYBOX_DEFAULT_CUT
 	help
 	cut is used to print selected parts of lines from
 	each file to stdout.
 config BUSYBOX_CONFIG_DATE
-	bool "date"
+	bool "date (7 kb)"
 	default BUSYBOX_DEFAULT_DATE
 	help
 	date is used to set the system date or display the
@@ -101,8 +113,8 @@ config BUSYBOX_CONFIG_FEATURE_DATE_ISOFMT
 # defaults to "no": stat's nanosecond field is a bit non-portable
 config BUSYBOX_CONFIG_FEATURE_DATE_NANO
 	bool "Support %[num]N nanosecond format specifier"
-	default BUSYBOX_DEFAULT_FEATURE_DATE_NANO
-	depends on BUSYBOX_CONFIG_DATE  # syscall(__NR_clock_gettime)
+	default BUSYBOX_DEFAULT_FEATURE_DATE_NANO  # syscall(__NR_clock_gettime)
+	depends on BUSYBOX_CONFIG_DATE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Support %[num]N format specifier. Adds ~250 bytes of code.
@@ -123,7 +135,7 @@ config BUSYBOX_CONFIG_FEATURE_DATE_COMPAT
 	the same format. With it on, 'date DATE' additionally supports
 	MMDDhhmm[[YY]YY][.ss] format.
 config BUSYBOX_CONFIG_DD
-	bool "dd"
+	bool "dd (7.5 kb)"
 	default BUSYBOX_DEFAULT_DD
 	help
 	dd copies a file (from standard input to standard output,
@@ -135,7 +147,7 @@ config BUSYBOX_CONFIG_FEATURE_DD_SIGNAL_HANDLING
 	default BUSYBOX_DEFAULT_FEATURE_DD_SIGNAL_HANDLING
 	depends on BUSYBOX_CONFIG_DD
 	help
-	Sending a SIGUSR1 signal to a running `dd' process makes it
+	Sending a SIGUSR1 signal to a running 'dd' process makes it
 	print to standard error the number of records read and written
 	so far, then to resume copying.
 
@@ -153,7 +165,7 @@ config BUSYBOX_CONFIG_FEATURE_DD_THIRD_STATUS_LINE
 	elapsed time and speed.
 
 config BUSYBOX_CONFIG_FEATURE_DD_IBS_OBS
-	bool "Enable ibs, obs and conv options"
+	bool "Enable ibs, obs, iflag, oflag and conv options"
 	default BUSYBOX_DEFAULT_FEATURE_DD_IBS_OBS
 	depends on BUSYBOX_CONFIG_DD
 	help
@@ -167,7 +179,7 @@ config BUSYBOX_CONFIG_FEATURE_DD_STATUS
 	help
 	Enable support for status=noxfer/none option.
 config BUSYBOX_CONFIG_DF
-	bool "df"
+	bool "df (6.8 kb)"
 	default BUSYBOX_DEFAULT_DF
 	help
 	df reports the amount of disk space used and available
@@ -182,42 +194,40 @@ config BUSYBOX_CONFIG_FEATURE_DF_FANCY
 	-i Inodes
 	-B <SIZE> Blocksize
 config BUSYBOX_CONFIG_DIRNAME
-	bool "dirname"
+	bool "dirname (329 bytes)"
 	default BUSYBOX_DEFAULT_DIRNAME
 	help
 	dirname is used to strip a non-directory suffix from
 	a file name.
 config BUSYBOX_CONFIG_DOS2UNIX
-	bool "dos2unix"
+	bool "dos2unix (5.2 kb)"
 	default BUSYBOX_DEFAULT_DOS2UNIX
 	help
 	dos2unix is used to convert a text file from DOS format to
 	UNIX format, and vice versa.
 
 config BUSYBOX_CONFIG_UNIX2DOS
-	bool "unix2dos"
+	bool "unix2dos (5.2 kb)"
 	default BUSYBOX_DEFAULT_UNIX2DOS
 	help
 	unix2dos is used to convert a text file from UNIX format to
 	DOS format, and vice versa.
 config BUSYBOX_CONFIG_DU
-	bool "du (default blocksize of 512 bytes)"
+	bool "du (6.3 kb)"
 	default BUSYBOX_DEFAULT_DU
 	help
 	du is used to report the amount of disk space used
 	for specified files.
 
 config BUSYBOX_CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
-	bool "Use a default blocksize of 1024 bytes (1K)"
+	bool "Use default blocksize of 1024 bytes (else it's 512 bytes)"
 	default BUSYBOX_DEFAULT_FEATURE_DU_DEFAULT_BLOCKSIZE_1K
 	depends on BUSYBOX_CONFIG_DU
-	help
-	Use a blocksize of (1K) instead of the default 512b.
 config BUSYBOX_CONFIG_ECHO
-	bool "echo (basic SuSv3 version taking no options)"
+	bool "echo (1.8 kb)"
 	default BUSYBOX_DEFAULT_ECHO
 	help
-	echo is used to print a specified string to stdout.
+	echo prints a specified string to stdout.
 
 # this entry also appears in shell/Config.in, next to the echo builtin
 config BUSYBOX_CONFIG_FEATURE_FANCY_ECHO
@@ -225,40 +235,25 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_ECHO
 	default BUSYBOX_DEFAULT_FEATURE_FANCY_ECHO
 	depends on BUSYBOX_CONFIG_ECHO || BUSYBOX_CONFIG_ASH_ECHO || BUSYBOX_CONFIG_HUSH_ECHO
 config BUSYBOX_CONFIG_ENV
-	bool "env"
+	bool "env (4 kb)"
 	default BUSYBOX_DEFAULT_ENV
 	help
 	env is used to set an environment variable and run
 	a command; without options it displays the current
 	environment.
-
-config BUSYBOX_CONFIG_FEATURE_ENV_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_ENV_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_ENV && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_EXPAND
-	bool "expand"
+	bool "expand (5.1 kb)"
 	default BUSYBOX_DEFAULT_EXPAND
 	help
 	By default, convert all tabs to spaces.
 
-config BUSYBOX_CONFIG_FEATURE_EXPAND_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_EXPAND_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_EXPAND && BUSYBOX_CONFIG_LONG_OPTS
-
 config BUSYBOX_CONFIG_UNEXPAND
-	bool "unexpand"
+	bool "unexpand (5.3 kb)"
 	default BUSYBOX_DEFAULT_UNEXPAND
 	help
 	By default, convert only leading sequences of blanks to tabs.
-
-config BUSYBOX_CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_UNEXPAND_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_UNEXPAND && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_EXPR
-	bool "expr"
+	bool "expr (6.6 kb)"
 	default BUSYBOX_DEFAULT_EXPR
 	help
 	expr is used to calculate numbers and print the result
@@ -273,27 +268,27 @@ config BUSYBOX_CONFIG_EXPR_MATH_SUPPORT_64
 	the applet slightly larger, but will allow computation with very
 	large numbers.
 config BUSYBOX_CONFIG_FACTOR
-	bool "factor"
+	bool "factor (2.7 kb)"
 	default BUSYBOX_DEFAULT_FACTOR
 	help
 	factor factorizes integers
 config BUSYBOX_CONFIG_FALSE
-	bool "false"
+	bool "false (tiny)"
 	default BUSYBOX_DEFAULT_FALSE
 	help
 	false returns an exit code of FALSE (1).
 config BUSYBOX_CONFIG_FOLD
-	bool "fold"
+	bool "fold (4.6 kb)"
 	default BUSYBOX_DEFAULT_FOLD
 	help
 	Wrap text to fit a specific width.
 config BUSYBOX_CONFIG_FSYNC
-	bool "fsync"
+	bool "fsync (3.6 kb)"
 	default BUSYBOX_DEFAULT_FSYNC
 	help
 	fsync is used to flush file-related cached blocks to disk.
 config BUSYBOX_CONFIG_HEAD
-	bool "head"
+	bool "head (3.8 kb)"
 	default BUSYBOX_DEFAULT_HEAD
 	help
 	head is used to print the first specified number of lines
@@ -304,24 +299,24 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_HEAD
 	default BUSYBOX_DEFAULT_FEATURE_FANCY_HEAD
 	depends on BUSYBOX_CONFIG_HEAD
 config BUSYBOX_CONFIG_HOSTID
-	bool "hostid"
+	bool "hostid (286 bytes)"
 	default BUSYBOX_DEFAULT_HOSTID
 	help
 	hostid prints the numeric identifier (in hexadecimal) for
 	the current host.
 config BUSYBOX_CONFIG_ID
-	bool "id"
+	bool "id (7 kb)"
 	default BUSYBOX_DEFAULT_ID
 	help
 	id displays the current user and group ID names.
 
 config BUSYBOX_CONFIG_GROUPS
-	bool "groups"
+	bool "groups (6.7 kb)"
 	default BUSYBOX_DEFAULT_GROUPS
 	help
 	Print the group names associated with current user id.
 config BUSYBOX_CONFIG_INSTALL
-	bool "install"
+	bool "install (12 kb)"
 	default BUSYBOX_DEFAULT_INSTALL
 	help
 	Copy files and set attributes.
@@ -331,22 +326,22 @@ config BUSYBOX_CONFIG_FEATURE_INSTALL_LONG_OPTIONS
 	default BUSYBOX_DEFAULT_FEATURE_INSTALL_LONG_OPTIONS
 	depends on BUSYBOX_CONFIG_INSTALL && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_LINK
-	bool "link"
+	bool "link (3.2 kb)"
 	default BUSYBOX_DEFAULT_LINK
 	help
 	link creates hard links between files.
 config BUSYBOX_CONFIG_LN
-	bool "ln"
+	bool "ln (4.9 kb)"
 	default BUSYBOX_DEFAULT_LN
 	help
 	ln is used to create hard or soft links between files.
 config BUSYBOX_CONFIG_LOGNAME
-	bool "logname"
+	bool "logname (1.1 kb)"
 	default BUSYBOX_DEFAULT_LOGNAME
 	help
 	logname is used to print the current user's login name.
 config BUSYBOX_CONFIG_LS
-	bool "ls"
+	bool "ls (14 kb)"
 	default BUSYBOX_DEFAULT_LS
 	help
 	ls is used to list the contents of directories.
@@ -410,31 +405,31 @@ config BUSYBOX_CONFIG_FEATURE_LS_COLOR_IS_DEFAULT
 	configurable, and the output may not be legible on
 	many output screens.
 config BUSYBOX_CONFIG_MD5SUM
-	bool "md5sum"
+	bool "md5sum (6.5 kb)"
 	default BUSYBOX_DEFAULT_MD5SUM
 	help
-	md5sum is used to print or check MD5 checksums.
+	Compute and check MD5 message digest
 
 config BUSYBOX_CONFIG_SHA1SUM
-	bool "sha1sum"
+	bool "sha1sum (5.9 kb)"
 	default BUSYBOX_DEFAULT_SHA1SUM
 	help
 	Compute and check SHA1 message digest
 
 config BUSYBOX_CONFIG_SHA256SUM
-	bool "sha256sum"
+	bool "sha256sum (7 kb)"
 	default BUSYBOX_DEFAULT_SHA256SUM
 	help
 	Compute and check SHA256 message digest
 
 config BUSYBOX_CONFIG_SHA512SUM
-	bool "sha512sum"
+	bool "sha512sum (7.4 kb)"
 	default BUSYBOX_DEFAULT_SHA512SUM
 	help
 	Compute and check SHA512 message digest
 
 config BUSYBOX_CONFIG_SHA3SUM
-	bool "sha3sum"
+	bool "sha3sum (6.1 kb)"
 	default BUSYBOX_DEFAULT_SHA3SUM
 	help
 	Compute and check SHA3 message digest
@@ -451,91 +446,81 @@ config BUSYBOX_CONFIG_FEATURE_MD5_SHA1_SUM_CHECK
 	against pre-calculated hash values.
 	-s and -w are useful options when verifying checksums.
 config BUSYBOX_CONFIG_MKDIR
-	bool "mkdir"
+	bool "mkdir (4.5 kb)"
 	default BUSYBOX_DEFAULT_MKDIR
 	help
 	mkdir is used to create directories with the specified names.
-
-config BUSYBOX_CONFIG_FEATURE_MKDIR_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_MKDIR_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_MKDIR && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_MKFIFO
-	bool "mkfifo"
+	bool "mkfifo (3.8 kb)"
 	default BUSYBOX_DEFAULT_MKFIFO
 	help
 	mkfifo is used to create FIFOs (named pipes).
 	The 'mknod' program can also create FIFOs.
 config BUSYBOX_CONFIG_MKNOD
-	bool "mknod"
+	bool "mknod (4.5 kb)"
 	default BUSYBOX_DEFAULT_MKNOD
 	help
 	mknod is used to create FIFOs or block/character special
 	files with the specified names.
 config BUSYBOX_CONFIG_MKTEMP
-	bool "mktemp"
+	bool "mktemp (4.2 kb)"
 	default BUSYBOX_DEFAULT_MKTEMP
 	help
 	mktemp is used to create unique temporary files
 config BUSYBOX_CONFIG_MV
-	bool "mv"
+	bool "mv (10 kb)"
 	default BUSYBOX_DEFAULT_MV
 	help
 	mv is used to move or rename files or directories.
-
-config BUSYBOX_CONFIG_FEATURE_MV_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_MV_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_MV && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_NICE
-	bool "nice"
+	bool "nice (2.1 kb)"
 	default BUSYBOX_DEFAULT_NICE
 	help
 	nice runs a program with modified scheduling priority.
 config BUSYBOX_CONFIG_NL
-	bool "nl"
+	bool "nl (4.6 kb)"
 	default BUSYBOX_DEFAULT_NL
 	help
 	nl is used to number lines of files.
 config BUSYBOX_CONFIG_NOHUP
-	bool "nohup"
+	bool "nohup (2 kb)"
 	default BUSYBOX_DEFAULT_NOHUP
 	help
 	run a command immune to hangups, with output to a non-tty.
 config BUSYBOX_CONFIG_NPROC
-	bool "nproc"
+	bool "nproc (3.7 kb)"
 	default BUSYBOX_DEFAULT_NPROC
 	help
 	Print number of CPUs
 config BUSYBOX_CONFIG_OD
-	bool "od"
+	bool "od (11 kb)"
 	default BUSYBOX_DEFAULT_OD
 	help
 	od is used to dump binary files in octal and other formats.
 config BUSYBOX_CONFIG_PASTE
-	bool "paste"
+	bool "paste (4.9 kb)"
 	default BUSYBOX_DEFAULT_PASTE
 	help
 	paste is used to paste lines of different files together
 	and write the result to stdout
 config BUSYBOX_CONFIG_PRINTENV
-	bool "printenv"
+	bool "printenv (1.3 kb)"
 	default BUSYBOX_DEFAULT_PRINTENV
 	help
 	printenv is used to print all or part of environment.
 config BUSYBOX_CONFIG_PRINTF
-	bool "printf"
+	bool "printf (3.8 kb)"
 	default BUSYBOX_DEFAULT_PRINTF
 	help
 	printf is used to format and print specified strings.
-	It's similar to `echo' except it has more options.
+	It's similar to 'echo' except it has more options.
 config BUSYBOX_CONFIG_PWD
-	bool "pwd"
+	bool "pwd (3.7 kb)"
 	default BUSYBOX_DEFAULT_PWD
 	help
 	pwd is used to print the current directory.
 config BUSYBOX_CONFIG_READLINK
-	bool "readlink"
+	bool "readlink (4 kb)"
 	default BUSYBOX_DEFAULT_READLINK
 	help
 	This program reads a symbolic link and returns the name
@@ -548,55 +533,47 @@ config BUSYBOX_CONFIG_FEATURE_READLINK_FOLLOW
 	help
 	Enable the readlink option (-f).
 config BUSYBOX_CONFIG_REALPATH
-	bool "realpath"
+	bool "realpath (1.6 kb)"
 	default BUSYBOX_DEFAULT_REALPATH
 	help
 	Return the canonicalized absolute pathname.
 	This isn't provided by GNU shellutils, but where else does it belong.
 config BUSYBOX_CONFIG_RM
-	bool "rm"
+	bool "rm (5.4 kb)"
 	default BUSYBOX_DEFAULT_RM
 	help
 	rm is used to remove files or directories.
 config BUSYBOX_CONFIG_RMDIR
-	bool "rmdir"
+	bool "rmdir (3.5 kb)"
 	default BUSYBOX_DEFAULT_RMDIR
 	help
 	rmdir is used to remove empty directories.
-
-config BUSYBOX_CONFIG_FEATURE_RMDIR_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_RMDIR_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_RMDIR && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	Support long options for the rmdir applet, including
-	--ignore-fail-on-non-empty for compatibility with GNU rmdir.
 config BUSYBOX_CONFIG_SEQ
-	bool "seq"
+	bool "seq (3.8 kb)"
 	default BUSYBOX_DEFAULT_SEQ
 	help
 	print a sequence of numbers
 config BUSYBOX_CONFIG_SHRED
-	bool "shred"
+	bool "shred (4.9 kb)"
 	default BUSYBOX_DEFAULT_SHRED
 	help
 	Overwrite a file to hide its contents, and optionally delete it
 config BUSYBOX_CONFIG_SHUF
-	bool "shuf"
+	bool "shuf (5.4 kb)"
 	default BUSYBOX_DEFAULT_SHUF
 	help
 	Generate random permutations
 config BUSYBOX_CONFIG_SLEEP
-	bool "sleep"
+	bool "sleep (2 kb)"
 	default BUSYBOX_DEFAULT_SLEEP
 	help
 	sleep is used to pause for a specified number of seconds.
 	It comes in 3 versions:
 	- small: takes one integer parameter
 	- fancy: takes multiple integer arguments with suffixes:
-	    sleep 1d 2h 3m 15s
+		sleep 1d 2h 3m 15s
 	- fancy with fractional numbers:
-	    sleep 2.3s 4.5h sleeps for 16202.3 seconds
+		sleep 2.3s 4.5h sleeps for 16202.3 seconds
 	Last one is "the most compatible" with coreutils sleep,
 	but it adds around 1k of code.
 
@@ -606,32 +583,33 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
 	depends on BUSYBOX_CONFIG_SLEEP
 	help
 	Allow sleep to pause for specified minutes, hours, and days.
-
-config BUSYBOX_CONFIG_FEATURE_FLOAT_SLEEP
-	bool "Enable fractional arguments"
-	default BUSYBOX_DEFAULT_FEATURE_FLOAT_SLEEP
-	depends on BUSYBOX_CONFIG_FEATURE_FANCY_SLEEP
-	help
-	Allow for fractional numeric parameters.
 config BUSYBOX_CONFIG_SORT
-	bool "sort"
+	bool "sort (7.7 kb)"
 	default BUSYBOX_DEFAULT_SORT
 	help
 	sort is used to sort lines of text in specified files.
 
 config BUSYBOX_CONFIG_FEATURE_SORT_BIG
-	bool "Full SuSv3 compliant sort (support -ktcsbdfiozgM)"
+	bool "Full SuSv3 compliant sort (support -ktcbdfiogM)"
 	default BUSYBOX_DEFAULT_FEATURE_SORT_BIG
 	depends on BUSYBOX_CONFIG_SORT
 	help
-	Without this, sort only supports -r, -u, and an integer version
+	Without this, sort only supports -rusz, and an integer version
 	of -n. Selecting this adds sort keys, floating point support, and
 	more. This adds a little over 3k to a nonstatic build on x86.
 
 	The SuSv3 sort standard is available at:
 	http://www.opengroup.org/onlinepubs/007904975/utilities/sort.html
+
+config BUSYBOX_CONFIG_FEATURE_SORT_OPTIMIZE_MEMORY
+	bool "Use less memory (but might be slower)"
+	default BUSYBOX_DEFAULT_FEATURE_SORT_OPTIMIZE_MEMORY   # defaults to N since we are size-paranoid tribe
+	depends on BUSYBOX_CONFIG_SORT
+	help
+	Attempt to use less memory (by storing only one copy
+	of duplicated lines, and such). Useful if you work on huge files.
 config BUSYBOX_CONFIG_SPLIT
-	bool "split"
+	bool "split (5 kb)"
 	default BUSYBOX_DEFAULT_SPLIT
 	help
 	Split a file into pieces.
@@ -645,7 +623,7 @@ config BUSYBOX_CONFIG_FEATURE_SPLIT_FANCY
 	Supports additional suffixes 'b' for 512 bytes,
 	'g' for 1GiB for the -b option.
 config BUSYBOX_CONFIG_STAT
-	bool "stat"
+	bool "stat (11 kb)"
 	default BUSYBOX_DEFAULT_STAT
 	help
 	display file or filesystem status.
@@ -668,17 +646,17 @@ config BUSYBOX_CONFIG_FEATURE_STAT_FILESYSTEM
 	Without this, stat will not support the '-f' option to display
 	information about filesystem status.
 config BUSYBOX_CONFIG_STTY
-	bool "stty"
+	bool "stty (8.9 kb)"
 	default BUSYBOX_DEFAULT_STTY
 	help
 	stty is used to change and print terminal line settings.
 config BUSYBOX_CONFIG_SUM
-	bool "sum"
+	bool "sum (4 kb)"
 	default BUSYBOX_DEFAULT_SUM
 	help
 	checksum and count the blocks in a file
 config BUSYBOX_CONFIG_SYNC
-	bool "sync"
+	bool "sync (3.8 kb)"
 	default BUSYBOX_DEFAULT_SYNC
 	help
 	sync is used to flush filesystem buffers.
@@ -690,12 +668,12 @@ config BUSYBOX_CONFIG_FEATURE_SYNC_FANCY
 	sync -d FILE... executes fdatasync() on each FILE.
 	sync -f FILE... executes syncfs() on each FILE.
 config BUSYBOX_CONFIG_TAC
-	bool "tac"
+	bool "tac (3.9 kb)"
 	default BUSYBOX_DEFAULT_TAC
 	help
 	tac is used to concatenate and print files in reverse.
 config BUSYBOX_CONFIG_TAIL
-	bool "tail"
+	bool "tail (6.8 kb)"
 	default BUSYBOX_DEFAULT_TAIL
 	help
 	tail is used to print the last specified number of lines
@@ -707,13 +685,13 @@ config BUSYBOX_CONFIG_FEATURE_FANCY_TAIL
 	depends on BUSYBOX_CONFIG_TAIL
 	help
 	These options are provided by GNU tail, but
-	are not specific in the SUSv3 standard:
-	    -q      Never output headers giving file names
-	    -s SEC  Wait SEC seconds between reads with -f
-	    -v      Always output headers giving file names
-	    -F      Same as -f, but keep retrying
+	are not specified in the SUSv3 standard:
+		-q      Never output headers giving file names
+		-s SEC  Wait SEC seconds between reads with -f
+		-v      Always output headers giving file names
+		-F      Same as -f, but keep retrying
 config BUSYBOX_CONFIG_TEE
-	bool "tee"
+	bool "tee (4.2 kb)"
 	default BUSYBOX_DEFAULT_TEE
 	help
 	tee is used to read from standard input and write
@@ -726,7 +704,7 @@ config BUSYBOX_CONFIG_FEATURE_TEE_USE_BLOCK_IO
 	help
 	Enable this option for a faster tee, at expense of size.
 config BUSYBOX_CONFIG_TEST
-	bool "test"
+	bool "test (4.1 kb)"
 	default BUSYBOX_DEFAULT_TEST
 	help
 	test is used to check file types and compare values,
@@ -752,13 +730,13 @@ config BUSYBOX_CONFIG_FEATURE_TEST_64
 	help
 	Enable 64-bit support in test.
 config BUSYBOX_CONFIG_TIMEOUT
-	bool "timeout"
+	bool "timeout (6 kb)"
 	default BUSYBOX_DEFAULT_TIMEOUT
 	help
 	Runs a program and watches it. If it does not terminate in
 	specified number of seconds, it is sent a signal.
 config BUSYBOX_CONFIG_TOUCH
-	bool "touch"
+	bool "touch (5.9 kb)"
 	default BUSYBOX_DEFAULT_TOUCH
 	help
 	touch is used to create or change the access and/or
@@ -779,7 +757,7 @@ config BUSYBOX_CONFIG_FEATURE_TOUCH_SUSV3
 	help
 	Enable touch to use a reference file or a given date/time argument.
 config BUSYBOX_CONFIG_TR
-	bool "tr"
+	bool "tr (5.1 kb)"
 	default BUSYBOX_DEFAULT_TR
 	help
 	tr is used to squeeze, and/or delete characters from standard
@@ -804,24 +782,24 @@ config BUSYBOX_CONFIG_FEATURE_TR_EQUIV
 	useful for cases when no other way of expressing a character
 	is possible.
 config BUSYBOX_CONFIG_TRUE
-	bool "true"
+	bool "true (tiny)"
 	default BUSYBOX_DEFAULT_TRUE
 	help
 	true returns an exit code of TRUE (0).
 config BUSYBOX_CONFIG_TRUNCATE
-	bool "truncate"
+	bool "truncate (4.2 kb)"
 	default BUSYBOX_DEFAULT_TRUNCATE
 	help
 	truncate truncates files to a given size. If a file does
 	not exist, it is created unless told otherwise.
 config BUSYBOX_CONFIG_TTY
-	bool "tty"
+	bool "tty (3.6 kb)"
 	default BUSYBOX_DEFAULT_TTY
 	help
 	tty is used to print the name of the current terminal to
 	standard output.
 config BUSYBOX_CONFIG_UNAME
-	bool "uname"
+	bool "uname (3.9 kb)"
 	default BUSYBOX_DEFAULT_UNAME
 	help
 	uname is used to print system information.
@@ -833,38 +811,44 @@ config BUSYBOX_CONFIG_UNAME_OSNAME
 	help
 	Sets the operating system name reported by uname -o.  The
 	default BUSYBOX_DEFAULT_UNAME_OSNAME "GNU/Linux".
+
+config BUSYBOX_CONFIG_BB_ARCH
+	bool "arch (1.1 kb)"
+	default BUSYBOX_DEFAULT_BB_ARCH
+	help
+	Same as uname -m.
 config BUSYBOX_CONFIG_UNIQ
-	bool "uniq"
+	bool "uniq (4.9 kb)"
 	default BUSYBOX_DEFAULT_UNIQ
 	help
 	uniq is used to remove duplicate lines from a sorted file.
 config BUSYBOX_CONFIG_UNLINK
-	bool "unlink"
+	bool "unlink (3.2 kb)"
 	default BUSYBOX_DEFAULT_UNLINK
 	help
 	unlink deletes a file by calling unlink()
 config BUSYBOX_CONFIG_USLEEP
-	bool "usleep"
+	bool "usleep (1.3 kb)"
 	default BUSYBOX_DEFAULT_USLEEP
 	help
 	usleep is used to pause for a specified number of microseconds.
 config BUSYBOX_CONFIG_UUDECODE
-	bool "uudecode"
+	bool "uudecode (5.8 kb)"
 	default BUSYBOX_DEFAULT_UUDECODE
 	help
 	uudecode is used to decode a uuencoded file.
 config BUSYBOX_CONFIG_BASE64
-	bool "base64"
+	bool "base64 (4.9 kb)"
 	default BUSYBOX_DEFAULT_BASE64
 	help
 	Base64 encode and decode
 config BUSYBOX_CONFIG_UUENCODE
-	bool "uuencode"
+	bool "uuencode (4.4 kb)"
 	default BUSYBOX_DEFAULT_UUENCODE
 	help
 	uuencode is used to uuencode a file.
 config BUSYBOX_CONFIG_WC
-	bool "wc"
+	bool "wc (4.5 kb)"
 	default BUSYBOX_DEFAULT_WC
 	help
 	wc is used to print the number of bytes, words, and lines,
@@ -877,37 +861,37 @@ config BUSYBOX_CONFIG_FEATURE_WC_LARGE
 	help
 	Use "unsigned long long" for counter variables.
 config BUSYBOX_CONFIG_WHO
-      bool "who"
-      default BUSYBOX_DEFAULT_WHO
-      depends on BUSYBOX_CONFIG_FEATURE_UTMP
-      help
-        who is used to show who is logged on.
+	bool "who (3.9 kb)"
+	default BUSYBOX_DEFAULT_WHO
+	depends on BUSYBOX_CONFIG_FEATURE_UTMP
+	help
+	Print users currently logged on.
 
 config BUSYBOX_CONFIG_W
-      bool "w"
-      default BUSYBOX_DEFAULT_W
-      depends on BUSYBOX_CONFIG_FEATURE_UTMP
-      help
-        w is used to show who is logged on.
+	bool "w (3.8 kb)"
+	default BUSYBOX_DEFAULT_W
+	depends on BUSYBOX_CONFIG_FEATURE_UTMP
+	help
+	Print users currently logged on.
 
 config BUSYBOX_CONFIG_USERS
-      bool "users"
-      default BUSYBOX_DEFAULT_USERS
-      depends on BUSYBOX_CONFIG_FEATURE_UTMP
-      help
-        Print users currently logged on.
+	bool "users (3.4 kb)"
+	default BUSYBOX_DEFAULT_USERS
+	depends on BUSYBOX_CONFIG_FEATURE_UTMP
+	help
+	Print users currently logged on.
 config BUSYBOX_CONFIG_WHOAMI
-	bool "whoami"
+	bool "whoami (3.2 kb)"
 	default BUSYBOX_DEFAULT_WHOAMI
 	help
 	whoami is used to print the username of the current
 	user id (same as id -un).
 config BUSYBOX_CONFIG_YES
-	bool "yes"
+	bool "yes (1.2 kb)"
 	default BUSYBOX_DEFAULT_YES
 	help
 	yes is used to repeatedly output a specific string, or
-	the default string `y'.
+	the default string 'y'.
 
 comment "Common options"
 
diff --git a/package/utils/busybox/config/debianutils/Config.in b/package/utils/busybox/config/debianutils/Config.in
index 137481c989..15abb08e63 100644
--- a/package/utils/busybox/config/debianutils/Config.in
+++ b/package/utils/busybox/config/debianutils/Config.in
@@ -1,18 +1,18 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Debian Utilities"
 
 config BUSYBOX_CONFIG_PIPE_PROGRESS
-	bool "pipe_progress"
+	bool "pipe_progress (275 bytes)"
 	default BUSYBOX_DEFAULT_PIPE_PROGRESS
 	help
 	Display a dot to indicate pipe activity.
 config BUSYBOX_CONFIG_RUN_PARTS
-	bool "run-parts"
+	bool "run-parts (6.1 kb)"
 	default BUSYBOX_DEFAULT_RUN_PARTS
 	help
 	run-parts is a utility designed to run all the scripts in a directory.
@@ -38,9 +38,9 @@ config BUSYBOX_CONFIG_FEATURE_RUN_PARTS_FANCY
 	help
 	Support additional options:
 	-l --list print the names of the all matching files (not
-	            limited to executables), but don't actually run them.
+	limited to executables), but don't actually run them.
 config BUSYBOX_CONFIG_START_STOP_DAEMON
-	bool "start-stop-daemon"
+	bool "start-stop-daemon (12 kb)"
 	default BUSYBOX_DEFAULT_START_STOP_DAEMON
 	help
 	start-stop-daemon is used to control the creation and
@@ -61,7 +61,7 @@ config BUSYBOX_CONFIG_FEATURE_START_STOP_DAEMON_FANCY
 	-v|--verbose
 	-N|--nicelevel N
 config BUSYBOX_CONFIG_WHICH
-	bool "which"
+	bool "which (3.8 kb)"
 	default BUSYBOX_DEFAULT_WHICH
 	help
 	which is used to find programs in your PATH and
diff --git a/package/utils/busybox/config/e2fsprogs/Config.in b/package/utils/busybox/config/e2fsprogs/Config.in
index bc3403bd70..19713acd3e 100644
--- a/package/utils/busybox/config/e2fsprogs/Config.in
+++ b/package/utils/busybox/config/e2fsprogs/Config.in
@@ -1,31 +1,31 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Linux Ext2 FS Progs"
 
 config BUSYBOX_CONFIG_CHATTR
-	bool "chattr"
+	bool "chattr (3.8 kb)"
 	default BUSYBOX_DEFAULT_CHATTR
 	help
 	chattr changes the file attributes on a second extended file system.
 config BUSYBOX_CONFIG_FSCK
-	bool "fsck"
+	bool "fsck (7.4 kb)"
 	default BUSYBOX_DEFAULT_FSCK
 	help
 	fsck is used to check and optionally repair one or more filesystems.
 	In actuality, fsck is simply a front-end for the various file system
 	checkers (fsck.fstype) available under Linux.
 config BUSYBOX_CONFIG_LSATTR
-	bool "lsattr"
+	bool "lsattr (5.5 kb)"
 	default BUSYBOX_DEFAULT_LSATTR
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	lsattr lists the file attributes on a second extended file system.
 config BUSYBOX_CONFIG_TUNE2FS
-	bool "tune2fs"
+	bool "tune2fs (4.4 kb)"
 	default BUSYBOX_DEFAULT_TUNE2FS  # off: it is too limited compared to upstream version
 	help
 	tune2fs allows the system administrator to adjust various tunable
diff --git a/package/utils/busybox/config/editors/Config.in b/package/utils/busybox/config/editors/Config.in
index 46723bea76..c0fbef1939 100644
--- a/package/utils/busybox/config/editors/Config.in
+++ b/package/utils/busybox/config/editors/Config.in
@@ -1,17 +1,16 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Editors"
 
 config BUSYBOX_CONFIG_AWK
-	bool "awk"
+	bool "awk (23 kb)"
 	default BUSYBOX_DEFAULT_AWK
 	help
-	Awk is used as a pattern scanning and processing language. This is
-	the BusyBox implementation of that programming language.
+	Awk is used as a pattern scanning and processing language.
 
 config BUSYBOX_CONFIG_FEATURE_AWK_LIBM
 	bool "Enable math functions (requires libm)"
@@ -19,7 +18,7 @@ config BUSYBOX_CONFIG_FEATURE_AWK_LIBM
 	depends on BUSYBOX_CONFIG_AWK
 	help
 	Enable math functions of the Awk programming language.
-	NOTE: This will require libm to be present for linking.
+	NOTE: This requires libm to be present for linking.
 
 config BUSYBOX_CONFIG_FEATURE_AWK_GNU_EXTENSIONS
 	bool "Enable a few GNU extensions"
@@ -29,16 +28,16 @@ config BUSYBOX_CONFIG_FEATURE_AWK_GNU_EXTENSIONS
 	Enable a few features from gawk:
 	* command line option -e AWK_PROGRAM
 	* simultaneous use of -f and -e on the command line.
-	    This enables the use of awk library files.
-	    Ex: awk -f mylib.awk -e '{print myfunction($1);}' ...
+	This enables the use of awk library files.
+	Example: awk -f mylib.awk -e '{print myfunction($1);}' ...
 config BUSYBOX_CONFIG_CMP
-	bool "cmp"
+	bool "cmp (4.9 kb)"
 	default BUSYBOX_DEFAULT_CMP
 	help
 	cmp is used to compare two files and returns the result
 	to standard output.
 config BUSYBOX_CONFIG_DIFF
-	bool "diff"
+	bool "diff (13 kb)"
 	default BUSYBOX_DEFAULT_DIFF
 	help
 	diff compares two files or directories and outputs the
@@ -58,25 +57,25 @@ config BUSYBOX_CONFIG_FEATURE_DIFF_DIR
 	This option enables support for directory and subdirectory
 	comparison.
 config BUSYBOX_CONFIG_ED
-	bool "ed"
+	bool "ed (21 kb)"
 	default BUSYBOX_DEFAULT_ED
 	help
 	The original 1970's Unix text editor, from the days of teletypes.
 	Small, simple, evil. Part of SUSv3. If you're not already using
 	this, you don't need it.
 config BUSYBOX_CONFIG_PATCH
-	bool "patch"
+	bool "patch (9.4 kb)"
 	default BUSYBOX_DEFAULT_PATCH
 	help
 	Apply a unified diff formatted patch.
 config BUSYBOX_CONFIG_SED
-	bool "sed"
+	bool "sed (12 kb)"
 	default BUSYBOX_DEFAULT_SED
 	help
 	sed is used to perform text transformations on a file
 	or input from a pipeline.
 config BUSYBOX_CONFIG_VI
-	bool "vi"
+	bool "vi (23 kb)"
 	default BUSYBOX_DEFAULT_VI
 	help
 	'vi' is a text editor. More specifically, it is the One True
@@ -116,7 +115,7 @@ config BUSYBOX_CONFIG_FEATURE_VI_YANKMARK
 	default BUSYBOX_DEFAULT_FEATURE_VI_YANKMARK
 	depends on BUSYBOX_CONFIG_VI
 	help
-	This will enable you to use yank and put, as well as mark.
+	This enables you to use yank and put, as well as mark.
 
 config BUSYBOX_CONFIG_FEATURE_VI_SEARCH
 	bool "Enable search and replace cmds"
diff --git a/package/utils/busybox/config/findutils/Config.in b/package/utils/busybox/config/findutils/Config.in
index 0e9a1392f7..bebcbb39ef 100644
--- a/package/utils/busybox/config/findutils/Config.in
+++ b/package/utils/busybox/config/findutils/Config.in
@@ -1,13 +1,13 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Finding Utilities"
 
 config BUSYBOX_CONFIG_FIND
-	bool "find"
+	bool "find (14 kb)"
 	default BUSYBOX_DEFAULT_FIND
 	help
 	find is used to search your system to find specified files.
@@ -51,6 +51,11 @@ config BUSYBOX_CONFIG_FEATURE_FIND_TYPE
 	Enable searching based on file type (file,
 	directory, socket, device, etc.).
 
+config BUSYBOX_CONFIG_FEATURE_FIND_EXECUTABLE
+	bool "Enable -executable: file is executable"
+	default BUSYBOX_DEFAULT_FEATURE_FIND_EXECUTABLE
+	depends on BUSYBOX_CONFIG_FIND
+
 config BUSYBOX_CONFIG_FEATURE_FIND_XDEV
 	bool "Enable -xdev: 'stay in filesystem'"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_XDEV
@@ -138,6 +143,13 @@ config BUSYBOX_CONFIG_FEATURE_FIND_PRUNE
 	If the file is a directory, don't descend into it. Useful for
 	exclusion .svn and CVS directories.
 
+config BUSYBOX_CONFIG_FEATURE_FIND_QUIT
+	bool "Enable -quit: exit"
+	default BUSYBOX_DEFAULT_FEATURE_FIND_QUIT
+	depends on BUSYBOX_CONFIG_FIND
+	help
+	If this action is reached, 'find' exits.
+
 config BUSYBOX_CONFIG_FEATURE_FIND_DELETE
 	bool "Enable -delete: delete files/dirs"
 	default BUSYBOX_DEFAULT_FEATURE_FIND_DELETE
@@ -175,22 +187,22 @@ config BUSYBOX_CONFIG_FEATURE_FIND_LINKS
 	help
 	Support the 'find -links' option for matching number of links.
 config BUSYBOX_CONFIG_GREP
-	bool "grep"
+	bool "grep (8.6 kb)"
 	default BUSYBOX_DEFAULT_GREP
 	help
 	grep is used to search files for a specified pattern.
 
 config BUSYBOX_CONFIG_EGREP
-	bool "egrep"
+	bool "egrep (7.8 kb)"
 	default BUSYBOX_DEFAULT_EGREP
 	help
-	Alias to "grep -E"
+	Alias to "grep -E".
 
 config BUSYBOX_CONFIG_FGREP
-	bool "fgrep"
+	bool "fgrep (7.8 kb)"
 	default BUSYBOX_DEFAULT_FGREP
 	help
-	Alias to "grep -F"
+	Alias to "grep -F".
 
 config BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT
 	bool "Enable before and after context flags (-A, -B and -C)"
@@ -201,7 +213,7 @@ config BUSYBOX_CONFIG_FEATURE_GREP_CONTEXT
 	context surrounding our matching lines.
 	Print the specified number of context lines (-C).
 config BUSYBOX_CONFIG_XARGS
-	bool "xargs"
+	bool "xargs (7.2 kb)"
 	default BUSYBOX_DEFAULT_XARGS
 	help
 	xargs is used to execute a specified command for
@@ -246,4 +258,14 @@ config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR
 	help
 	Support -I STR and -i[STR] options.
 
+config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_PARALLEL
+	bool "Enable -P N: processes to run in parallel"
+	default BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_PARALLEL
+	depends on BUSYBOX_CONFIG_XARGS
+
+config BUSYBOX_CONFIG_FEATURE_XARGS_SUPPORT_ARGS_FILE
+	bool "Enable -a FILE: use FILE instead of stdin"
+	default BUSYBOX_DEFAULT_FEATURE_XARGS_SUPPORT_ARGS_FILE
+	depends on BUSYBOX_CONFIG_XARGS
+
 endmenu
diff --git a/package/utils/busybox/config/init/Config.in b/package/utils/busybox/config/init/Config.in
index 00eb6175d1..fc6c916a68 100644
--- a/package/utils/busybox/config/init/Config.in
+++ b/package/utils/busybox/config/init/Config.in
@@ -1,13 +1,13 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Init Utilities"
 
 config BUSYBOX_CONFIG_BOOTCHARTD
-	bool "bootchartd"
+	bool "bootchartd (10 kb)"
 	default BUSYBOX_DEFAULT_BOOTCHARTD
 	help
 	bootchartd is commonly used to profile the boot process
@@ -27,12 +27,12 @@ config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER
 	help
 	Create extended header file compatible with "big" bootchartd.
 	"Big" bootchartd is a shell script and it dumps some
-	"convenient" info int the header, such as:
-	    title = Boot chart for `hostname` (`date`)
-	    system.uname = `uname -srvm`
-	    system.release = `cat /etc/DISTRO-release`
-	    system.cpu = `grep '^model name' /proc/cpuinfo | head -1` ($cpucount)
-	    system.kernel.options = `cat /proc/cmdline`
+	"convenient" info into the header, such as:
+		title = Boot chart for `hostname` (`date`)
+		system.uname = `uname -srvm`
+		system.release = `cat /etc/DISTRO-release`
+		system.cpu = `grep '^model name' /proc/cpuinfo | head -1` ($cpucount)
+		system.kernel.options = `cat /proc/cmdline`
 	This data is not mandatory for bootchart graph generation,
 	and is considered bloat. Nevertheless, this option
 	makes bootchartd applet to dump a subset of it.
@@ -45,23 +45,34 @@ config BUSYBOX_CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE
 	Enable reading and parsing of $PWD/bootchartd.conf
 	and /etc/bootchartd.conf files.
 config BUSYBOX_CONFIG_HALT
-	bool "halt"
+	bool "halt (4 kb)"
 	default BUSYBOX_DEFAULT_HALT
 	help
 	Stop all processes and halt the system.
 
 config BUSYBOX_CONFIG_POWEROFF
-	bool "poweroff"
+	bool "poweroff (4 kb)"
 	default BUSYBOX_DEFAULT_POWEROFF
 	help
 	Stop all processes and power off the system.
 
 config BUSYBOX_CONFIG_REBOOT
-	bool "reboot"
+	bool "reboot (4 kb)"
 	default BUSYBOX_DEFAULT_REBOOT
 	help
 	Stop all processes and reboot the system.
 
+config BUSYBOX_CONFIG_FEATURE_WAIT_FOR_INIT
+	bool "Before signaling init, make sure it is ready for it"
+	default BUSYBOX_DEFAULT_FEATURE_WAIT_FOR_INIT
+	depends on BUSYBOX_CONFIG_HALT || BUSYBOX_CONFIG_POWEROFF || BUSYBOX_CONFIG_REBOOT
+	help
+	In rare cases, poweroff may be commanded by firmware to OS
+	even before init process exists. On Linux, this spawns
+	"/sbin/poweroff" very early. This option adds code
+	which checks that init is ready to receive poweroff
+	commands. Code size increase of ~80 bytes.
+
 config BUSYBOX_CONFIG_FEATURE_CALL_TELINIT
 	bool "Call telinit on shutdown and reboot"
 	default BUSYBOX_DEFAULT_FEATURE_CALL_TELINIT
@@ -82,7 +93,7 @@ config BUSYBOX_CONFIG_TELINIT_PATH
 	to facilitate proper shutdown, this path is to be used when
 	locating telinit executable.
 config BUSYBOX_CONFIG_INIT
-	bool "init"
+	bool "init (10 kb)"
 	default BUSYBOX_DEFAULT_INIT
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
diff --git a/package/utils/busybox/config/klibc-utils/Config.in b/package/utils/busybox/config/klibc-utils/Config.in
new file mode 100644
index 0000000000..95e15b6def
--- /dev/null
+++ b/package/utils/busybox/config/klibc-utils/Config.in
@@ -0,0 +1,43 @@
+# DO NOT EDIT. This file is generated from Config.src
+#
+# For a description of the syntax of this configuration file,
+# see docs/Kconfig-language.txt.
+#
+
+menu "klibc-utils"
+
+config BUSYBOX_CONFIG_MINIPS
+	bool "minips (11 kb)"
+	default BUSYBOX_DEFAULT_MINIPS  # for god's sake, just use "ps" name in your scripts
+	help
+	Alias to "ps".
+config BUSYBOX_CONFIG_NUKE
+	bool "nuke (2.9 kb)"
+	default BUSYBOX_DEFAULT_NUKE
+	help
+	Alias to "rm -rf".
+config BUSYBOX_CONFIG_RESUME
+	bool "resume (3.2 kb)"
+	default BUSYBOX_DEFAULT_RESUME
+	help
+	Resume from saved "suspend-to-disk" image
+config BUSYBOX_CONFIG_RUN_INIT
+	bool "run-init (7.7 kb)"
+	default BUSYBOX_DEFAULT_RUN_INIT
+	select BUSYBOX_CONFIG_PLATFORM_LINUX
+	help
+	The run-init utility is used from initramfs to select a new
+	root device. Under initramfs, you have to use this instead of
+	pivot_root.
+
+	Booting with initramfs extracts a gzipped cpio archive into rootfs
+	(which is a variant of ramfs/tmpfs). Because rootfs can't be moved
+	or unmounted, pivot_root will not work from initramfs. Instead,
+	run-init deletes everything out of rootfs (including itself),
+	does a mount --move that overmounts rootfs with the new root, and
+	then execs the specified init program.
+
+	util-linux has a similar tool, switch-root.
+	run-init differs by also having a "-d CAPS_TO_DROP" option.
+
+endmenu
diff --git a/package/utils/busybox/config/libbb/Config.in b/package/utils/busybox/config/libbb/Config.in
index 5be8aedc88..f476e86073 100644
--- a/package/utils/busybox/config/libbb/Config.in
+++ b/package/utils/busybox/config/libbb/Config.in
@@ -1,10 +1,10 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
-menu "Busybox Library Tuning"
+comment "Library Tuning"
 
 config BUSYBOX_CONFIG_FEATURE_USE_BSS_TAIL
 	bool "Use the end of BSS page"
@@ -19,6 +19,7 @@ config BUSYBOX_CONFIG_FEATURE_USE_BSS_TAIL
 
 	At link time, "text" is padded to a full page. At runtime, all "text"
 	pages are mapped RO and executable.
+
 	"Data" starts on the next page boundary, but is not padded
 	to a full page at the end. "Bss" starts wherever "data" ends.
 	At runtime, "data" pages are mapped RW and they are file-backed
@@ -36,8 +37,13 @@ config BUSYBOX_CONFIG_FEATURE_USE_BSS_TAIL
 	is known only after final link.
 
 	If you are getting a build error like this:
-	        appletlib.c:(.text.main+0xd): undefined reference to '_end'
+		appletlib.c:(.text.main+0xd): undefined reference to '_end'
 	disable this option.
+config BUSYBOX_CONFIG_FLOAT_DURATION
+	bool "Enable fractional duration arguments"
+	default BUSYBOX_DEFAULT_FLOAT_DURATION
+	help
+	Allow sleep N.NNN, top -d N.NNN etc.
 config BUSYBOX_CONFIG_FEATURE_RTMINMAX
 	bool "Support RTMIN[+n] and RTMAX[-n] signal names"
 	default BUSYBOX_DEFAULT_FEATURE_RTMINMAX
@@ -45,18 +51,29 @@ config BUSYBOX_CONFIG_FEATURE_RTMINMAX
 	Support RTMIN[+n] and RTMAX[-n] signal names
 	in kill, killall etc. This costs ~250 bytes.
 
+config BUSYBOX_CONFIG_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS
+	bool "Use the definitions of SIGRTMIN/SIGRTMAX provided by libc"
+	default BUSYBOX_DEFAULT_FEATURE_RTMINMAX_USE_LIBC_DEFINITIONS
+	depends on BUSYBOX_CONFIG_FEATURE_RTMINMAX
+	help
+	Some C libraries reserve a few real-time signals for internal
+	use, and adjust the values of SIGRTMIN/SIGRTMAX seen by
+	applications accordingly. Saying yes here means that a signal
+	name RTMIN+n will be interpreted according to the libc definition
+	of SIGRTMIN, and not the raw definition provided by the kernel.
+	This behavior matches "kill -l RTMIN+n" from bash.
+
 choice
 	prompt "Buffer allocation policy"
 	default BUSYBOX_CONFIG_FEATURE_BUFFERS_GO_ON_STACK
 	help
-	There are 3 ways BusyBox can handle buffer allocations:
+	There are 3 ways busybox can handle buffer allocations:
 	- Use malloc. This costs code size for the call to xmalloc.
 	- Put them on stack. For some very small machines with limited stack
-	    space, this can be deadly. For most folks, this works just fine.
+	space, this can be deadly. For most folks, this works just fine.
 	- Put them in BSS. This works beautifully for computers with a real
-	    MMU (and OS support), but wastes runtime RAM for uCLinux. This
-	    behavior was the only one available for BusyBox versions 0.48 and
-	    earlier.
+	MMU (and OS support), but wastes runtime RAM for uCLinux. This
+	behavior was the only one available for versions 0.48 and earlier.
 
 config BUSYBOX_CONFIG_FEATURE_BUFFERS_USE_MALLOC
 	bool "Allocate with Malloc"
@@ -84,7 +101,7 @@ config BUSYBOX_CONFIG_MD5_SMALL
 	Trade binary size versus speed for the md5sum algorithm.
 	Approximate values running uClibc and hashing
 	linux-2.4.4.tar.bz2 were:
-	                    user times (sec)  text size (386)
+	value               user times (sec)  text size (386)
 	0 (fastest)         1.1                6144
 	1                   1.4                5392
 	2                   3.0                5088
@@ -104,7 +121,7 @@ config BUSYBOX_CONFIG_FEATURE_FAST_TOP
 	bool "Faster /proc scanning code (+100 bytes)"
 	default BUSYBOX_DEFAULT_FEATURE_FAST_TOP  # all "fast or small" options default to small
 	help
-	This option makes top (and ps) ~20% faster (or 20% less CPU hungry),
+	This option makes top and ps ~20% faster (or 20% less CPU hungry),
 	but code size is slightly bigger.
 
 config BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS
@@ -115,6 +132,18 @@ config BUSYBOX_CONFIG_FEATURE_ETC_NETWORKS
 	a rarely used feature which allows you to use names
 	instead of IP/mask pairs in route command.
 
+config BUSYBOX_CONFIG_FEATURE_ETC_SERVICES
+	bool "Consult /etc/services even for well-known ports"
+	default BUSYBOX_DEFAULT_FEATURE_ETC_SERVICES
+	help
+	Look up e.g. "telnet" and "http" in /etc/services file
+	instead of assuming ports 23 and 80.
+	This is almost never necessary (everybody uses standard ports),
+	and it makes sense to avoid reading this file.
+	If you disable this option, in the cases where port is explicitly
+	specified as a service name (e.g. "telnet HOST PORTNAME"),
+	it will still be looked up in /etc/services.
+
 config BUSYBOX_CONFIG_FEATURE_EDITING
 	bool "Command line editing"
 	default BUSYBOX_DEFAULT_FEATURE_EDITING
@@ -188,6 +217,11 @@ config BUSYBOX_CONFIG_FEATURE_EDITING_FANCY_PROMPT
 	Setting this option allows for prompts to use things like \w and
 	\$ and escape codes.
 
+config BUSYBOX_CONFIG_FEATURE_EDITING_WINCH
+	bool "Enable automatic tracking of window size changes"
+	default BUSYBOX_DEFAULT_FEATURE_EDITING_WINCH
+	depends on BUSYBOX_CONFIG_FEATURE_EDITING
+
 config BUSYBOX_CONFIG_FEATURE_EDITING_ASK_TERMINAL
 	bool "Query cursor position from terminal"
 	default BUSYBOX_DEFAULT_FEATURE_EDITING_ASK_TERMINAL
@@ -340,13 +374,17 @@ config BUSYBOX_CONFIG_FEATURE_VERBOSE_CP_MESSAGE
 	default BUSYBOX_DEFAULT_FEATURE_VERBOSE_CP_MESSAGE
 	help
 	Error messages with this feature enabled:
-	    $ cp file /does_not_exist/file
-	    cp: cannot create '/does_not_exist/file': Path does not exist
-	    $ cp file /vmlinuz/file
-	    cp: cannot stat '/vmlinuz/file': Path has non-directory component
+
+	$ cp file /does_not_exist/file
+	cp: cannot create '/does_not_exist/file': Path does not exist
+	$ cp file /vmlinuz/file
+	cp: cannot stat '/vmlinuz/file': Path has non-directory component
+
 	If this feature is not enabled, they will be, respectively:
-	    cp: cannot create '/does_not_exist/file': No such file or directory
-	    cp: cannot stat '/vmlinuz/file': Not a directory
+
+	cp: cannot create '/does_not_exist/file': No such file or directory
+	cp: cannot stat '/vmlinuz/file': Not a directory
+
 	This will cost you ~60 bytes.
 
 config BUSYBOX_CONFIG_FEATURE_USE_SENDFILE
@@ -414,7 +452,4 @@ config BUSYBOX_CONFIG_FEATURE_HWIB
 	bool "Support infiniband HW"
 	default BUSYBOX_DEFAULT_FEATURE_HWIB
 	help
-	Support for printing infiniband addresses in
-	network applets.
-
-endmenu
+	Support for printing infiniband addresses in network applets.
diff --git a/package/utils/busybox/config/loginutils/Config.in b/package/utils/busybox/config/loginutils/Config.in
index 51bc1a1ad7..465fa519cb 100644
--- a/package/utils/busybox/config/loginutils/Config.in
+++ b/package/utils/busybox/config/loginutils/Config.in
@@ -1,7 +1,7 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Login/Password Management Utilities"
@@ -93,27 +93,23 @@ config BUSYBOX_CONFIG_USE_BB_CRYPT_SHA
 	user which has password encrypted with these algorithms.
 
 config BUSYBOX_CONFIG_ADD_SHELL
-       bool "add-shell"
-       default BUSYBOX_DEFAULT_ADD_SHELL if BUSYBOX_CONFIG_DESKTOP
-       help
-         Add shells to /etc/shells.
+	bool "add-shell (3.1 kb)"
+	default BUSYBOX_DEFAULT_ADD_SHELL if BUSYBOX_CONFIG_DESKTOP
+	help
+	Add shells to /etc/shells.
 
 config BUSYBOX_CONFIG_REMOVE_SHELL
-       bool "remove-shell"
-       default BUSYBOX_DEFAULT_REMOVE_SHELL if BUSYBOX_CONFIG_DESKTOP
-       help
-         Remove shells from /etc/shells.
+	bool "remove-shell (3 kb)"
+	default BUSYBOX_DEFAULT_REMOVE_SHELL if BUSYBOX_CONFIG_DESKTOP
+	help
+	Remove shells from /etc/shells.
 config BUSYBOX_CONFIG_ADDGROUP
-	bool "addgroup"
+	bool "addgroup (8.6 kb)"
 	default BUSYBOX_DEFAULT_ADDGROUP
+	select BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Utility for creating a new group account.
 
-config BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_ADDGROUP_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_ADDGROUP && BUSYBOX_CONFIG_LONG_OPTS
-
 config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
 	bool "Support adding users to groups"
 	default BUSYBOX_DEFAULT_FEATURE_ADDUSER_TO_GROUP
@@ -123,16 +119,12 @@ config BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP
 	addgroup will add an existing user to an
 	existing group.
 config BUSYBOX_CONFIG_ADDUSER
-	bool "adduser"
+	bool "adduser (15 kb)"
 	default BUSYBOX_DEFAULT_ADDUSER
+	select BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Utility for creating a new user account.
 
-config BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_ADDUSER_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_ADDUSER && BUSYBOX_CONFIG_LONG_OPTS
-
 config BUSYBOX_CONFIG_FEATURE_CHECK_NAMES
 	bool "Enable sanity check on user/group names in adduser and addgroup"
 	default BUSYBOX_DEFAULT_FEATURE_CHECK_NAMES
@@ -168,7 +160,7 @@ config BUSYBOX_CONFIG_LAST_SYSTEM_ID
 	help
 	Last valid system uid or gid for adduser and addgroup
 config BUSYBOX_CONFIG_CHPASSWD
-	bool "chpasswd"
+	bool "chpasswd (18 kb)"
 	default BUSYBOX_DEFAULT_CHPASSWD
 	help
 	Reads a file of user name and password pairs from standard input
@@ -181,27 +173,27 @@ config BUSYBOX_CONFIG_FEATURE_DEFAULT_PASSWD_ALGO
 	help
 	Possible choices are "d[es]", "m[d5]", "s[ha256]" or "sha512".
 config BUSYBOX_CONFIG_CRYPTPW
-	bool "cryptpw"
+	bool "cryptpw (14 kb)"
 	default BUSYBOX_DEFAULT_CRYPTPW
 	help
 	Encrypts the given password with the crypt(3) libc function
 	using the given salt.
 
 config BUSYBOX_CONFIG_MKPASSWD
-	bool "mkpasswd"
+	bool "mkpasswd (15 kb)"
 	default BUSYBOX_DEFAULT_MKPASSWD
 	help
 	Encrypts the given password with the crypt(3) libc function
 	using the given salt. Debian has this utility under mkpasswd
 	name. Busybox provides mkpasswd as an alias for cryptpw.
 config BUSYBOX_CONFIG_DELUSER
-	bool "deluser"
+	bool "deluser (9.1 kb)"
 	default BUSYBOX_DEFAULT_DELUSER
 	help
 	Utility for deleting a user account.
 
 config BUSYBOX_CONFIG_DELGROUP
-	bool "delgroup"
+	bool "delgroup (6.4 kb)"
 	default BUSYBOX_DEFAULT_DELGROUP
 	help
 	Utility for deleting a group account.
@@ -214,7 +206,7 @@ config BUSYBOX_CONFIG_FEATURE_DEL_USER_FROM_GROUP
 	If called with two non-option arguments, deluser
 	or delgroup will remove an user from a specified group.
 config BUSYBOX_CONFIG_GETTY
-	bool "getty"
+	bool "getty (10 kb)"
 	default BUSYBOX_DEFAULT_GETTY
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
@@ -232,13 +224,13 @@ config BUSYBOX_CONFIG_GETTY
 	read -r login
 	exec /bin/login "$login"
 config BUSYBOX_CONFIG_LOGIN
-	bool "login"
+	bool "login (24 kb)"
 	default BUSYBOX_DEFAULT_LOGIN
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	login is used when signing onto a system.
 
-	Note that Busybox binary must be setuid root for this applet to
+	Note that busybox binary must be setuid root for this applet to
 	work properly.
 
 config BUSYBOX_CONFIG_LOGIN_SESSION_AS_CHILD
@@ -277,7 +269,7 @@ config BUSYBOX_CONFIG_FEATURE_SECURETTY
 	The file contains the device names of tty lines (one per line,
 	without leading /dev/) on which root is allowed to login.
 config BUSYBOX_CONFIG_PASSWD
-	bool "passwd"
+	bool "passwd (21 kb)"
 	default BUSYBOX_DEFAULT_PASSWD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
@@ -286,7 +278,7 @@ config BUSYBOX_CONFIG_PASSWD
 	may change the password for any account. The administrator of a group
 	may change the password for the group.
 
-	Note that Busybox binary must be setuid root for this applet to
+	Note that busybox binary must be setuid root for this applet to
 	work properly.
 
 config BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK
@@ -296,7 +288,7 @@ config BUSYBOX_CONFIG_FEATURE_PASSWD_WEAK_CHECK
 	help
 	With this option passwd will refuse new passwords which are "weak".
 config BUSYBOX_CONFIG_SU
-	bool "su"
+	bool "su (19 kb)"
 	default BUSYBOX_DEFAULT_SU
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
@@ -320,19 +312,19 @@ config BUSYBOX_CONFIG_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY
 	default BUSYBOX_DEFAULT_FEATURE_SU_BLANK_PW_NEEDS_SECURE_TTY
 	depends on BUSYBOX_CONFIG_SU
 config BUSYBOX_CONFIG_SULOGIN
-	bool "sulogin"
+	bool "sulogin (17 kb)"
 	default BUSYBOX_DEFAULT_SULOGIN
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	sulogin is invoked when the system goes into single user
 	mode (this is done through an entry in inittab).
 config BUSYBOX_CONFIG_VLOCK
-	bool "vlock"
+	bool "vlock (17 kb)"
 	default BUSYBOX_DEFAULT_VLOCK
 	help
 	Build the "vlock" applet which allows you to lock (virtual) terminals.
 
-	Note that Busybox binary must be setuid root for this applet to
+	Note that busybox binary must be setuid root for this applet to
 	work properly.
 
 endmenu
diff --git a/package/utils/busybox/config/mailutils/Config.in b/package/utils/busybox/config/mailutils/Config.in
index 9c2f20c995..a8632471a8 100644
--- a/package/utils/busybox/config/mailutils/Config.in
+++ b/package/utils/busybox/config/mailutils/Config.in
@@ -2,12 +2,12 @@
 menu "Mail Utilities"
 
 config BUSYBOX_CONFIG_MAKEMIME
-	bool "makemime"
+	bool "makemime (5.4 kb)"
 	default BUSYBOX_DEFAULT_MAKEMIME
 	help
 	Create MIME-formatted messages.
 config BUSYBOX_CONFIG_POPMAILDIR
-	bool "popmaildir"
+	bool "popmaildir (10 kb)"
 	default BUSYBOX_DEFAULT_POPMAILDIR
 	help
 	Simple yet powerful POP3 mail popper. Delivers content
@@ -23,7 +23,7 @@ config BUSYBOX_CONFIG_FEATURE_POPMAILDIR_DELIVERY
 	Allow to use a custom program for message actual delivery
 	(-M "prog [args...]").
 config BUSYBOX_CONFIG_REFORMIME
-	bool "reformime"
+	bool "reformime (7.5 kb)"
 	default BUSYBOX_DEFAULT_REFORMIME
 	help
 	Parse MIME-formatted messages.
@@ -36,7 +36,7 @@ config BUSYBOX_CONFIG_FEATURE_REFORMIME_COMPAT
 	Accept (for compatibility only) and ignore options
 	other than -x and -X.
 config BUSYBOX_CONFIG_SENDMAIL
-	bool "sendmail"
+	bool "sendmail (14 kb)"
 	default BUSYBOX_DEFAULT_SENDMAIL
 	help
 	Barebones sendmail.
diff --git a/package/utils/busybox/config/miscutils/Config.in b/package/utils/busybox/config/miscutils/Config.in
index 1f378206b1..dfd04fbd56 100644
--- a/package/utils/busybox/config/miscutils/Config.in
+++ b/package/utils/busybox/config/miscutils/Config.in
@@ -1,20 +1,20 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Miscellaneous Utilities"
 
 config BUSYBOX_CONFIG_ADJTIMEX
-	bool "adjtimex"
+	bool "adjtimex (4.7 kb)"
 	default BUSYBOX_DEFAULT_ADJTIMEX
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Adjtimex reads and optionally sets adjustment parameters for
 	the Linux clock adjustment algorithm.
 config BUSYBOX_CONFIG_BBCONFIG
-	bool "bbconfig"
+	bool "bbconfig (9.7 kb)"
 	default BUSYBOX_DEFAULT_BBCONFIG
 	help
 	The bbconfig applet will print the config file with which
@@ -33,8 +33,94 @@ config BUSYBOX_CONFIG_FEATURE_COMPRESS_BBCONFIG
 	be noticeable. Also, if you run executables directly from ROM
 	and have very little memory, this might not be a win. Otherwise,
 	you probably want this.
+config BUSYBOX_CONFIG_BC
+	bool "bc (45 kb)"
+	default BUSYBOX_DEFAULT_BC
+	select BUSYBOX_CONFIG_FEATURE_DC_BIG
+	help
+	bc is a command-line, arbitrary-precision calculator with a
+	Turing-complete language. See the GNU bc manual
+	(https://www.gnu.org/software/bc/manual/bc.html) and bc spec
+	(http://pubs.opengroup.org/onlinepubs/9699919799/utilities/bc.html).
+
+	This bc has five differences to the GNU bc:
+	  1) The period (.) is a shortcut for "last", as in the BSD bc.
+	  2) Arrays are copied before being passed as arguments to
+	     functions. This behavior is required by the bc spec.
+	  3) Arrays can be passed to the builtin "length" function to get
+	     the number of elements in the array. This prints "1":
+		a[0] = 0; length(a[])
+	  4) The precedence of the boolean "not" operator (!) is equal to
+	     that of the unary minus (-) negation operator. This still
+	     allows POSIX-compliant scripts to work while somewhat
+	     preserving expected behavior (versus C) and making parsing
+	     easier.
+	  5) "read()" accepts expressions, not only numeric literals.
+
+config BUSYBOX_CONFIG_DC
+	bool "dc (36 kb)"
+	default BUSYBOX_DEFAULT_DC
+	help
+	dc is a reverse-polish notation command-line calculator which
+	supports unlimited precision arithmetic. See the FreeBSD man page
+	(https://www.unix.com/man-page/FreeBSD/1/dc/) and GNU dc manual
+	(https://www.gnu.org/software/bc/manual/dc-1.05/html_mono/dc.html).
+
+	This dc has a few differences from the two above:
+	  1) When printing a byte stream (command "P"), this dc follows what
+	     the FreeBSD dc does.
+	  2) Implements the GNU extensions for divmod ("~") and
+	     modular exponentiation ("|").
+	  3) Implements all FreeBSD extensions, except for "J" and "M".
+	  4) Like the FreeBSD dc, this dc supports extended registers.
+	     However, they are implemented differently. When it encounters
+	     whitespace where a register should be, it skips the whitespace.
+	     If the character following is not a lowercase letter, an error
+	     is issued. Otherwise, the register name is parsed by the
+	     following regex: [a-z][a-z0-9_]*
+	     This generally means that register names will be surrounded by
+	     whitespace. Examples:
+		l idx s temp L index S temp2 < do_thing
+	     Also note that, like the FreeBSD dc, extended registers are not
+	     allowed unless the "-x" option is given.
+
+if BC || BUSYBOX_CONFIG_DC  # for menuconfig indenting
+
+config BUSYBOX_CONFIG_FEATURE_DC_BIG
+	bool "Use bc code base for dc (larger, more features)"
+	default BUSYBOX_DEFAULT_FEATURE_DC_BIG
+
+config BUSYBOX_CONFIG_FEATURE_DC_LIBM
+	bool "Enable power and exp functions (requires libm)"
+	default BUSYBOX_DEFAULT_FEATURE_DC_LIBM
+	depends on BUSYBOX_CONFIG_DC && !BUSYBOX_CONFIG_BC && !BUSYBOX_CONFIG_FEATURE_DC_BIG
+	help
+	Enable power and exp functions.
+	NOTE: This will require libm to be present for linking.
+
+config BUSYBOX_CONFIG_FEATURE_BC_INTERACTIVE
+	bool "Interactive mode (+4kb)"
+	default BUSYBOX_DEFAULT_FEATURE_BC_INTERACTIVE
+	depends on BUSYBOX_CONFIG_BC || (BUSYBOX_CONFIG_DC && BUSYBOX_CONFIG_FEATURE_DC_BIG)
+	help
+	Enable interactive mode: when started on a tty,
+	^C interrupts execution and returns to command line,
+	errors also return to command line instead of exiting,
+	line editing with history is available.
+
+	With this option off, input can still be taken from tty,
+	but all errors are fatal, ^C is fatal,
+	tty is treated exactly the same as any other
+	standard input (IOW: no line editing).
+
+config BUSYBOX_CONFIG_FEATURE_BC_LONG_OPTIONS
+	bool "Enable bc/dc long options"
+	default BUSYBOX_DEFAULT_FEATURE_BC_LONG_OPTIONS
+	depends on BUSYBOX_CONFIG_BC || (BUSYBOX_CONFIG_DC && BUSYBOX_CONFIG_FEATURE_DC_BIG)
+
+endif
 config BUSYBOX_CONFIG_BEEP
-	bool "beep"
+	bool "beep (2.4 kb)"
 	default BUSYBOX_DEFAULT_BEEP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -56,7 +142,7 @@ config BUSYBOX_CONFIG_FEATURE_BEEP_LENGTH_MS
 	help
 	Length in ms for default beep.
 config BUSYBOX_CONFIG_CHAT
-	bool "chat"
+	bool "chat (6.3 kb)"
 	default BUSYBOX_DEFAULT_CHAT
 	help
 	Simple chat utility.
@@ -122,7 +208,7 @@ config BUSYBOX_CONFIG_FEATURE_CHAT_CLR_ABORT
 	help
 	Support CLR_ABORT directive.
 config BUSYBOX_CONFIG_CONSPY
-	bool "conspy"
+	bool "conspy (10 kb)"
 	default BUSYBOX_DEFAULT_CONSPY
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -131,7 +217,7 @@ config BUSYBOX_CONFIG_CONSPY
 	or        conspy -nd NUM  screenshot of console num
 	or        conspy -cs NUM  poor man's GNU screen like
 config BUSYBOX_CONFIG_CROND
-	bool "crond"
+	bool "crond (14 kb)"
 	default BUSYBOX_DEFAULT_CROND
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
@@ -139,12 +225,12 @@ config BUSYBOX_CONFIG_CROND
 	files and executes commands on behalf of the users in question.
 	This is a port of dcron from slackware. It uses files of the
 	format /var/spool/cron/crontabs/<username> files, for example:
-	      $ cat /var/spool/cron/crontabs/root
-	      # Run daily cron jobs at 4:40 every day:
-	      40 4 * * * /etc/cron/daily > /dev/null 2>&1
+		$ cat /var/spool/cron/crontabs/root
+		# Run daily cron jobs at 4:40 every day:
+		40 4 * * * /etc/cron/daily > /dev/null 2>&1
 
 config BUSYBOX_CONFIG_FEATURE_CROND_D
-	bool "Support option -d to redirect output to stderr"
+	bool "Support -d (redirect output to stderr)"
 	depends on BUSYBOX_CONFIG_CROND
 	default BUSYBOX_DEFAULT_FEATURE_CROND_D
 	help
@@ -157,6 +243,22 @@ config BUSYBOX_CONFIG_FEATURE_CROND_CALL_SENDMAIL
 	help
 	Command output will be sent to corresponding user via email.
 
+config BUSYBOX_CONFIG_FEATURE_CROND_SPECIAL_TIMES
+	bool "Support special times (@reboot, @daily, etc) in crontabs"
+	default BUSYBOX_DEFAULT_FEATURE_CROND_SPECIAL_TIMES
+	depends on BUSYBOX_CONFIG_CROND
+	help
+	string        meaning
+	------        -------
+	@reboot       Run once, at startup
+	@yearly       Run once a year:  "0 0 1 1 *"
+	@annually     Same as @yearly:  "0 0 1 1 *"
+	@monthly      Run once a month: "0 0 1 * *"
+	@weekly       Run once a week:  "0 0 * * 0"
+	@daily        Run once a day:   "0 0 * * *"
+	@midnight     Same as @daily:   "0 0 * * *"
+	@hourly       Run once an hour: "0 * * * *"
+
 config BUSYBOX_CONFIG_FEATURE_CROND_DIR
 	string "crond spool directory"
 	default BUSYBOX_DEFAULT_FEATURE_CROND_DIR
@@ -164,27 +266,13 @@ config BUSYBOX_CONFIG_FEATURE_CROND_DIR
 	help
 	Location of crond spool.
 config BUSYBOX_CONFIG_CRONTAB
-	bool "crontab"
+	bool "crontab (10 kb)"
 	default BUSYBOX_DEFAULT_CRONTAB
 	help
 	Crontab manipulates the crontab for a particular user. Only
 	the superuser may specify a different user and/or crontab directory.
-	Note that Busybox binary must be setuid root for this applet to
+	Note that busybox binary must be setuid root for this applet to
 	work properly.
-config BUSYBOX_CONFIG_DC
-	bool "dc"
-	default BUSYBOX_DEFAULT_DC
-	help
-	Dc is a reverse-polish desk calculator which supports unlimited
-	precision arithmetic.
-
-config BUSYBOX_CONFIG_FEATURE_DC_LIBM
-	bool "Enable power and exp functions (requires libm)"
-	default BUSYBOX_DEFAULT_FEATURE_DC_LIBM
-	depends on BUSYBOX_CONFIG_DC
-	help
-	Enable power and exp functions.
-	NOTE: This will require libm to be present for linking.
 config BUSYBOX_CONFIG_DEVFSD
 	bool "devfsd (obsolete)"
 	default BUSYBOX_DEFAULT_DEVFSD
@@ -219,8 +307,7 @@ config BUSYBOX_CONFIG_DEVFSD_FG_NP
 	depends on BUSYBOX_CONFIG_DEVFSD
 	help
 	-fg  Run the daemon in the foreground.
-	-np  Exit after parsing the configuration file.
-	       Do not poll for events.
+	-np  Exit after parsing config. Do not poll for events.
 
 config BUSYBOX_CONFIG_DEVFSD_VERBOSE
 	bool "Increases logging (and size)"
@@ -242,18 +329,18 @@ config BUSYBOX_CONFIG_FEATURE_DEVFS
 	/dev/loop0. If your /dev directory has normal names instead of
 	devfs names, you don't want this.
 config BUSYBOX_CONFIG_DEVMEM
-	bool "devmem"
+	bool "devmem (2.5 kb)"
 	default BUSYBOX_DEFAULT_DEVMEM
 	help
 	devmem is a small program that reads and writes from physical
 	memory using /dev/mem.
 config BUSYBOX_CONFIG_FBSPLASH
-	bool "fbsplash"
+	bool "fbsplash (26 kb)"
 	default BUSYBOX_DEFAULT_FBSPLASH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Shows splash image and progress bar on framebuffer device.
-	Can be used during boot phase of an embedded device. ~2kb.
+	Can be used during boot phase of an embedded device.
 	Usage:
 	- use kernel option 'vga=xxx' or otherwise enable fb device.
 	- put somewhere fbsplash.cfg file and an image in .ppm format.
@@ -269,38 +356,37 @@ config BUSYBOX_CONFIG_FBSPLASH
 	    "NN" (ASCII decimal number) - percentage to show on progress bar
 	    "exit" - well you guessed it
 config BUSYBOX_CONFIG_FLASH_ERASEALL
-	bool "flash_eraseall"
+	bool "flash_eraseall (5.9 kb)"
 	default BUSYBOX_DEFAULT_FLASH_ERASEALL  # doesn't build on Ubuntu 8.04
 	help
 	The flash_eraseall binary from mtd-utils as of git head c4c6a59eb.
 	This utility is used to erase the whole MTD device.
 config BUSYBOX_CONFIG_FLASH_LOCK
-	bool "flash_lock"
+	bool "flash_lock (2.1 kb)"
 	default BUSYBOX_DEFAULT_FLASH_LOCK  # doesn't build on Ubuntu 8.04
 	help
 	The flash_lock binary from mtd-utils as of git head 5ec0c10d0. This
 	utility locks part or all of the flash device.
 
 config BUSYBOX_CONFIG_FLASH_UNLOCK
-	bool "flash_unlock"
+	bool "flash_unlock (1.3 kb)"
 	default BUSYBOX_DEFAULT_FLASH_UNLOCK  # doesn't build on Ubuntu 8.04
 	help
 	The flash_unlock binary from mtd-utils as of git head 5ec0c10d0. This
 	utility unlocks part or all of the flash device.
 config BUSYBOX_CONFIG_FLASHCP
-	bool "flashcp"
+	bool "flashcp (5.3 kb)"
 	default BUSYBOX_DEFAULT_FLASHCP  # doesn't build on Ubuntu 8.04
 	help
 	The flashcp binary, inspired by mtd-utils as of git head 5eceb74f7.
 	This utility is used to copy images into a MTD device.
 config BUSYBOX_CONFIG_HDPARM
-	bool "hdparm"
+	bool "hdparm (25 kb)"
 	default BUSYBOX_DEFAULT_HDPARM
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Get/Set hard drive parameters. Primarily intended for ATA
-	drives. Adds about 13k (or around 30k if you enable the
-	FEATURE_HDPARM_GET_IDENTITY option)....
+	drives.
 
 config BUSYBOX_CONFIG_FEATURE_HDPARM_GET_IDENTITY
 	bool "Support obtaining detailed information directly from drives"
@@ -351,42 +437,47 @@ config BUSYBOX_CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA
 	depends on BUSYBOX_CONFIG_HDPARM
 	help
 	Enable the 'hdparm -d' option to get/set using_dma flag.
+config BUSYBOX_CONFIG_HEXEDIT
+	bool "hexedit (21 kb)"
+	default BUSYBOX_DEFAULT_HEXEDIT
+	help
+	Edit file in hexadecimal.
 config BUSYBOX_CONFIG_I2CGET
-	bool "i2cget"
+	bool "i2cget (5.5 kb)"
 	default BUSYBOX_DEFAULT_I2CGET
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Read from I2C/SMBus chip registers.
 
 config BUSYBOX_CONFIG_I2CSET
-	bool "i2cset"
+	bool "i2cset (6.7 kb)"
 	default BUSYBOX_DEFAULT_I2CSET
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Set I2C registers.
 
 config BUSYBOX_CONFIG_I2CDUMP
-	bool "i2cdump"
+	bool "i2cdump (7.1 kb)"
 	default BUSYBOX_DEFAULT_I2CDUMP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Examine I2C registers.
 
 config BUSYBOX_CONFIG_I2CDETECT
-	bool "i2cdetect"
+	bool "i2cdetect (7.1 kb)"
 	default BUSYBOX_DEFAULT_I2CDETECT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Detect I2C chips.
 
 config BUSYBOX_CONFIG_INOTIFYD
-	bool "inotifyd"
+	bool "inotifyd (3.6 kb)"
 	default BUSYBOX_DEFAULT_INOTIFYD  # doesn't build on Knoppix 5
 	help
 	Simple inotify daemon. Reports filesystem changes. Requires
 	kernel >= 2.6.13
 config BUSYBOX_CONFIG_LESS
-	bool "less"
+	bool "less (16 kb)"
 	default BUSYBOX_DEFAULT_LESS
 	help
 	'less' is a pager, meaning that it displays text files. It possesses
@@ -465,13 +556,29 @@ config BUSYBOX_CONFIG_FEATURE_LESS_LINENUMS
 	bool "Enable -N (dynamic switching of line numbers)"
 	default BUSYBOX_DEFAULT_FEATURE_LESS_LINENUMS
 	depends on BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD
+
+config BUSYBOX_CONFIG_FEATURE_LESS_RAW
+	bool "Enable -R ('raw control characters')"
+	default BUSYBOX_DEFAULT_FEATURE_LESS_RAW
+	depends on BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD
+	help
+	This is essential for less applet to work with tools that use colors
+	and paging, such as git, systemd tools or nmcli.
+
+config BUSYBOX_CONFIG_FEATURE_LESS_ENV
+	bool "Take options from $LESS environment variable"
+	default BUSYBOX_DEFAULT_FEATURE_LESS_ENV
+	depends on BUSYBOX_CONFIG_FEATURE_LESS_DASHCMD
+	help
+	This is essential for less applet to work with tools that use colors
+	and paging, such as git, systemd tools or nmcli.
 config BUSYBOX_CONFIG_LOCK
 	bool "lock"
 	default BUSYBOX_DEFAULT_LOCK
 	help
-	Small utility for using locks in scripts
+	  Small utility for using locks in scripts
 config BUSYBOX_CONFIG_LSSCSI
-	bool "lsscsi"
+	bool "lsscsi (2.5 kb)"
 	default BUSYBOX_DEFAULT_LSSCSI
 	#select PLATFORM_LINUX
 	help
@@ -480,7 +587,7 @@ config BUSYBOX_CONFIG_LSSCSI
 
 	This version uses sysfs (/sys/bus/scsi/devices) only.
 config BUSYBOX_CONFIG_MAKEDEVS
-	bool "makedevs"
+	bool "makedevs (9.2 kb)"
 	default BUSYBOX_DEFAULT_MAKEDEVS
 	help
 	'makedevs' is a utility used to create a batch of devices with
@@ -511,50 +618,50 @@ config BUSYBOX_CONFIG_FEATURE_MAKEDEVS_TABLE
 
 endchoice
 config BUSYBOX_CONFIG_MAN
-	bool "man"
+	bool "man (26 kb)"
 	default BUSYBOX_DEFAULT_MAN
 	help
 	Format and display manual pages.
 config BUSYBOX_CONFIG_MICROCOM
-	bool "microcom"
+	bool "microcom (5.7 kb)"
 	default BUSYBOX_DEFAULT_MICROCOM
 	help
 	The poor man's minicom utility for chatting with serial port devices.
 config BUSYBOX_CONFIG_MT
-	bool "mt"
+	bool "mt (2.5 kb)"
 	default BUSYBOX_DEFAULT_MT
 	help
 	mt is used to control tape devices. You can use the mt utility
 	to advance or rewind a tape past a specified number of archive
 	files on the tape.
 config BUSYBOX_CONFIG_NANDWRITE
-	bool "nandwrite"
+	bool "nandwrite (4.8 kb)"
 	default BUSYBOX_DEFAULT_NANDWRITE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Write to the specified MTD device, with bad blocks awareness
 
 config BUSYBOX_CONFIG_NANDDUMP
-	bool "nanddump"
+	bool "nanddump (5.2 kb)"
 	default BUSYBOX_DEFAULT_NANDDUMP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Dump the content of raw NAND chip
 config BUSYBOX_CONFIG_PARTPROBE
-	bool "partprobe"
+	bool "partprobe (3.5 kb)"
 	default BUSYBOX_DEFAULT_PARTPROBE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Ask kernel to rescan partition table.
 config BUSYBOX_CONFIG_RAIDAUTORUN
-	bool "raidautorun"
+	bool "raidautorun (1.3 kb)"
 	default BUSYBOX_DEFAULT_RAIDAUTORUN
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	raidautorun tells the kernel md driver to
 	search and start RAID arrays.
 config BUSYBOX_CONFIG_READAHEAD
-	bool "readahead"
+	bool "readahead (1.5 kb)"
 	default BUSYBOX_DEFAULT_READAHEAD
 	depends on BUSYBOX_CONFIG_LFS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
@@ -571,7 +678,7 @@ config BUSYBOX_CONFIG_READAHEAD
 	As readahead(2) blocks until each file has been read, it is best to
 	run this applet as a background job.
 config BUSYBOX_CONFIG_RFKILL
-	bool "rfkill"
+	bool "rfkill (4.4 kb)"
 	default BUSYBOX_DEFAULT_RFKILL # doesn't build on Ubuntu 9.04
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -583,41 +690,46 @@ config BUSYBOX_CONFIG_RFKILL
 	rfkill block|unblock wlan : block/unblock all wlan(wifi) devices
 
 config BUSYBOX_CONFIG_RUNLEVEL
-	bool "runlevel"
+	bool "runlevel (559 bytes)"
 	default BUSYBOX_DEFAULT_RUNLEVEL
 	depends on BUSYBOX_CONFIG_FEATURE_UTMP
 	help
-	find the current and previous system runlevel.
+	Find the current and previous system runlevel.
 
 	This applet uses utmp but does not rely on busybox supporing
 	utmp on purpose. It is used by e.g. emdebian via /etc/init.d/rc.
 config BUSYBOX_CONFIG_RX
-	bool "rx"
+	bool "rx (2.9 kb)"
 	default BUSYBOX_DEFAULT_RX
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Receive files using the Xmodem protocol.
+config BUSYBOX_CONFIG_SETFATTR
+	bool "setfattr (3.7 kb)"
+	default BUSYBOX_DEFAULT_SETFATTR
+	help
+	Set/delete extended attributes on files
 config BUSYBOX_CONFIG_SETSERIAL
-	bool "setserial"
+	bool "setserial (6.9 kb)"
 	default BUSYBOX_DEFAULT_SETSERIAL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Retrieve or set Linux serial port.
 config BUSYBOX_CONFIG_STRINGS
-	bool "strings"
+	bool "strings (4.6 kb)"
 	default BUSYBOX_DEFAULT_STRINGS
 	help
 	strings prints the printable character sequences for each file
 	specified.
 config BUSYBOX_CONFIG_TIME
-	bool "time"
+	bool "time (6.8 kb)"
 	default BUSYBOX_DEFAULT_TIME
 	help
 	The time command runs the specified program with the given arguments.
 	When the command finishes, time writes a message to standard output
 	giving timing statistics about this program run.
 config BUSYBOX_CONFIG_TTYSIZE
-	bool "ttysize"
+	bool "ttysize (432 bytes)"
 	default BUSYBOX_DEFAULT_TTYSIZE
 	help
 	A replacement for "stty size". Unlike stty, can report only width,
@@ -625,59 +737,59 @@ config BUSYBOX_CONFIG_TTYSIZE
 	error, but returns default 80x24.
 	Usage in shell scripts: width=`ttysize w`.
 config BUSYBOX_CONFIG_UBIATTACH
-	bool "ubiattach"
+	bool "ubiattach (4.2 kb)"
 	default BUSYBOX_DEFAULT_UBIATTACH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Attach MTD device to an UBI device.
 
 config BUSYBOX_CONFIG_UBIDETACH
-	bool "ubidetach"
+	bool "ubidetach (4.1 kb)"
 	default BUSYBOX_DEFAULT_UBIDETACH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Detach MTD device from an UBI device.
 
 config BUSYBOX_CONFIG_UBIMKVOL
-	bool "ubimkvol"
+	bool "ubimkvol (5.3 kb)"
 	default BUSYBOX_DEFAULT_UBIMKVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Create a UBI volume.
 
 config BUSYBOX_CONFIG_UBIRMVOL
-	bool "ubirmvol"
+	bool "ubirmvol (4.9 kb)"
 	default BUSYBOX_DEFAULT_UBIRMVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Delete a UBI volume.
 
 config BUSYBOX_CONFIG_UBIRSVOL
-	bool "ubirsvol"
+	bool "ubirsvol (4.2 kb)"
 	default BUSYBOX_DEFAULT_UBIRSVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Resize a UBI volume.
 
 config BUSYBOX_CONFIG_UBIUPDATEVOL
-	bool "ubiupdatevol"
+	bool "ubiupdatevol (5.2 kb)"
 	default BUSYBOX_DEFAULT_UBIUPDATEVOL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Update a UBI volume.
 config BUSYBOX_CONFIG_UBIRENAME
-	bool "ubirename"
+	bool "ubirename (2.4 kb)"
 	default BUSYBOX_DEFAULT_UBIRENAME
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to rename UBI volumes
 config BUSYBOX_CONFIG_VOLNAME
-	bool "volname"
+	bool "volname (1.6 kb)"
 	default BUSYBOX_DEFAULT_VOLNAME
 	help
 	Prints a CD-ROM volume name.
 config BUSYBOX_CONFIG_WATCHDOG
-	bool "watchdog"
+	bool "watchdog (5.3 kb)"
 	default BUSYBOX_DEFAULT_WATCHDOG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
diff --git a/package/utils/busybox/config/modutils/Config.in b/package/utils/busybox/config/modutils/Config.in
index de88af6e72..cc2d20813b 100644
--- a/package/utils/busybox/config/modutils/Config.in
+++ b/package/utils/busybox/config/modutils/Config.in
@@ -1,7 +1,7 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Linux Module Utilities"
@@ -35,7 +35,7 @@ config BUSYBOX_CONFIG_MODPROBE_SMALL
 	/etc/modules/$module_name files.
 
 config BUSYBOX_CONFIG_DEPMOD
-	bool "depmod"
+	bool "depmod (27 kb)"
 	default BUSYBOX_DEFAULT_DEPMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -43,13 +43,13 @@ config BUSYBOX_CONFIG_DEPMOD
 	and modules.symbols) that contain dependency information
 	for modprobe.
 config BUSYBOX_CONFIG_INSMOD
-	bool "insmod"
+	bool "insmod (22 kb)"
 	default BUSYBOX_DEFAULT_INSMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	insmod is used to load specified modules in the running kernel.
 config BUSYBOX_CONFIG_LSMOD
-	bool "lsmod"
+	bool "lsmod (1.9 kb)"
 	default BUSYBOX_DEFAULT_LSMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -64,13 +64,13 @@ config BUSYBOX_CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT
 	the format of module-init-tools for Linux kernel 2.6.
 	Increases size somewhat.
 config BUSYBOX_CONFIG_MODINFO
-	bool "modinfo"
+	bool "modinfo (24 kb)"
 	default BUSYBOX_DEFAULT_MODINFO
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Show information about a Linux Kernel module
 config BUSYBOX_CONFIG_MODPROBE
-	bool "modprobe"
+	bool "modprobe (28 kb)"
 	default BUSYBOX_DEFAULT_MODPROBE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -88,7 +88,7 @@ config BUSYBOX_CONFIG_FEATURE_MODPROBE_BLACKLIST
 	hardware autodetection scripts to load modules like evdev, frame
 	buffer drivers etc.
 config BUSYBOX_CONFIG_RMMOD
-	bool "rmmod"
+	bool "rmmod (3.3 kb)"
 	default BUSYBOX_DEFAULT_RMMOD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -202,12 +202,12 @@ config BUSYBOX_CONFIG_FEATURE_MODUTILS_ALIAS
 	help
 	Generate and parse modules.alias containing aliases for bus
 	identifiers:
-	    alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
+		alias pcmcia:m*c*f03fn*pfn*pa*pb*pc*pd* parport_cs
 
 	and aliases for logical modules names e.g.:
-	    alias padlock_aes aes
-	    alias aes_i586 aes
-	    alias aes_generic aes
+		alias padlock_aes aes
+		alias aes_i586 aes
+		alias aes_generic aes
 
 	Say Y if unsure.
 
@@ -218,7 +218,7 @@ config BUSYBOX_CONFIG_FEATURE_MODUTILS_SYMBOLS
 	help
 	Generate and parse modules.symbols containing aliases for
 	symbol_request() kernel calls, such as:
-	    alias symbol:usb_sg_init usbcore
+		alias symbol:usb_sg_init usbcore
 
 	Say Y if unsure.
 
diff --git a/package/utils/busybox/config/networking/Config.in b/package/utils/busybox/config/networking/Config.in
index f9063d367e..a7d3d5a2e1 100644
--- a/package/utils/busybox/config/networking/Config.in
+++ b/package/utils/busybox/config/networking/Config.in
@@ -1,7 +1,7 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Networking Utilities"
@@ -9,7 +9,6 @@ menu "Networking Utilities"
 config BUSYBOX_CONFIG_FEATURE_IPV6
 	bool "Enable IPv6 support"
 	default BUSYBOX_DEFAULT_FEATURE_IPV6
-	depends on IPV6
 	help
 	Enable IPv6 support in busybox.
 	This adds IPv6 support in the networking applets.
@@ -48,21 +47,31 @@ config BUSYBOX_CONFIG_VERBOSE_RESOLUTION_ERRORS
 	"can't resolve 'hostname.com'" and want to know more.
 	This may increase size of your executable a bit.
 
+config BUSYBOX_CONFIG_FEATURE_TLS_SHA1
+	bool "In TLS code, support ciphers which use deprecated SHA1"
+	depends on BUSYBOX_CONFIG_TLS
+	default BUSYBOX_DEFAULT_FEATURE_TLS_SHA1
+	help
+	Selecting this option increases interoperability with very old
+	servers, but slightly increases code size.
+
+	Most TLS servers support SHA256 today (2018), since SHA1 is
+	considered possibly insecure (although not yet definitely broken).
+
 config BUSYBOX_CONFIG_ARP
-	bool "arp"
+	bool "arp (10 kb)"
 	default BUSYBOX_DEFAULT_ARP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Manipulate the system ARP cache.
 config BUSYBOX_CONFIG_ARPING
-	bool "arping"
+	bool "arping (9 kb)"
 	default BUSYBOX_DEFAULT_ARPING
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Ping hosts by ARP packets.
-
 config BUSYBOX_CONFIG_BRCTL
-	bool "brctl"
+	bool "brctl (4.7 kb)"
 	default BUSYBOX_DEFAULT_BRCTL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -75,9 +84,9 @@ config BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
 	depends on BUSYBOX_CONFIG_BRCTL
 	help
 	Add support for extended option like:
-	    setageing, setfd, sethello, setmaxage,
-	    setpathcost, setportprio, setbridgeprio,
-	    stp
+		setageing, setfd, sethello, setmaxage,
+		setpathcost, setportprio, setbridgeprio,
+		stp
 	This adds about 600 bytes.
 
 config BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW
@@ -86,30 +95,31 @@ config BUSYBOX_CONFIG_FEATURE_BRCTL_SHOW
 	depends on BUSYBOX_CONFIG_BRCTL && BUSYBOX_CONFIG_FEATURE_BRCTL_FANCY
 	help
 	Add support for option which prints the current config:
-	    show
+		show
 config BUSYBOX_CONFIG_DNSD
-	bool "dnsd"
+	bool "dnsd (9.8 kb)"
 	default BUSYBOX_DEFAULT_DNSD
 	help
 	Small and static DNS server daemon.
 config BUSYBOX_CONFIG_ETHER_WAKE
-	bool "ether-wake"
+	bool "ether-wake (4.9 kb)"
 	default BUSYBOX_DEFAULT_ETHER_WAKE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Send a magic packet to wake up sleeping machines.
 config BUSYBOX_CONFIG_FTPD
-	bool "ftpd"
+	bool "ftpd (30 kb)"
 	default BUSYBOX_DEFAULT_FTPD
 	help
 	Simple FTP daemon. You have to run it via inetd.
 
 config BUSYBOX_CONFIG_FEATURE_FTPD_WRITE
-	bool "Enable upload commands"
+	bool "Enable -w (upload commands)"
 	default BUSYBOX_DEFAULT_FEATURE_FTPD_WRITE
 	depends on BUSYBOX_CONFIG_FTPD
 	help
-	Enable all kinds of FTP upload commands (-w option)
+	Enable -w option. "ftpd -w" will accept upload commands
+	such as STOR, STOU, APPE, DELE, MKD, RMD, rename commands.
 
 config BUSYBOX_CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST
 	bool "Enable workaround for RFC-violating clients"
@@ -127,15 +137,21 @@ config BUSYBOX_CONFIG_FEATURE_FTPD_AUTHENTICATION
 	default BUSYBOX_DEFAULT_FEATURE_FTPD_AUTHENTICATION
 	depends on BUSYBOX_CONFIG_FTPD
 	help
-	Enable basic system login as seen in telnet etc.
+	Require login, and change to logged in user's UID:GID before
+	accessing any files. Option "-a USER" allows "anonymous"
+	logins (treats them as if USER logged in).
+
+	If this option is not selected, ftpd runs with the rights
+	of the user it was started under, and does not require login.
+	Take care to not launch it under root.
 config BUSYBOX_CONFIG_FTPGET
-	bool "ftpget"
+	bool "ftpget (7.8 kb)"
 	default BUSYBOX_DEFAULT_FTPGET
 	help
 	Retrieve a remote file via FTP.
 
 config BUSYBOX_CONFIG_FTPPUT
-	bool "ftpput"
+	bool "ftpput (7.5 kb)"
 	default BUSYBOX_DEFAULT_FTPPUT
 	help
 	Store a remote file via FTP.
@@ -145,18 +161,18 @@ config BUSYBOX_CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS
 	default BUSYBOX_DEFAULT_FEATURE_FTPGETPUT_LONG_OPTIONS
 	depends on BUSYBOX_CONFIG_LONG_OPTS && (BUSYBOX_CONFIG_FTPGET || BUSYBOX_CONFIG_FTPPUT)
 config BUSYBOX_CONFIG_HOSTNAME
-	bool "hostname"
+	bool "hostname (5.5 kb)"
 	default BUSYBOX_DEFAULT_HOSTNAME
 	help
 	Show or set the system's host name.
 
 config BUSYBOX_CONFIG_DNSDOMAINNAME
-	bool "dnsdomainname"
+	bool "dnsdomainname (3.6 kb)"
 	default BUSYBOX_DEFAULT_DNSDOMAINNAME
 	help
 	Alias to "hostname -d".
 config BUSYBOX_CONFIG_HTTPD
-	bool "httpd"
+	bool "httpd (32 kb)"
 	default BUSYBOX_DEFAULT_HTTPD
 	help
 	HTTP server.
@@ -181,7 +197,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_SETUID
 	different user.
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
-	bool "Enable Basic http Authentication"
+	bool "Enable HTTP authentication"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_BASIC_AUTH
 	depends on BUSYBOX_CONFIG_HTTPD
 	help
@@ -191,7 +207,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
 	/adm:toor:PaSsWd
 
 config BUSYBOX_CONFIG_FEATURE_HTTPD_AUTH_MD5
-	bool "Support MD5 crypted passwords for http Authentication"
+	bool "Support MD5-encrypted passwords in HTTP authentication"
 	default BUSYBOX_DEFAULT_FEATURE_HTTPD_AUTH_MD5
 	depends on BUSYBOX_CONFIG_FEATURE_HTTPD_BASIC_AUTH
 	help
@@ -249,7 +265,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_ERROR_PAGES
 	This option allows you to define custom error pages in
 	the configuration file instead of the default HTTP status
 	error pages. For instance, if you add the line:
-	        E404:/path/e404.html
+		E404:/path/e404.html
 	in the config file, the server will respond the specified
 	'/path/e404.html' file instead of the terse '404 NOT FOUND'
 	message.
@@ -262,7 +278,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_PROXY
 	This option allows you to define URLs that will be forwarded
 	to another HTTP server. To setup add the following line to the
 	configuration file
-	        P:/url/:http://hostname[:port]/new/path/
+		P:/url/:http://hostname[:port]/new/path/
 	Then a request to /url/myfile will be forwarded to
 	http://hostname[:port]/new/path/myfile.
 
@@ -274,7 +290,7 @@ config BUSYBOX_CONFIG_FEATURE_HTTPD_GZIP
 	Makes httpd send files using GZIP content encoding if the
 	client supports it and a pre-compressed <file>.gz exists.
 config BUSYBOX_CONFIG_IFCONFIG
-	bool "ifconfig"
+	bool "ifconfig (12 kb)"
 	default BUSYBOX_DEFAULT_IFCONFIG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -321,20 +337,20 @@ config BUSYBOX_CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS
 	Setting this will make ifconfig attempt to find the broadcast
 	automatically if the value '+' is used.
 config BUSYBOX_CONFIG_IFENSLAVE
-	bool "ifenslave"
+	bool "ifenslave (13 kb)"
 	default BUSYBOX_DEFAULT_IFENSLAVE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Userspace application to bind several interfaces
 	to a logical interface (use with kernel bonding driver).
 config BUSYBOX_CONFIG_IFPLUGD
-	bool "ifplugd"
+	bool "ifplugd (10 kb)"
 	default BUSYBOX_DEFAULT_IFPLUGD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Network interface plug detection daemon.
 config BUSYBOX_CONFIG_IFUP
-	bool "ifup"
+	bool "ifup (14 kb)"
 	default BUSYBOX_DEFAULT_IFUP
 	help
 	Activate the specified interfaces. This applet makes use
@@ -350,7 +366,7 @@ config BUSYBOX_CONFIG_IFUP
 	via busybox or via standalone utilities.
 
 config BUSYBOX_CONFIG_IFDOWN
-	bool "ifdown"
+	bool "ifdown (13 kb)"
 	default BUSYBOX_DEFAULT_IFDOWN
 	help
 	Deactivate the specified interfaces.
@@ -375,11 +391,11 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IP
 	than the default of using the older "ifconfig" and "route" utilities.
 
 	If Y: you must install either the full-blown iproute2 package
-	or enable "ip" applet in Busybox, or the "ifup" and "ifdown" applets
+	or enable "ip" applet in busybox, or the "ifup" and "ifdown" applets
 	will not work.
 
 	If N: you must install either the full-blown ifconfig and route
-	utilities, or enable these applets in Busybox.
+	utilities, or enable these applets in busybox.
 
 config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_IPV4
 	bool "Support IPv4"
@@ -414,103 +430,129 @@ config BUSYBOX_CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP
 	Otherwise, if udhcpc applet is enabled, it is used.
 	Otherwise, ifup/ifdown will have no support for DHCP.
 config BUSYBOX_CONFIG_INETD
-	bool "inetd"
+	bool "inetd (18 kb)"
 	default BUSYBOX_DEFAULT_INETD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	Internet superserver daemon
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
-	bool "Support echo service"
+	bool "Support echo service on port 7"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_ECHO
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	Echo received data internal inetd service
+	Internal service which echoes data back.
+	Activated by configuration lines like these:
+		echo stream tcp nowait root internal
+		echo dgram  udp wait   root internal
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
-	bool "Support discard service"
+	bool "Support discard service on port 8"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	Internet /dev/null internal inetd service
+	Internal service which discards all input.
+	Activated by configuration lines like these:
+		discard stream tcp nowait root internal
+		discard dgram  udp wait   root internal
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME
-	bool "Support time service"
+	bool "Support time service on port 37"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_TIME
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	Return 32 bit time since 1900 internal inetd service
+	Internal service which returns big-endian 32-bit number
+	of seconds passed since 1900-01-01. The number wraps around
+	on overflow.
+	Activated by configuration lines like these:
+		time stream tcp nowait root internal
+		time dgram  udp wait   root internal
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
-	bool "Support daytime service"
+	bool "Support daytime service on port 13"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	Return human-readable time internal inetd service
+	Internal service which returns human-readable time.
+	Activated by configuration lines like these:
+		daytime stream tcp nowait root internal
+		daytime dgram  udp wait   root internal
 
 config BUSYBOX_CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
-	bool "Support chargen service"
+	bool "Support chargen service on port 19"
 	default BUSYBOX_DEFAULT_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN
 	depends on BUSYBOX_CONFIG_INETD
 	help
-	Familiar character generator internal inetd service
+	Internal service which generates endless stream
+	of all ASCII chars beetween space and char 126.
+	Activated by configuration lines like these:
+		chargen stream tcp nowait root internal
+		chargen dgram  udp wait   root internal
 
+config BUSYBOX_CONFIG_FEATURE_INETD_RPC
+	bool "Support RPC services"
+	default BUSYBOX_DEFAULT_FEATURE_INETD_RPC  # very rarely used, and needs Sun RPC support in libc
+	depends on BUSYBOX_CONFIG_INETD
+	help
+	Support Sun-RPC based services
 config BUSYBOX_CONFIG_IP
-	bool "ip"
+	bool "ip (35 kb)"
 	default BUSYBOX_DEFAULT_IP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The "ip" applet is a TCP/IP interface configuration and routing
-	utility. You generally don't need "ip" to use busybox with
-	TCP/IP.
+	utility.
+	Short forms (enabled below) are busybox-specific extensions.
+	The standard "ip" utility does not provide them. If you are
+	trying to be portable, it's better to use "ip CMD" forms.
 
 config BUSYBOX_CONFIG_IPADDR
-	bool "ipaddr"
+	bool "ipaddr (14 kb)"
 	default BUSYBOX_DEFAULT_IPADDR
 	select BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	Support short form of ip addr: ipaddr
+	Short form of "ip addr"
 
 config BUSYBOX_CONFIG_IPLINK
-	bool "iplink"
+	bool "iplink (17 kb)"
 	default BUSYBOX_DEFAULT_IPLINK
 	select BUSYBOX_CONFIG_FEATURE_IP_LINK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	Support short form of ip link: iplink
+	Short form of "ip link"
 
 config BUSYBOX_CONFIG_IPROUTE
-	bool "iproute"
+	bool "iproute (15 kb)"
 	default BUSYBOX_DEFAULT_IPROUTE
 	select BUSYBOX_CONFIG_FEATURE_IP_ROUTE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	Support short form of ip route: iproute
+	Short form of "ip route"
 
 config BUSYBOX_CONFIG_IPTUNNEL
-	bool "iptunnel"
+	bool "iptunnel (9.6 kb)"
 	default BUSYBOX_DEFAULT_IPTUNNEL
 	select BUSYBOX_CONFIG_FEATURE_IP_TUNNEL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	Support short form of ip tunnel: iptunnel
+	Short form of "ip tunnel"
 
 config BUSYBOX_CONFIG_IPRULE
-	bool "iprule"
+	bool "iprule (10 kb)"
 	default BUSYBOX_DEFAULT_IPRULE
 	select BUSYBOX_CONFIG_FEATURE_IP_RULE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	Support short form of ip rule: iprule
+	Short form of "ip rule"
 
 config BUSYBOX_CONFIG_IPNEIGH
-	bool "ipneigh"
+	bool "ipneigh (8.3 kb)"
 	default BUSYBOX_DEFAULT_IPNEIGH
 	select BUSYBOX_CONFIG_FEATURE_IP_NEIGH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	Support short form of ip neigh: ipneigh
+	Short form of "ip neigh"
 
 config BUSYBOX_CONFIG_FEATURE_IP_ADDRESS
 	bool "ip address"
@@ -571,7 +613,7 @@ config BUSYBOX_CONFIG_FEATURE_IP_RARE_PROTOCOLS
 	Ethernet, wireless, infrared, ppp/slip, ip tunnelling
 	link types are supported without this option selected.
 config BUSYBOX_CONFIG_IPCALC
-	bool "ipcalc"
+	bool "ipcalc (4.4 kb)"
 	default BUSYBOX_DEFAULT_IPCALC
 	help
 	ipcalc takes an IP address and netmask and calculates the
@@ -590,14 +632,14 @@ config BUSYBOX_CONFIG_FEATURE_IPCALC_FANCY
 	Adds the options hostname, prefix and silent to the output of
 	"ipcalc".
 config BUSYBOX_CONFIG_FAKEIDENTD
-	bool "fakeidentd"
+	bool "fakeidentd (8.7 kb)"
 	default BUSYBOX_DEFAULT_FAKEIDENTD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
 	fakeidentd listens on the ident port and returns a predefined
 	fake value on any query.
 config BUSYBOX_CONFIG_NAMEIF
-	bool "nameif"
+	bool "nameif (6.6 kb)"
 	default BUSYBOX_DEFAULT_NAMEIF
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
@@ -609,8 +651,8 @@ config BUSYBOX_CONFIG_NAMEIF
 	Maximum interface name length: IFNAMSIZ = 16
 	File fields are separated by space or tab.
 	File format:
-	# Comment
-	new_interface_name    XX:XX:XX:XX:XX:XX
+		# Comment
+		new_interface_name  XX:XX:XX:XX:XX:XX
 
 config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED
 	bool "Extended nameif"
@@ -620,34 +662,40 @@ config BUSYBOX_CONFIG_FEATURE_NAMEIF_EXTENDED
 	This extends the nameif syntax to support the bus_info, driver,
 	phyaddr selectors. The syntax is compatible to the normal nameif.
 	File format:
-	    new_interface_name  driver=asix bus=usb-0000:00:08.2-3
-	    new_interface_name  bus=usb-0000:00:08.2-3 00:80:C8:38:91:B5
-	    new_interface_name  phy_address=2 00:80:C8:38:91:B5
-	    new_interface_name  mac=00:80:C8:38:91:B5
-	    new_interface_name  00:80:C8:38:91:B5
+		new_interface_name  driver=asix bus=usb-0000:00:08.2-3
+		new_interface_name  bus=usb-0000:00:08.2-3 00:80:C8:38:91:B5
+		new_interface_name  phy_address=2 00:80:C8:38:91:B5
+		new_interface_name  mac=00:80:C8:38:91:B5
+		new_interface_name  00:80:C8:38:91:B5
 config BUSYBOX_CONFIG_NBDCLIENT
-	bool "nbd-client"
+	bool "nbd-client (6 kb)"
 	default BUSYBOX_DEFAULT_NBDCLIENT
 	help
 	Network block device client
 config BUSYBOX_CONFIG_NC
-	bool "nc"
+	bool "nc (11 kb)"
 	default BUSYBOX_DEFAULT_NC
 	help
 	A simple Unix utility which reads and writes data across network
 	connections.
 
+config BUSYBOX_CONFIG_NETCAT
+	bool "netcat (11 kb)"
+	default BUSYBOX_DEFAULT_NETCAT
+	help
+	Alias to nc.
+
 config BUSYBOX_CONFIG_NC_SERVER
 	bool "Netcat server options (-l)"
 	default BUSYBOX_DEFAULT_NC_SERVER
-	depends on BUSYBOX_CONFIG_NC
+	depends on BUSYBOX_CONFIG_NC || BUSYBOX_CONFIG_NETCAT
 	help
 	Allow netcat to act as a server.
 
 config BUSYBOX_CONFIG_NC_EXTRA
 	bool "Netcat extensions (-eiw and -f FILE)"
 	default BUSYBOX_DEFAULT_NC_EXTRA
-	depends on BUSYBOX_CONFIG_NC
+	depends on BUSYBOX_CONFIG_NC || BUSYBOX_CONFIG_NETCAT
 	help
 	Add -e (support for executing the rest of the command line after
 	making or receiving a successful connection), -i (delay interval for
@@ -655,8 +703,8 @@ config BUSYBOX_CONFIG_NC_EXTRA
 
 config BUSYBOX_CONFIG_NC_110_COMPAT
 	bool "Netcat 1.10 compatibility (+2.5k)"
-	default BUSYBOX_DEFAULT_NC_110_COMPAT  # off specially for Rob
-	depends on BUSYBOX_CONFIG_NC
+	default BUSYBOX_DEFAULT_NC_110_COMPAT
+	depends on BUSYBOX_CONFIG_NC || BUSYBOX_CONFIG_NETCAT
 	help
 	This option makes nc closely follow original nc-1.10.
 	The code is about 2.5k bigger. It enables
@@ -666,9 +714,9 @@ config BUSYBOX_CONFIG_NETMSG
 	bool "netmsg"
 	default BUSYBOX_DEFAULT_NETMSG
 	help
-	simple program for sending udp broadcast messages
+	  simple program for sending udp broadcast messages
 config BUSYBOX_CONFIG_NETSTAT
-	bool "netstat"
+	bool "netstat (10 kb)"
 	default BUSYBOX_DEFAULT_NETSTAT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -690,16 +738,26 @@ config BUSYBOX_CONFIG_FEATURE_NETSTAT_PRG
 	Add support for -p flag to print out PID and program name.
 	+700 bytes of code.
 config BUSYBOX_CONFIG_NSLOOKUP
-	bool "nslookup"
+	bool "nslookup (9.7 kb)"
 	default BUSYBOX_DEFAULT_NSLOOKUP
 	help
 	nslookup is a tool to query Internet name servers.
+
+config BUSYBOX_CONFIG_FEATURE_NSLOOKUP_BIG
+	bool "Use internal resolver code instead of libc"
+	depends on BUSYBOX_CONFIG_NSLOOKUP
+	default BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_BIG
+
+config BUSYBOX_CONFIG_FEATURE_NSLOOKUP_LONG_OPTIONS
+	bool "Enable long options"
+	default BUSYBOX_DEFAULT_FEATURE_NSLOOKUP_LONG_OPTIONS
+	depends on BUSYBOX_CONFIG_FEATURE_NSLOOKUP_BIG && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_NSLOOKUP_OPENWRT
-	bool "nslookup_lede"
+	bool "nslookup_openwrt"
 	depends on !BUSYBOX_CONFIG_NSLOOKUP
 	default BUSYBOX_DEFAULT_NSLOOKUP_OPENWRT
 	help
-	nslookup is a tool to query Internet name servers (OpenWrt flavor).
+	  nslookup is a tool to query Internet name servers (LEDE flavor).
 
 config BUSYBOX_CONFIG_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS
        bool "Enable long options"
@@ -708,7 +766,7 @@ config BUSYBOX_CONFIG_FEATURE_NSLOOKUP_OPENWRT_LONG_OPTIONS
        help
          Support long options for the nslookup applet.
 config BUSYBOX_CONFIG_NTPD
-	bool "ntpd"
+	bool "ntpd (22 kb)"
 	default BUSYBOX_DEFAULT_NTPD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -729,8 +787,13 @@ config BUSYBOX_CONFIG_FEATURE_NTPD_CONF
 	help
 	Make ntpd look in /etc/ntp.conf for peers. Only "server address"
 	is supported.
+
+config BUSYBOX_CONFIG_FEATURE_NTP_AUTH
+	bool "Support md5/sha1 message authentication codes"
+	default BUSYBOX_DEFAULT_FEATURE_NTP_AUTH
+	depends on BUSYBOX_CONFIG_NTPD
 config BUSYBOX_CONFIG_PING
-	bool "ping"
+	bool "ping (10 kb)"
 	default BUSYBOX_DEFAULT_PING
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -738,58 +801,68 @@ config BUSYBOX_CONFIG_PING
 	elicit an ICMP ECHO_RESPONSE from a host or gateway.
 
 config BUSYBOX_CONFIG_PING6
-	bool "ping6"
+	bool "ping6 (11 kb)"
 	default BUSYBOX_DEFAULT_PING6
 	depends on BUSYBOX_CONFIG_FEATURE_IPV6
 	help
-	This will give you a ping that can talk IPv6.
+	Alias to "ping -6".
 
 config BUSYBOX_CONFIG_FEATURE_FANCY_PING
 	bool "Enable fancy ping output"
 	default BUSYBOX_DEFAULT_FEATURE_FANCY_PING
 	depends on BUSYBOX_CONFIG_PING || BUSYBOX_CONFIG_PING6
 	help
-	Make the output from the ping applet include statistics, and at the
-	same time provide full support for ICMP packets.
+	With this option off, ping will say "HOST is alive!"
+	or terminate with SIGALRM in 5 seconds otherwise.
+	No command-line options will be recognized.
 config BUSYBOX_CONFIG_PSCAN
-	bool "pscan"
+	bool "pscan (6 kb)"
 	default BUSYBOX_DEFAULT_PSCAN
 	help
 	Simple network port scanner.
 config BUSYBOX_CONFIG_ROUTE
-	bool "route"
+	bool "route (8.7 kb)"
 	default BUSYBOX_DEFAULT_ROUTE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Route displays or manipulates the kernel's IP routing tables.
 config BUSYBOX_CONFIG_SLATTACH
-	bool "slattach"
+	bool "slattach (6.2 kb)"
 	default BUSYBOX_DEFAULT_SLATTACH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	slattach is a small utility to attach network interfaces to serial
-	lines.
+	slattach configures serial line as SLIP network interface.
 config BUSYBOX_CONFIG_SSL_CLIENT
-	bool "ssl_client"
+	bool "ssl_client (25 kb)"
 	default BUSYBOX_DEFAULT_SSL_CLIENT
 	select BUSYBOX_CONFIG_TLS
 	help
 	This tool pipes data to/from a socket, TLS-encrypting it.
+config BUSYBOX_CONFIG_TC
+	bool "tc (8.3 kb)"
+	default BUSYBOX_DEFAULT_TC
+	help
+	Show / manipulate traffic control settings
+
+config BUSYBOX_CONFIG_FEATURE_TC_INGRESS
+	bool "Enable ingress"
+	default BUSYBOX_DEFAULT_FEATURE_TC_INGRESS
+	depends on BUSYBOX_CONFIG_TC
 config BUSYBOX_CONFIG_TCPSVD
-	bool "tcpsvd"
+	bool "tcpsvd (14 kb)"
 	default BUSYBOX_DEFAULT_TCPSVD
 	help
 	tcpsvd listens on a TCP port and runs a program for each new
 	connection.
 
 config BUSYBOX_CONFIG_UDPSVD
-	bool "udpsvd"
+	bool "udpsvd (13 kb)"
 	default BUSYBOX_DEFAULT_UDPSVD
 	help
 	udpsvd listens on an UDP port and runs a program for each new
 	connection.
 config BUSYBOX_CONFIG_TELNET
-	bool "telnet"
+	bool "telnet (8.8 kb)"
 	default BUSYBOX_DEFAULT_TELNET
 	help
 	Telnet is an interface to the TELNET protocol, but is also commonly
@@ -812,14 +885,14 @@ config BUSYBOX_CONFIG_FEATURE_TELNET_AUTOLOGIN
 	Setting this option will forward the USER environment variable to the
 	remote host you are connecting to. This is useful when you need to
 	log into a machine without telling the username (autologin). This
-	option enables `-a' and `-l USER' arguments.
+	option enables '-a' and '-l USER' options.
 
 config BUSYBOX_CONFIG_FEATURE_TELNET_WIDTH
 	bool "Enable window size autodetection"
 	default BUSYBOX_DEFAULT_FEATURE_TELNET_WIDTH
 	depends on BUSYBOX_CONFIG_TELNET
 config BUSYBOX_CONFIG_TELNETD
-	bool "telnetd"
+	bool "telnetd (12 kb)"
 	default BUSYBOX_DEFAULT_TELNETD
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
@@ -852,7 +925,7 @@ config BUSYBOX_CONFIG_TELNETD
 
 	You need to be sure that busybox has LOGIN and
 	FEATURE_SUID enabled. And finally, you should make
-	certain that Busybox has been installed setuid root:
+	certain that busybox has been installed setuid root:
 
 		chown root.root /bin/busybox
 		chmod 4755 /bin/busybox
@@ -887,26 +960,28 @@ config BUSYBOX_CONFIG_FEATURE_TELNETD_INETD_WAIT
 	way of running tcp services, including telnetd.
 	You most probably want to say N here.
 config BUSYBOX_CONFIG_TFTP
-	bool "tftp"
+	bool "tftp (11 kb)"
 	default BUSYBOX_DEFAULT_TFTP
 	help
-	This enables the Trivial File Transfer Protocol client program. TFTP
-	is usually used for simple, small transfers such as a root image
+	Trivial File Transfer Protocol client. TFTP is usually used
+	for simple, small transfers such as a root image
 	for a network-enabled bootloader.
 
+config BUSYBOX_CONFIG_FEATURE_TFTP_PROGRESS_BAR
+	bool "Enable progress bar"
+	default BUSYBOX_DEFAULT_FEATURE_TFTP_PROGRESS_BAR
+	depends on BUSYBOX_CONFIG_TFTP
+
 config BUSYBOX_CONFIG_TFTPD
-	bool "tftpd"
+	bool "tftpd (10 kb)"
 	default BUSYBOX_DEFAULT_TFTPD
 	help
-	This enables the Trivial File Transfer Protocol server program.
+	Trivial File Transfer Protocol server.
 	It expects that stdin is a datagram socket and a packet
 	is already pending on it. It will exit after one transfer.
 	In other words: it should be run from inetd in nowait mode,
 	or from udpsvd. Example: "udpsvd -E 0 69 tftpd DIR"
 
-comment "Common options for tftp/tftpd"
-	depends on BUSYBOX_CONFIG_TFTP || BUSYBOX_CONFIG_TFTPD
-
 config BUSYBOX_CONFIG_FEATURE_TFTP_GET
 	bool "Enable 'tftp get' and/or tftpd upload code"
 	default BUSYBOX_DEFAULT_FEATURE_TFTP_GET
@@ -936,11 +1011,6 @@ config BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
 	Allow tftp to specify block size, and tftpd to understand
 	"blksize" and "tsize" options.
 
-config BUSYBOX_CONFIG_FEATURE_TFTP_PROGRESS_BAR
-	bool "Enable progress bar"
-	default BUSYBOX_DEFAULT_FEATURE_TFTP_PROGRESS_BAR
-	depends on BUSYBOX_CONFIG_TFTP && BUSYBOX_CONFIG_FEATURE_TFTP_BLOCKSIZE
-
 config BUSYBOX_CONFIG_TFTP_DEBUG
 	bool "Enable debug"
 	default BUSYBOX_DEFAULT_TFTP_DEBUG
@@ -952,14 +1022,14 @@ config BUSYBOX_CONFIG_TLS
 	bool #No description makes it a hidden option
 	default BUSYBOX_DEFAULT_TLS
 config BUSYBOX_CONFIG_TRACEROUTE
-	bool "traceroute"
+	bool "traceroute (11 kb)"
 	default BUSYBOX_DEFAULT_TRACEROUTE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to trace the route of IP packets.
 
 config BUSYBOX_CONFIG_TRACEROUTE6
-	bool "traceroute6"
+	bool "traceroute6 (13 kb)"
 	default BUSYBOX_DEFAULT_TRACEROUTE6
 	depends on BUSYBOX_CONFIG_FEATURE_IPV6
 	help
@@ -978,7 +1048,7 @@ config BUSYBOX_CONFIG_FEATURE_TRACEROUTE_USE_ICMP
 	default BUSYBOX_DEFAULT_FEATURE_TRACEROUTE_USE_ICMP
 	depends on BUSYBOX_CONFIG_TRACEROUTE || BUSYBOX_CONFIG_TRACEROUTE6
 config BUSYBOX_CONFIG_TUNCTL
-	bool "tunctl"
+	bool "tunctl (6.2 kb)"
 	default BUSYBOX_DEFAULT_TUNCTL
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -992,13 +1062,13 @@ config BUSYBOX_CONFIG_FEATURE_TUNCTL_UG
 	Allow to specify owner and group of newly created interface.
 	340 bytes of pure bloat. Say no here.
 config BUSYBOX_CONFIG_VCONFIG
-	bool "vconfig"
+	bool "vconfig (2.3 kb)"
 	default BUSYBOX_DEFAULT_VCONFIG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Creates, removes, and configures VLAN interfaces
 config BUSYBOX_CONFIG_WGET
-	bool "wget"
+	bool "wget (38 kb)"
 	default BUSYBOX_DEFAULT_WGET
 	help
 	wget is a utility for non-interactive download of files from HTTP
@@ -1104,12 +1174,12 @@ config BUSYBOX_CONFIG_FEATURE_WGET_OPENSSL
 	(if you enabled it); if openssl can be executed but fails later,
 	wget can't detect this, and download will fail.
 config BUSYBOX_CONFIG_WHOIS
-	bool "whois"
+	bool "whois (6.3 kb)"
 	default BUSYBOX_DEFAULT_WHOIS
 	help
 	whois is a client for the whois directory service
 config BUSYBOX_CONFIG_ZCIP
-	bool "zcip"
+	bool "zcip (8.4 kb)"
 	default BUSYBOX_DEFAULT_ZCIP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
diff --git a/package/utils/busybox/config/networking/udhcp/Config.in b/package/utils/busybox/config/networking/udhcp/Config.in
index 6066ded078..212e4a0bcb 100644
--- a/package/utils/busybox/config/networking/udhcp/Config.in
+++ b/package/utils/busybox/config/networking/udhcp/Config.in
@@ -1,58 +1,17 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
-config BUSYBOX_CONFIG_UDHCPC6
-	bool "udhcpc6 (DHCPv6 client, EXPERIMENTAL)"
-	default BUSYBOX_DEFAULT_UDHCPC6  # not yet ready
-	depends on BUSYBOX_CONFIG_FEATURE_IPV6
-	help
-	udhcpc6 is a DHCPv6 client
-
-config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC3646
-	bool "Support RFC 3646 (DNS server and search list)"
-	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC3646
-	depends on BUSYBOX_CONFIG_UDHCPC6
-	help
-	List of DNS servers and domain search list can be requested with
-	"-O dns" and "-O search". If server gives these values,
-	they will be set in environment variables "dns" and "search".
-
-config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC4704
-	bool "Support RFC 4704 (Client FQDN)"
-	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4704
-	depends on BUSYBOX_CONFIG_UDHCPC6
-	help
-	You can request FQDN to be given by server using "-O fqdn".
-
-config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC4833
-	bool "Support RFC 4833 (Timezones)"
-	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833
-	depends on BUSYBOX_CONFIG_UDHCPC6
-	help
-	You can request POSIX timezone with "-O tz" and timezone name
-	with "-O timezone".
-
 config BUSYBOX_CONFIG_UDHCPD
-	bool "udhcpd (DHCP server)"
+	bool "udhcpd (21 kb)"
 	default BUSYBOX_DEFAULT_UDHCPD
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	udhcpd is a DHCP server geared primarily toward embedded systems,
 	while striving to be fully functional and RFC compliant.
 
-config BUSYBOX_CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY
-	bool "Rewrite the lease file at every new acknowledge"
-	default BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY
-	depends on BUSYBOX_CONFIG_UDHCPD
-	help
-	If selected, udhcpd will write a new file with leases every
-	time a new lease has been accepted, thus eliminating the need
-	to send SIGUSR1 for the initial writing or updating. Any timed
-	rewriting remains undisturbed.
-
 config BUSYBOX_CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC
 	bool "Select IP address based on client MAC"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCPD_BASE_IP_ON_MAC
@@ -67,6 +26,16 @@ config BUSYBOX_CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC
 	for the same client to (almost always) contain the same
 	IP address.
 
+config BUSYBOX_CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY
+	bool "Rewrite lease file at every new acknowledge"
+	default BUSYBOX_DEFAULT_FEATURE_UDHCPD_WRITE_LEASES_EARLY
+	depends on BUSYBOX_CONFIG_UDHCPD
+	help
+	If selected, udhcpd will write a new file with leases every
+	time a new lease has been accepted, thus eliminating the need
+	to send SIGUSR1 for the initial writing or updating. Any timed
+	rewriting remains undisturbed.
+
 config BUSYBOX_CONFIG_DHCPD_LEASES_FILE
 	string "Absolute path to lease file"
 	default BUSYBOX_DEFAULT_DHCPD_LEASES_FILE
@@ -76,7 +45,7 @@ config BUSYBOX_CONFIG_DHCPD_LEASES_FILE
 	of the file. Normally it is safe to leave it untouched.
 
 config BUSYBOX_CONFIG_DUMPLEASES
-	bool "dumpleases"
+	bool "dumpleases (5.1 kb)"
 	default BUSYBOX_DEFAULT_DUMPLEASES
 	help
 	dumpleases displays the leases written out by the udhcpd.
@@ -84,15 +53,15 @@ config BUSYBOX_CONFIG_DUMPLEASES
 	by the absolute time that it expires in seconds from epoch.
 
 config BUSYBOX_CONFIG_DHCPRELAY
-	bool "dhcprelay"
+	bool "dhcprelay (5.2 kb)"
 	default BUSYBOX_DEFAULT_DHCPRELAY
 	help
-	dhcprelay listens for dhcp requests on one or more interfaces
-	and forwards these requests to a different interface or dhcp
+	dhcprelay listens for DHCP requests on one or more interfaces
+	and forwards these requests to a different interface or DHCP
 	server.
 
 config BUSYBOX_CONFIG_UDHCPC
-	bool "udhcpc (DHCP client)"
+	bool "udhcpc (24 kb)"
 	default BUSYBOX_DEFAULT_UDHCPC
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -126,25 +95,68 @@ config BUSYBOX_CONFIG_FEATURE_UDHCPC_SANITIZEOPT
 config BUSYBOX_CONFIG_UDHCPC_DEFAULT_SCRIPT
 	string "Absolute path to config script"
 	default BUSYBOX_DEFAULT_UDHCPC_DEFAULT_SCRIPT
-	depends on BUSYBOX_CONFIG_UDHCPC
+	depends on BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_UDHCPC6
 	help
 	This script is called after udhcpc receives an answer. See
 	examples/udhcp for a working example. Normally it is safe
 	to leave this untouched.
 
+# udhcpc6 config is inserted here:
+config BUSYBOX_CONFIG_UDHCPC6
+	bool "udhcpc6 (21 kb)"
+	default BUSYBOX_DEFAULT_UDHCPC6  # not yet ready
+	depends on BUSYBOX_CONFIG_FEATURE_IPV6
+	help
+	udhcpc6 is a DHCPv6 client
+
+config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC3646
+	bool "Support RFC 3646 (DNS server and search list)"
+	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC3646
+	depends on BUSYBOX_CONFIG_UDHCPC6
+	help
+	List of DNS servers and domain search list can be requested with
+	"-O dns" and "-O search". If server gives these values,
+	they will be set in environment variables "dns" and "search".
+
+config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC4704
+	bool "Support RFC 4704 (Client FQDN)"
+	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4704
+	depends on BUSYBOX_CONFIG_UDHCPC6
+	help
+	You can request FQDN to be given by server using "-O fqdn".
+
+config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC4833
+	bool "Support RFC 4833 (Timezones)"
+	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC4833
+	depends on BUSYBOX_CONFIG_UDHCPC6
+	help
+	You can request POSIX timezone with "-O tz" and timezone name
+	with "-O timezone".
+
+config BUSYBOX_CONFIG_FEATURE_UDHCPC6_RFC5970
+	bool "Support RFC 5970 (Network Boot)"
+	default BUSYBOX_DEFAULT_FEATURE_UDHCPC6_RFC5970
+	depends on BUSYBOX_CONFIG_UDHCPC6
+	help
+	You can request bootfile-url with "-O bootfile_url" and
+	bootfile-params with "-O bootfile_params".
+
+comment "Common options for DHCP applets"
+        depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_UDHCPC6 || BUSYBOX_CONFIG_DHCPRELAY
+
 config BUSYBOX_CONFIG_FEATURE_UDHCP_PORT
 	bool "Enable '-P port' option for udhcpd and udhcpc"
 	default BUSYBOX_DEFAULT_FEATURE_UDHCP_PORT
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
+	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_UDHCPC6
 	help
 	At the cost of ~300 bytes, enables -P port option.
 	This feature is typically not needed.
 
 config BUSYBOX_CONFIG_UDHCP_DEBUG
-	int "Maximum verbosity level for udhcp applets (0..9)"
+	int "Maximum verbosity level (0..9)"
 	default BUSYBOX_DEFAULT_UDHCP_DEBUG
 	range 0 9
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_DHCPRELAY
+	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC || BUSYBOX_CONFIG_UDHCPC6 || BUSYBOX_CONFIG_DHCPRELAY
 	help
 	Verbosity can be increased with multiple -v options.
 	This option controls how high it can be cranked up.
@@ -152,23 +164,6 @@ config BUSYBOX_CONFIG_UDHCP_DEBUG
 	Bigger values result in bigger code. Levels above 1
 	are very verbose and useful for debugging only.
 
-config BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397
-	bool "Support RFC3397 domain search (experimental)"
-	default BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
-	help
-	If selected, both client and server will support passing of domain
-	search lists via option 119, specified in RFC 3397,
-	and SIP servers option 120, specified in RFC 3361.
-
-config BUSYBOX_CONFIG_FEATURE_UDHCP_8021Q
-	bool "Support 802.1Q VLAN parameters"
-	default BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q
-	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
-	help
-	If selected, both client and server will support passing of VLAN
-	ID and priority via options 132 and 133 as per 802.1Q.
-
 config BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS
 	int "DHCP options slack buffer size"
 	default BUSYBOX_DEFAULT_UDHCPC_SLACK_FOR_BUGGY_SERVERS
@@ -179,15 +174,32 @@ config BUSYBOX_CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS
 	field larger than we expect (which might also be considered a
 	buffer overflow attempt). These packets are normally discarded.
 	If circumstances beyond your control force you to support such
-	servers, this may help. The upper limit (924) makes dhcpc accept
+	servers, this may help. The upper limit (924) makes udhcpc accept
 	even 1500 byte packets (maximum-sized ethernet packets).
 
-	This option does not make dhcp[cd] emit non-standard
+	This option does not make udhcp[cd] emit non-standard
 	sized packets.
 
 	Known buggy DHCP servers:
 	3Com OfficeConnect Remote 812 ADSL Router:
-	    seems to confuse maximum allowed UDP packet size with
-	    maximum size of entire IP packet, and sends packets which are
-	    28 bytes too large.
+		seems to confuse maximum allowed UDP packet size with
+		maximum size of entire IP packet, and sends packets
+		which are 28 bytes too large.
 	Seednet (ISP) VDSL: sends packets 2 bytes too large.
+
+config BUSYBOX_CONFIG_FEATURE_UDHCP_RFC3397
+	bool "Support RFC 3397 domain search options"
+	default BUSYBOX_DEFAULT_FEATURE_UDHCP_RFC3397
+	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
+	help
+	If selected, both client and server will support passing of domain
+	search lists via option 119, specified in RFC 3397,
+	and SIP servers option 120, specified in RFC 3361.
+
+config BUSYBOX_CONFIG_FEATURE_UDHCP_8021Q
+	bool "Support 802.1Q VLAN parameters options"
+	default BUSYBOX_DEFAULT_FEATURE_UDHCP_8021Q
+	depends on BUSYBOX_CONFIG_UDHCPD || BUSYBOX_CONFIG_UDHCPC
+	help
+	If selected, both client and server will support passing of VLAN
+	ID and priority via options 132 and 133 as per 802.1Q.
diff --git a/package/utils/busybox/config/printutils/Config.in b/package/utils/busybox/config/printutils/Config.in
index 2c608af989..c53ee19d4e 100644
--- a/package/utils/busybox/config/printutils/Config.in
+++ b/package/utils/busybox/config/printutils/Config.in
@@ -1,24 +1,24 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Print Utilities"
 
 config BUSYBOX_CONFIG_LPD
-	bool "lpd"
+	bool "lpd (5.5 kb)"
 	default BUSYBOX_DEFAULT_LPD
 	help
 	lpd is a print spooling daemon.
 config BUSYBOX_CONFIG_LPR
-	bool "lpr"
+	bool "lpr (9.9 kb)"
 	default BUSYBOX_DEFAULT_LPR
 	help
 	lpr sends files (or standard input) to a print spooling daemon.
 
 config BUSYBOX_CONFIG_LPQ
-	bool "lpq"
+	bool "lpq (9.9 kb)"
 	default BUSYBOX_DEFAULT_LPQ
 	help
 	lpq is a print spool queue examination and manipulation program.
diff --git a/package/utils/busybox/config/procps/Config.in b/package/utils/busybox/config/procps/Config.in
index 227e2a0f5e..6a0d51f353 100644
--- a/package/utils/busybox/config/procps/Config.in
+++ b/package/utils/busybox/config/procps/Config.in
@@ -1,13 +1,13 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Process Utilities"
 
 config BUSYBOX_CONFIG_FREE
-	bool "free"
+	bool "free (3.1 kb)"
 	default BUSYBOX_DEFAULT_FREE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
 	help
@@ -15,19 +15,19 @@ config BUSYBOX_CONFIG_FREE
 	memory in the system, as well as the buffers used by the kernel.
 	The shared memory column should be ignored; it is obsolete.
 config BUSYBOX_CONFIG_FUSER
-	bool "fuser"
+	bool "fuser (7 kb)"
 	default BUSYBOX_DEFAULT_FUSER
 	help
 	fuser lists all PIDs (Process IDs) that currently have a given
 	file open. fuser can also list all PIDs that have a given network
 	(TCP or UDP) port open.
 config BUSYBOX_CONFIG_IOSTAT
-	bool "iostat"
+	bool "iostat (7.6 kb)"
 	default BUSYBOX_DEFAULT_IOSTAT
 	help
 	Report CPU and I/O statistics
 config BUSYBOX_CONFIG_KILL
-	bool "kill"
+	bool "kill (3.1 kb)"
 	default BUSYBOX_DEFAULT_KILL
 	help
 	The command kill sends the specified signal to the specified
@@ -35,7 +35,7 @@ config BUSYBOX_CONFIG_KILL
 	signal is sent.
 
 config BUSYBOX_CONFIG_KILLALL
-	bool "killall"
+	bool "killall (5.6 kb)"
 	default BUSYBOX_DEFAULT_KILLALL
 	help
 	killall sends a signal to all processes running any of the
@@ -43,7 +43,7 @@ config BUSYBOX_CONFIG_KILLALL
 	sent.
 
 config BUSYBOX_CONFIG_KILLALL5
-	bool "killall5"
+	bool "killall5 (5.3 kb)"
 	default BUSYBOX_DEFAULT_KILLALL5
 	help
 	The SystemV killall command. killall5 sends a signal
@@ -51,34 +51,34 @@ config BUSYBOX_CONFIG_KILLALL5
 	in its own session, so it won't kill the shell that is running
 	the script it was called from.
 config BUSYBOX_CONFIG_LSOF
-	bool "lsof"
+	bool "lsof (3.4 kb)"
 	default BUSYBOX_DEFAULT_LSOF
 	help
 	Show open files in the format of:
 	PID <TAB> /path/to/executable <TAB> /path/to/opened/file
 config BUSYBOX_CONFIG_MPSTAT
-	bool "mpstat"
+	bool "mpstat (9.8 kb)"
 	default BUSYBOX_DEFAULT_MPSTAT
 	help
 	Per-processor statistics
 config BUSYBOX_CONFIG_NMETER
-	bool "nmeter"
+	bool "nmeter (11 kb)"
 	default BUSYBOX_DEFAULT_NMETER
 	help
 	Prints selected system stats continuously, one line per update.
 config BUSYBOX_CONFIG_PGREP
-	bool "pgrep"
+	bool "pgrep (6.5 kb)"
 	default BUSYBOX_DEFAULT_PGREP
 	help
 	Look for processes by name.
 
 config BUSYBOX_CONFIG_PKILL
-	bool "pkill"
+	bool "pkill (7.5 kb)"
 	default BUSYBOX_DEFAULT_PKILL
 	help
 	Send signals to processes by name.
 config BUSYBOX_CONFIG_PIDOF
-	bool "pidof"
+	bool "pidof (6.3 kb)"
 	default BUSYBOX_DEFAULT_PIDOF
 	help
 	Pidof finds the process id's (pids) of the named programs. It prints
@@ -100,12 +100,12 @@ config BUSYBOX_CONFIG_FEATURE_PIDOF_OMIT
 	The special pid %PPID can be used to name the parent process
 	of the pidof, in other words the calling shell or shell script.
 config BUSYBOX_CONFIG_PMAP
-       bool "pmap"
-       default BUSYBOX_DEFAULT_PMAP
-       help
-         Display processes' memory mappings.
+	bool "pmap (6 kb)"
+	default BUSYBOX_DEFAULT_PMAP
+	help
+	Display processes' memory mappings.
 config BUSYBOX_CONFIG_POWERTOP
-	bool "powertop"
+	bool "powertop (9.6 kb)"
 	default BUSYBOX_DEFAULT_POWERTOP
 	help
 	Analyze power consumption on Intel-based laptops
@@ -118,32 +118,32 @@ config BUSYBOX_CONFIG_FEATURE_POWERTOP_INTERACTIVE
 	Without this, powertop will only refresh display every 10 seconds.
 	No keyboard commands will work, only ^C to terminate.
 config BUSYBOX_CONFIG_PS
-	bool "ps"
+	bool "ps (11 kb)"
 	default BUSYBOX_DEFAULT_PS
 	help
 	ps gives a snapshot of the current processes.
 
 config BUSYBOX_CONFIG_FEATURE_PS_WIDE
-	bool "Enable wide output option (-w)"
+	bool "Enable wide output (-w)"
 	default BUSYBOX_DEFAULT_FEATURE_PS_WIDE
-	depends on BUSYBOX_CONFIG_PS && !BUSYBOX_CONFIG_DESKTOP
+	depends on (BUSYBOX_CONFIG_PS || BUSYBOX_CONFIG_MINIPS) && !BUSYBOX_CONFIG_DESKTOP
 	help
 	Support argument 'w' for wide output.
 	If given once, 132 chars are printed, and if given more
 	than once, the length is unlimited.
 
 config BUSYBOX_CONFIG_FEATURE_PS_LONG
-	bool "Enable long output option (-l)"
+	bool "Enable long output (-l)"
 	default BUSYBOX_DEFAULT_FEATURE_PS_LONG
-	depends on BUSYBOX_CONFIG_PS && !BUSYBOX_CONFIG_DESKTOP
+	depends on (BUSYBOX_CONFIG_PS || BUSYBOX_CONFIG_MINIPS) && !BUSYBOX_CONFIG_DESKTOP
 	help
 	Support argument 'l' for long output.
 	Adds fields PPID, RSS, START, TIME & TTY
 
 config BUSYBOX_CONFIG_FEATURE_PS_TIME
-	bool "Support -o time and -o etime output specifiers"
+	bool "Enable -o time and -o etime specifiers"
 	default BUSYBOX_DEFAULT_FEATURE_PS_TIME
-	depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
+	depends on (BUSYBOX_CONFIG_PS || BUSYBOX_CONFIG_MINIPS) && BUSYBOX_CONFIG_DESKTOP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 
 config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
@@ -155,32 +155,32 @@ config BUSYBOX_CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS
 	(if you are on Linux 2.4.0+ and use ELF, you don't need this)
 
 config BUSYBOX_CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS
-	bool "Support -o rgroup, -o ruser, -o nice specifiers"
+	bool "Enable -o rgroup, -o ruser, -o nice specifiers"
 	default BUSYBOX_DEFAULT_FEATURE_PS_ADDITIONAL_COLUMNS
-	depends on BUSYBOX_CONFIG_PS && BUSYBOX_CONFIG_DESKTOP
+	depends on (BUSYBOX_CONFIG_PS || BUSYBOX_CONFIG_MINIPS) && BUSYBOX_CONFIG_DESKTOP
 config BUSYBOX_CONFIG_PSTREE
-	bool "pstree"
+	bool "pstree (9.3 kb)"
 	default BUSYBOX_DEFAULT_PSTREE
 	help
 	Display a tree of processes.
 config BUSYBOX_CONFIG_PWDX
-	bool "pwdx"
+	bool "pwdx (3.7 kb)"
 	default BUSYBOX_DEFAULT_PWDX
 	help
 	Report current working directory of a process
 config BUSYBOX_CONFIG_SMEMCAP
-	bool "smemcap"
+	bool "smemcap (2.5 kb)"
 	default BUSYBOX_DEFAULT_SMEMCAP
 	help
 	smemcap is a tool for capturing process data for smem,
 	a memory usage statistic tool.
 config BUSYBOX_CONFIG_BB_SYSCTL
-	bool "sysctl"
+	bool "sysctl (7.4 kb)"
 	default BUSYBOX_DEFAULT_BB_SYSCTL
 	help
 	Configure kernel parameters at runtime.
 config BUSYBOX_CONFIG_TOP
-	bool "top"
+	bool "top (18 kb)"
 	default BUSYBOX_DEFAULT_TOP
 	help
 	The top program provides a dynamic real-time view of a running
@@ -241,7 +241,7 @@ config BUSYBOX_CONFIG_FEATURE_TOPMEM
 	help
 	Enable 's' in top (gives lots of memory info).
 config BUSYBOX_CONFIG_UPTIME
-	bool "uptime"
+	bool "uptime (3.7 kb)"
 	default BUSYBOX_DEFAULT_UPTIME
 	select BUSYBOX_CONFIG_PLATFORM_LINUX #sysinfo()
 	help
@@ -256,7 +256,7 @@ config BUSYBOX_CONFIG_FEATURE_UPTIME_UTMP_SUPPORT
 	help
 	Display the number of users currently logged on.
 config BUSYBOX_CONFIG_WATCH
-	bool "watch"
+	bool "watch (4.4 kb)"
 	default BUSYBOX_DEFAULT_WATCH
 	help
 	watch is used to execute a program periodically, showing
diff --git a/package/utils/busybox/config/runit/Config.in b/package/utils/busybox/config/runit/Config.in
index 6c10519ebe..2c701f2136 100644
--- a/package/utils/busybox/config/runit/Config.in
+++ b/package/utils/busybox/config/runit/Config.in
@@ -1,50 +1,50 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Runit Utilities"
 
 config BUSYBOX_CONFIG_CHPST
-	bool "chpst"
+	bool "chpst (9 kb)"
 	default BUSYBOX_DEFAULT_CHPST
 	help
 	chpst changes the process state according to the given options, and
 	execs specified program.
 
 config BUSYBOX_CONFIG_SETUIDGID
-	bool "setuidgid"
+	bool "setuidgid (4 kb)"
 	default BUSYBOX_DEFAULT_SETUIDGID
 	help
 	Sets soft resource limits as specified by options
 
 config BUSYBOX_CONFIG_ENVUIDGID
-	bool "envuidgid"
+	bool "envuidgid (3.9 kb)"
 	default BUSYBOX_DEFAULT_ENVUIDGID
 	help
 	Sets $UID to account's uid and $GID to account's gid
 
 config BUSYBOX_CONFIG_ENVDIR
-	bool "envdir"
+	bool "envdir (2.5 kb)"
 	default BUSYBOX_DEFAULT_ENVDIR
 	help
 	Sets various environment variables as specified by files
 	in the given directory
 
 config BUSYBOX_CONFIG_SOFTLIMIT
-	bool "softlimit"
+	bool "softlimit (4.5 kb)"
 	default BUSYBOX_DEFAULT_SOFTLIMIT
 	help
 	Sets soft resource limits as specified by options
 config BUSYBOX_CONFIG_RUNSV
-	bool "runsv"
+	bool "runsv (7.8 kb)"
 	default BUSYBOX_DEFAULT_RUNSV
 	help
 	runsv starts and monitors a service and optionally an appendant log
 	service.
 config BUSYBOX_CONFIG_RUNSVDIR
-	bool "runsvdir"
+	bool "runsvdir (6.3 kb)"
 	default BUSYBOX_DEFAULT_RUNSVDIR
 	help
 	runsvdir starts a runsv process for each subdirectory, or symlink to
@@ -60,7 +60,7 @@ config BUSYBOX_CONFIG_FEATURE_RUNSVDIR_LOG
 	message (viewable via top/ps). Otherwise (feature is off
 	or no parameter), error messages go to stderr only.
 config BUSYBOX_CONFIG_SV
-	bool "sv"
+	bool "sv (8.5 kb)"
 	default BUSYBOX_DEFAULT_SV
 	help
 	sv reports the current status and controls the state of services
@@ -69,19 +69,26 @@ config BUSYBOX_CONFIG_SV
 config BUSYBOX_CONFIG_SV_DEFAULT_SERVICE_DIR
 	string "Default directory for services"
 	default BUSYBOX_DEFAULT_SV_DEFAULT_SERVICE_DIR
-	depends on BUSYBOX_CONFIG_SV
+	depends on BUSYBOX_CONFIG_SV || BUSYBOX_CONFIG_SVC || BUSYBOX_CONFIG_SVOK
 	help
 	Default directory for services.
 	Defaults to "/var/service"
 
 config BUSYBOX_CONFIG_SVC
-	bool "svc"
+	bool "svc (8.4 kb)"
 	default BUSYBOX_DEFAULT_SVC
 	help
 	svc controls the state of services monitored by the runsv supervisor.
-	It is comaptible with daemontools command with the same name.
+	It is compatible with daemontools command with the same name.
+
+config BUSYBOX_CONFIG_SVOK
+	bool "svok (1.5 kb)"
+	default BUSYBOX_DEFAULT_SVOK
+	help
+	svok checks whether runsv supervisor is running.
+	It is compatible with daemontools command with the same name.
 config BUSYBOX_CONFIG_SVLOGD
-	bool "svlogd"
+	bool "svlogd (16 kb)"
 	default BUSYBOX_DEFAULT_SVLOGD
 	help
 	svlogd continuously reads log data from its standard input, optionally
diff --git a/package/utils/busybox/config/selinux/Config.in b/package/utils/busybox/config/selinux/Config.in
index d572509239..de67a7281b 100644
--- a/package/utils/busybox/config/selinux/Config.in
+++ b/package/utils/busybox/config/selinux/Config.in
@@ -1,80 +1,70 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "SELinux Utilities"
 	depends on BUSYBOX_CONFIG_SELINUX
 
 config BUSYBOX_CONFIG_CHCON
-	bool "chcon"
+	bool "chcon (8.9 kb)"
 	default BUSYBOX_DEFAULT_CHCON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to change the security context of file.
-
-config BUSYBOX_CONFIG_FEATURE_CHCON_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_CHCON_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_CHCON && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_GETENFORCE
-	bool "getenforce"
+	bool "getenforce (1.7 kb)"
 	default BUSYBOX_DEFAULT_GETENFORCE
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to get the current mode of SELinux.
 config BUSYBOX_CONFIG_GETSEBOOL
-	bool "getsebool"
+	bool "getsebool (5.5 kb)"
 	default BUSYBOX_DEFAULT_GETSEBOOL
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to get SELinux boolean values.
 config BUSYBOX_CONFIG_LOAD_POLICY
-	bool "load_policy"
+	bool "load_policy (1.6 kb)"
 	default BUSYBOX_DEFAULT_LOAD_POLICY
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to load SELinux policy.
 config BUSYBOX_CONFIG_MATCHPATHCON
-	bool "matchpathcon"
+	bool "matchpathcon (6.1 kb)"
 	default BUSYBOX_DEFAULT_MATCHPATHCON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to get default security context of the
 	specified path from the file contexts configuration.
 config BUSYBOX_CONFIG_RUNCON
-	bool "runcon"
+	bool "runcon (6.6 kb)"
 	default BUSYBOX_DEFAULT_RUNCON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to run command in specified security context.
-
-config BUSYBOX_CONFIG_FEATURE_RUNCON_LONG_OPTIONS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_RUNCON_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_RUNCON && BUSYBOX_CONFIG_LONG_OPTS
 config BUSYBOX_CONFIG_SELINUXENABLED
-	bool "selinuxenabled"
+	bool "selinuxenabled (321 bytes)"
 	default BUSYBOX_DEFAULT_SELINUXENABLED
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support for this command to be used within shell scripts
 	to determine if selinux is enabled.
 config BUSYBOX_CONFIG_SESTATUS
-	bool "sestatus"
+	bool "sestatus (12 kb)"
 	default BUSYBOX_DEFAULT_SESTATUS
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Displays the status of SELinux.
 config BUSYBOX_CONFIG_SETENFORCE
-	bool "setenforce"
+	bool "setenforce (2.1 kb)"
 	default BUSYBOX_DEFAULT_SETENFORCE
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to modify the mode SELinux is running in.
 config BUSYBOX_CONFIG_SETFILES
-	bool "setfiles"
+	bool "setfiles (13 kb)"
 	default BUSYBOX_DEFAULT_SETFILES
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
@@ -92,14 +82,14 @@ config BUSYBOX_CONFIG_FEATURE_SETFILES_CHECK_OPTION
 	the specified binary policy) for setfiles. Requires libsepol.
 
 config BUSYBOX_CONFIG_RESTORECON
-	bool "restorecon"
+	bool "restorecon (12 kb)"
 	default BUSYBOX_DEFAULT_RESTORECON
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
 	Enable support to relabel files. The feature is almost
 	the same as setfiles, but usage is a little different.
 config BUSYBOX_CONFIG_SETSEBOOL
-	bool "setsebool"
+	bool "setsebool (1.7 kb)"
 	default BUSYBOX_DEFAULT_SETSEBOOL
 	depends on BUSYBOX_CONFIG_SELINUX
 	help
diff --git a/package/utils/busybox/config/shell/Config.in b/package/utils/busybox/config/shell/Config.in
index 97b7f1cfc8..ddaa333e04 100644
--- a/package/utils/busybox/config/shell/Config.in
+++ b/package/utils/busybox/config/shell/Config.in
@@ -1,7 +1,7 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Shells"
@@ -79,12 +79,11 @@ endchoice
 
 
 config BUSYBOX_CONFIG_ASH
-	bool "ash"
+	bool "ash (78 kb)"
 	default BUSYBOX_DEFAULT_ASH
 	depends on !BUSYBOX_CONFIG_NOMMU
 	help
-	Tha 'ash' shell adds about 60k in the default configuration and is
-	the most complete and most pedantically correct shell included with
+	The most complete and most pedantically correct shell included with
 	busybox. This shell is actually a derivative of the Debian 'dash'
 	shell (by Herbert Xu), which was created by porting the 'ash' shell
 	(written by Kenneth Almquist) from NetBSD.
@@ -115,6 +114,22 @@ config BUSYBOX_CONFIG_ASH_BASH_COMPAT
 	default BUSYBOX_DEFAULT_ASH_BASH_COMPAT
 	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH
 
+config BUSYBOX_CONFIG_ASH_BASH_SOURCE_CURDIR
+	bool "'source' and '.' builtins search current directory after $PATH"
+	default BUSYBOX_DEFAULT_ASH_BASH_SOURCE_CURDIR   # do not encourage non-standard behavior
+	depends on BUSYBOX_CONFIG_ASH_BASH_COMPAT
+	help
+	This is not compliant with standards. Avoid if possible.
+
+config BUSYBOX_CONFIG_ASH_BASH_NOT_FOUND_HOOK
+	bool "command_not_found_handle hook support"
+	default BUSYBOX_DEFAULT_ASH_BASH_NOT_FOUND_HOOK
+	depends on BUSYBOX_CONFIG_ASH_BASH_COMPAT
+	help
+	Enable support for the 'command_not_found_handle' hook function,
+	from GNU bash, which allows for alternative command not found
+	handling.
+
 config BUSYBOX_CONFIG_ASH_JOB_CONTROL
 	bool "Job control"
 	default BUSYBOX_DEFAULT_ASH_JOB_CONTROL
@@ -198,7 +213,7 @@ config BUSYBOX_CONFIG_ASH_CMDCMD
 
 endif # ash options
 config BUSYBOX_CONFIG_CTTYHACK
-	bool "cttyhack"
+	bool "cttyhack (2.4 kb)"
 	default BUSYBOX_DEFAULT_CTTYHACK
 	help
 	One common problem reported on the mailing list is the "can't
@@ -241,10 +256,10 @@ config BUSYBOX_CONFIG_CTTYHACK
 
 	# getty 115200 $(cttyhack)
 config BUSYBOX_CONFIG_HUSH
-	bool "hush"
+	bool "hush (68 kb)"
 	default BUSYBOX_DEFAULT_HUSH
 	help
-	hush is a small shell (25k). It handles the normal flow control
+	hush is a small shell. It handles the normal flow control
 	constructs such as if/then/elif/else/fi, for/in/do/done, while loops,
 	case/esac. Redirections, here documents, $((arithmetic))
 	and functions are supported.
@@ -266,6 +281,18 @@ config BUSYBOX_CONFIG_HUSH_BRACE_EXPANSION
 	help
 	Enable {abc,def} extension.
 
+config BUSYBOX_CONFIG_HUSH_LINENO_VAR
+	bool "$LINENO variable"
+	default BUSYBOX_DEFAULT_HUSH_LINENO_VAR
+	depends on BUSYBOX_CONFIG_HUSH_BASH_COMPAT
+
+config BUSYBOX_CONFIG_HUSH_BASH_SOURCE_CURDIR
+	bool "'source' and '.' builtins search current directory after $PATH"
+	default BUSYBOX_DEFAULT_HUSH_BASH_SOURCE_CURDIR   # do not encourage non-standard behavior
+	depends on BUSYBOX_CONFIG_HUSH_BASH_COMPAT
+	help
+	This is not compliant with standards. Avoid if possible.
+
 config BUSYBOX_CONFIG_HUSH_INTERACTIVE
 	bool "Interactive mode"
 	default BUSYBOX_DEFAULT_HUSH_INTERACTIVE
@@ -293,7 +320,7 @@ config BUSYBOX_CONFIG_HUSH_JOB
 	but no separate process group is formed.
 
 config BUSYBOX_CONFIG_HUSH_TICK
-	bool "Support process substitution"
+	bool "Support command substitution"
 	default BUSYBOX_DEFAULT_HUSH_TICK
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 	help
@@ -378,6 +405,13 @@ config BUSYBOX_CONFIG_HUSH_EXPORT_N
 	help
 	export -n unexports variables. It is a bash extension.
 
+config BUSYBOX_CONFIG_HUSH_READONLY
+	bool "readonly builtin"
+	default BUSYBOX_DEFAULT_HUSH_READONLY
+	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	help
+	Enable support for read-only variables.
+
 config BUSYBOX_CONFIG_HUSH_KILL
 	bool "kill builtin (supports kill %jobspec)"
 	default BUSYBOX_DEFAULT_HUSH_KILL
@@ -388,6 +422,11 @@ config BUSYBOX_CONFIG_HUSH_WAIT
 	default BUSYBOX_DEFAULT_HUSH_WAIT
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 
+config BUSYBOX_CONFIG_HUSH_COMMAND
+	bool "command builtin"
+	default BUSYBOX_DEFAULT_HUSH_COMMAND
+	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+
 config BUSYBOX_CONFIG_HUSH_TRAP
 	bool "trap builtin"
 	default BUSYBOX_DEFAULT_HUSH_TRAP
@@ -398,6 +437,11 @@ config BUSYBOX_CONFIG_HUSH_TYPE
 	default BUSYBOX_DEFAULT_HUSH_TYPE
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 
+config BUSYBOX_CONFIG_HUSH_TIMES
+	bool "times builtin"
+	default BUSYBOX_DEFAULT_HUSH_TIMES
+	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+
 config BUSYBOX_CONFIG_HUSH_READ
 	bool "read builtin"
 	default BUSYBOX_DEFAULT_HUSH_READ
@@ -423,18 +467,16 @@ config BUSYBOX_CONFIG_HUSH_UMASK
 	default BUSYBOX_DEFAULT_HUSH_UMASK
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 
+config BUSYBOX_CONFIG_HUSH_GETOPTS
+	bool "getopts builtin"
+	default BUSYBOX_DEFAULT_HUSH_GETOPTS
+	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+
 config BUSYBOX_CONFIG_HUSH_MEMLEAK
 	bool "memleak builtin (debugging)"
 	default BUSYBOX_DEFAULT_HUSH_MEMLEAK
 	depends on BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
 
-config BUSYBOX_CONFIG_MSH
-	bool "msh (deprecated: aliased to hush)"
-	default BUSYBOX_DEFAULT_MSH
-	select BUSYBOX_CONFIG_HUSH
-	help
-	msh is deprecated and will be removed, please migrate to hush.
-
 
 comment "Options common to all shells"
 if ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
@@ -501,6 +543,13 @@ config BUSYBOX_CONFIG_FEATURE_SH_NOFORK
 	This feature is relatively new. Use with care. Report bugs
 	to project mailing list.
 
+config BUSYBOX_CONFIG_FEATURE_SH_READ_FRAC
+	bool "read -t N.NNN support (+110 bytes)"
+	default BUSYBOX_DEFAULT_FEATURE_SH_READ_FRAC
+	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	help
+	Enable support for fractional second timeout in read builtin.
+
 config BUSYBOX_CONFIG_FEATURE_SH_HISTFILESIZE
 	bool "Use $HISTFILESIZE"
 	default BUSYBOX_DEFAULT_FEATURE_SH_HISTFILESIZE
@@ -510,6 +559,20 @@ config BUSYBOX_CONFIG_FEATURE_SH_HISTFILESIZE
 	to set shell history size. Note that its max value is capped
 	by "History size" setting in library tuning section.
 
+config BUSYBOX_CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS
+	bool "Embed scripts in the binary"
+	default BUSYBOX_DEFAULT_FEATURE_SH_EMBEDDED_SCRIPTS
+	depends on BUSYBOX_CONFIG_ASH || BUSYBOX_CONFIG_HUSH || BUSYBOX_CONFIG_SH_IS_ASH || BUSYBOX_CONFIG_BASH_IS_ASH || BUSYBOX_CONFIG_SH_IS_HUSH || BUSYBOX_CONFIG_BASH_IS_HUSH
+	help
+	Allow scripts to be compressed and embedded in the busybox
+	binary. The scripts should be placed in the 'embed' directory
+	at build time. Like applets, scripts can be run as
+	'busybox SCRIPT ...' or by linking their name to the binary.
+
+	This also allows applets to be implemented as scripts: place
+	the script in 'applets_sh' and a stub C file containing
+	configuration in the appropriate subsystem directory.
+
 endif # Options common to all shells
 
 endmenu
diff --git a/package/utils/busybox/config/sysklogd/Config.in b/package/utils/busybox/config/sysklogd/Config.in
index 2fe20f2102..33a5e8238a 100644
--- a/package/utils/busybox/config/sysklogd/Config.in
+++ b/package/utils/busybox/config/sysklogd/Config.in
@@ -1,13 +1,13 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "System Logging Utilities"
 
 config BUSYBOX_CONFIG_KLOGD
-	bool "klogd"
+	bool "klogd (5.7 kb)"
 	default BUSYBOX_DEFAULT_KLOGD
 	help
 	klogd is a utility which intercepts and logs all
@@ -36,16 +36,16 @@ config BUSYBOX_CONFIG_FEATURE_KLOGD_KLOGCTL
 
 	If in doubt, say 'Y'.
 config BUSYBOX_CONFIG_LOGGER
-	bool "logger"
+	bool "logger (6.3 kb)"
 	default BUSYBOX_DEFAULT_LOGGER
 	select BUSYBOX_CONFIG_FEATURE_SYSLOG
 	help
-	    The logger utility allows you to send arbitrary text
-	    messages to the system log (i.e. the 'syslogd' utility) so
-	    they can be logged. This is generally used to help locate
-	    problems that occur within programs and scripts.
+	The logger utility allows you to send arbitrary text
+	messages to the system log (i.e. the 'syslogd' utility) so
+	they can be logged. This is generally used to help locate
+	problems that occur within programs and scripts.
 config BUSYBOX_CONFIG_LOGREAD
-	bool "logread"
+	bool "logread (4.8 kb)"
 	default BUSYBOX_DEFAULT_LOGREAD
 	help
 	If you enabled Circular Buffer support, you almost
@@ -65,7 +65,7 @@ config BUSYBOX_CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING
 	contention at some minor memory expense.
 
 config BUSYBOX_CONFIG_SYSLOGD
-	bool "syslogd"
+	bool "syslogd (13 kb)"
 	default BUSYBOX_DEFAULT_SYSLOGD
 	help
 	The syslogd utility is used to record logs of all the
diff --git a/package/utils/busybox/config/util-linux/Config.in b/package/utils/busybox/config/util-linux/Config.in
index 28b66fc818..20d7818f00 100644
--- a/package/utils/busybox/config/util-linux/Config.in
+++ b/package/utils/busybox/config/util-linux/Config.in
@@ -1,13 +1,13 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 menu "Linux System Utilities"
 
 config BUSYBOX_CONFIG_ACPID
-	bool "acpid"
+	bool "acpid (9 kb)"
 	default BUSYBOX_DEFAULT_ACPID
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -29,19 +29,18 @@ config BUSYBOX_CONFIG_FEATURE_ACPID_COMPAT
 	help
 	Accept and ignore compatibility options -g -m -s -S -v.
 config BUSYBOX_CONFIG_BLKDISCARD
-	bool "blkdiscard"
+	bool "blkdiscard (4.3 kb)"
 	default BUSYBOX_DEFAULT_BLKDISCARD
+	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	blkdiscard discards sectors on a given device.
 config BUSYBOX_CONFIG_BLKID
-	bool "blkid"
+	bool "blkid (12 kb)"
 	default BUSYBOX_DEFAULT_BLKID
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
 	Lists labels and UUIDs of all filesystems.
-	WARNING:
-	With all submodules selected, it will add ~8k to busybox.
 
 config BUSYBOX_CONFIG_FEATURE_BLKID_TYPE
 	bool "Print filesystem type"
@@ -50,23 +49,23 @@ config BUSYBOX_CONFIG_FEATURE_BLKID_TYPE
 	help
 	Show TYPE="filesystem type"
 config BUSYBOX_CONFIG_BLOCKDEV
-	bool "blockdev"
+	bool "blockdev (2.3 kb)"
 	default BUSYBOX_DEFAULT_BLOCKDEV
 	help
 	Performs some ioctls with block devices.
 config BUSYBOX_CONFIG_CAL
-	bool "cal"
+	bool "cal (5.8 kb)"
 	default BUSYBOX_DEFAULT_CAL
 	help
 	cal is used to display a monthly calendar.
 config BUSYBOX_CONFIG_CHRT
-	bool "chrt"
+	bool "chrt (4.7 kb)"
 	default BUSYBOX_DEFAULT_CHRT
 	help
-	manipulate real-time attributes of a process.
+	Manipulate real-time attributes of a process.
 	This requires sched_{g,s}etparam support in your libc.
 config BUSYBOX_CONFIG_DMESG
-	bool "dmesg"
+	bool "dmesg (3.7 kb)"
 	default BUSYBOX_DEFAULT_DMESG
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -88,18 +87,18 @@ config BUSYBOX_CONFIG_FEATURE_DMESG_PRETTY
 	"<#>".
 
 	With this option you will see:
-	    # dmesg
-	    Linux version 2.6.17.4 .....
-	    BIOS-provided physical RAM map:
-	     BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
+		# dmesg
+		Linux version 2.6.17.4 .....
+		BIOS-provided physical RAM map:
+		 BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
 
 	Without this option you will see:
-	    # dmesg
-	    <5>Linux version 2.6.17.4 .....
-	    <6>BIOS-provided physical RAM map:
-	    <6> BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
+		# dmesg
+		<5>Linux version 2.6.17.4 .....
+		<6>BIOS-provided physical RAM map:
+		<6> BIOS-e820: 0000000000000000 - 000000000009f000 (usable)
 config BUSYBOX_CONFIG_EJECT
-	bool "eject"
+	bool "eject (4 kb)"
 	default BUSYBOX_DEFAULT_EJECT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -113,18 +112,18 @@ config BUSYBOX_CONFIG_FEATURE_EJECT_SCSI
 	Add the -s option to eject, this allows to eject SCSI-Devices and
 	usb-storage devices.
 config BUSYBOX_CONFIG_FALLOCATE
-	bool "fallocate"
+	bool "fallocate (4.1 kb)"
 	default BUSYBOX_DEFAULT_FALLOCATE
 	help
 	Preallocate space for files.
 config BUSYBOX_CONFIG_FATATTR
-	bool "fatattr"
+	bool "fatattr (1.9 kb)"
 	default BUSYBOX_DEFAULT_FATATTR
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	fatattr lists or changes the file attributes on a fat file system.
 config BUSYBOX_CONFIG_FBSET
-	bool "fbset"
+	bool "fbset (5.9 kb)"
 	default BUSYBOX_DEFAULT_FBSET
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -152,13 +151,13 @@ config BUSYBOX_CONFIG_FEATURE_FBSET_READMODE
 	default BUSYBOX_DEFAULT_FEATURE_FBSET_READMODE /etc/fb.modes, which can be used to set frame buffer
 	device to pre-defined video modes.
 config BUSYBOX_CONFIG_FDFORMAT
-	bool "fdformat"
+	bool "fdformat (4.4 kb)"
 	default BUSYBOX_DEFAULT_FDFORMAT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	fdformat is used to low-level format a floppy disk.
 config BUSYBOX_CONFIG_FDISK
-	bool "fdisk"
+	bool "fdisk (37 kb)"
 	default BUSYBOX_DEFAULT_FDISK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -232,21 +231,19 @@ config BUSYBOX_CONFIG_FEATURE_FDISK_ADVANCED
 	partition, and similarly evil things. Unless you have a very good
 	reason you would be wise to leave this disabled.
 config BUSYBOX_CONFIG_FINDFS
-	bool "findfs"
+	bool "findfs (12 kb)"
 	default BUSYBOX_DEFAULT_FINDFS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_VOLUMEID
 	help
 	Prints the name of a filesystem with given label or UUID.
-	WARNING:
-	With all submodules selected, it will add ~8k to busybox.
 config BUSYBOX_CONFIG_FLOCK
-	bool "flock"
+	bool "flock (6.3 kb)"
 	default BUSYBOX_DEFAULT_FLOCK
 	help
 	Manage locks from shell scripts
 config BUSYBOX_CONFIG_FDFLUSH
-	bool "fdflush"
+	bool "fdflush (1.3 kb)"
 	default BUSYBOX_DEFAULT_FDFLUSH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -259,7 +256,7 @@ config BUSYBOX_CONFIG_FDFLUSH
 	leave this disabled.
 
 config BUSYBOX_CONFIG_FREERAMDISK
-	bool "freeramdisk"
+	bool "freeramdisk (1.3 kb)"
 	default BUSYBOX_DEFAULT_FREERAMDISK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -270,7 +267,7 @@ config BUSYBOX_CONFIG_FREERAMDISK
 	ramdisk. If you have no use for freeing memory from a ramdisk, leave
 	this disabled.
 config BUSYBOX_CONFIG_FSCK_MINIX
-	bool "fsck_minix"
+	bool "fsck.minix (13 kb)"
 	default BUSYBOX_DEFAULT_FSCK_MINIX
 	help
 	The minix filesystem is a nice, small, compact, read-write filesystem
@@ -280,20 +277,20 @@ config BUSYBOX_CONFIG_FSCK_MINIX
 	check for and attempt to repair any corruption that occurs to a minix
 	filesystem.
 config BUSYBOX_CONFIG_FSFREEZE
-	bool "fsfreeze"
+	bool "fsfreeze (3.5 kb)"
 	default BUSYBOX_DEFAULT_FSFREEZE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Halt new accesses and flush writes on a mounted filesystem.
 config BUSYBOX_CONFIG_FSTRIM
-	bool "fstrim"
+	bool "fstrim (4.4 kb)"
 	default BUSYBOX_DEFAULT_FSTRIM
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Discard unused blocks on a mounted filesystem.
 config BUSYBOX_CONFIG_GETOPT
-	bool "getopt"
+	bool "getopt (5.8 kb)"
 	default BUSYBOX_DEFAULT_GETOPT
 	help
 	The getopt utility is used to break up (parse) options in command
@@ -304,13 +301,13 @@ config BUSYBOX_CONFIG_GETOPT
 	wisely leave this disabled.
 
 config BUSYBOX_CONFIG_FEATURE_GETOPT_LONG
-	bool "Support option -l"
-	default BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG if BUSYBOX_CONFIG_LONG_OPTS
-	depends on BUSYBOX_CONFIG_GETOPT
+	bool "Support -l LONGOPTs"
+	default BUSYBOX_DEFAULT_FEATURE_GETOPT_LONG
+	depends on BUSYBOX_CONFIG_GETOPT && BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Enable support for long options (option -l).
 config BUSYBOX_CONFIG_HEXDUMP
-	bool "hexdump"
+	bool "hexdump (8.6 kb)"
 	default BUSYBOX_DEFAULT_HEXDUMP
 	help
 	The hexdump utility is used to display binary data in a readable
@@ -327,18 +324,18 @@ config BUSYBOX_CONFIG_FEATURE_HEXDUMP_REVERSE
 	aimed to be portable.
 
 config BUSYBOX_CONFIG_HD
-	bool "hd"
+	bool "hd (7.8 kb)"
 	default BUSYBOX_DEFAULT_HD
 	help
 	hd is an alias to hexdump -C.
 config BUSYBOX_CONFIG_XXD
-	bool "xxd"
+	bool "xxd (8.9 kb)"
 	default BUSYBOX_DEFAULT_XXD
 	help
 	The xxd utility is used to display binary data in a readable
 	way that is comparable to the output from most hex editors.
 config BUSYBOX_CONFIG_HWCLOCK
-	bool "hwclock"
+	bool "hwclock (5.8 kb)"
 	default BUSYBOX_DEFAULT_HWCLOCK
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -347,11 +344,6 @@ config BUSYBOX_CONFIG_HWCLOCK
 	shutdown in the hardware clock, so the hardware will keep the
 	correct time when Linux is _not_ running.
 
-config BUSYBOX_CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS
-	bool "Support long options (--hctosys,...)"
-	default BUSYBOX_DEFAULT_FEATURE_HWCLOCK_LONG_OPTIONS
-	depends on BUSYBOX_CONFIG_HWCLOCK && BUSYBOX_CONFIG_LONG_OPTS
-
 config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
 	bool "Use FHS /var/lib/hwclock/adjtime"
 	default BUSYBOX_DEFAULT_FEATURE_HWCLOCK_ADJTIME_FHS  # util-linux-ng in Fedora 13 still uses /etc/adjtime
@@ -364,28 +356,28 @@ config BUSYBOX_CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS
 
 	pathname.com/fhs/pub/fhs-2.3.html#VARLIBHWCLOCKSTATEDIRECTORYFORHWCLO
 config BUSYBOX_CONFIG_IONICE
-	bool "ionice"
+	bool "ionice (3.8 kb)"
 	default BUSYBOX_DEFAULT_IONICE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Set/set program io scheduling class and priority
 	Requires kernel >= 2.6.13
 config BUSYBOX_CONFIG_IPCRM
-	bool "ipcrm"
+	bool "ipcrm (3.2 kb)"
 	default BUSYBOX_DEFAULT_IPCRM
 	help
 	The ipcrm utility allows the removal of System V interprocess
 	communication (IPC) objects and the associated data structures
 	from the system.
 config BUSYBOX_CONFIG_IPCS
-	bool "ipcs"
+	bool "ipcs (11 kb)"
 	default BUSYBOX_DEFAULT_IPCS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	The ipcs utility is used to provide information on the currently
 	allocated System V interprocess (IPC) objects in the system.
 config BUSYBOX_CONFIG_LAST
-	bool "last"
+	bool "last (6.1 kb)"
 	default BUSYBOX_DEFAULT_LAST
 	depends on BUSYBOX_CONFIG_FEATURE_WTMP
 	help
@@ -399,7 +391,7 @@ config BUSYBOX_CONFIG_FEATURE_LAST_FANCY
 	'last' displays detailed information about the last users that
 	logged into the system (mimics sysvinit last). +900 bytes.
 config BUSYBOX_CONFIG_LOSETUP
-	bool "losetup"
+	bool "losetup (5.5 kb)"
 	default BUSYBOX_DEFAULT_LOSETUP
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -407,7 +399,7 @@ config BUSYBOX_CONFIG_LOSETUP
 	file or block device, and to query the status of a loop device. This
 	version does not currently support enabling data encryption.
 config BUSYBOX_CONFIG_LSPCI
-	bool "lspci"
+	bool "lspci (6.3 kb)"
 	default BUSYBOX_DEFAULT_LSPCI
 	#select PLATFORM_LINUX
 	help
@@ -416,7 +408,7 @@ config BUSYBOX_CONFIG_LSPCI
 
 	This version uses sysfs (/sys/bus/pci/devices) only.
 config BUSYBOX_CONFIG_LSUSB
-	bool "lsusb"
+	bool "lsusb (4.2 kb)"
 	default BUSYBOX_DEFAULT_LSUSB
 	#select PLATFORM_LINUX
 	help
@@ -425,7 +417,7 @@ config BUSYBOX_CONFIG_LSUSB
 
 	This version uses sysfs (/sys/bus/usb/devices) only.
 config BUSYBOX_CONFIG_MDEV
-	bool "mdev"
+	bool "mdev (17 kb)"
 	default BUSYBOX_DEFAULT_MDEV
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -472,7 +464,7 @@ config BUSYBOX_CONFIG_FEATURE_MDEV_EXEC
 	For more information, please see docs/mdev.txt
 
 config BUSYBOX_CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
-	bool "Support loading of firmwares"
+	bool "Support loading of firmware"
 	default BUSYBOX_DEFAULT_FEATURE_MDEV_LOAD_FIRMWARE
 	depends on BUSYBOX_CONFIG_MDEV
 	help
@@ -482,7 +474,7 @@ config BUSYBOX_CONFIG_FEATURE_MDEV_LOAD_FIRMWARE
 	/lib/firmware/ and if it exists, send it to the kernel for
 	loading into the hardware.
 config BUSYBOX_CONFIG_MESG
-	bool "mesg"
+	bool "mesg (1.4 kb)"
 	default BUSYBOX_DEFAULT_MESG
 	help
 	Mesg controls access to your terminal by others. It is typically
@@ -500,20 +492,20 @@ config BUSYBOX_CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP
 	If you set this option to N, "mesg y" will enable writing
 	by anybody at all. This is not recommended.
 config BUSYBOX_CONFIG_MKE2FS
-	bool "mke2fs"
+	bool "mke2fs (10 kb)"
 	default BUSYBOX_DEFAULT_MKE2FS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to create EXT2 filesystems.
 
 config BUSYBOX_CONFIG_MKFS_EXT2
-	bool "mkfs.ext2"
+	bool "mkfs.ext2 (10 kb)"
 	default BUSYBOX_DEFAULT_MKFS_EXT2
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "mke2fs".
 config BUSYBOX_CONFIG_MKFS_MINIX
-	bool "mkfs_minix"
+	bool "mkfs.minix (10 kb)"
 	default BUSYBOX_DEFAULT_MKFS_MINIX
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -537,20 +529,20 @@ config BUSYBOX_CONFIG_MKFS_REISER
 	Utility to create ReiserFS filesystems.
 	Note: this applet needs a lot of testing and polishing.
 config BUSYBOX_CONFIG_MKDOSFS
-	bool "mkdosfs"
+	bool "mkdosfs (7.2 kb)"
 	default BUSYBOX_DEFAULT_MKDOSFS
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Utility to create FAT32 filesystems.
 
 config BUSYBOX_CONFIG_MKFS_VFAT
-	bool "mkfs.vfat"
+	bool "mkfs.vfat (7.2 kb)"
 	default BUSYBOX_DEFAULT_MKFS_VFAT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "mkdosfs".
 config BUSYBOX_CONFIG_MKSWAP
-	bool "mkswap"
+	bool "mkswap (6.3 kb)"
 	default BUSYBOX_DEFAULT_MKSWAP
 	help
 	The mkswap utility is used to configure a file or disk partition as
@@ -569,7 +561,7 @@ config BUSYBOX_CONFIG_FEATURE_MKSWAP_UUID
 	help
 	Generate swap spaces with universally unique identifiers.
 config BUSYBOX_CONFIG_MORE
-	bool "more"
+	bool "more (7 kb)"
 	default BUSYBOX_DEFAULT_MORE
 	help
 	more is a simple utility which allows you to read text one screen
@@ -578,7 +570,7 @@ config BUSYBOX_CONFIG_MORE
 	you will probably find this utility very helpful. If you don't have
 	any need to reading text files, you can leave this disabled.
 config BUSYBOX_CONFIG_MOUNT
-	bool "mount"
+	bool "mount (23 kb)"
 	default BUSYBOX_DEFAULT_MOUNT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -586,18 +578,17 @@ config BUSYBOX_CONFIG_MOUNT
 	tree. The 'mount' utility is used to graft a filesystem onto a
 	particular part of the tree. A filesystem can either live on a block
 	device, or it can be accessible over the network, as is the case with
-	NFS filesystems. Most people using BusyBox will also want to enable
-	the 'mount' utility.
+	NFS filesystems.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_FAKE
-	bool "Support option -f"
+	bool "Support -f (fake mount)"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_FAKE
 	depends on BUSYBOX_CONFIG_MOUNT
 	help
 	Enable support for faking a file system mount.
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_VERBOSE
-	bool "Support option -v"
+	bool "Support -v (verbose)"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_VERBOSE
 	depends on BUSYBOX_CONFIG_MOUNT
 	help
@@ -625,7 +616,19 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_LABEL
 	help
 	This allows for specifying a device by label or uuid, rather than by
 	name. This feature utilizes the same functionality as blkid/findfs.
-	This also enables label or uuid support for swapon.
+
+config BUSYBOX_CONFIG_FEATURE_MOUNT_NFS
+	bool "Support mounting NFS file systems on Linux < 2.6.23"
+	default BUSYBOX_DEFAULT_FEATURE_MOUNT_NFS
+	depends on BUSYBOX_CONFIG_MOUNT
+	select BUSYBOX_CONFIG_FEATURE_SYSLOG
+	help
+	Enable mounting of NFS file systems on Linux kernels prior
+	to version 2.6.23. Note that in this case mounting of NFS
+	over IPv6 will not be possible.
+
+	Note that this option links in RPC support from libc,
+	which is rather large (~10 kbytes on uclibc).
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_CIFS
 	bool "Support mounting CIFS/SMB file systems"
@@ -646,7 +649,7 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_FLAGS
 
 config BUSYBOX_CONFIG_FEATURE_MOUNT_FSTAB
 	depends on BUSYBOX_CONFIG_MOUNT
-	bool "Support /etc/fstab and -a"
+	bool "Support /etc/fstab and -a (mount all)"
 	default BUSYBOX_DEFAULT_FEATURE_MOUNT_FSTAB
 	help
 	Support mount all and looking for files in /etc/fstab.
@@ -658,26 +661,38 @@ config BUSYBOX_CONFIG_FEATURE_MOUNT_OTHERTAB
 	help
 	Support mount -T (specifying an alternate fstab)
 config BUSYBOX_CONFIG_MOUNTPOINT
-	bool "mountpoint"
+	bool "mountpoint (4.9 kb)"
 	default BUSYBOX_DEFAULT_MOUNTPOINT
 	help
 	mountpoint checks if the directory is a mountpoint.
+config BUSYBOX_CONFIG_NOLOGIN
+	bool "nologin"
+	default BUSYBOX_DEFAULT_NOLOGIN
+	depends on BUSYBOX_CONFIG_FEATURE_SH_EMBEDDED_SCRIPTS
+	help
+	Politely refuse a login
+
+config BUSYBOX_CONFIG_NOLOGIN_DEPENDENCIES
+	bool "Enable dependencies for nologin"
+	default BUSYBOX_DEFAULT_NOLOGIN_DEPENDENCIES
+	depends on BUSYBOX_CONFIG_NOLOGIN
+	select BUSYBOX_CONFIG_CAT
+	select BUSYBOX_CONFIG_ECHO
+	select BUSYBOX_CONFIG_SLEEP
+	help
+	nologin is implemented as a shell script. It requires the
+	following in the runtime environment:
+		cat echo sleep
+	If you know these will be available externally you can
+	disable this option.
 config BUSYBOX_CONFIG_NSENTER
-	bool "nsenter"
+	bool "nsenter (6.5 kb)"
 	default BUSYBOX_DEFAULT_NSENTER
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Run program with namespaces of other processes.
-
-config BUSYBOX_CONFIG_FEATURE_NSENTER_LONG_OPTS
-	bool "Enable long options"
-	default BUSYBOX_DEFAULT_FEATURE_NSENTER_LONG_OPTS
-	depends on BUSYBOX_CONFIG_NSENTER && BUSYBOX_CONFIG_LONG_OPTS
-	help
-	Support long options for the nsenter applet. This makes
-	the busybox implementation more compatible with upstream.
 config BUSYBOX_CONFIG_PIVOT_ROOT
-	bool "pivot_root"
+	bool "pivot_root (1.1 kb)"
 	default BUSYBOX_DEFAULT_PIVOT_ROOT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -689,7 +704,7 @@ config BUSYBOX_CONFIG_PIVOT_ROOT
 	Note: This is for initrd in linux 2.4. Under initramfs (introduced
 	in linux 2.6) use switch_root instead.
 config BUSYBOX_CONFIG_RDATE
-	bool "rdate"
+	bool "rdate (5.6 kb)"
 	default BUSYBOX_DEFAULT_RDATE
 	help
 	The rdate utility allows you to synchronize the date and time of your
@@ -697,46 +712,46 @@ config BUSYBOX_CONFIG_RDATE
 	the RFC868 protocol, which is built into the inetd daemon on most
 	systems.
 config BUSYBOX_CONFIG_RDEV
-	bool "rdev"
+	bool "rdev (1.8 kb)"
 	default BUSYBOX_DEFAULT_RDEV
 	help
 	Print the device node associated with the filesystem mounted at '/'.
 config BUSYBOX_CONFIG_READPROFILE
-	bool "readprofile"
+	bool "readprofile (7.1 kb)"
 	default BUSYBOX_DEFAULT_READPROFILE
 	#select PLATFORM_LINUX
 	help
 	This allows you to parse /proc/profile for basic profiling.
 config BUSYBOX_CONFIG_RENICE
-	bool "renice"
+	bool "renice (4.2 kb)"
 	default BUSYBOX_DEFAULT_RENICE
 	help
 	Renice alters the scheduling priority of one or more running
 	processes.
 config BUSYBOX_CONFIG_REV
-	bool "rev"
+	bool "rev (4.4 kb)"
 	default BUSYBOX_DEFAULT_REV
 	help
 	Reverse lines of a file or files.
 config BUSYBOX_CONFIG_RTCWAKE
-	bool "rtcwake"
+	bool "rtcwake (6.8 kb)"
 	default BUSYBOX_DEFAULT_RTCWAKE
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Enter a system sleep state until specified wakeup time.
 config BUSYBOX_CONFIG_SCRIPT
-	bool "script"
+	bool "script (8.6 kb)"
 	default BUSYBOX_DEFAULT_SCRIPT
 	help
 	The script makes typescript of terminal session.
 config BUSYBOX_CONFIG_SCRIPTREPLAY
-	bool "scriptreplay"
+	bool "scriptreplay (2.4 kb)"
 	default BUSYBOX_DEFAULT_SCRIPTREPLAY
 	help
 	This program replays a typescript, using timing information
 	given by script -t.
 config BUSYBOX_CONFIG_SETARCH
-	bool "setarch"
+	bool "setarch (3.6 kb)"
 	default BUSYBOX_DEFAULT_SETARCH
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -746,37 +761,64 @@ config BUSYBOX_CONFIG_SETARCH
 	(like amd64/x86, ppc64/ppc, sparc64/sparc, etc...).
 
 config BUSYBOX_CONFIG_LINUX32
-	bool "linux32"
+	bool "linux32 (3.3 kb)"
 	default BUSYBOX_DEFAULT_LINUX32
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "setarch linux32".
 
 config BUSYBOX_CONFIG_LINUX64
-	bool "linux64"
+	bool "linux64 (3.3 kb)"
 	default BUSYBOX_DEFAULT_LINUX64
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	Alias to "setarch linux64".
 config BUSYBOX_CONFIG_SETPRIV
-	bool "setpriv"
+	bool "setpriv (6.6 kb)"
 	default BUSYBOX_DEFAULT_SETPRIV
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	select BUSYBOX_CONFIG_LONG_OPTS
 	help
 	Run a program with different Linux privilege settings.
 	Requires kernel >= 3.5
+
+config BUSYBOX_CONFIG_FEATURE_SETPRIV_DUMP
+	bool "Support dumping current privilege state"
+	default BUSYBOX_DEFAULT_FEATURE_SETPRIV_DUMP
+	depends on BUSYBOX_CONFIG_SETPRIV
+	help
+	Enables the "--dump" switch to print out the current privilege
+	state. This is helpful for diagnosing problems.
+
+config BUSYBOX_CONFIG_FEATURE_SETPRIV_CAPABILITIES
+	bool "Support capabilities"
+	default BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITIES
+	depends on BUSYBOX_CONFIG_SETPRIV
+	help
+	Capabilities can be used to grant processes additional rights
+	without the necessity to always execute as the root user.
+	Enabling this option enables "--dump" to show information on
+	capabilities.
+
+config BUSYBOX_CONFIG_FEATURE_SETPRIV_CAPABILITY_NAMES
+	bool "Support capability names"
+	default BUSYBOX_DEFAULT_FEATURE_SETPRIV_CAPABILITY_NAMES
+	depends on BUSYBOX_CONFIG_SETPRIV && BUSYBOX_CONFIG_FEATURE_SETPRIV_CAPABILITIES
+	help
+	Capabilities can be either referenced via a human-readble name,
+	e.g. "net_admin", or using their index, e.g. "cap_12". Enabling
+	this option allows using the human-readable names in addition to
+	the index-based names.
 config BUSYBOX_CONFIG_SETSID
-	bool "setsid"
+	bool "setsid (3.6 kb)"
 	default BUSYBOX_DEFAULT_SETSID
 	help
 	setsid runs a program in a new session
 config BUSYBOX_CONFIG_SWAPON
-	bool "swapon"
+	bool "swapon (15 kb)"
 	default BUSYBOX_DEFAULT_SWAPON
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
-	This option enables the 'swapon' utility.
 	Once you have created some swap space using 'mkswap', you also need
 	to enable your swap space with the 'swapon' utility. The 'swapoff'
 	utility is used, typically at system shutdown, to disable any swap
@@ -800,13 +842,20 @@ config BUSYBOX_CONFIG_FEATURE_SWAPON_PRI
 	Enable support for setting swap device priority in swapon.
 
 config BUSYBOX_CONFIG_SWAPOFF
-	bool "swapoff"
+	bool "swapoff (14 kb)"
 	default BUSYBOX_DEFAULT_SWAPOFF
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
+
+config BUSYBOX_CONFIG_FEATURE_SWAPONOFF_LABEL
+	bool "Support specifying devices by label or UUID"
+	default BUSYBOX_DEFAULT_FEATURE_SWAPONOFF_LABEL
+	depends on BUSYBOX_CONFIG_SWAPON || BUSYBOX_CONFIG_SWAPOFF
+	select BUSYBOX_CONFIG_VOLUMEID
 	help
-	This option enables the 'swapoff' utility.
+	This allows for specifying a device by label or uuid, rather than by
+	name. This feature utilizes the same functionality as blkid/findfs.
 config BUSYBOX_CONFIG_SWITCH_ROOT
-	bool "switch_root"
+	bool "switch_root (5.5 kb)"
 	default BUSYBOX_DEFAULT_SWITCH_ROOT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -824,8 +873,9 @@ config BUSYBOX_CONFIG_SWITCH_ROOT
 	* Because the Linux kernel uses rootfs internally as the starting
 	and ending point for searching through the kernel's doubly linked
 	list of active mount points. That's why.
+
 config BUSYBOX_CONFIG_TASKSET
-	bool "taskset"
+	bool "taskset (4.2 kb)"
 	default BUSYBOX_DEFAULT_TASKSET
 	help
 	Retrieve or set a processes's CPU affinity.
@@ -840,14 +890,14 @@ config BUSYBOX_CONFIG_FEATURE_TASKSET_FANCY
 	affinity parameter 0xHHHHHHHHHHHHHHHHHHHH can be arbitrarily long
 	in this case. Otherwise, it is limited to sizeof(long).
 config BUSYBOX_CONFIG_UEVENT
-	bool "uevent"
+	bool "uevent (3.1 kb)"
 	default BUSYBOX_DEFAULT_UEVENT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
 	uevent is a netlink listener for kernel uevent notifications
 	sent via netlink. It is usually used for dynamic device creation.
 config BUSYBOX_CONFIG_UMOUNT
-	bool "umount"
+	bool "umount (5.1 kb)"
 	default BUSYBOX_DEFAULT_UMOUNT
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
 	help
@@ -857,13 +907,13 @@ config BUSYBOX_CONFIG_UMOUNT
 	utility, you almost certainly also want to enable 'umount'.
 
 config BUSYBOX_CONFIG_FEATURE_UMOUNT_ALL
-	bool "Support option -a"
+	bool "Support -a (unmount all)"
 	default BUSYBOX_DEFAULT_FEATURE_UMOUNT_ALL
 	depends on BUSYBOX_CONFIG_UMOUNT
 	help
 	Support -a option to unmount all currently mounted filesystems.
 config BUSYBOX_CONFIG_UNSHARE
-	bool "unshare"
+	bool "unshare (7.2 kb)"
 	default BUSYBOX_DEFAULT_UNSHARE
 	depends on !BUSYBOX_CONFIG_NOMMU
 	select BUSYBOX_CONFIG_PLATFORM_LINUX
@@ -871,7 +921,7 @@ config BUSYBOX_CONFIG_UNSHARE
 	help
 	Run program with some namespaces unshared from parent.
 config BUSYBOX_CONFIG_WALL
-	bool "wall"
+	bool "wall (2.6 kb)"
 	default BUSYBOX_DEFAULT_WALL
 	depends on BUSYBOX_CONFIG_FEATURE_UTMP
 	help
diff --git a/package/utils/busybox/config/util-linux/volume_id/Config.in b/package/utils/busybox/config/util-linux/volume_id/Config.in
index bfe724fa66..b50fcac34a 100644
--- a/package/utils/busybox/config/util-linux/volume_id/Config.in
+++ b/package/utils/busybox/config/util-linux/volume_id/Config.in
@@ -1,7 +1,7 @@
 # DO NOT EDIT. This file is generated from Config.src
 #
 # For a description of the syntax of this configuration file,
-# see scripts/kbuild/config-language.txt.
+# see docs/Kconfig-language.txt.
 #
 
 config BUSYBOX_CONFIG_VOLUMEID
@@ -60,6 +60,16 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_JFS
 	bool "jfs filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_JFS
 	depends on BUSYBOX_CONFIG_VOLUMEID
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LFS
+	bool "LittleFS filesystem"
+	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LFS
+	depends on BUSYBOX_CONFIG_VOLUMEID && BUSYBOX_CONFIG_FEATURE_BLKID_TYPE
+	help
+	LittleFS is a small fail-safe filesystem designed for embedded
+	systems. It has strong copy-on-write guarantees and storage on disk
+	is always kept in a valid state. It also provides a form of dynamic
+	wear levelling for systems that can not fit a full flash translation
+	layer.
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LINUXRAID
 	bool "linuxraid"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LINUXRAID
@@ -72,6 +82,10 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_LUKS
 	bool "luks filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_LUKS
 	depends on BUSYBOX_CONFIG_VOLUMEID
+config BUSYBOX_CONFIG_FEATURE_VOLUMEID_MINIX
+	bool "minix filesystem"
+	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_MINIX
+	depends on BUSYBOX_CONFIG_VOLUMEID
 config BUSYBOX_CONFIG_FEATURE_VOLUMEID_NILFS
 	bool "nilfs filesystem"
 	default BUSYBOX_DEFAULT_FEATURE_VOLUMEID_NILFS
@@ -151,10 +165,6 @@ config BUSYBOX_CONFIG_FEATURE_VOLUMEID_UDF
 ###	bool "mac filesystem"
 ###	default y
 ###	depends on VOLUMEID
-### config FEATURE_VOLUMEID_MINIX
-###	bool "minix filesystem"
-###	default y
-###	depends on VOLUMEID
 ### config FEATURE_VOLUMEID_MSDOS
 ###	bool "msdos filesystem"
 ###	default y

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From sw9280 at gmail.com  Wed Feb 27 02:04:49 2019
From: sw9280 at gmail.com (Buddy)
Date: Wed, 27 Feb 2019 15:04:49 +0800
Subject: [OpenWrt-Devel] Feedback problem
Message-ID: <CA++TKUj1O==T6VL7vrX63RjehChZ2Q37Betm7PiCeRxXcDoNwg@mail.gmail.com>

Engineer:
          I am installed openwrt firmware 18.06.2 in Linksys WRT1900AC .
          Installed AdBlock,but could not to add more rule resource.
          For blocked more ADs , changed hosts to a big one that over
150MB,so the changes is spend 60% Memory,hope have a good ways to deal with.
          Dnsmasq is instead of dnsmasq-full,need add dnsmasq fast-lookup
that could search from github.com.
          Hope do it more better, thank you!
         Best wishes!
                                          Buddy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190227/a229e583/attachment.htm>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From lorenzo.bianconi at redhat.com  Wed Feb 27 02:13:16 2019
From: lorenzo.bianconi at redhat.com (Lorenzo Bianconi)
Date: Wed, 27 Feb 2019 08:13:16 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <CAALvt2N8+fVju3qy7veon1Lw1-0+Hj6G3AgUdEA6VLRysMEF-g@mail.gmail.com>
References: <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
 <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
 <20190226100413.GA3351@localhost.localdomain>
 <CAALvt2NGxH2NDySQszg15QzFFbFV3vwYYD=mFaVOTofJk1gusA@mail.gmail.com>
 <20190226215724.GA3344@localhost.localdomain>
 <CAALvt2N8+fVju3qy7veon1Lw1-0+Hj6G3AgUdEA6VLRysMEF-g@mail.gmail.com>
Message-ID: <20190227071315.GA10219@lore-desk.lan>

> On Tue, Feb 26, 2019 at 1:57 PM Lorenzo Bianconi
> <lorenzo.bianconi at redhat.com> wrote:
> >
> > > On Tue, Feb 26, 2019 at 2:04 AM Lorenzo Bianconi
> > > <lorenzo.bianconi at redhat.com> wrote:
> > > >
> > > > >
> > > > > On 26.02.19 06:28, Joe Ayers wrote:
> > > > > > On Mon, Feb 25, 2019 at 8:42 AM Koen Vandeputte
> > > > > > <koen.vandeputte at ncentric.com> wrote:
> > > > > > >
> > > > > > > On 25.02.19 17:33, Joe Ayers wrote:
> > > > > > > > On Mon, Feb 25, 2019 at 1:56 AM Lorenzo Bianconi
> > > > > > > > <lorenzo.bianconi at redhat.com> wrote:
> > > > > > > > > > On 24.02.19 21:32, Joe Ayers wrote:
> > > > > > > > > Hi Joe,
> > > > > > > Hi Joe,
> > > > > > > > > > > First of all, thanks for contributing this fix.   I've incorporated
> > > > > > > > > > > into the http://www.arednmesh.org project, just getting into our
> > > > > > > > > > > nightly builds now.   A comment and a couple questions...
> > > > > > > > > > >
> > > > > > > > > > > The MAX_DELAY was way too short for our community, had to increase
> > > > > > > > > > > that significantly.  We commonly have long distance links over 50km.
> > > > > > > > > according to ath9k max configurable value in AR_TIME_OUT for acktimeout
> > > > > > > > > is 0x3fff. The max ack_to we can configure (assuming clockrate set to
> > > > > > > > > ATH9K_CLOCK_RATE_2GHZ_OFDM) is ~372us (~55km).
> > > > > > > > > We can try to set MAX_DELAY to 360 (max distance ~54km). If you confirm it
> > > > > > > > > works properly I can post a patch (or you can take care of it, up to you)
> > > > > > > > >
> > > > > > > > I have a current link in Southern California with settings of:
> > > > > > > >
> > > > > > > > distance 60000m  ( "463 S" )
> > > > > > > > channel width = 10MHz
> > > > > > > > channel = 176 (5880) Amateur Radio licensing
> > > > > > > > Ubiquiti Rocket M w/ RocketDish
> > > > > > > > xmit power 27dBm
> > > > > > > >
> > > > > > > > It is rock solid and streams multiple HD videos and voip calls
> > > > > > > > (without drop outs in the call) achieving 30db SNR and MCS15 rates.
> > > > > > > > It's been live for a couple years in this mode.  I don't understand
> > > > > > > > how this link could operate with the performance we see if the  ack_to
> > > > > > > > max was 372 -- the voip quality would be terrible.
> > > > > > > >
> > > > > > > > I have tested (limited tests) dynack on a link showing upwards of
> > > > > > > > ~"400 A", but the real distance to farthest node was about ~20km.
> > > > > > > > Was wondering the discrepancy (fading, etc.?)?   I had changed the
> > > > > > > > starting point to 20km to work, otherwise it was stuck on the original
> > > > > > > > starting point, "96 A", and didn't move.
> > > > > > > >
> > > > > > > > I just loaded dynack on this 60km link and it doesn't move from my new
> > > > > > > > starting point of "196 A".   Something in the calculation somewhere
> > > > > > > > goes out of bound--to big a jump?   I'll do some testing to get the
> > > > > > > > dynack working on this 60km link, then lets see what it tunes to.
> > > > > > > > Based on my earlier results, I'm wondering if it will push past 500.
> > > > > > > >     Maybe the vendor specs are only to the limit of what was tested,
> > > > > > > > does not appear to be a true physical limit?
> > > > > > > Could you add some debug logs from Dynack?
> > > > > > >
> > > > > > Debug logs test case 1 --   Ubiquiti LHG5 <8km to Rocket M5:
> > > > > > https://drive.google.com/file/d/1PYXzjbq1DUIxdZxMm1W7g_0k5hpkKi4z/view?usp=sharing
> > > > > >
> > > > > > Debug log test case 2 -- Ubiquiti Rocket M5 ~60km link to another Rocket M5:
> > > > > > https://drive.google.com/file/d/16DQSkEm0zcDCQHKuxOjM2yXlTp1QYYiE/view?usp=sharing
> > > > > >
> > > > > > Test case 3 (no debug data) -- Ubiquiti NanoStation link to another
> > > > > > tower at 7.68km distance
> > > > > >
> > > > > > Note:  test case 1, the auto distance is much higher than actual
> > > > > > (static set about 8km).
> > > > > >             test case 2, the auto distance does not change from initial
> > > > > > value, although I raised MAX_DELAY sufficiently high enough. What
> > > > > > dynack.c initial variable conditions would you recommend?
> > > > > >             test case 3, normally set as "115 S".  dynack  floated from
> > > > > > 196 to 344, then back to 197 A when manually monitoring the ack_to
> > > > > > value in debugfs.  I've seen this behavior on 3 links now.
> > > > > >
> > > > > > Joe AE6XE
> > > > >
> > > > > Hi Joe,
> > > > >
> > > > > In the "long" log, I'm seeing that dynack is not synced.
> > > > > I'm also not seeing any late ack's coming in.
> > > > >
> > > > > The "Short" log looks OK and is what you should see on proper syncing.
> > > > >
> > > > >
> > > > > Could you try following on the long link? (if possible)
> > > > >
> > > > > - Ensure dynack gets enabled on boot
> > > > > - Reboot both locations so they finish booting and setup IBSS at exactly the
> > > > > same time.
> > > > > - Provide these logs from both ends.
> > > > >
> > > > > This allows to compare both ends on a side-by-side fashion.
> > > > >
> > > > > fyi, I've attached logs from my setup (24.1km link)
> > > > >
> > > > > You will notice some prints about late-ack's coming in, which is required.
> > > >
> > > > Hi Joe,
> > > >
> > > > are you running wpa_supplicant on ibss links? IIRC wpa_supplicant is mandatory
> > > > for dynack to work properly on ibss links.
> > > >
> > > > Regards,
> > > > Lorenzo
> > > >
> > >
> > > We do not run wpa_supplicant on ibss.    Let's just say, the ~1950's
> > > regulations for Amateur Radio Licensing needs to be modernized :) .
> >
> > Hi Joe,
> >
> > wpa_supplicant is mandatory to use dynack on ibss links so you need to
> > run it (otherwise dynack will not be able to trigger 'late' acks and
> > the processing will not converge for very long links).
> > The other possibility is to convert the ibss links in AP-STA mode.
> >
> > Regards,
> > Lorenzo
> >
> 
> Ok, let me look at this to see if I can get wpa_supplicant running.
> It's not an option to move from ibss to ap-sta mode.   The design is
> such that any node can come online and extend the network
> autonomously.   ap-sta would generally mean a pre-designed network.

What I mean is just a p2p link running in AP-STA mode, I guess there is no
difference for users. Am I missing something?

> 
>  Is dynack going to receive the late acks if I manage to run
> wpa_supplicant (wpad-mini?) in plaintext or key_mgmt=NONE mode?

What we really needs are authentication packets to trigger 'late acks'
in ibss mode. I think wpa_supplicant in plaintext is enough but I am not
100% sure.
@Koen: could you please confirm it?

Regards,
Lorenzo

> 
> I appreciate the help and dialog.   We have a lot of people in our
> community eager for this capability.  One example is this group:
> http://www.landops.com/
> 
> Joe AE6XE
> 
> > >
> > > dynack is working fine for links up to ~30km right now, and we are
> > > seeing max ack_to values above 400.   My original testing for the
> > > short link failed exactly the same way (with the original MAX_DELAY
> > > and starting ack_to) as the long link is failing now.     I changed
> > > MAX_DELAY and starting ack_to values to get working in the short link.
> > >   Now, we are seeing proper syncing in this debug data.   Can we not
> > > do similar changes for the long link?  Seems to be something in the
> > > logic conditions vs. wpa_supplicant.
> > >
> > > We have 500+ node network here in  Southern CA spanning end to end
> > > probably over 400km.  This long link is a back bone between counties,
> > > so I need to be a little sensitive with the up/down and testing I'm
> > > doing.
> > >
> > > Regards,
> > > Joe AE6XE

-- 
UNIX is Sexy: who | grep -i blonde | talk; cd ~; wine; talk; touch; unzip; touch; strip; gasp; finger; gasp; mount; fsck; more; yes; gasp; umount; make clean; sleep
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190227/01db949d/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From bobafetthotmail at gmail.com  Wed Feb 27 03:03:59 2019
From: bobafetthotmail at gmail.com (Alberto Bursi)
Date: Wed, 27 Feb 2019 16:03:59 +0800
Subject: [OpenWrt-Devel] Feedback problem
In-Reply-To: <CA++TKUj1O==T6VL7vrX63RjehChZ2Q37Betm7PiCeRxXcDoNwg@mail.gmail.com>
References: <CA++TKUj1O==T6VL7vrX63RjehChZ2Q37Betm7PiCeRxXcDoNwg@mail.gmail.com>
Message-ID: <a9d8ac7d-a63e-26cc-412f-885fb8f871e4@gmail.com>


On 27/02/19 15:04, Buddy wrote:
> Engineer:
> ? ? ? ? ? I am installed openwrt firmware 18.06.2 in Linksys WRT1900AC .
> ? ? ? ? ? Installed AdBlock,but could not to add more rule resource.
> ? ? ? ? ? For blocked more ADs , changed hosts to a big one that over 
> 150MB,so the changes is spend 60% Memory,hope have a good ways to deal 
> with.
> ? ? ? ? ? Dnsmasq is instead of dnsmasq-full,need add dnsmasq 
> fast-lookup that could search from github.com <http://github.com>.
> ? ? ? ? ? Hope do it more better, thank you!
> ? ? ? ? ?Best wishes!
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Buddy
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel


Internal memory is small.

Connect empty USB drive and do "extroot" procedure to expand memory for 
OpenWrt.

read this tutorial 
https://openwrt.org/docs/guide-user/additional-software/extroot_configuration


-Alberto

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190227/1c827531/attachment.htm>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at david-bauer.net  Wed Feb 27 07:03:21 2019
From: mail at david-bauer.net (David Bauer)
Date: Wed, 27 Feb 2019 13:03:21 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ipq40xx: add support for
 FritzBox 7530
In-Reply-To: <1729398.Bxvg2gU6vH@debian64>
References: <20190218225834.28100-1-mail@david-bauer.net>
 <4581107.9DOS49Ef2O@debian64>
 <1861da34-2303-2d1d-7a9c-ebbed747c927@david-bauer.net>
 <1729398.Bxvg2gU6vH@debian64>
Message-ID: <0a745698-e431-9b23-400d-02c24e4bc95b@david-bauer.net>

Hello Christian,

On 26.02.19 23:17, Christian Lamparter wrote:
> Hello David,
> 
> On Tuesday, February 26, 2019 12:15:41 AM CET David Bauer wrote:
>> On 25.02.19 23:10, Christian Lamparter wrote:
>>> On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
>>>> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
>>>>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>> new file mode 100644
>>>>> index 0000000000..b2a33468bb
>>>>> --- /dev/null
>>>>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>> @@ -0,0 +1,305 @@
>>>>> +&pcie0 {
>>>>> +	status = "okay";
>>>>> +
>>>>> +	ranges = <0x81000000 0 0x40200000 0x40200000
>>>>> +			0 0x00100000   /* downstream I/O */
>>>>> +			0x82000000 0 0x48000000 0x48000000
>>>>> +			0 0x10000000>; /* non-prefetchable memory */
>>>>
>>>> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
>>>> should be put into the qcom-ipq4019.dtsi as well.
>>>
>>> And it didn't work. While the pcie enumeration worked fine. 
>>> The QCA9887 was no longer attaching. As soon as the driver was
>>> loaded it failed due to:
>>>
>>> [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
>>> [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
>>> [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>> [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
>>> [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>> [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
>>> [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>> [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>> [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
>>> [...]
>>> [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
>>> [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
>>> [...]
>>>
>>> But I think we can fix the problem. Because according to the old
>>> qcom-ipq40xx.dtsi I dug up:
>>>
>>> <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
>>>
>>> The non-prefetchable memory area window size should be 0x00d00000.
>>>
>>> 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
>>> 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
>>>
>>> (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
>>> me know if does indeed finally let you enumerate the device?)
>>
>> It seems to work with your proposed change:
>>
>> [    0.042117] OF: PCI: host bridge /soc/pci at 40000000 ranges:
>> [    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
>> [    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
>> [    0.259505] qcom-pcie 40000000.pci: link up
>> [    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
>> [    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
>> [    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
>> (bus address [0x40200000-0x402fffff])
>> [    0.259700] pci_bus 0000:00: root bus resource [mem
>> 0x40300000-0x40ffffff]
>> [    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
>> [    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
>> [    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
>> [    0.260015] PCI: bus0: Fast back to back transfers disabled
>> [    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
>> [    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
>> [    0.260790] pci 0000:01:00.0: supports D1 D2
>> [    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
>> [    0.261043] PCI: bus1: Fast back to back transfers disabled
>> [    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
>> [    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
>> 0x40300000-0x40300fff 64bit]
>> [    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
>> [    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
>> [    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
>> [    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93
>>
>> See
>> https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74
>>
>> How should we proceed on this device? Should i resend a v3 or will you
>> remove the ranges property and backport the patch you prepare for upstream?
> 
> Sorry for the late reply, I added a rebased version
> on top of the latest changes) into my staging tree:
> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=206a40911118f24c062ccdfc24dfc3fdd653c71a 
> 
> And it turned out that there was also a pcie msi irq fix
> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=307f6a6ed6cfca4c0d3cb5dc4dc5493ec3f41e1c
> it just goes on and on and on...
> 

Thanks! I will test an image built from your staging tree this evening
and give feedback.

Best wishes
David

> Regards,
> Christian
> 
> 
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dedeckeh at gmail.com  Wed Feb 27 07:38:36 2019
From: dedeckeh at gmail.com (Hans Dedecker)
Date: Wed, 27 Feb 2019 13:38:36 +0100
Subject: [OpenWrt-Devel] [PATCH] odhcpd: add network dependent start
 trigger
In-Reply-To: <CAJLcKsFQcJ1YH8bCxPkNUcRPNdQ_5DOBzLDuUE3nuUXJujAnGQ@mail.gmail.com>
References: <893bbd8f-683a-0382-feff-ce0f7b38019f@gmail.com>
 <CAJLcKsFQcJ1YH8bCxPkNUcRPNdQ_5DOBzLDuUE3nuUXJujAnGQ@mail.gmail.com>
Message-ID: <CAJLcKsGAHVmP4WwhU8L+akstPLk2h_NQJtmyP162ePm-mxjF4A@mail.gmail.com>

Hi,
On Mon, Feb 25, 2019 at 8:46 AM Hans Dedecker <dedeckeh at gmail.com> wrote:
>
> Hi,
> On Sun, Feb 24, 2019 at 7:06 AM Eric Luehrsen <ericluehrsen at gmail.com> wrote:
> >
> > Recent (20190207) changes to odhcpd makee it dependent on OpenWrt
> > logical interfaces. Boot time race conditions may make odhcpd binding
>
> Even before the most recent changes odhcpd was dependent on OpenWRT logical
> interfaces nothing has changed in that sense
> > a challenge. Intermittent or inconsistent problems can occur with DHCP
> > requests until odhcpd is restarted. Change start up scripts to use
>
> Can you elaborate a bit more on what issues you're observing and provide odhcpd
> tracing  (loglevel 7) when you observe issues ?
The issue you probably have observed is fixed in
https://git.openwrt.org/?p=project/odhcpd.git;a=commit;h=16c5b6c9bcb71bb67a6ab15bb458bf9ab5a8fe7e

Hans
> > procd interface triggers such as dnsmasq and others have already.
>
> This does not really make sense to me as odhcpd is subscribed to ubus
> network event
> messages triggering config reload logic in case the network state of
> an interface changes
>
> Hans
> >
> > Signed-off-by: Eric Luehrsen <ericluehrsen at gmail.com>
> > ---
> >   .../network/services/odhcpd/files/odhcpd.init | 20 +++++++++++++++++--
> >   1 file changed, 18 insertions(+), 2 deletions(-)
> >
> > --- a/package/network/services/odhcpd/files/odhcpd.init
> > +++ b/package/network/services/odhcpd/files/odhcpd.init
> > @@ -1,10 +1,20 @@
> >   #!/bin/sh /etc/rc.common
> >
> > -START=35
> > +START=19
> >   STOP=85
> >   USE_PROCD=1
> >
> > +boot() {
> > +       ODHCPD_BOOT=1
> > +       start "$@"
> > +}
> > +
> >   start_service() {
> > +       if [ -n "$ODHCPD_BOOT" ] ; then
> > +               # odhcpd needs to wait for OpenWrt logical interfaces
> > +               return 0
> > +       fi
> > +
> >         procd_open_instance
> >         procd_set_param command /usr/sbin/odhcpd
> >         procd_set_param respawn
> > @@ -17,6 +27,12 @@ reload_service() {
> >
> >   service_triggers()
> >   {
> > -       procd_add_reload_trigger "dhcp"
> > +       if [ -n "$ODHCPD_BOOT" ] ; then
> > +               # one time trigger at boot to wait for logical interface setup
> > +               procd_add_raw_trigger "interface.*.up" 3000 /etc/init.d/odhcpd restart
> > +       else
> > +               # reload odhcpd also for network reconfiguration
> > +               procd_add_reload_trigger "dhcp" "network"
> > +       fi
> >   }
> >
> > --
> > 2.20.1
> >
> > _______________________________________________
> > openwrt-devel mailing list
> > openwrt-devel at lists.openwrt.org
> > https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From koen.vandeputte at ncentric.com  Wed Feb 27 11:21:58 2019
From: koen.vandeputte at ncentric.com (Koen Vandeputte)
Date: Wed, 27 Feb 2019 17:21:58 +0100
Subject: [OpenWrt-Devel] RFT: kernel bump for 4.19 + Flow Offload
Message-ID: <5858029f-f13e-f3fa-001d-034a27f98f4a@ncentric.com>

Hi All,

Another week .. another kernel bump ..


This week, stable 4.19 received a fair amount of changes for netfilter 
and offloading stuff.

The bump required some altering of patches at critical locations to make 
everything apply squeaky clean.


To be absolutely sure, I would like to file a request here for 
additional testing on 4.19:


If you are running 4.19 already, and make use of flow offloading,

feel free to compile my staging tree (master branch) [1] and check if 
all is working normally.

Please leave a tested-by tag and specify the target you tested, so I can 
add it to the patch. :-)


Thanks,

Koen


[1] https://git.openwrt.org/?p=openwrt/staging/xback.git;a=summary


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From openwrt-devel at lists.openwrt.org  Wed Feb 27 16:07:22 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Wed, 27 Feb 2019 21:07:22 +0000
Subject: [OpenWrt-Devel] [PATCH] openssl: bump to release 1.1.1b
Message-ID: <mailman.24186.1551301641.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH] openssl: bump to release 1.1.1b
Date: Wed, 27 Feb 2019 18:06:44 -0300
Size: 32075
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190227/5625694f/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From openwrt-devel at lists.openwrt.org  Wed Feb 27 16:39:18 2019
From: openwrt-devel at lists.openwrt.org (Eneas U de Queiroz via openwrt-devel)
Date: Wed, 27 Feb 2019 21:39:18 +0000
Subject: [OpenWrt-Devel] [PATCH v4] openssl: backport devcrypto changes from
 master
In-Reply-To: <mailman.23692.1551117680.2376.openwrt-devel@lists.openwrt.org>
References: <mailman.23692.1551117680.2376.openwrt-devel@lists.openwrt.org>
Message-ID: <mailman.24189.1551303558.2376.openwrt-devel@lists.openwrt.org>

The sender domain has a DMARC Reject/Quarantine policy which disallows
sending mailing list messages using the original "From" header.

To mitigate this problem, the original message has been wrapped
automatically by the mailing list software.
-------------- next part --------------
An embedded message was scrubbed...
From: Eneas U de Queiroz <cote2004-github at yahoo.com>
Subject: [PATCH v4] openssl: backport devcrypto changes from master
Date: Wed, 27 Feb 2019 18:38:42 -0300
Size: 59165
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190227/b8b1db9b/attachment.eml>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From freifunk at adrianschmutzler.de  Wed Feb 27 17:18:03 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 27 Feb 2019 23:18:03 +0100
Subject: [OpenWrt-Devel] [PATCH v3 0/6] Speed up and merge caldata/eeprom
 extraction
Message-ID: <20190227221809.1697-1-freifunk@adrianschmutzler.de>

This patchset goes on with the attempt to
- speed up caldata/eeprom handling by reading blockwise,
- merge the similar functions in one library.

It depends on the patch "ath79: speed up ath9k-eeprom extraction"
by Dmitry Tunin to be applied beforehand.

It replaces my earlier patchsets
- Speed up caldata/eeprom handling for ar71xx/ath79
- Speed up caldata/eeprom handling with common file

The patches 1 to 4 have been run-tested (all at once) on the following
devices:
TP-Link WDR4300 (ar71xx and ath79)
Ubnt AC Mesh (ath79)
TP-Link CPE210 v2 (ar71xx)

The patches 5 and 6 are optional. Since a have no ipq40xx or ramips
device at hand, I cannot test them. Thus, one can apply patches 1 to 4
and then easily do patches 5 and 6 if/after they are tested. (So they
do not hold up the earlier patches.)
However, it would be nice if someone did test ramips and ipq40xx.

Adrian Schmutzler (6):
  ath79: Speed up caldata/eeprom handling
  ar71xx: Speed up caldata/eeprom handling
  ar71xx: Speed up mtd extraction in ar71xx.sh
  ar71xx/ath79: Merge eeprom/caldata extraction into eeprom.sh
  ipq40xx: Make use of common eeprom.sh library for caldata
  ramips: Merge ath9k-eeprom extraction to common eeprom.sh

 package/base-files/files/lib/functions/eeprom.sh   | 91 ++++++++++++++++++++
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 99 +++++-----------------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 80 ++++++-----------
 target/linux/ar71xx/base-files/lib/ar71xx.sh       |  4 +-
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 86 ++++++-------------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 62 ++++----------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 82 +++++-------------
 .../etc/hotplug.d/firmware/10-rt2x00-eeprom        | 32 ++-----
 8 files changed, 209 insertions(+), 327 deletions(-)
 create mode 100644 package/base-files/files/lib/functions/eeprom.sh

-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Wed Feb 27 17:18:04 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 27 Feb 2019 23:18:04 +0100
Subject: [OpenWrt-Devel] [PATCH v3 1/6] ath79: Speed up caldata/eeprom
 handling
In-Reply-To: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
References: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
Message-ID: <20190227221809.1697-2-freifunk@adrianschmutzler.de>

Reading and writing to and from flash storage is slowed down
enormously by some functions which use a block size of 1.

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

This is based on the initial commit a69e101 for ipq40xx by
Christian Lamparter <chunkeey at gmail.com>.

Speed comparison @ UBNT AC-Mesh (just manually) results
in a time reduction by three orders of magnitude (99.9 %).

> time dd if=/dev/mtd6 of=/lib/firmware/test-slow bs=1 count=4096 skip=4096
4096+0 records in
4096+0 records out
real    0m 16.84s
user    0m 0.07s
sys     0m 13.54s

> time 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
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

---

Changed in v3:
- Rebased on the patch from Dmitry Tunin
- Changed position of iflag/oflag to be consistent with Dmitry

This depends on the patch "ath79: speed up ath9k-eeprom extraction"
from Dmitry Tunin.
---
 .../linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom   | 2 +-
 .../linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata | 6 +++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 84e4d07b35..d8b292f4da 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -81,7 +81,7 @@ ath9k_patch_fw_mac() {
 			dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$chksum_offset count=2
 	}
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=$mac_offset count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc oflag=seek_bytes bs=6 seek=$mac_offset count=1
 }
 
 ath9k_patch_fw_mac_crc() {
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index f4741fa3eb..a19c0c2478 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -28,7 +28,7 @@ ath10kcal_from_file() {
 	local offset=$2
 	local count=$3
 
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$source of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $source"
 }
 
@@ -42,7 +42,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"
 }
 
@@ -51,7 +51,7 @@ ath10kcal_patch_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc oflag=seek_bytes bs=6 seek=6 count=1
 }
 
 ath10kcal_patch_mac_crc() {
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Wed Feb 27 17:18:05 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 27 Feb 2019 23:18:05 +0100
Subject: [OpenWrt-Devel] [PATCH v3 2/6] ar71xx: Speed up caldata/eeprom
 handling
In-Reply-To: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
References: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
Message-ID: <20190227221809.1697-3-freifunk@adrianschmutzler.de>

Reading and writing to and from flash storage is slowed down
enormously by some functions which use a block size of 1.

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

This is based on the initial commit a69e101 for ipq40xx by
Christian Lamparter <chunkeey at gmail.com>.

Speed comparison @ TP-Link TL-WDR4300 (just manually) results
in a time reduction by three orders of magnitude (99.9 %).

> time dd if=/dev/mtd3 of=/lib/firmware/test-slow bs=1 count=4096 skip=4096
4096+0 records in
4096+0 records out
real    0m 15.85s
user    0m 0.06s
sys     0m 13.28s

> time dd if=/dev/mtd3 of=/lib/firmware/test-fast bs=4096 count=1 skip=4096 iflag=skip_bytes
1+0 records in
1+0 records out
real    0m 0.02s
user    0m 0.00s
sys     0m 0.02s

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

---

Changed in v3:
- Changed position of iflag/oflag to be consistent with ath79
---
 .../linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom  | 6 +++---
 .../ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata      | 6 +++---
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 94bce7d335..208d5f6bff 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -20,7 +20,7 @@ ath9k_eeprom_extract() {
 	[ -n "$mtd" ] || \
 		ath9k_eeprom_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 || \
 		ath9k_eeprom_die "failed to extract from $mtd"
 }
 
@@ -35,7 +35,7 @@ ath9k_ubi_eeprom_extract() {
 	[ -n "$ubi" ] || \
 		ath9k_eeprom_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 || \
 		ath9k_eeprom_die "failed to extract from $ubi"
 }
 
@@ -62,7 +62,7 @@ ath9k_patch_firmware_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=2 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc oflag=seek_bytes bs=6 seek=2 count=1
 }
 
 board=$(board_name)
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 3450819630..cd5c1c2bcb 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -10,7 +10,7 @@ ath10kcal_from_file() {
 	local offset=$2
 	local count=$3
 
-	dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+	dd if=$source of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
 		ath10kcal_die "failed to extract calibration data from $source"
 }
 
@@ -30,7 +30,7 @@ ath10kcal_extract() {
 	[ "$count" = "$cal_size" ] || \
 		ath10kcal_die "no calibration data found in $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"
 }
 
@@ -39,7 +39,7 @@ ath10kcal_patch_mac() {
 
 	[ -z "$mac" ] && return
 
-	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
+	macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc oflag=seek_bytes bs=6 seek=6 count=1
 }
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Wed Feb 27 17:18:06 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 27 Feb 2019 23:18:06 +0100
Subject: [OpenWrt-Devel] [PATCH v3 3/6] ar71xx: Speed up mtd extraction in
 ar71xx.sh
In-Reply-To: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
References: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
Message-ID: <20190227221809.1697-4-freifunk@adrianschmutzler.de>

Although the amount of data read here is smaller than for the
caldata, there still might be some speed gain compared to reading
bytewise. And there is no harm...

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

---

Changed in v3:
- Changed position of iflag to be consistent
---
 target/linux/ar71xx/base-files/lib/ar71xx.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index 95fa247f4b..f0f6f0398b 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -16,7 +16,7 @@ ar71xx_get_mtd_offset_size_format() {
 	dev=$(find_mtd_part $mtd)
 	[ -z "$dev" ] && return
 
-	dd if=$dev bs=1 skip=$offset count=$size 2>/dev/null | hexdump -v -e "1/1 \"$format\""
+	dd if=$dev iflag=skip_bytes bs=$size skip=$offset count=1 2>/dev/null | hexdump -v -e "1/1 \"$format\""
 }
 
 ar71xx_get_mtd_part_magic() {
@@ -390,7 +390,7 @@ tplink_pharos_v2_get_model_string() {
 	part=$(find_mtd_part 'product-info')
 	[ -z "$part" ] && return 1
 
-	dd if=$part bs=1 skip=4360 count=64 2>/dev/null | tr -d '\r\0' | head -n 1
+	dd if=$part iflag=skip_bytes bs=64 skip=4360 count=1 2>/dev/null | tr -d '\r\0' | head -n 1
 }
 
 ar71xx_board_detect() {
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Wed Feb 27 17:18:07 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 27 Feb 2019 23:18:07 +0100
Subject: [OpenWrt-Devel] [PATCH v3 4/6] ar71xx/ath79: Merge eeprom/caldata
 extraction into eeprom.sh
In-Reply-To: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
References: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
Message-ID: <20190227221809.1697-5-freifunk@adrianschmutzler.de>

eeprom/caldata extraction is the same across different targets
and also uses similar functions compared to each other.

This patch is based on the proposed unification by Petr ?tetiar.

While this only covers ath79/ar71xx, others target supposedly
will be merged easily.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

---

New in v3:
Merged from the migration patches in my alternate patchset,
which is obsoleted now.
---
 package/base-files/files/lib/functions/eeprom.sh   | 88 ++++++++++++++++++++
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 97 +++++-----------------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 78 +++++------------
 .../etc/hotplug.d/firmware/10-ath9k-eeprom         | 84 +++++--------------
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 60 ++++---------
 5 files changed, 171 insertions(+), 236 deletions(-)
 create mode 100644 package/base-files/files/lib/functions/eeprom.sh

diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh
new file mode 100644
index 0000000000..80df3bb359
--- /dev/null
+++ b/package/base-files/files/lib/functions/eeprom.sh
@@ -0,0 +1,88 @@
+. /lib/functions.sh
+. /lib/functions/system.sh
+
+eeprom_die() {
+	echo "eeprom: " "$*"
+	exit 1
+}
+
+ath10kcal_die() {
+	echo "ath10cal: " "$*"
+	exit 1
+}
+
+mtd_eeprom_extract() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local mtd
+
+	mtd=$(find_mtd_chardev $part)
+	[ -n "$mtd" ] || \
+		eeprom_die "no mtd device found for partition $part"
+
+	dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
+		eeprom_die "failed to extract from $mtd"
+}
+
+mtd_eeprom_extract_check() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local mtd cal_size
+
+	mtd=$(find_mtd_chardev $part)
+	[ -n "$mtd" ] || \
+		eeprom_die "no mtd device found for partition $part"
+
+	# Check that the calibration data size in header equals the desired size
+	cal_size=$(dd if=$mtd bs=2 count=1 skip=$(( $offset / 2 )) conv=swab 2>/dev/null | hexdump -ve '1/2 "%d"')
+
+	[ "$count" = "$cal_size" ] || \
+		eeprom_die "no calibration data found in $part"
+
+	dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
+		eeprom_die "failed to extract from $mtd"
+}
+
+mtd_eeprom_extract_reverse() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local mtd
+	local reversed
+	local caldata
+
+	mtd=$(find_mtd_chardev "$part")
+	reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
+
+	for byte in $reversed; do
+		caldata="\x${byte}${caldata}"
+	done
+
+	printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
+}
+
+ubi_eeprom_extract() {
+	local part=$1
+	local offset=$2
+	local count=$3
+	local ubidev=$(nand_find_ubi $CI_UBIPART)
+	local ubi
+
+	ubi=$(nand_find_volume $ubidev $part)
+	[ -n "$ubi" ] || \
+		eeprom_die "no UBI volume found for $part"
+
+	dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
+		eeprom_die "failed to extract from $ubi"
+}
+
+ath10kcal_from_file() {
+	local source=$1
+	local offset=$2
+	local count=$3
+
+	dd if=$source of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
+		ath10kcal_die "failed to extract calibration data from $source"
+}
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 208d5f6bff..6b94b19ee7 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -2,60 +2,7 @@
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-ath9k_eeprom_die() {
-	echo "ath9k eeprom: " "$*"
-	exit 1
-}
-
-ath9k_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath9k_eeprom_die "no mtd device found for partition $part"
-
-	dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
-		ath9k_eeprom_die "failed to extract from $mtd"
-}
-
-ath9k_ubi_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local ubidev=$(nand_find_ubi $CI_UBIPART)
-	local ubi
-
-	ubi=$(nand_find_volume $ubidev $part)
-	[ -n "$ubi" ] || \
-		ath9k_eeprom_die "no UBI volume found for $part"
-
-	dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
-		ath9k_eeprom_die "failed to extract from $ubi"
-}
-
-ath9k_eeprom_extract_reverse() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-	local reversed
-	local caldata
-
-	mtd=$(find_mtd_chardev "$part")
-	reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
-
-	for byte in $reversed; do
-		caldata="\x${byte}${caldata}"
-	done
-
-	printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
-}
+. /lib/functions/eeprom.sh
 
 ath9k_patch_firmware_mac() {
 	local mac=$1
@@ -72,48 +19,48 @@ case "$FIRMWARE" in
 	case $board in
 	c-55|\
 	c-60)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +1)
 		;;
 	fritz4020|\
 	fritz450e)
-		ath9k_eeprom_extract_reverse "urlader" 5441 1088
+		mtd_eeprom_extract_reverse "urlader" 5441 1088
 		;;
 	mr18)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 4096 2048
+			ubi_eeprom_extract "caldata" 4096 2048
 		else
-			ath9k_eeprom_extract "odm-caldata" 4096 2048
+			mtd_eeprom_extract "odm-caldata" 4096 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +1)
 		;;
 	r6100 | \
 	wndr3700v4 | \
 	wndr4300)
-		ath9k_eeprom_extract "caldata" 4096 2048
+		mtd_eeprom_extract "caldata" 4096 2048
 		ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 0)
 		;;
 	rambutan)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		;;
 	wlr8100)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		ath9k_patch_firmware_mac $(mtd_get_mac_ascii u-boot-env "ethaddr")
 		;;
 	z1)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 4096 2048
+			ubi_eeprom_extract "caldata" 4096 2048
 		else
-			ath9k_eeprom_extract "origcaldata" 4096 2048
+			mtd_eeprom_extract "origcaldata" 4096 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -121,39 +68,39 @@ case "$FIRMWARE" in
 "pci_wmac0.eeprom")
 	case $board in
 	c-55)
-		ath9k_eeprom_extract "art" 20480 2048
+		mtd_eeprom_extract "art" 20480 2048
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary art 0) +2)
 		;;
 	fritz300e)
-		ath9k_eeprom_extract_reverse "urloader" 5441 1088
+		mtd_eeprom_extract_reverse "urloader" 5441 1088
 		;;
 	mr18)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 20480 2048
+			ubi_eeprom_extract "caldata" 20480 2048
 		else
-			ath9k_eeprom_extract "odm-caldata" 20480 2048
+			mtd_eeprom_extract "odm-caldata" 20480 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +2)
 		;;
 	wndr3700v4 | \
 	wndr4300)
-		ath9k_eeprom_extract "caldata" 20480 2048
+		mtd_eeprom_extract "caldata" 20480 2048
 		ath9k_patch_firmware_mac $(mtd_get_mac_binary caldata 12)
 		;;
 	z1)
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 86016 4096
+			ubi_eeprom_extract "caldata" 86016 4096
 		else
-			ath9k_eeprom_extract "origcaldata" 86016 4096
+			mtd_eeprom_extract "origcaldata" 86016 4096
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -164,14 +111,14 @@ case "$FIRMWARE" in
 		. /lib/upgrade/nand.sh
 
 		if [ -n "$(nand_find_volume ubi0 caldata)" ]; then
-			ath9k_ubi_eeprom_extract "caldata" 36864 2048
+			ubi_eeprom_extract "caldata" 36864 2048
 		else
-			ath9k_eeprom_extract "odm-caldata" 36864 2048
+			mtd_eeprom_extract "odm-caldata" 36864 2048
 		fi
 		ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi board-config 102) +3)
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index cd5c1c2bcb..37223686fb 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -1,38 +1,6 @@
 #!/bin/sh
 
-ath10kcal_die() {
-	echo "ath10cal: " "$*"
-	exit 1
-}
-
-ath10kcal_from_file() {
-	local source=$1
-	local offset=$2
-	local count=$3
-
-	dd if=$source of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
-		ath10kcal_die "failed to extract calibration data from $source"
-}
-
-ath10kcal_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd cal_size
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath10kcal_die "no mtd device found for partition $part"
-
-	# Check that the calibration data size in header equals the desired size
-	cal_size=$(dd if=$mtd bs=2 count=1 skip=$(( $offset / 2 )) conv=swab 2>/dev/null | hexdump -ve '1/2 "%d"')
-
-	[ "$count" = "$cal_size" ] || \
-		ath10kcal_die "no calibration data found in $part"
-
-	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"
-}
+. /lib/functions/eeprom.sh
 
 ath10kcal_patch_mac() {
 	local mac=$1
@@ -57,17 +25,17 @@ case "$FIRMWARE" in
 	mr1750|\
 	mr1750v2|\
 	om5p-acv2)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract_check "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
 		;;
 	archer-c25-v1|\
 	tl-wdr6500-v2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
 		;;
 	archer-c7-v4|\
 	archer-c7-v5)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	cf-e355ac-v1|\
@@ -81,42 +49,42 @@ case "$FIRMWARE" in
 	oolite-v5.2-dev|\
 	sr3200|\
 	xd3200)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		;;
 	dap-2695-a1)
-		ath10kcal_extract "radiocfg" 20480 2116
+		mtd_eeprom_extract_check "radiocfg" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
 		;;
 	dir-869-a1|\
 	qihoo-c301)
-		ath10kcal_extract "radiocfg" 20480 2116
+		mtd_eeprom_extract_check "radiocfg" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac)
 		;;
 	dw33d)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_binary art 18)
 		;;
 	epg5000|\
 	esr1750)
-		ath10kcal_extract "caldata" 20480 2116
+		mtd_eeprom_extract_check "caldata" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
 		;;
 	gl-ar750s|\
 	gl-ar750|\
 	tl-wpa8630)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
 		;;
 	koala)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary art 12) +0)
 		;;
 	mc-mac1200r)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
 		;;
 	r6100)
-		ath10kcal_extract "caldata" 20480 2116
+		mtd_eeprom_extract_check "caldata" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2)
 		;;
 	rb-952ui-5ac2nd|\
@@ -126,15 +94,15 @@ case "$FIRMWARE" in
 	re355|\
 	re450|\
 	tl-wr902ac-v1)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
 		;;
 	unifiac-lite|\
 	unifiac-pro)
-		ath10kcal_extract "EEPROM" 20480 2116
+		mtd_eeprom_extract_check "EEPROM" 20480 2116
 		;;
 	wi2a-ac200i)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract_check "ART" 20480 2116
 		;;
 	esac
 	;;
@@ -142,16 +110,16 @@ case "$FIRMWARE" in
 	case $board in
 	archer-c5|\
 	archer-c7)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
 		;;
 	nbg6616|\
 	nbg6716)
-		ath10kcal_extract "RFdata" 20480 2116
+		mtd_eeprom_extract_check "RFdata" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
 		;;
 	om5p-ac)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract_check "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
 		;;
 	rb-911g-5hpacd|\
@@ -160,7 +128,7 @@ case "$FIRMWARE" in
 		ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
 		;;
 	wlr8100)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract_check "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1)
 		;;
 	esac
@@ -173,18 +141,18 @@ case "$FIRMWARE" in
 	archer-c60-v1|\
 	cf-e355ac-v2|\
 	cf-e375ac)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract_check "art" 20480 12064
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
 		;;
 	archer-c60-v2)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract_check "art" 20480 12064
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	cf-e385ac)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract_check "art" 20480 12064
 		;;
 	esac
 	;;
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index d8b292f4da..685bab4b05 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -2,45 +2,7 @@
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
-. /lib/functions.sh
-. /lib/functions/system.sh
-
-ath9k_eeprom_die() {
-	echo "ath9k eeprom: " "$*"
-	exit 1
-}
-
-ath9k_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath9k_eeprom_die "no mtd device found for partition $part"
-
-	dd if=$mtd of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
-		ath9k_eeprom_die "failed to extract from $mtd"
-}
-
-ath9k_eeprom_extract_reverse() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-	local reversed
-	local caldata
-
-	mtd=$(find_mtd_chardev "$part")
-	reversed=$(hexdump -v -s $offset -n $count -e '/1 "%02x "' $mtd)
-
-	for byte in $reversed; do
-		caldata="\x${byte}${caldata}"
-	done
-
-	printf "%b" "$caldata" > /lib/firmware/$FIRMWARE
-}
+. /lib/functions/eeprom.sh
 
 xor() {
 	local val
@@ -98,50 +60,50 @@ case "$FIRMWARE" in
 "ath9k-eeprom-ahb-18100000.wmac.bin")
 	case $board in
 	avm,fritz4020)
-		ath9k_eeprom_extract_reverse "urlader" 5441 1088
+		mtd_eeprom_extract_reverse "urlader" 5441 1088
 		;;
 	dlink,dir-825-c1|\
 	dlink,dir-835-a1)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac_crc $(mtd_get_mac_text "mac" 4) 2
 		;;
 	dlink,dir-859-a1)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac $(mtd_get_mac_ascii devdata "wlan24mac") 2
 		;;
 	iodata,wn-ac1167dgr|\
 	iodata,wn-ac1600dgr|\
 	iodata,wn-ac1600dgr2|\
 	iodata,wn-ag300dgr)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac $(mtd_get_mac_ascii u-boot-env ethaddr) 2
 		;;
 	nec,wg800hp)
-		ath9k_eeprom_extract "art" 4096 1088
+		mtd_eeprom_extract "art" 4096 1088
 		ath9k_patch_fw_mac $(mtd_get_mac_text board_data 1664) 2
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
 "ath9k-eeprom-pci-0000:00:00.0.bin")
 	case $board in
 	avm,fritz300e)
-		ath9k_eeprom_extract_reverse "urloader" 5441 1088
+		mtd_eeprom_extract_reverse "urloader" 5441 1088
 		;;
 	buffalo,whr-g301n|\
 	buffalo,wzr-hp-g302h-a1a0|\
 	tplink,tl-wr841-v5|\
 	tplink,tl-wr941-v4)
-		ath9k_eeprom_extract "art" 4096 3768
+		mtd_eeprom_extract "art" 4096 3768
 		;;
 	buffalo,wzr-hp-g450h)
-		ath9k_eeprom_extract "ART" 4096 1088
+		mtd_eeprom_extract "ART" 4096 1088
 		;;
 	dlink,dir-825-c1|\
 	dlink,dir-835-a1)
-		ath9k_eeprom_extract "art" 20480 1088
+		mtd_eeprom_extract "art" 20480 1088
 		ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "mac" 24) 1) 2
 		;;
 	ocedo,raccoon|\
@@ -149,7 +111,7 @@ case "$FIRMWARE" in
 	tplink,tl-wdr4300|\
 	tplink,tl-wdr4900-v2|\
 	winchannel,wb2000)
-		ath9k_eeprom_extract "art" 20480 1088
+		mtd_eeprom_extract "art" 20480 1088
 		;;
 	netgear,wnr612-v2|\
 	on,n150r|\
@@ -167,20 +129,20 @@ case "$FIRMWARE" in
 	ubnt,bullet-m|\
 	ubnt,nano-m|\
 	ubnt,rocket-m)
-		ath9k_eeprom_extract "art" 4096 4096
+		mtd_eeprom_extract "art" 4096 4096
 		;;
 	pqi,air-pen)
-		ath9k_eeprom_extract "art" 4096 2002
+		mtd_eeprom_extract "art" 4096 2002
 		;;
 	ubnt,unifi)
-		ath9k_eeprom_extract "art" 4096 2048
+		mtd_eeprom_extract "art" 4096 2048
 		;;
 	wd,mynet-wifi-rangeextender)
-		ath9k_eeprom_extract "art" 4096 4096
+		mtd_eeprom_extract "art" 4096 4096
 		ath9k_patch_fw_mac_crc $(nvram get wl0_hwaddr) "$mac" 2
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -190,14 +152,14 @@ case "$FIRMWARE" in
 	netgear,wndr3700|\
 	netgear,wndr3700v2|\
 	netgear,wndr3800)
-		ath9k_eeprom_extract "art" 4096 3768
+		mtd_eeprom_extract "art" 4096 3768
 		;;
 	dlink,dir-825-b1)
-		ath9k_eeprom_extract "caldata" 4096 3768
+		mtd_eeprom_extract "caldata" 4096 3768
 		ath9k_patch_fw_mac_crc $(mtd_get_mac_text "caldata" 65440) 524
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
@@ -207,14 +169,14 @@ case "$FIRMWARE" in
 	netgear,wndr3700|\
 	netgear,wndr3700v2|\
 	netgear,wndr3800)
-		ath9k_eeprom_extract "art" 20480 3768
+		mtd_eeprom_extract "art" 20480 3768
 		;;
 	dlink,dir-825-b1)
-		ath9k_eeprom_extract "caldata" 20480 3768
+		mtd_eeprom_extract "caldata" 20480 3768
 		ath9k_patch_fw_mac_crc $(macaddr_add $(mtd_get_mac_text "caldata" 65460) 1) 524
 		;;
 	*)
-		ath9k_eeprom_die "board $board is not supported yet"
+		eeprom_die "board $board is not supported yet"
 		;;
 	esac
 	;;
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index a19c0c2478..76a6f2ced6 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -1,6 +1,7 @@
 #!/bin/sh
 
 . /lib/functions/k2t.sh
+. /lib/functions/eeprom.sh
 
 # xor multiple hex values of the same length
 xor() {
@@ -18,34 +19,6 @@ xor() {
 	printf "%0${retlen}x" "$ret"
 }
 
-ath10kcal_die() {
-	echo "ath10cal: " "$*"
-	exit 1
-}
-
-ath10kcal_from_file() {
-	local source=$1
-	local offset=$2
-	local count=$3
-
-	dd if=$source of=/lib/firmware/$FIRMWARE iflag=skip_bytes bs=$count skip=$offset count=1 2>/dev/null || \
-		ath10kcal_die "failed to extract calibration data from $source"
-}
-
-ath10kcal_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath10kcal_die "no mtd device found for partition $part"
-
-	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"
-}
-
 ath10kcal_patch_mac() {
 	local mac=$1
 
@@ -79,9 +52,6 @@ ath10kcal_patch_mac_crc() {
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
-. /lib/functions.sh
-. /lib/functions/system.sh
-
 board=$(board_name)
 
 case "$FIRMWARE" in
@@ -92,52 +62,52 @@ case "$FIRMWARE" in
 	devolo,dvl1750c|\
 	devolo,dvl1750e|\
 	devolo,dvl1750i)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 0) -1)
 		;;
 	dlink,dir-859-a1)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_ascii devdata "wlan5mac")
 		;;
 	elecom,wrc-1750ghbk2-i)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract "ART" 20480 2116
 		;;
 	engenius,ews511ap|\
 	glinet,gl-ar750s|\
 	glinet,gl-x750|\
 	tplink,re450-v2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
 		;;
 	iodata,wn-ac1167dgr|\
 	iodata,wn-ac1600dgr2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1)
 		;;
 	nec,wg800hp)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac_crc $(mtd_get_mac_text board_data 2176)
 		;;
 	ocedo,koala)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(mtd_get_mac_binary art 12)
 		;;
 	openmesh,om5p-ac-v2)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
 		;;
 	tplink,archer-c2-v3)
-		ath10kcal_extract "ART" 20480 2116
+		mtd_eeprom_extract "ART" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	tplink,archer-c7-v2)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
 		;;
 	tplink,archer-a7-v5|\
 	tplink,archer-c7-v4|\
 	tplink,archer-c7-v5)
-		ath10kcal_extract "art" 20480 2116
+		mtd_eeprom_extract "art" 20480 2116
 		ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	ubnt,unifiac-lite|\
@@ -147,14 +117,14 @@ case "$FIRMWARE" in
 	ubnt,nanostation-ac|\
 	ubnt,nanostation-ac-loco|\
 	ubnt,unifiac-pro)
-		ath10kcal_extract "EEPROM" 20480 2116
+		mtd_eeprom_extract "EEPROM" 20480 2116
 		;;
 	esac
 	;;
 "ath10k/pre-cal-pci-0000:00:00.0.bin")
 	case $board in
 	phicomm,k2t)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract "art" 20480 12064
 		ath10kcal_patch_mac_crc $(k2t_get_mac "5g_mac")
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
@@ -162,7 +132,7 @@ case "$FIRMWARE" in
 	tplink,archer-c58-v1|\
 	tplink,archer-c59-v1|\
 	tplink,archer-c6-v2)
-		ath10kcal_extract "art" 20480 12064
+		mtd_eeprom_extract "art" 20480 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary mac 8) -1)
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From freifunk at adrianschmutzler.de  Wed Feb 27 17:18:08 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 27 Feb 2019 23:18:08 +0100
Subject: [OpenWrt-Devel] [PATCH v3 5/6] ipq40xx: Make use of common
 eeprom.sh library for caldata
In-Reply-To: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
References: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
Message-ID: <20190227221809.1697-6-freifunk@adrianschmutzler.de>

This merges the ath10k-caldata extraction into the common
eeprom.sh.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

---

New in v3:
Moved over from alternate patchset
---
 package/base-files/files/lib/functions/eeprom.sh   |  5 +-
 .../etc/hotplug.d/firmware/11-ath10k-caldata       | 82 ++++++----------------
 2 files changed, 26 insertions(+), 61 deletions(-)

diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh
index 80df3bb359..48c7fd362d 100644
--- a/package/base-files/files/lib/functions/eeprom.sh
+++ b/package/base-files/files/lib/functions/eeprom.sh
@@ -67,9 +67,12 @@ ubi_eeprom_extract() {
 	local part=$1
 	local offset=$2
 	local count=$3
-	local ubidev=$(nand_find_ubi $CI_UBIPART)
+	local ubidev
 	local ubi
 
+	. /lib/upgrade/nand.sh
+
+	ubidev=$(nand_find_ubi $CI_UBIPART)
 	ubi=$(nand_find_volume $ubidev $part)
 	[ -n "$ubi" ] || \
 		eeprom_die "no UBI volume found for $part"
diff --git a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index 718224f1e0..c13b3e9ecd 100644
--- a/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ipq40xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+. /lib/functions/eeprom.sh
+
 # xor multiple hex values of the same length
 xor() {
 	local val
@@ -16,43 +18,6 @@ xor() {
 	printf "%0${retlen}x" "$ret"
 }
 
-ath10kcal_die() {
-	echo "ath10cal: " "$*"
-	exit 1
-}
-
-ath10kcal_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_chardev $part)
-	[ -n "$mtd" ] || \
-		ath10kcal_die "no mtd device found for partition $part"
-
-	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"
-}
-
-ath10kcal_ubi_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local ubidev
-	local ubi
-
-	. /lib/upgrade/nand.sh
-
-	ubidev=$(nand_find_ubi $CI_UBIPART)
-	ubi=$(nand_find_volume $ubidev $part)
-	[ -n "$ubi" ] || \
-		ath10kcal_die "no UBI volume found for $part"
-
-	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"
-}
-
 ath10kcal_patch_mac_crc() {
 	local mac=$1
 	local mac_offset=6
@@ -88,9 +53,6 @@ ath10kcal_is_caldata_valid() {
 
 [ -e /lib/firmware/$FIRMWARE ] && exit 0
 
-. /lib/functions.sh
-. /lib/functions/system.sh
-
 board=$(board_name)
 
 
@@ -98,8 +60,8 @@ case "$FIRMWARE" in
 "ath10k/cal-pci-0000:01:00.0.bin")
 	case "$board" in
 	meraki,mr33)
-		ath10kcal_ubi_extract "ART" 36864 2116
-		ath10kcal_is_caldata_valid "4408" || ath10kcal_extract "ART" 36864 2116
+		ubi_eeprom_extract "ART" 36864 2116
+		ath10kcal_is_caldata_valid "4408" || mtd_eeprom_extract "ART" 36864 2116
 		ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +1)
 		;;
 	esac
@@ -107,12 +69,12 @@ case "$FIRMWARE" in
 "ath10k/pre-cal-pci-0000:01:00.0.bin")
 	case "$board" in
 	asus,map-ac2200)
-		ath10kcal_ubi_extract "Factory" 36864 12064
+		ubi_eeprom_extract "Factory" 36864 12064
 		ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \
 			/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
 		;;
 	openmesh,a62)
-		ath10kcal_extract "0:ART" 36864 12064
+		mtd_eeprom_extract "0:ART" 36864 12064
 		;;
 	esac
 	;;
@@ -123,37 +85,37 @@ case "$FIRMWARE" in
 	glinet,gl-b1300 |\
 	linksys,ea6350v3 |\
 	qcom,ap-dk01.1-c1)
-		ath10kcal_extract "ART" 4096 12064
+		mtd_eeprom_extract "ART" 4096 12064
 		;;
 	asus,map-ac2200)
-		ath10kcal_ubi_extract "Factory" 4096 12064
+		ubi_eeprom_extract "Factory" 4096 12064
 		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
-		ath10kcal_ubi_extract "Factory" 4096 12064
+		ubi_eeprom_extract "Factory" 4096 12064
 		;;
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x207 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
 	meraki,mr33)
-		ath10kcal_ubi_extract "ART" 4096 12064
-		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 4096 12064
+		ubi_eeprom_extract "ART" 4096 12064
+		ath10kcal_is_caldata_valid "202f" || mtd_eeprom_extract "ART" 4096 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +2)
 		;;
 	netgear,ex6100v2 |\
 	netgear,ex6150v2)
-		ath10kcal_extract "ART" 4096 12064
+		mtd_eeprom_extract "ART" 4096 12064
 		ath10kcal_patch_mac_crc $(mtd_get_mac_binary dnidata 0)
 		;;
 	compex,wpj428 |\
 	engenius,eap1300 |\
 	openmesh,a42 |\
 	openmesh,a62)
-		ath10kcal_extract "0:ART" 4096 12064
+		mtd_eeprom_extract "0:ART" 4096 12064
 		;;
 	zyxel,nbg6617 |\
 	zyxel,wre6606)
-		ath10kcal_extract "ART" 4096 12064
+		mtd_eeprom_extract "ART" 4096 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
 		;;
 	esac
@@ -165,37 +127,37 @@ case "$FIRMWARE" in
 	glinet,gl-b1300 |\
 	linksys,ea6350v3 |\
 	qcom,ap-dk01.1-c1)
-		ath10kcal_extract "ART" 20480 12064
+		mtd_eeprom_extract "ART" 20480 12064
 		;;
 	asus,map-ac2200)
-		ath10kcal_ubi_extract "Factory" 20480 12064
+		ubi_eeprom_extract "Factory" 20480 12064
 		;;
 	asus,rt-ac58u)
 		CI_UBIPART=UBI_DEV
-		ath10kcal_ubi_extract "Factory" 20480 12064
+		ubi_eeprom_extract "Factory" 20480 12064
 		;;
 	avm,fritzbox-4040)
 		/usr/bin/fritz_cal_extract -i 1 -s 0x400 -e 0x208 -l 12064 -o /lib/firmware/$FIRMWARE $(find_mtd_chardev "urlader_config")
 		;;
 	meraki,mr33)
-		ath10kcal_ubi_extract "ART" 20480 12064
-		ath10kcal_is_caldata_valid "202f" || ath10kcal_extract "ART" 20480 12064
+		ubi_eeprom_extract "ART" 20480 12064
+		ath10kcal_is_caldata_valid "202f" || mtd_eeprom_extract "ART" 20480 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(get_mac_binary "/sys/bus/i2c/devices/0-0050/eeprom" 102) +3)
 		;;
 	netgear,ex6100v2 |\
 	netgear,ex6150v2)
-		ath10kcal_extract "ART" 20480 12064
+		mtd_eeprom_extract "ART" 20480 12064
 		ath10kcal_patch_mac_crc $(mtd_get_mac_binary dnidata 12)
 		;;
 	compex,wpj428 |\
 	engenius,eap1300 |\
 	openmesh,a42 |\
 	openmesh,a62)
-		ath10kcal_extract "0:ART" 20480 12064
+		mtd_eeprom_extract "0:ART" 20480 12064
 		;;
 	zyxel,nbg6617 |\
 	zyxel,wre6606)
-		ath10kcal_extract "ART" 20480 12064
+		mtd_eeprom_extract "ART" 20480 12064
 		ath10kcal_patch_mac_crc $(macaddr_add $(cat /sys/class/net/eth0/address) -1)
 		;;
 	esac
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From freifunk at adrianschmutzler.de  Wed Feb 27 17:18:09 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Wed, 27 Feb 2019 23:18:09 +0100
Subject: [OpenWrt-Devel] [PATCH v3 6/6] ramips: Merge ath9k-eeprom
 extraction to common eeprom.sh
In-Reply-To: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
References: <20190227221809.1697-1-freifunk@adrianschmutzler.de>
Message-ID: <20190227221809.1697-7-freifunk@adrianschmutzler.de>

This uses the common eeprom extraction functions in eeprom.sh.
As a by-product, this will bring the speed enhancement through
blockwise reading to the ramips target.

This patch is based on the proposed unification by Petr ?tetiar.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>

---

New in v3:
This is cut out from Petr's initial unification proposal, as I
do not own a ramips device to test.
---
 .../etc/hotplug.d/firmware/10-rt2x00-eeprom        | 32 +++++-----------------
 1 file changed, 7 insertions(+), 25 deletions(-)

diff --git a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
index 13a4687251..60b0e68bff 100644
--- a/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
+++ b/target/linux/ramips/base-files/etc/hotplug.d/firmware/10-rt2x00-eeprom
@@ -1,24 +1,5 @@
 #!/bin/sh
 
-rt2x00_eeprom_die() {
-	echo "rt2x00 eeprom: " "$*"
-	exit 1
-}
-
-rt2x00_eeprom_extract() {
-	local part=$1
-	local offset=$2
-	local count=$3
-	local mtd
-
-	mtd=$(find_mtd_part $part)
-	[ -n "$mtd" ] || \
-		rt2x00_eeprom_die "no mtd device found for partition $part"
-
-	dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
-		rt2x00_eeprom_die "failed to extract from $mtd"
-}
-
 jboot_eeprom_extract() {
 	local part=$1
 	local offset=$2
@@ -26,21 +7,21 @@ jboot_eeprom_extract() {
 
 	mtd=$(find_mtd_part $part)
 	[ -n "$mtd" ] || \
-		rt2x00_eeprom_die "no mtd device found for partition $part"
+		eeprom_die "no mtd device found for partition $part"
 
 	jboot_config_read -i $mtd -o $offset -e /lib/firmware/$FIRMWARE  2>/dev/null || \
-		rt2x00_eeprom_die "failed to extract from $mtd"
+		eeprom_die "failed to extract from $mtd"
 }
 
 rt2x00_eeprom_set_macaddr() {
 	local macaddr=$1
 
 	[ -n "$macaddr" ] || \
-		rt2x00_eeprom_die "invalid wlan mac address"
+		eeprom_die "invalid wlan mac address"
 
 	macaddr_2bin $macaddr | dd of=/lib/firmware/$FIRMWARE \
 				conv=notrunc bs=1 seek=4 count=6 2>/dev/null || \
-		rt2x00_eeprom_die "failed to write mac address to eeprom file"
+		eeprom_die "failed to write mac address to eeprom file"
 }
 
 FW="/lib/firmware/$FIRMWARE"
@@ -48,6 +29,7 @@ FW="/lib/firmware/$FIRMWARE"
 
 . /lib/functions.sh
 . /lib/functions/system.sh
+. /lib/functions/eeprom.sh
 
 board=$(board_name)
 
@@ -67,11 +49,11 @@ case "$FIRMWARE" in
 		;;
 	tiny-ac)
 		wifi_mac=$(mtd_get_mac_ascii u-boot-env INIC_MAC_ADDR)
-		rt2x00_eeprom_extract "factory" 0 512
+		mtd_eeprom_extract "factory" 0 512
 		rt2x00_eeprom_set_macaddr $wifi_mac
 		;;
 	*)
-		rt2x00_eeprom_die "Please define mtd-eeprom in $board DTS file!"
+		eeprom_die "Please define mtd-eeprom in $board DTS file!"
 		;;
 	esac
 	;;
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From mail at david-bauer.net  Wed Feb 27 17:29:04 2019
From: mail at david-bauer.net (David Bauer)
Date: Wed, 27 Feb 2019 23:29:04 +0100
Subject: [OpenWrt-Devel] [PATCH v2 3/3] ipq40xx: add support for
 FritzBox 7530
In-Reply-To: <0a745698-e431-9b23-400d-02c24e4bc95b@david-bauer.net>
References: <20190218225834.28100-1-mail@david-bauer.net>
 <4581107.9DOS49Ef2O@debian64>
 <1861da34-2303-2d1d-7a9c-ebbed747c927@david-bauer.net>
 <1729398.Bxvg2gU6vH@debian64>
 <0a745698-e431-9b23-400d-02c24e4bc95b@david-bauer.net>
Message-ID: <69716d17-cf5e-83f9-d555-876f351f03c5@david-bauer.net>

Hello Christian,

On 27.02.19 13:03, David Bauer wrote:
> Hello Christian,
> 
> On 26.02.19 23:17, Christian Lamparter wrote:
>> Hello David,
>>
>> On Tuesday, February 26, 2019 12:15:41 AM CET David Bauer wrote:
>>> On 25.02.19 23:10, Christian Lamparter wrote:
>>>> On Wednesday, February 20, 2019 6:02:21 PM CET Christian Lamparter wrote:
>>>>> On Monday, February 18, 2019 11:58:34 PM CET David Bauer wrote:
>>>>>> diff --git a/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>>> new file mode 100644
>>>>>> index 0000000000..b2a33468bb
>>>>>> --- /dev/null
>>>>>> +++ b/target/linux/ipq40xx/files-4.14/arch/arm/boot/dts/qcom-ipq4019-fritzbox-7530.dts
>>>>>> @@ -0,0 +1,305 @@
>>>>>> +&pcie0 {
>>>>>> +	status = "okay";
>>>>>> +
>>>>>> +	ranges = <0x81000000 0 0x40200000 0x40200000
>>>>>> +			0 0x00100000   /* downstream I/O */
>>>>>> +			0x82000000 0 0x48000000 0x48000000
>>>>>> +			0 0x10000000>; /* non-prefetchable memory */
>>>>>
>>>>> Let me dig out my MR33 (will have to wait until the Weekend) and see if this
>>>>> should be put into the qcom-ipq4019.dtsi as well.
>>>>
>>>> And it didn't work. While the pcie enumeration worked fine.
>>>> The QCA9887 was no longer attaching. As soon as the driver was
>>>> loaded it failed due to:
>>>>
>>>> [    8.888466] ath10k_pci 0000:01:00.0: enabling device (0140 -> 0142)
>>>> [    8.934145] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    8.935258] ath10k: failed to probe PCI : -110, retry-count: 0
>>>> [    8.949596] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>>> [    8.989503] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    8.989899] ath10k: failed to probe PCI : -110, retry-count: 1
>>>> [    9.005086] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>>> [    9.046821] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    9.049851] ath10k: failed to probe PCI : -110, retry-count: 2
>>>> [    9.062448] ath10k 4.19 driver, optimized for CT firmware, probing pci device: 0x50.
>>>> [    9.099055] ath10k_pci 0000:01:00.0: failed to wake up device : -110
>>>> [    9.099442] ath10k: failed to probe PCI : -110, retry-count: 3
>>>> [...]
>>>> [    9.489869] ath10k: failed to probe PCI : -110, retry-count: 10
>>>> [    9.503780] ath10k_pci: probe of 0000:01:00.0 failed with error -110
>>>> [...]
>>>>
>>>> But I think we can fix the problem. Because according to the old
>>>> qcom-ipq40xx.dtsi I dug up:
>>>>
>>>> <https://github.com/gl-inet/openwrt-imagebuilder-ipq806x/blob/master/build_dir/target-arm_cortex-a7_uClibc-1.0.14_eabi/linux-ipq806x/linux-3.14.77/arch/arm/boot/dts/qcom-ipq40xx.dtsi#L631>
>>>>
>>>> The non-prefetchable memory area window size should be 0x00d00000.
>>>>
>>>> 	ranges =	<0x81000000 0 0x40200000 0x40200000 0 0x00100000>, /* downstream I/O */
>>>> 				<0x82000000 0 0x40300000 0x40300000 0 0x00d00000>; /* non-prefetchable memory */
>>>>
>>>> (yes, I'll be preparing a patch for linux-msm-arm. Can you please let
>>>> me know if does indeed finally let you enumerate the device?)
>>>
>>> It seems to work with your proposed change:
>>>
>>> [    0.042117] OF: PCI: host bridge /soc/pci at 40000000 ranges:
>>> [    0.042152] OF: PCI:    IO 0x40200000..0x402fffff -> 0x40200000
>>> [    0.042171] OF: PCI:   MEM 0x40300000..0x40ffffff -> 0x40300000
>>> [    0.259505] qcom-pcie 40000000.pci: link up
>>> [    0.259649] qcom-pcie 40000000.pci: PCI host bridge to bus 0000:00
>>> [    0.259671] pci_bus 0000:00: root bus resource [bus 00-ff]
>>> [    0.259687] pci_bus 0000:00: root bus resource [io  0x0000-0xfffff]
>>> (bus address [0x40200000-0x402fffff])
>>> [    0.259700] pci_bus 0000:00: root bus resource [mem
>>> 0x40300000-0x40ffffff]
>>> [    0.259742] pci 0000:00:00.0: [17cb:1001] type 01 class 0x060400
>>> [    0.259776] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
>>> [    0.259829] pci 0000:00:00.0: PME# supported from D0 D3hot
>>> [    0.260015] PCI: bus0: Fast back to back transfers disabled
>>> [    0.260195] pci 0000:01:00.0: [8086:09a9] type 00 class 0x028000
>>> [    0.260312] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x007fffff]
>>> [    0.260790] pci 0000:01:00.0: supports D1 D2
>>> [    0.260797] pci 0000:01:00.0: PME# supported from D0 D1 D3hot D3cold
>>> [    0.261043] PCI: bus1: Fast back to back transfers disabled
>>> [    0.261095] pci 0000:00:00.0: BAR 8: assigned [mem 0x40800000-0x40ffffff]
>>> [    0.261112] pci 0000:00:00.0: BAR 0: assigned [mem
>>> 0x40300000-0x40300fff 64bit]
>>> [    0.261136] pci 0000:01:00.0: BAR 0: assigned [mem 0x40800000-0x40ffffff]
>>> [    0.261164] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
>>> [    0.261180] pci 0000:00:00.0:   bridge window [mem 0x40800000-0x40ffffff]
>>> [    0.261891] pcieport 0000:00:00.0: AER enabled with IRQ 93
>>>
>>> See
>>> https://github.com/blocktrron/openwrt/commit/cc1a94b2e1616d33698852df38ae23f72f193b74
>>>
>>> How should we proceed on this device? Should i resend a v3 or will you
>>> remove the ranges property and backport the patch you prepare for upstream?
>>
>> Sorry for the late reply, I added a rebased version
>> on top of the latest changes) into my staging tree:
>> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=206a40911118f24c062ccdfc24dfc3fdd653c71a
>>
>> And it turned out that there was also a pcie msi irq fix
>> https://git.openwrt.org/?p=openwrt/staging/chunkeey.git;a=commit;h=307f6a6ed6cfca4c0d3cb5dc4dc5493ec3f41e1c
>> it just goes on and on and on...
>>
> 
> Thanks! I will test an image built from your staging tree this evening
> and give feedback.

I've built on commit 206a40911118f24c062ccdfc24dfc3fdd653c71a in your 
staging tree and the resulting image works flawlessly.

Best wishes
David

> 
> Best wishes
> David
> 
>> Regards,
>> Christian
>>
>>
>>
>> _______________________________________________
>> openwrt-devel mailing list
>> openwrt-devel at lists.openwrt.org
>> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
>>
> 
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel
> 

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Wed Feb 27 17:53:39 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Wed, 27 Feb 2019 23:53:39 +0100
Subject: [OpenWrt-Devel] [LEDE-DEV][PATCH 1/1] at91: bump kernel 4.9 to
 4.14.67
In-Reply-To: <5c93b0ea1d927bc773d07729f7205d2c3e7fa060.1536248100.git.sandeepsheriker.mallikarjun@microchip.com>
References: <5c93b0ea1d927bc773d07729f7205d2c3e7fa060.1536248100.git.sandeepsheriker.mallikarjun@microchip.com>
Message-ID: <f22b23f6-b304-b318-ba32-0e6ab220e710@hauke-m.de>

On 9/6/18 5:48 PM, Sandeep Sheriker Mallikarjun wrote:
> Refreshed at91 patches and its configs files.
> 
> Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun at microchip.com>
> ---
>  target/linux/at91/Makefile                         |   5 +-
>  target/linux/at91/{config-4.9 => config-4.14}      | 284 ++++++-
>  target/linux/at91/legacy/config-default            |   1 +
>  .../100-ARM-at91-build-dtb-for-LMU5000.patch       |  12 +-
>  .../101-ARM-at91-build-dtb-for-q5xr5.patch         |  10 +
>  .../102-ARM-at91-build-dtb-for-wb45n.patch         |  10 +-
>  .../103-ARM-at91-build-dtb-for-wb50n.patch         |   8 +-
>  ...04-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch} |  13 +-
>  .../101-ARM-at91-build-dtb-for-q5xr5.patch         |  10 -
>  ...4-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch | 893 ---------------------
>  target/linux/at91/sama5d2/config-default           |  22 +-
>  target/linux/at91/sama5d3/config-default           |  29 +-
>  target/linux/at91/sama5d4/config-default           |  18 +
>  13 files changed, 355 insertions(+), 960 deletions(-)
>  rename target/linux/at91/{config-4.9 => config-4.14} (66%)
>  rename target/linux/at91/{patches-4.9 => patches-4.14}/100-ARM-at91-build-dtb-for-LMU5000.patch (51%)
>  create mode 100644 target/linux/at91/patches-4.14/101-ARM-at91-build-dtb-for-q5xr5.patch
>  rename target/linux/at91/{patches-4.9 => patches-4.14}/102-ARM-at91-build-dtb-for-wb45n.patch (63%)
>  rename target/linux/at91/{patches-4.9 => patches-4.14}/103-ARM-at91-build-dtb-for-wb50n.patch (69%)
>  rename target/linux/at91/{patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch => patches-4.14/104-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch} (97%)
>  delete mode 100644 target/linux/at91/patches-4.9/101-ARM-at91-build-dtb-for-q5xr5.patch
>  delete mode 100644 target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
> 

Hi,

Are you planning to send an updated version of this patch?

Hauke

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From Sandeep.Sheriker at microchip.com  Wed Feb 27 17:56:11 2019
From: Sandeep.Sheriker at microchip.com (Sandeep.Sheriker at microchip.com)
Date: Wed, 27 Feb 2019 22:56:11 +0000
Subject: [OpenWrt-Devel] [LEDE-DEV][PATCH 1/1] at91: bump kernel 4.9 to
 4.14.67
In-Reply-To: <f22b23f6-b304-b318-ba32-0e6ab220e710@hauke-m.de>
References: <5c93b0ea1d927bc773d07729f7205d2c3e7fa060.1536248100.git.sandeepsheriker.mallikarjun@microchip.com>,
 <f22b23f6-b304-b318-ba32-0e6ab220e710@hauke-m.de>
Message-ID: <BYAPR11MB31578D8C8F5B96A310738CB082740@BYAPR11MB3157.namprd11.prod.outlook.com>

Hi,


yes, I am working on it and I will be sending the new patch series soon.



Regards,

Sandeep Sheriker M


________________________________
From: Hauke Mehrtens <hauke at hauke-m.de>
Sent: Wednesday, February 27, 2019 3:53 PM
To: Sandeep Sheriker Mallikarjun - C17018; openwrt-devel at lists.openwrt.org
Subject: Re: [OpenWrt-Devel] [LEDE-DEV][PATCH 1/1] at91: bump kernel 4.9 to 4.14.67

On 9/6/18 5:48 PM, Sandeep Sheriker Mallikarjun wrote:
> Refreshed at91 patches and its configs files.
>
> Signed-off-by: Sandeep Sheriker Mallikarjun <sandeepsheriker.mallikarjun at microchip.com>
> ---
>  target/linux/at91/Makefile                         |   5 +-
>  target/linux/at91/{config-4.9 => config-4.14}      | 284 ++++++-
>  target/linux/at91/legacy/config-default            |   1 +
>  .../100-ARM-at91-build-dtb-for-LMU5000.patch       |  12 +-
>  .../101-ARM-at91-build-dtb-for-q5xr5.patch         |  10 +
>  .../102-ARM-at91-build-dtb-for-wb45n.patch         |  10 +-
>  .../103-ARM-at91-build-dtb-for-wb50n.patch         |   8 +-
>  ...04-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch} |  13 +-
>  .../101-ARM-at91-build-dtb-for-q5xr5.patch         |  10 -
>  ...4-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch | 893 ---------------------
>  target/linux/at91/sama5d2/config-default           |  22 +-
>  target/linux/at91/sama5d3/config-default           |  29 +-
>  target/linux/at91/sama5d4/config-default           |  18 +
>  13 files changed, 355 insertions(+), 960 deletions(-)
>  rename target/linux/at91/{config-4.9 => config-4.14} (66%)
>  rename target/linux/at91/{patches-4.9 => patches-4.14}/100-ARM-at91-build-dtb-for-LMU5000.patch (51%)
>  create mode 100644 target/linux/at91/patches-4.14/101-ARM-at91-build-dtb-for-q5xr5.patch
>  rename target/linux/at91/{patches-4.9 => patches-4.14}/102-ARM-at91-build-dtb-for-wb45n.patch (63%)
>  rename target/linux/at91/{patches-4.9 => patches-4.14}/103-ARM-at91-build-dtb-for-wb50n.patch (69%)
>  rename target/linux/at91/{patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch => patches-4.14/104-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch} (97%)
>  delete mode 100644 target/linux/at91/patches-4.9/101-ARM-at91-build-dtb-for-q5xr5.patch
>  delete mode 100644 target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
>

Hi,

Are you planning to send an updated version of this patch?

Hauke
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190227/8343213c/attachment.htm>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From Jason at zx2c4.com  Wed Feb 27 18:36:49 2019
From: Jason at zx2c4.com (Jason A. Donenfeld)
Date: Thu, 28 Feb 2019 00:36:49 +0100
Subject: [OpenWrt-Devel] [PATCH] wireguard: bump to 0.0.20190227
Message-ID: <20190227233649.7777-1-Jason@zx2c4.com>

* wg-quick: freebsd: allow loopback to work

FreeBSD adds a route for point-to-point destination addresses. We don't
really want to specify any destination address, but unfortunately we
have to. Before we tried to cheat by giving our own address as the
destination, but this had the unfortunate effect of preventing
loopback from working on our local ip address. We work around this with
yet another kludge: we set the destination address to 127.0.0.1. Since
127.0.0.1 is already assigned to an interface, this has the same effect
of not specifying a destination address, and therefore we accomplish the
intended behavior. Note that the bad behavior is still present in Darwin,
where such workaround does not exist.

* tools: remove unused check phony declaration
* highlighter: when subtracting char, cast to unsigned
* chacha20: name enums
* tools: fight compiler slightly harder
* tools: c_acc doesn't need to be initialized
* queueing: more reasonable allocator function convention

Usual nits.

* systemd: wg-quick should depend on nss-lookup.target

Since wg-quick(8) calls wg(8) which does hostname lookups, we should
probably only run this after we're allowed to look up hostnames.

* compat: backport ALIGN_DOWN
* noise: whiten the nanoseconds portion of the timestamp

This mitigates unrelated sidechannel attacks that think they can turn
WireGuard into a useful time oracle.

* hashtables: decouple hashtable allocations from the main device allocation

The hashtable allocations are quite large, and cause the device allocation in
the net framework to stall sometimes while it tries to find a contiguous
region that can fit the device struct. To fix the allocation stalls, decouple
the hashtable allocations from the device allocation and allocate the
hashtables with kvmalloc's implicit __GFP_NORETRY so that the allocations fall
back to vmalloc with little resistance.

* chacha20poly1305: permit unaligned strides on certain platforms

The map allocations required to fix this are mostly slower than unaligned
paths.

* noise: store clamped key instead of raw key

This causes `wg show` to now show the right thing. Useful for doing
comparisons.

* compat: ipv6_stub is sometimes null

On ancient kernels, ipv6_stub is sometimes null in cases where IPv6 has
been disabled with a command line flag or other failures.

* Makefile: don't duplicate code in install and modules-install
* Makefile: make the depmod path configurable

* queueing: net-next has changed signature of skb_probe_transport_header

A 5.1 change. This could change again, but for now it allows us to keep this
snapshot aligned with our upstream submissions.

* netlink: don't remove allowed ips for new peers
* peer: only synchronize_rcu_bh and traverse trie once when removing all peers
* allowedips: maintain per-peer list of allowedips

This is a rather big and important change that makes it much much faster to do
operations involving thousands of peers. Batch peer/allowedip addition and
clearing is several orders of magnitude faster now.

Signed-off-by: Jason A. Donenfeld <Jason at zx2c4.com>
---
 package/network/services/wireguard/Makefile | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/package/network/services/wireguard/Makefile b/package/network/services/wireguard/Makefile
index 2e9f17e..aab3e59 100644
--- a/package/network/services/wireguard/Makefile
+++ b/package/network/services/wireguard/Makefile
@@ -11,12 +11,12 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=wireguard
 
-PKG_VERSION:=0.0.20190123
+PKG_VERSION:=0.0.20190227
 PKG_RELEASE:=1
 
 PKG_SOURCE:=WireGuard-$(PKG_VERSION).tar.xz
 PKG_SOURCE_URL:=https://git.zx2c4.com/WireGuard/snapshot/
-PKG_HASH:=edd13c7631af169e3838621b1a1bff3ef73cf7bc778eec2bd55f7c1089ffdf9b
+PKG_HASH:=fcdb26fd2692d9e1dee54d14418603c38fbb973a06ce89d08fbe45292ff37f79
 
 PKG_LICENSE:=GPL-2.0 Apache-2.0
 PKG_LICENSE_FILES:=COPYING
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From koen.vandeputte at ncentric.com  Thu Feb 28 04:59:18 2019
From: koen.vandeputte at ncentric.com (Koen Vandeputte)
Date: Thu, 28 Feb 2019 10:59:18 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <20190227071315.GA10219@lore-desk.lan>
References: <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
 <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
 <20190226100413.GA3351@localhost.localdomain>
 <CAALvt2NGxH2NDySQszg15QzFFbFV3vwYYD=mFaVOTofJk1gusA@mail.gmail.com>
 <20190226215724.GA3344@localhost.localdomain>
 <CAALvt2N8+fVju3qy7veon1Lw1-0+Hj6G3AgUdEA6VLRysMEF-g@mail.gmail.com>
 <20190227071315.GA10219@lore-desk.lan>
Message-ID: <97139196-1071-5adb-a480-cf197f284a4c@ncentric.com>


On 27.02.19 08:13, Lorenzo Bianconi wrote:
>> <snip>
> What I mean is just a p2p link running in AP-STA mode, I guess there is no
> difference for users. Am I missing something?
>
>>   Is dynack going to receive the late acks if I manage to run
>> wpa_supplicant (wpad-mini?) in plaintext or key_mgmt=NONE mode?
> What we really needs are authentication packets to trigger 'late acks'
> in ibss mode. I think wpa_supplicant in plaintext is enough but I am not
> 100% sure.
> @Koen: could you please confirm it?

Will try to test it asap.

Regards,

Koen

> Regards,
> Lorenzo
>
>

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From dev at andreas-ziegler.de  Thu Feb 28 06:31:12 2019
From: dev at andreas-ziegler.de (Andreas Ziegler)
Date: Thu, 28 Feb 2019 12:31:12 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: GL.iNet AR300M family: correct LED
 definitions
Message-ID: <20190228113112.27735-1-dev@andreas-ziegler.de>

add definition of LAN LED to board.d/01_leds
rename WiFi LED with correct color red
rename status LED with correct color green
(like they are used in stock firmware)

Signed-off-by: Andreas Ziegler <dev at andreas-ziegler.de>
---
 target/linux/ath79/base-files/etc/board.d/01_leds    | 4 ++++
 target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi | 4 ++--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds b/target/linux/ath79/base-files/etc/board.d/01_leds
index a56fe58f76..666121e9a8 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -63,6 +63,10 @@ glinet,gl-ar150)
 	ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth0"
 	ucidef_set_led_switch "lan" "LAN" "$boardname:green:lan" "switch0" "0x02"
 	;;
+glinet,gl-ar300m-nand|\
+glinet,gl-ar300m-nor)
+	ucidef_set_led_netdev "lan" "LAN" "gl-ar300m:green:lan" "eth1"
+	;;
 glinet,gl-x750)
 	ucidef_set_led_netdev "wan" "WAN" "$boardname:green:wan" "eth0"
 	;;
diff --git a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
index 55002b44e3..0042a1cbde 100644
--- a/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
+++ b/target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
@@ -42,7 +42,7 @@
 		compatible = "gpio-leds";
 
 		wlan {
-			label = "gl-ar300m:green:wlan";
+			label = "gl-ar300m:red:wlan";
 			gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
 			linux,default-trigger = "phy0tpt";
 		};
@@ -53,7 +53,7 @@
 		};
 
 		led_status: status {
-			label = "gl-ar300m:red:status";
+			label = "gl-ar300m:green:status";
 			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
 		};
 	};
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From joe at ayerscasa.com  Thu Feb 28 10:37:56 2019
From: joe at ayerscasa.com (Joe Ayers)
Date: Thu, 28 Feb 2019 07:37:56 -0800
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <97139196-1071-5adb-a480-cf197f284a4c@ncentric.com>
References: <5c470831-c95f-6abe-a67b-bf1a24263be9@ncentric.com>
 <20190225095601.GA6186@localhost.localdomain>
 <CAALvt2PqUHtAS+dL9Z_qA_a2arSp_rAdm318b0XjO4sDnuvypA@mail.gmail.com>
 <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
 <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
 <20190226100413.GA3351@localhost.localdomain>
 <CAALvt2NGxH2NDySQszg15QzFFbFV3vwYYD=mFaVOTofJk1gusA@mail.gmail.com>
 <20190226215724.GA3344@localhost.localdomain>
 <CAALvt2N8+fVju3qy7veon1Lw1-0+Hj6G3AgUdEA6VLRysMEF-g@mail.gmail.com>
 <20190227071315.GA10219@lore-desk.lan>
 <97139196-1071-5adb-a480-cf197f284a4c@ncentric.com>
Message-ID: <CAALvt2P_cen2t5Yu+zG0tQ23oCPt5LCyyRf19t6=E-A39k4Z4Q@mail.gmail.com>

On Thu, Feb 28, 2019 at 1:59 AM Koen Vandeputte
<koen.vandeputte at ncentric.com> wrote:
>
>
> On 27.02.19 08:13, Lorenzo Bianconi wrote:
> >> <snip>
> > What I mean is just a p2p link running in AP-STA mode, I guess there is no
> > difference for users. Am I missing something?
> >

The design of the out-of-box firmware for AREDN, there are many end
users that do not have IT skill set to change these settings at
/etc/config level.  Although, we could create high level UI setting
options.   The firmware is packaged so a "node" can boot live and will
simply work extending the network with no previous coordination of
config settings -- it can be in any logical network position: P2P,
P2MP, MP2P,  MP2MP.    Adding such a setting of this network position
could be a fallback option to consider, but not desirable.

> >>   Is dynack going to receive the late acks if I manage to run
> >> wpa_supplicant (wpad-mini?) in plaintext or key_mgmt=NONE mode?
> > What we really needs are authentication packets to trigger 'late acks'
> > in ibss mode. I think wpa_supplicant in plaintext is enough but I am not
> > 100% sure.
> > @Koen: could you please confirm it?
>
> Will try to test it asap.
>
> Regards,
>
> Koen
>

I'm also working to test, but may not be for several days.
wpa_supplicant would be required on both ends?  dynack is dependent on
ack's generated by wpa_supplicant?   This is an upgrade issue of
people using old and and new versions of the firmware at the same time
across a larger network.

Joe AE6XE

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From lorenzo.bianconi at redhat.com  Thu Feb 28 11:48:13 2019
From: lorenzo.bianconi at redhat.com (Lorenzo Bianconi)
Date: Thu, 28 Feb 2019 17:48:13 +0100
Subject: [OpenWrt-Devel] ath9k: fix dynack in IBSS mode
In-Reply-To: <CAALvt2P_cen2t5Yu+zG0tQ23oCPt5LCyyRf19t6=E-A39k4Z4Q@mail.gmail.com>
References: <cf95a7b2-aef4-e21f-3364-4301afa14bc3@ncentric.com>
 <CAALvt2OdYJ+nyB8SmMGY5ZzwK_kqtYDDp=Gu2569vDW6VKRnMA@mail.gmail.com>
 <5a4cb680-9568-5e45-819e-0e97dba889e5@ncentric.com>
 <20190226100413.GA3351@localhost.localdomain>
 <CAALvt2NGxH2NDySQszg15QzFFbFV3vwYYD=mFaVOTofJk1gusA@mail.gmail.com>
 <20190226215724.GA3344@localhost.localdomain>
 <CAALvt2N8+fVju3qy7veon1Lw1-0+Hj6G3AgUdEA6VLRysMEF-g@mail.gmail.com>
 <20190227071315.GA10219@lore-desk.lan>
 <97139196-1071-5adb-a480-cf197f284a4c@ncentric.com>
 <CAALvt2P_cen2t5Yu+zG0tQ23oCPt5LCyyRf19t6=E-A39k4Z4Q@mail.gmail.com>
Message-ID: <20190228164812.GA17249@localhost.localdomain>

> On Thu, Feb 28, 2019 at 1:59 AM Koen Vandeputte
> <koen.vandeputte at ncentric.com> wrote:
> >
> >
> > On 27.02.19 08:13, Lorenzo Bianconi wrote:
> > >> <snip>
> > > What I mean is just a p2p link running in AP-STA mode, I guess there is no
> > > difference for users. Am I missing something?
> > >
> 
> The design of the out-of-box firmware for AREDN, there are many end
> users that do not have IT skill set to change these settings at
> /etc/config level.  Although, we could create high level UI setting
> options.   The firmware is packaged so a "node" can boot live and will
> simply work extending the network with no previous coordination of
> config settings -- it can be in any logical network position: P2P,
> P2MP, MP2P,  MP2MP.    Adding such a setting of this network position
> could be a fallback option to consider, but not desirable.
> 
> > >>   Is dynack going to receive the late acks if I manage to run
> > >> wpa_supplicant (wpad-mini?) in plaintext or key_mgmt=NONE mode?
> > > What we really needs are authentication packets to trigger 'late acks'
> > > in ibss mode. I think wpa_supplicant in plaintext is enough but I am not
> > > 100% sure.
> > > @Koen: could you please confirm it?
> >
> > Will try to test it asap.
> >
> > Regards,
> >
> > Koen
> >
> 
> I'm also working to test, but may not be for several days.
> wpa_supplicant would be required on both ends?  dynack is dependent on
> ack's generated by wpa_supplicant?   This is an upgrade issue of
> people using old and and new versions of the firmware at the same time
> across a larger network.

Yes, you need it on both ends since late acks are detected on authentication
messages in ibss mode and ack timeout estimation is done independently on each side.
Could you please just try it on a single 50km link in order to double check if it
works properly?

Regards,
Lorenzo

> 
> Joe AE6XE
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190228/00d5337a/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From freifunk at adrianschmutzler.de  Thu Feb 28 13:09:20 2019
From: freifunk at adrianschmutzler.de (Adrian Schmutzler)
Date: Thu, 28 Feb 2019 19:09:20 +0100
Subject: [OpenWrt-Devel] [PATCH] ath79: Fix indent
Message-ID: <20190228180920.862-1-freifunk@adrianschmutzler.de>

Fix wrong indentation introduced in 59c2f8a.

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---
 target/linux/ath79/base-files/etc/board.d/01_leds | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds b/target/linux/ath79/base-files/etc/board.d/01_leds
index a56fe58f76..705ae3d407 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -38,7 +38,7 @@ comfast,cf-e110n-v2)
 	ucidef_set_led_rssi "rssimediumhigh" "RSSIMEDIUMHIGH" "$boardname:green:rssimediumhigh" "wlan0" "51" "100"
 	ucidef_set_led_rssi "rssihigh" "RSSIHIGH" "$boardname:green:rssihigh" "wlan0" "76" "100"
 	;;
-	comfast,cf-e120a-v3)
+comfast,cf-e120a-v3)
 	ucidef_set_led_netdev "lan" "LAN" "$boardname:green:lan" "eth0"
 	ucidef_set_led_switch "wan" "WAN" "$boardname:green:wan" "switch0" "0x04"
 	ucidef_set_rssimon "wlan0" "200000" "1"
-- 
2.11.0


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From mail at adrianschmutzler.de  Thu Feb 28 13:52:06 2019
From: mail at adrianschmutzler.de (Adrian Schmutzler)
Date: Thu, 28 Feb 2019 19:52:06 +0100
Subject: [OpenWrt-Devel] Wrong patch status
Message-ID: <013801d4cf96$b3a228e0$1ae67aa0$@adrianschmutzler.de>

Hi,

 

Dmitry?s patch

 

[OpenWrt-Devel] ath79: speed up ath9k-eeprom extraction

https://patchwork.ozlabs.org/patch/1046790/

 

got marked ?Superseded? together with my old stuff.

 

However, my latest patchset is supposed to be _on top_ of this patch, not to supersede it (_my_ own old patches are correctly superseded?); so status there should be updated.

 

Cheers

 

Adrian
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190228/e40d1c52/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 834 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/openwrt-devel/attachments/20190228/e40d1c52/attachment.sig>
-------------- next part --------------
_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From greearb at candelatech.com  Thu Feb 28 13:53:23 2019
From: greearb at candelatech.com (Ben Greear)
Date: Thu, 28 Feb 2019 10:53:23 -0800
Subject: [OpenWrt-Devel] New CT wave-2 firmware available.
In-Reply-To: <f1b8a3df-55bf-d0e5-9115-7b0eb1025874@candelatech.com>
References: <d6c00be1-a984-4dad-5688-bf8d8c46e6e5@candelatech.com>
 <ca62f40a-eaf8-855c-6b9d-f2f2dac0c537@ncentric.com>
 <f1b8a3df-55bf-d0e5-9115-7b0eb1025874@candelatech.com>
Message-ID: <f10b9208-0363-162d-666e-d940a1a25e6c@candelatech.com>

Hello,

I've uploaded a new set of wave-1 and wave-2 ath10k-ct firmware.  Recent release notes
for wave-1:

   *  Feb 14, 2019:  Remove logic that causes assert when swba logic is not initialized.
      This was seen when trying to bring up 6 VAP vdevs.  A similar fix went into wave-2
      firmware some time ago.

   *  Feb 27, 2019:  Support up to 32 vAP vdevs, fix stack corruption when driver requests too many
      vAP.

   *  Feb 28, 2019:  Support beacon-tx-wmi callback message.  This lets driver properly
      clean up beacon buffers so we don't crash (somethings the entire OS/system) due to
      DMA errors.


Recent release notes for wave-2:

   *  Feb 27. 2019: Support up to 32 AP vdevs.  Previous to this, stack would be corrupted if you went past
                    16 AP vdevs.

   *  Feb 28, 2019: Support beacon-tx-wmi callback message.  This lets driver properly
                    clean up beacon buffers.  In wave-1, this could crash the entire OS, but I didn't see
                    the same crashes in wave-2, so maybe it is fixed in some other way.  Add the feature
                    regardless as it seems proper.


Could someone please update OpenWRT to include these.  The new ath10k-ct firmware is also updated
to support the beacon callback method, but I think someone is already working on adding that to
openwrt.


Firmware sha-sums are below, you just need to update the firmware makefile to use the new .005
name and new sums.

988x
8108a29440a8fe477fd0c17f600f00850d79c4abfc580cd608f57f0cae878878  firmware-2-ct-full-community-22.bin.lede.005
ecea8d39fde4b63db7d3c01e4417fe6f5aa247ab81bb2518f9179d8945c660c7  firmware-2-ct-full-htt-mgt-community-22.bin.lede.005
/home/greearb/candela_html/downloads
9887
7c3717a4393c6cf1f3872eb210eb9f680e2205b8709ffb827eacc09d4e5b9bbe  firmware-2-ct-full-community-22.bin.lede.005
2d813b2235e8e0371bf0fc85b57411b91b9abff3f690e0f564b5a41622fd4a36  firmware-2-ct-full-htt-mgt-community-22.bin.lede.005
/home/greearb/candela_html/downloads
9980
336a55af37b78c8a75c894e84e7a79cc22ad2c982fb836f5d9848a1bc936a493  firmware-5-ct-full-community-12.bin-lede.005
b15d2ad9821a78d30b55695c80f71dc4c8634069dfc2a8d6551854ad2eebed3a  firmware-5-ct-full-htt-mgt-community-12.bin-lede.005
/home/greearb/candela_html/downloads
9984
fc05751486e4f4abfa313622c1e43bdd7aabf938f38768433c649368512a7667  firmware-5-ct-full-community-12.bin-lede.005
90aa97c9aae55a878f2509905f4e7e0b1ff73840c2a7c357794b5705144a0edf  firmware-5-ct-full-htt-mgt-community-12.bin-lede.005
/home/greearb/candela_html/downloads
4019
c9e704d9ffffb8789394429abb6935e33133c839e1931eea280da03a792943de  firmware-5-ct-full-community-12.bin-lede.005
d261db4a4d96c171179a9897acf633e29f77c636a25c5dd07f43f582441e27c2  firmware-5-ct-full-htt-mgt-community-12.bin-lede.005
/home/greearb/candela_html/downloads
9888
f37c9cc959bf8fbda4e7ec648daed8ef056c17cb9d7e7c9ae00956ce9f276490  firmware-5-ct-full-community-12.bin-lede.005
a50a5da7e1bace2ace4cf0208b8666684f8f0107b68321aa238f6782acb709ae  firmware-5-ct-full-htt-mgt-community-12.bin-lede.005
/home/greearb/candela_html/downloads

Thanks,
Ben


-- 
Ben Greear <greearb at candelatech.com>
Candela Technologies Inc  http://www.candelatech.com


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From hauke at hauke-m.de  Thu Feb 28 15:57:58 2019
From: hauke at hauke-m.de (Hauke Mehrtens)
Date: Thu, 28 Feb 2019 21:57:58 +0100
Subject: [OpenWrt-Devel] [PATCH] mac80211: Activate DRIVER_11W_SUPPORT for
 more capable drivers
Message-ID: <20190228205758.28580-1-hauke@hauke-m.de>

ieee80211w support is only activated in hostapd when at least one
capable driver is build into the image. Many drivers which are capable
of ieee80211 (MFP) and have the MFP_CAPABLE set in the driver are still
missing the DRIVER_11W_SUPPORT dependency. Add this to more driver
capable of ieee80211w.

Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
---
 package/kernel/mac80211/Makefile    | 6 +++---
 package/kernel/mac80211/ath.mk      | 2 +-
 package/kernel/mac80211/broadcom.mk | 4 ++--
 package/kernel/mac80211/intel.mk    | 2 +-
 package/kernel/mac80211/ralink.mk   | 2 +-
 package/kernel/mac80211/realtek.mk  | 2 +-
 6 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index 13b5823614..eedd3f9e89 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -259,7 +259,7 @@ endef
 define KernelPackage/mt7601u
   $(call KernelPackage/mac80211/Default)
   TITLE:=MT7601U-based USB dongles Wireless Driver
-  DEPENDS+= +kmod-mac80211 + at DRIVER_11N_SUPPORT @USB_SUPPORT +kmod-usb-core +mt7601u-firmware
+  DEPENDS+= +kmod-mac80211 + at DRIVER_11N_SUPPORT + at DRIVER_11W_SUPPORT @USB_SUPPORT +kmod-usb-core +mt7601u-firmware
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko
   AUTOLOAD:=$(call AutoProbe,mt7601u)
 endef
@@ -275,7 +275,7 @@ endef
 
 define KernelPackage/p54-common
   $(call KernelPackage/p54/Default)
-  DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT||@TARGET_omap24xx +kmod-mac80211 +kmod-lib-crc-ccitt
+  DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT||@TARGET_omap24xx +kmod-mac80211 +kmod-lib-crc-ccitt + at DRIVER_11W_SUPPORT
   TITLE+= (COMMON)
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54common.ko
 endef
@@ -381,7 +381,7 @@ $(eval $(call Download,zd1211rw))
 define KernelPackage/zd1211rw
   $(call KernelPackage/mac80211/Default)
   TITLE:=Zydas ZD1211 support
-  DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211
+  DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211 + at DRIVER_11W_SUPPORT
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
   AUTOLOAD:=$(call AutoProbe,zd1211rw)
 endef
diff --git a/package/kernel/mac80211/ath.mk b/package/kernel/mac80211/ath.mk
index d670c9f89f..e4540422a4 100644
--- a/package/kernel/mac80211/ath.mk
+++ b/package/kernel/mac80211/ath.mk
@@ -270,7 +270,7 @@ endef
 define KernelPackage/carl9170
   $(call KernelPackage/mac80211/Default)
   TITLE:=Driver for Atheros AR9170 USB sticks
-  DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core +kmod-input-core + at DRIVER_11N_SUPPORT +carl9170-firmware
+  DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core +kmod-input-core + at DRIVER_11N_SUPPORT + at DRIVER_11W_SUPPORT +carl9170-firmware
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/carl9170/carl9170.ko
   AUTOLOAD:=$(call AutoProbe,carl9170)
 endef
diff --git a/package/kernel/mac80211/broadcom.mk b/package/kernel/mac80211/broadcom.mk
index ae9b5a61e1..4b05c13dba 100644
--- a/package/kernel/mac80211/broadcom.mk
+++ b/package/kernel/mac80211/broadcom.mk
@@ -433,8 +433,8 @@ define KernelPackage/brcmfmac
   $(call KernelPackage/mac80211/Default)
   TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver
   URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211
-  DEPENDS+= @USB_SUPPORT +kmod-cfg80211 + at DRIVER_11N_SUPPORT + at DRIVER_11AC_SUPPORT +kmod-brcmutil \
-	+BRCMFMAC_SDIO:kmod-mmc @!TARGET_uml \
+  DEPENDS+= @USB_SUPPORT +kmod-cfg80211 + at DRIVER_11N_SUPPORT + at DRIVER_11AC_SUPPORT + at DRIVER_11W_SUPPORT \
+  	+kmod-brcmutil +BRCMFMAC_SDIO:kmod-mmc @!TARGET_uml \
 	+BRCMFMAC_USB:kmod-usb-core +BRCMFMAC_USB:brcmfmac-firmware-usb
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
   AUTOLOAD:=$(call AutoProbe,brcmfmac)
diff --git a/package/kernel/mac80211/intel.mk b/package/kernel/mac80211/intel.mk
index fd62dcbddc..71494fe0ce 100644
--- a/package/kernel/mac80211/intel.mk
+++ b/package/kernel/mac80211/intel.mk
@@ -15,7 +15,7 @@ config-$(call config_package,ipw2200) += IPW2200
 
 define KernelPackage/iwlwifi
   $(call KernelPackage/mac80211/Default)
-  DEPENDS:= +kmod-mac80211 @PCI_SUPPORT + at DRIVER_11N_SUPPORT + at DRIVER_11AC_SUPPORT @!LINUX_3_18
+  DEPENDS:= +kmod-mac80211 @PCI_SUPPORT + at DRIVER_11N_SUPPORT + at DRIVER_11AC_SUPPORT + at DRIVER_11W_SUPPORT @!LINUX_3_18
   TITLE:=Intel AGN Wireless support
   FILES:= \
 	$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko \
diff --git a/package/kernel/mac80211/ralink.mk b/package/kernel/mac80211/ralink.mk
index e4eca6e9b3..3b173692f4 100644
--- a/package/kernel/mac80211/ralink.mk
+++ b/package/kernel/mac80211/ralink.mk
@@ -90,7 +90,7 @@ endef
 
 define KernelPackage/rt2800-lib
 $(call KernelPackage/rt2x00/Default)
-  DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-lib-crc-ccitt + at DRIVER_11N_SUPPORT
+  DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-lib-crc-ccitt + at DRIVER_11N_SUPPORT + at DRIVER_11W_SUPPORT
   HIDDEN:=1
   TITLE+= (rt2800 LIB)
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
diff --git a/package/kernel/mac80211/realtek.mk b/package/kernel/mac80211/realtek.mk
index b9a01e563f..e7eb9e3117 100644
--- a/package/kernel/mac80211/realtek.mk
+++ b/package/kernel/mac80211/realtek.mk
@@ -57,7 +57,7 @@ endef
 define KernelPackage/rtlwifi
   $(call KernelPackage/mac80211/Default)
   TITLE:=Realtek common driver part
-  DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT) +kmod-mac80211 + at DRIVER_11N_SUPPORT
+  DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT) +kmod-mac80211 + at DRIVER_11N_SUPPORT + at DRIVER_11W_SUPPORT
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko
   HIDDEN:=1
 endef
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From lede at allycomm.com  Thu Feb 28 16:12:55 2019
From: lede at allycomm.com (Jeff Kletsky)
Date: Thu, 28 Feb 2019 13:12:55 -0800
Subject: [OpenWrt-Devel] [PATCH 2/2] ath79: GL.iNet AR300M family:
 Correct DTS LED definitions
In-Reply-To: <0155d148-9f13-10a8-10da-7eea225d4c98@andreas-ziegler.de>
References: <d1b1acea-7608-2f82-7ff3-d33e71b03057@wagsky.com>
 <f727c600-a701-7615-ee28-6ff475b49af5@andreas-ziegler.de>
 <45e051dc-e6df-b4ab-2f20-b8de3e883ef8@wagsky.com>
 <0155d148-9f13-10a8-10da-7eea225d4c98@andreas-ziegler.de>
Message-ID: <d28274e0-b6fa-033d-1403-da564ac643b9@wagsky.com>


On 2/28/19 3:39 AM, Andreas Ziegler wrote:
> Jeff Kletsky schrieb am 25.02.19 um 02:22:
>> On 2/24/19 4:21 PM, Andreas Ziegler wrote:
>>> Hi Jeff,
>>>
>>> thanks for your suggested change!
>>> Although i agree with your change regarding USB GPIO, i don't with the
>>> other part.
>>>
>>> Using stock/vendor firmware, GPIO 12 is a green system/status LED and
>>> GPIO 14 is a red wifi LED.
>>>
>>> I just sent a patch to the list which fixes this in ar71xx target, maybe
>>> you can update your patch for ath79, too.
>>> see "[PATCH] ar71xx: GL.iNet AR300M family: correct LED definitions"
>>>
>>> Regards
>>>
>>> Andreas
>>
>> Thank you for taking care of the ar71xx target.
>>
>>
>> I agree that the device has a red LED and have confirmed
>> with the manufacturer on this.? Alas, I'm behind in
>> updating the patch.
>>
>>
>> Jeff
> I took the liberty to send a Patch fixing this to the list.
> After it is merged, i'll also try to rebase your patch for the
> Lite-Version of the device if you don't mind.
>
> Regards
>
> Andreas

With three devices in pieces on my desk, that would be greatly appreciated.

No need for dueling patches!

The AR300M-Lite _does_ have different LED colors. Here's what I put
together this morning, built, and booted on my AR300M-Lite

target/linux/ath79/dts/qca9531_glinet_gl-ar300m-lite.dts
========================================================

/dts-v1/;

#include "qca9531_glinet_gl-ar300m-nor.dts"

/ {
 ?? ?compatible = "glinet,gl-ar300m-lite", "qca,qca9531";
 ?? ?model = "GL.iNet GL-AR300M-Lite";
};

// GL-AR300M-Lite has different LED colors than the non-Lite version

&led_status {
 ?? ?label = "gl-ar300m-lite:red:status";
};

&led_lan {
 ?? ?label = "gl-ar300m-lite:green:lan";
};

&led_wlan {
 ?? ?label = "gl-ar300m-lite:green:wlan";
};



and the corresponding, referenced segment from
target/linux/ath79/dts/qca9531_glinet_gl-ar300m.dtsi
====================================================

 ?? ?leds {
 ?? ??? ?compatible = "gpio-leds";

 ?? ??? ?// Colors from non-Lite versions

 ?? ??? ?led_status: status {
 ?? ??? ??? ?label = "gl-ar300m:green:status";
 ?? ??? ??? ?gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
 ?? ??? ?};

 ?? ??? ?led_lan: lan {
 ?? ??? ??? ?label = "gl-ar300m:green:lan";
 ?? ??? ??? ?gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
 ?? ??? ?};

 ?? ??? ?led_wlan: wlan {
 ?? ??? ??? ?label = "gl-ar300m:red:wlan";
 ?? ??? ??? ?gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
 ?? ??? ??? ?linux,default-trigger = "phy0tpt";
 ?? ??? ?};
 ?? ?};



Jeff




_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From chunkeey at gmail.com  Thu Feb 28 18:31:29 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Fri, 01 Mar 2019 00:31:29 +0100
Subject: [OpenWrt-Devel] Wrong patch status
In-Reply-To: <013801d4cf96$b3a228e0$1ae67aa0$@adrianschmutzler.de>
References: <013801d4cf96$b3a228e0$1ae67aa0$@adrianschmutzler.de>
Message-ID: <55412485.3JdRf96NPy@debian64>

On Thursday, February 28, 2019 7:52:06 PM CET Adrian Schmutzler wrote:
> Hi,
> 
>  
> 
> Dmitry?s patch
> 
>  
> 
> [OpenWrt-Devel] ath79: speed up ath9k-eeprom extraction
> 
> https://patchwork.ozlabs.org/patch/1046790/
> 
>  
> 
> got marked ?Superseded? together with my old stuff.
> 
>  
> 
> However, my latest patchset is supposed to be _on top_ of this patch, 
> not to supersede it (_my_ own old patches are correctly superseded?);
> so status there should be updated.

K, I re"newd" Dimitry's patch, but I think you hit the problem right on
the head whit went down: "my latest patchset is supposed to be _on
top_ of this patch [...]". Because I saw that your earlier patches series
v1 and (then later v2) conflicted with Dmitry's patch and archieved them
all back then. (In fact, now I'm not sure if I set the patch to 
superseeded when you sent v1, v2 or v3. If it's important to know the exact
time, I think Dmitry could tell when he got the notification from patchwork.)

Regards,
Christian

PS: Please check your mailbox, I think Rosen Penev gave you a
Tested-by: tag that got seemingly lost. Having this feedback from
others is a valuable commodity.



_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From rosenp at gmail.com  Thu Feb 28 21:16:59 2019
From: rosenp at gmail.com (Rosen Penev)
Date: Thu, 28 Feb 2019 18:16:59 -0800
Subject: [OpenWrt-Devel] Wrong patch status
In-Reply-To: <55412485.3JdRf96NPy@debian64>
References: <013801d4cf96$b3a228e0$1ae67aa0$@adrianschmutzler.de>
 <55412485.3JdRf96NPy@debian64>
Message-ID: <CAKxU2N-jYzf0a69TjbRux2z2qKio63Y-CjmM8+FkQoO41HrnPw@mail.gmail.com>

On Thu, Feb 28, 2019 at 3:31 PM Christian Lamparter <chunkeey at gmail.com> wrote:
>
> On Thursday, February 28, 2019 7:52:06 PM CET Adrian Schmutzler wrote:
> > Hi,
> >
> >
> >
> > Dmitry?s patch
> >
> >
> >
> > [OpenWrt-Devel] ath79: speed up ath9k-eeprom extraction
> >
> > https://patchwork.ozlabs.org/patch/1046790/
> >
> >
> >
> > got marked ?Superseded? together with my old stuff.
> >
> >
> >
> > However, my latest patchset is supposed to be _on top_ of this patch,
> > not to supersede it (_my_ own old patches are correctly superseded?);
> > so status there should be updated.
>
> K, I re"newd" Dimitry's patch, but I think you hit the problem right on
> the head whit went down: "my latest patchset is supposed to be _on
> top_ of this patch [...]". Because I saw that your earlier patches series
> v1 and (then later v2) conflicted with Dmitry's patch and archieved them
> all back then. (In fact, now I'm not sure if I set the patch to
> superseeded when you sent v1, v2 or v3. If it's important to know the exact
> time, I think Dmitry could tell when he got the notification from patchwork.)
>
> Regards,
> Christian
>
> PS: Please check your mailbox, I think Rosen Penev gave you a
> Tested-by: tag that got seemingly lost. Having this feedback from
> others is a valuable commodity.
This is true. I've also tested this patchset on an Archer C7v2. Works fine.

Does patchwork add the tag automatically?
>
>
>
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/mailman/listinfo/openwrt-devel

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

From ericluehrsen at gmail.com  Thu Feb 28 21:27:15 2019
From: ericluehrsen at gmail.com (Eric Luehrsen)
Date: Thu, 28 Feb 2019 21:27:15 -0500
Subject: [OpenWrt-Devel] [PATCH] odhcpd: add network dependent start
 trigger
In-Reply-To: <CAJLcKsGAHVmP4WwhU8L+akstPLk2h_NQJtmyP162ePm-mxjF4A@mail.gmail.com>
References: <893bbd8f-683a-0382-feff-ce0f7b38019f@gmail.com>
 <CAJLcKsFQcJ1YH8bCxPkNUcRPNdQ_5DOBzLDuUE3nuUXJujAnGQ@mail.gmail.com>
 <CAJLcKsGAHVmP4WwhU8L+akstPLk2h_NQJtmyP162ePm-mxjF4A@mail.gmail.com>
Message-ID: <3e1a9bc0-c399-1fe4-6170-993419854c6d@gmail.com>

On 2/27/19 7:38 AM, Hans Dedecker wrote:
> Hi,
> On Mon, Feb 25, 2019 at 8:46 AM Hans Dedecker <dedeckeh at gmail.com> wrote:
>>
>> Hi,
>> On Sun, Feb 24, 2019 at 7:06 AM Eric Luehrsen <ericluehrsen at gmail.com> wrote:
>>>
>>> Recent (20190207) changes to odhcpd makee it dependent on OpenWrt
>>> logical interfaces. Boot time race conditions may make odhcpd binding
>>
>> Even before the most recent changes odhcpd was dependent on OpenWRT logical
>> interfaces nothing has changed in that sense
>>> a challenge. Intermittent or inconsistent problems can occur with DHCP
>>> requests until odhcpd is restarted. Change start up scripts to use
>>
>> Can you elaborate a bit more on what issues you're observing and provide odhcpd
>> tracing  (loglevel 7) when you observe issues ?
> The issue you probably have observed is fixed in
> https://git.openwrt.org/?p=project/odhcpd.git;a=commit;h=16c5b6c9bcb71bb67a6ab15bb458bf9ab5a8fe7e
> 
> Hans
>>> procd interface triggers such as dnsmasq and others have already.
>>
>> This does not really make sense to me as odhcpd is subscribed to ubus
>> network event
>> messages triggering config reload logic in case the network state of
>> an interface changes
>>
>> Hans

Sorry I haven't much time this week to look at it more, but yes, that 
looks to be directly related with the symptoms.

Thanks
Eric

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Mon Feb 25 19:12:01 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Tue, 26 Feb 2019 01:12:01 +0100
Subject: ARM: dts: qcom: ipq4019: enlarge PCIe BAR range
Message-ID: <mailman.205.1593078911.4661.openwrt-devel@lists.openwrt.org>

From: Christian Lamparter <chunkeey at gmail.com>

commit f3e35357cd460a8aeb48b8113dc4b761a7d5c828 upstream.

David Bauer reported that the VDSL modem (attached via PCIe)
on his AVM Fritz!Box 7530 was complaining about not having
enough space in the BAR. A closer inspection of the old
qcom-ipq40xx.dtsi pulled from the GL-iNet repository listed:

| qcom,pcie at 80000 {
|	compatible = "qcom,msm_pcie";
|	reg = <0x80000 0x2000>,
|	      <0x99000 0x800>,
|	      <0x40000000 0xf1d>,
|	      <0x40000f20 0xa8>,
|	      <0x40100000 0x1000>,
|	      <0x40200000 0x100000>,
|	      <0x40300000 0xd00000>;
|	reg-names = "parf", "phy", "dm_core", "elbi",
|			"conf", "io", "bars";

Matching the reg-names with the listed reg leads to
<0xd00000> as the size for the "bars".

Cc: stable at vger.kernel.org
BugLink: https://www.mail-archive.com/openwrt-devel at lists.openwrt.org/msg45212.html
Reported-by: David Bauer <mail at david-bauer.net>
Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
Signed-off-by: Andy Gross <agross at kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>

---
 arch/arm/boot/dts/qcom-ipq4019.dtsi |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
@@ -400,8 +400,8 @@
 			#address-cells = <3>;
 			#size-cells = <2>;
 
-			ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000
-				  0x82000000 0 0x40300000 0x40300000 0 0x400000>;
+			ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
+				 <0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;
 
 			interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-names = "msi";


Patches currently in stable-queue which might be from chunkeey at gmail.com are

queue-5.1/crypto-crypto4xx-fix-cfb-and-ofb-overran-dst-buffer-issues.patch
queue-5.1/arm-dts-qcom-ipq4019-enlarge-pcie-bar-range.patch
queue-5.1/crypto-crypto4xx-fix-ctr-aes-missing-output-iv.patch

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


From chunkeey at gmail.com  Mon Feb 25 19:12:01 2019
From: chunkeey at gmail.com (Christian Lamparter)
Date: Tue, 26 Feb 2019 01:12:01 +0100
Subject: ARM: dts: qcom: ipq4019: enlarge PCIe BAR range
Message-ID: <mailman.206.1593078911.4661.openwrt-devel@lists.openwrt.org>

From: Christian Lamparter <chunkeey at gmail.com>

commit f3e35357cd460a8aeb48b8113dc4b761a7d5c828 upstream.

David Bauer reported that the VDSL modem (attached via PCIe)
on his AVM Fritz!Box 7530 was complaining about not having
enough space in the BAR. A closer inspection of the old
qcom-ipq40xx.dtsi pulled from the GL-iNet repository listed:

| qcom,pcie at 80000 {
|	compatible = "qcom,msm_pcie";
|	reg = <0x80000 0x2000>,
|	      <0x99000 0x800>,
|	      <0x40000000 0xf1d>,
|	      <0x40000f20 0xa8>,
|	      <0x40100000 0x1000>,
|	      <0x40200000 0x100000>,
|	      <0x40300000 0xd00000>;
|	reg-names = "parf", "phy", "dm_core", "elbi",
|			"conf", "io", "bars";

Matching the reg-names with the listed reg leads to
<0xd00000> as the size for the "bars".

Cc: stable at vger.kernel.org
BugLink: https://www.mail-archive.com/openwrt-devel at lists.openwrt.org/msg45212.html
Reported-by: David Bauer <mail at david-bauer.net>
Signed-off-by: Christian Lamparter <chunkeey at gmail.com>
Signed-off-by: Andy Gross <agross at kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>

---
 arch/arm/boot/dts/qcom-ipq4019.dtsi |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
@@ -393,8 +393,8 @@
 			#address-cells = <3>;
 			#size-cells = <2>;
 
-			ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000
-				  0x82000000 0 0x40300000 0x40300000 0 0x400000>;
+			ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000>,
+				 <0x82000000 0 0x40300000 0x40300000 0 0x00d00000>;
 
 			interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>;
 			interrupt-names = "msi";


Patches currently in stable-queue which might be from chunkeey at gmail.com are

queue-5.0/crypto-crypto4xx-fix-cfb-and-ofb-overran-dst-buffer-issues.patch
queue-5.0/arm-dts-qcom-ipq4019-enlarge-pcie-bar-range.patch
queue-5.0/crypto-crypto4xx-fix-ctr-aes-missing-output-iv.patch

_______________________________________________
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel


