This patch adds the label MAC address for several devices in
ramips.
Some devices require setting the MAC address in 02_network:
For the following devices, the netif device can be linked in
device tree, but the MAC address cannot be read:
- cudy,wr1000
- dlink,dir-615-d
- dlink,dir-615-h1
- dlink,dir-860l-b1
- glinet,gl-mt300a
- glinet,gl-mt300n
- glinet,gl-mt750
- vocore,vocore2
- vocore,vocore2-lite
- zbtlink,zbt-we1326
- zbtlink,zbt-wg3526
For the following devices, label MAC address is tied to lan or
wan, so no node to link to exists in device tree:
- dlink,dir-510l
- dlink,dwr-116-a1
- dlink,dwr-118-a1
- dlink,dwr-118-a2
- dlink,dwr-921-c1
- dlink,dwr-922-e2
- all hiwifi devices
- lava,lr-25g001
- xiaomi,mir3p
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This patch adds the label MAC address for several devices in
ath79.
Some devices require setting the MAC address in 02_network:
For the following devices, the netif device can be linked in
device tree, but the MAC address cannot be read:
- alfa-network,ap121f
- avm,fritz300e
- ubnt-xm devices
For the following devices, label MAC address is tied to lan or
wan, so no node to link to exists in device tree:
- adtran,bsap1800-v2
- adtran,bsap1840
- dlink,dir-842-c1/-c2/-c3
- engenius,ecb1750
- iodata,etg3-r
- iodata,wn-ac1167dgr
- iodata,wn-ac1600dgr
- iodata,wn-ac1600dgr2
- iodata,wn-ag300dgr
- nec,wg800hp
- nec,wg1200cr
- trendnet,tew-823dru
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
base-files: provide option to specify label MAC address in board.d
For many devices, MAC addresses cannot be retrieved via the
device tree alias.
To still provide the label MAC address for those, this implements
a second mechanism that will put the address into uci config.
Note that this stores the actual MAC address, whereas in DTS
we reference the bearing device.
This is based on the work of Rosy Song <rosysong@rosinson.com>
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
base-files: add function to retrieve label MAC address
To refer to the MAC address on a device's label, one can
specify the alias label-mac-device in the DTS which should
point to the bearer of the corresponding MAC address.
With the function get_mac_label, the user can retrieve then
retrieve this address and use it as a value that uniquely
identifies his device.
This is severely helpful for several downstream functionalities,
e.g. define MAC addresses of custom netifs or change the SSID to
be easily recognizable.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
DENG Qingfang [Thu, 19 Sep 2019 09:44:48 +0000 (11:44 +0200)]
kernel: 4.19: fix crash when setting up spi-gpio
If an spi-gpio was specified with num-chipselects = <0> in dts, kernel
will crash:
Unable to handle kernel paging request at virtual address 32697073
pgd = (ptrval)
[32697073] *pgd=00000000
Internal error: Oops: 5 [# 1] SMP ARM
Modules linked in:
CPU: 2 PID: 1 Comm: swapper/0 Not tainted 4.19.72 #0
Hardware name: Generic DT based system
PC is at validate_desc+0x28/0x80
LR is at gpiod_direction_output+0x14/0x128
...
[<c0544db4>] (validate_desc) from [<c0545228>] (gpiod_direction_output+0x14/0x128)
[<c0545228>] (gpiod_direction_output) from [<c05fa714>] (spi_gpio_setup+0x58/0x64)
[<c05fa714>] (spi_gpio_setup) from [<c05f7258>] (spi_setup+0x12c/0x148)
[<c05f7258>] (spi_setup) from [<c05f7330>] (spi_add_device+0xbc/0x12c)
[<c05f7330>] (spi_add_device) from [<c05f7f74>] (spi_register_controller+0x838/0x924)
[<c05f7f74>] (spi_register_controller) from [<c05fa494>] (spi_bitbang_start+0x108/0x120)
[<c05fa494>] (spi_bitbang_start) from [<c05faa34>] (spi_gpio_probe+0x314/0x338)
[<c05faa34>] (spi_gpio_probe) from [<c05a844c>] (platform_drv_probe+0x34/0x70)
The cause is spi_gpio_setup() did not check if the spi-gpio has
chipselect pins before setting their direction and results in derefing
an invalid pointer.
The bug is spotted in kernel 4.19.72 and does not occur in 4.14.
There is a similar fix upstream in kernel 5.2 in commit 249e2632dcd0
("spi: gpio: Don't request CS GPIO in DT use-case").
Ref: https://patchwork.kernel.org/patch/11150619/ Signed-off-by: DENG Qingfang <dengqf6@mail2.sysu.edu.cn>
[use upstream patch, moved from hack to pending dir, commit facelift] Signed-off-by: Petr Štetiar <ynezz@true.cz>
procd: fix invalid JSON filter expression in procd_running()
Since service and instance names may contain characters which are not allowed
in JSON path labels, such as dashes or spaces, change the filter expression
to array square bracket notation to properly match these cases as well.
Hans Dedecker [Tue, 17 Sep 2019 20:11:26 +0000 (22:11 +0200)]
glibc: update to latest 2.27 commit (BZ#23637)
5b4f7382af Add undef to fix test failure. 9456483fb2 Improve performance of memmem 373f8b06a3 Improve performance of strstr 4ec1b9e913 Fix strstr bug with huge needles (bug 23637) ecd6271ed8 Speedup first memmem match bba6b9288f Simplify and speedup strstr/strcasestr first match 7a4da6ef7a Improve strstr performance
Keith Maika [Mon, 16 Sep 2019 16:45:02 +0000 (12:45 -0400)]
ath79: add support for TP-Link Archer C59v2
Add ath79 support for Archer C59v2, previously supported by ar71xx.
TP-Link Archer C59v2 is a dual-band AC1350 router based on
Qualcomm/Atheros QCA9561+QCA9886 chips.
Specification:
- 775/650/258 MHz (CPU/DDR/AHB)
- 128 MB of RAM (DDR2)
- 16 MB of FLASH (SPI NOR)
- 3T3R 2.4 GHz
- 2T2R 5 GHz
- 5x 10/100 Mbps Ethernet
- USB 2.0 port
- UART header on PCB
Flash instruction:
- via web UI:
1. Download openwrt-ath79-generic-tplink_archer-c59-v2-squashfs-factory.bin
2. Login to router and open the Advanced tab
3. Navigate to System Tools -> Firmware Upgrade
4. Upload firmware using the Manual Upgrade form
- via TFTP:
1. Set PC to fixed ip address 192.168.0.66
2. Download openwrt-ath79-generic-tplink_archer-c59-v2-squashfs-factory.bin
and rename it to tp_recovery.bin
3. Start a tftp server with the file tp_recovery.bin in its root directory
4. Turn off the router
5. Press and hold Reset button
6. Turn on router with the reset button pressed and wait ~15 seconds
7. Release the reset button and after a short time
the firmware should be transferred from the tftp server
8. Wait ~30 second to complete recovery.
Karl Palsson [Thu, 5 Sep 2019 09:36:53 +0000 (09:36 +0000)]
ath79: eg200: enable status led usage
This enables using the "eTactica" LED during boot, to indicate failsafe,
and during upgrade, while still leaving the LED alone for normal
operation. This brings the device more in line with how other devices
work, and makes the failsafe functionality easier to use and understand.
This enables a feature flag in the wave-2 firmware wmi-services indicating it can send
software-encrypted raw frames. This should in turn allow the AP-VLAN feature to work.
Petr Štetiar [Sat, 27 Jul 2019 22:33:32 +0000 (00:33 +0200)]
scons: move to packages feed
This patch removes scons host build tool, as commit 7087efd72a8d
("scons: move host build tool to a proper place") in the packages feed
has moved scons into the new home.
There are currently no packages in the master tree which would need
scons, yet scons is build always as part of host tools, just in order to
satisfy host build dependency of few packages in the packages feeds.
Ref: https://github.com/openwrt/packages/pull/9584 Acked-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Petr Štetiar <ynezz@true.cz>
Petr Štetiar [Tue, 23 Jul 2019 10:16:03 +0000 (12:16 +0200)]
netifd,lldpd,rpcd,log: use generic service_running
commit eb204d14f75c ("base-files: implement generic service_running")
introduced generic service_running so it's not needed to copy&paste same
3 lines over and over again.
I've removed service_running from netifd/network init script as well,
because it was not working properly, looked quite strange and I didn't
understand the intention:
$ /etc/init.d/network stop
$ service network running && echo "yes" || echo "nope"
( have to wait for 30s )
Command failed: Request timed out
yes
Daniel Golle [Sun, 15 Sep 2019 18:14:26 +0000 (20:14 +0200)]
ramips: only add spidev node in for WrtNode2R (and not for 2P)
Only the 2R version got the STM32 uC connected as 2nd SPI device.
Hence move the spidev node from mt7628an_wrtnode_wrtnode2.dtsi to
mt7628an_wrtnode_wrtnode2r.dts.
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
build: install-dtb: fix race condition when copying dtb
Currently for at91 target, Build/install-dtb can be triggered concurrently for
multiple different TARGET_FILESYSTEMS, cp command can fail when the
target file is already open exclusively by other cp process
Move the IRQ fix from generic to ar71xx specific.
Other targets like ath79 have specific pathes to delete this code.
This resulted in a build failure on ath79
While at it, wipe the 4.19 version, as ar71xx will never reach this.
Fixes: 530f76708cef ("ar71xx: Fix potentially missed IRQ handling during
dispatch")
brcm63xx: remove redundant variable definition in Makefile
For devices inheriting from bcm63xx_netgear, the IMAGES variable
is overwritten with the same values as defined in the parent
definition. So, remove the unnecessary overwrite.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Jonas Gorski [Tue, 3 Sep 2019 12:16:12 +0000 (14:16 +0200)]
images: fix boot failures on NAND with small sub pages
SquashFS has a minimum block size of at least 1k, so we need to make
sure the last data block is also at least that big.
This is not an issue on NOR or SD CARD devices, since their rootfs
partitions go all the way to the end of the usable space.
But on NAND with ubiblock, the rootfs partition will be the exact space,
rounded up to LEB size. Unfortunately, some NAND chips with small sub
pages have a LEB size of x.5 kiB. This can cause the the last data block
to be less than 1k, which will cause the last block to be inaccessible,
causing boot failures as seen on MR24:
[ 1.532960] block ubiblock0_3: created from ubi0:3(rootfs)
[ 1.538457] ubiblock: device ubiblock0_3 (rootfs) set to be root filesystem
[ 1.552847] SQUASHFS error: squashfs_read_data failed to read block 0x621472
[ 1.559896] squashfs: SQUASHFS error: unable to read id index table
[ 1.566474] VFS: Cannot open root device "(null)" or unknown-block(254,0): error -5
Since on most NOR devices, the start of the squashfs partition is not
aligned. Since the start of the rootfs_data partition there is dependend
on the SquashFS size, we cannot just always pad it, as the padding could
creep into the rootfs_data partition, breaking jffs2.
So fix this by ensuring a squashfs rootfs is always a multiple of 1k
only for UBI and NAND sysupgrade images.
Fixes #2460 without affecting NOR devices.
Tested-by: Russell Senior <russell@personaltelco.net> Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
Daniel Golle [Thu, 12 Sep 2019 11:17:24 +0000 (13:17 +0200)]
config: kernel: only enable container features if !SMALL_FLASH
KERNEL_DEVPTS_MULTIPLE_INSTANCES and KERNEL_POSIX_MQUEUE were
previously enabled by default only if KERNEL_LXC_MISC was selected.
KERNEL_LXC_MISC was enabled only if the SMALL_FLASH (anti-)feature
was not selected.
Now that KERNEL_LXC_MISC no longer exists, make sure that those
options are also only enabled by default for !SMALL_FLASH targets.
Fixes: 4f94a331 ("config: kernel: remove KERNEL_LXC_MISC") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Current ar724x code does the reset only on single pci bus, and
in case of qca9558 writes the wrong register (0x10 vs 0x0c).
This change allows the reset of second pci bus, commonly used in
Archer C7 devices, in case host controller is stuck in reset.
If the resetting controller on boot can solve any other issue it
can be enabled unconditionally by removing reset check before
ar724x_pci_hw_init is called.
Enable flushing of write buffers on qca955x. GPL code has 0x88 reg
defined for PCI flush which is likely an error since the device
freezes on boot. So use DS default value 0xA8 for PCI flush.
This explicitly tells procd what backup file should be used during
sysupgrade (if any). It's much more generic this way compared to the
magic /tmp/sysupgrade.tgz file that had to be created before a call.
gemini: image: fix race condition when building copy-kernel.bin
Make treat copy-kernel.o as intermediate and delete it when it's no
longer needed. This can fail when the same submake was triggered
multiple times for different devices.
ramips: enable external amplifier for D-Link DIR-810L
The 2.4 GHz radio had very poor signal reception (-89 dBm for an AP
sitting 5 m away). By enabling the external amplifier, received signal
has improved to -50 dBm for the same AP.
Signed-off-by: Roger Pueyo Centelles <roger.pueyo@guifi.net>
5f0d2e0491 [AArch64] Add ifunc support for Ares e6b7252040 aarch64,falkor: Use vector registers for memcpy c74b884f70 aarch64,falkor: Ignore prefetcher tagging for smaller copies 0fc5934ebd aarch64/strncmp: Use lsr instead of mov+lsr e0a0bd3acc aarch64/strncmp: Unbreak builds with old binutils 638caf3000 aarch64: Improve strncmp for mutually misaligned inputs d5f45a29ff aarch64/strcmp: fix misaligned loop jump target 7f690fafad aarch64: Improve strcmp unaligned performance 40df047b3b aarch64: Fix branch target to loop16 062139f233 aarch64: Optimized memcmp for medium to large sizes f3e2add213 aarch64: Use the L() macro for labels in memcmp 22bd3ab40e posix: Fix large mmap64 offset for mips64n32 (BZ#24699) bdd16894aa aarch64: handle STO_AARCH64_VARIANT_PCS 0b48caab9a aarch64: add STO_AARCH64_VARIANT_PCS and DT_AARCH64_VARIANT_PCS 949da7f2fd io: Remove copy_file_range emulation [BZ #24744] f056ac8363 libio: do not attempt to free wide buffers of legacy streams [BZ #24228] 5f90e009b1 NEWS: add entries for bugs 22964, 24180, and 24531
base-files: validate firmware for compatibility with backup
This allows platform code to check if firmware image can be used with
preserving a backup. It may be used e.g. when installing vendor
firmwares that won't restore appended backup archive.
Suggested-by: Luis Araneda <luaraneda@gmail.com> Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
ramips: fix MAC address setup for Newifi Y1 and Y1S
So far, MAC address setup for those devices has been using local
addresses although additional MAC addresses are available on flash.
On device, we found the following situation:
position Y1 Y1S
0x4 *:d4 *:e4
0x8004 *:d6 *:e8
0x28 *:d4 *:e4
0x2e *:d7 *:eb
Since 0x4 and 0x28 yield the same address, the former was set for
ðernet in DTS. However, the typical location on this
architecture is 0x28, so this patch changes that.
For further setup in 02_network, the local bit for lan_mac is
removed, so the address from ðernet is used at all. For wan_mac,
instead of calculating an address with local bit set, this patch
exploits the previously unused address in 0x2e.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
ramips: initialize MAC addresses from flash where possible
This patch changes wan MAC address setup from retrieving it by
calculation to reading it from flash.
Changes are limited to cases where on-device check was possible.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
[fix mac for newifi-d1; drop adslr,g7 because it's unlikely for
vendor to specifically use 2.4g mac as wan_mac] Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
ramips: fix duplicate network setup for dlink,dir-615-h1
In 555ca422d1cb ("ramips: fix D-Link DIR-615 H1 switch port
mapping"), port setup for dir-615-h1 was changed without removing
the old one. This was working as the new one was triggered earlier
than the old one.
(In the meantine, changed sorting during ramips rename patches
actually inversed that order.)
Anyway, just remove the wrong case now.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
ramips: clean and improve MAC address setup in 02_network
This patch removes unnecessary MAC address setup statements in
ramips' 02_network by doing several optimizations:
1. For the following devices, lan_mac was set up with
mtd_get_mac_binary although the same address was set in DTS.
The lan_mac statement is removed in 02_network, but
wan_mac is kept:
- mercury,mac1200r-v2
- phicomm,k2g
- skylab,skw92a
- wiznet,wizfi630a
2. For the following devices, wan_mac was set up with
mtd_get_mac_binary although the same address was set in DTS.
The wan_mac statement is removed in 02_network, no
lan_mac is present:
- buffalo,whr-g300n
- glinet,gl-mt300n-v2
- zyxel,keenetic-start
3. For the following device, lan_mac and wan_mac were set up
with mtd_get_mac_binary to the same address as set in DTS.
Both statements are removed in 02_network:
- buffalo,whr-600d
4. For some devices, it was possible to move setup from 02_network
to DTS by introducing previously missing mtd_mac_address:
- buffalo,whr-1166d
- buffalo,whr-300hp2
- buffalo,wsr-600dhp
- ohyeah,oy-0001
- planex,vr500
5. For one device, mtd_mac_address was just wrong and overwritten
by 02_network. Put the correct value in DTS and remove redundant
statement in 02_network:
- asus,rt-ac57u
6. For one device, MAC address defined in DTS is exchanged together
with lan_mac/wan_mac setup in 02_network, so that cases in
02_network can be merged:
- phicomm,k2p
For some devices, an empty case has to be used to prevent them
from falling into the default case and have
WAN address = eth0 address + 1 set to them.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Dropping the nopad can make the padding overflow into the next erase
block on devices using a non-aligned rootfs start. This breaks the jffs2
overlay partition with the following messages:
[ 30.343877] jffs2_scan_eraseblock(): End of filesystem marker found at 0x10000
[ 30.376512] jffs2: Cowardly refusing to erase blocks on filesystem with no valid JFFS2 nodes
[ 30.385253] jffs2: empty_blocks 196, bad_blocks 0, c->nr_blocks 197
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
base-files: use get_mac_binary() in mtd_get_mac_binary_ubi()
The actual retrieval of the MAC address in mtd_get_mac_binary_ubi()
is the same as in get_mac_binary(). Thus, use the latter function
in the former to reduce duplicate code.
This will also allow to benefit from the enhanced path check there
and bring mtd_get_mac_binary_ubi() more in line with the similar
mtd_get_mac_binary().
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
David Bauer [Wed, 4 Sep 2019 18:46:10 +0000 (20:46 +0200)]
base-files: fix mtd_get_mac_text not accepting hex offsets
The mtd_get_mac_text helper method did not support hexadecimal offset
values, resulting them to break after 75bfc393ba6c ("treewide:
convert MAC address location offsets to hexadecimal")
This commit fixes this by evaluating the hexadecimal input,
converting them to decimal.
treewide: don't hardcode "sysupgrade.tgz" file name
1) Add BACKUP_FILE and use it when copying an archive to be restored
after sysupgrade (on the next preinit).
2) Use CONF_TAR for copying backup prepared by the /sbin/sysupgrade
Hauke Mehrtens [Sat, 11 May 2019 14:57:15 +0000 (16:57 +0200)]
tools/mkimage: Update U-Boot to version 2019.07
This updates the U-Boot which provides the host tools like mkimage to
version 2019.07.
The patches were cleaned up and it was checked if this still compiles
on Linux and FreeBSD.
CONFIG_FIT_SIGNATURE_MAX_SIZE is set to the default value.