aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* mvebu: backport mvneta basic MQPrio patchKabuli Chana2021-11-201-0/+109
| | | | | | | Implement a basic MQPrio support, inserting rules in RX that translate the TC to prio mapping into vlan prio to queues. Signed-off-by: Kabuli Chana <newtownBuild@gmail.com>
* kernel: add kmod-ledtrig-patternKarel Kočí2021-11-201-0/+16
| | | | | | | This allows LEDs to be triggered by custom pattern and not just predefined ones. Signed-off-by: Karel Kočí <karel.koci@nic.cz>
* kernel: bump 5.4 to 5.4.159John Audia2021-11-204-8/+8
| | | | | | | | | Manually rebased: generic-backport/850-v5.13-usb-ehci-add-spurious-flag-to-disable-overcurrent-ch.patch All other patches automatically rebased. Signed-off-by: John Audia <graysky@archlinux.us>
* kernel: remove non-existent config symbolsJianhui Zhao2021-11-203-7/+0
| | | | | | | The crashlog patch as not ported to kernel 5.4. Fixes: 4e0c54bc5bc8 ("kernel: add support for kernel 5.4") Signed-off-by: Jianhui Zhao <zhaojh329@gmail.com>
* libubox: update to git HEADDaniel Golle2021-11-201-4/+4
| | | | | | | | | cce5e35 vlist: define vlist_for_each_element_safe This is change affects only a macro in headers and hence it is not required to bump ABI_VERSION. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* qosify: add qosify-status scriptFelix Fietkau2021-11-192-1/+74
| | | | | | This will show detailed status for all devices/interfaces Signed-off-by: Felix Fietkau <nbd@nbd.name>
* qosify: add class specific bulk flow detection example to voice classFelix Fietkau2021-11-191-0/+3
| | | | | | | With the new version, priority/bulk flow detection can be selectively enabled and configured per class Signed-off-by: Felix Fietkau <nbd@nbd.name>
* qosify: update to the latest versionFelix Fietkau2021-11-193-16/+24
| | | | | | | | | | | | | 68961a555e42 ubus: drop dnsmasq check for dns_result method 1ca3e26b8169 bpf: refactor code to support explicit opt-in for bulk+prio detection 3f0acf039f41 bpf: move flow prio/bulk detection config into a separate data structure bc54c97e3333 map, bpf: create a separate map for configured dscp classes 46cf3eae2d99 bpf: fix bulk flow detaction 88f1db7dd611 bpf: fix priority flow detection b5dec7874373 bpf: remove access to skb->gso_size e728a319a9a5 interface: unify status, always include ifname, ingress, egress Signed-off-by: Felix Fietkau <nbd@nbd.name>
* bpf-headers: switch to mips64 for 64 bit targetsFelix Fietkau2021-11-192-2/+8
| | | | | | | | BTF pointer data has a different size on 32 vs 64 bit targets, and while the generated eBPF code works, the BTF data fails to validate on mismatch Signed-off-by: Felix Fietkau <nbd@nbd.name>
* qosify: keep ICMP in the default best-effort classFelix Fietkau2021-11-191-1/+1
| | | | | | | Also preserve existing DSCP tags to make it easier to test latency for different DSCP values Signed-off-by: Felix Fietkau <nbd@nbd.name>
* qosify: move package to Base SystemRodrigo B. de Sousa Martins2021-11-191-2/+2
| | | | | | | | Since sqm-scripts and qos-scripts packages are in the same category as qosify, the firsts being in the Base System category, I find it understandable to move the latter to Base System instead of network section. Signed-off-by: Rodrigo B. de Sousa Martins <rodrigo.sousa.577@gmail.com>
* include/bpf.mk: preserve the bpf .o file with debug symbolsFelix Fietkau2021-11-191-0/+1
| | | | | | Makes it easier to analyze verifier complaints Signed-off-by: Felix Fietkau <nbd@nbd.name>
* hostapd: fix use after free bugsDavid Bauer2021-11-191-6/+6
| | | | | | | Using a pointer one lifter after it freed is not the best idea. Let's not do that. Signed-off-by: David Bauer <mail@david-bauer.net>
* mac80211: fix IBSS/adhoc mode for brcmfmacBastian Bittorf2021-11-191-0/+1
| | | | | | | | | | | | | | | | | | | | On systems using brmcfmac (e.g. Raspberry Pi Zero W) without this fix, the final setup-call: iw dev wlan0 ibss join ... fails with returncode 161 and message: "command failed: Not supported (-95)" So this patch calls an explicit: iw dev wlan0 set type ibss just prior to the 'ibss join' command. I have tested several ath9k and mt76xx devices with different revisions: this patch does not harm. please also apply to stable branch. Signed-off-by: Bastian Bittorf <bb@npl.de>
* mediatek/mt7622: unifi-6-lr: fix ucidef network configuration typoMark Mentovai2021-11-191-1/+1
| | | | | | | | There's no such thing as ucidef_set_interfaces_lan. It's ucidef_set_interface_lan. Cc: David Bauer <mail@david-bauer.net> Signed-off-by: Mark Mentovai <mark@moxienet.com>
* bcm4908: build chk image for Netgear RAXE500Rafał Miłecki2021-11-191-1/+1
| | | | | Fixes: 63ba3eaccdde ("bcm4908: start working on Netgear RAXE500 image") Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* bcm4908: start working on Netgear RAXE500 imageRafał Miłecki2021-11-192-0/+36
| | | | | | | | bootfs still needs more work before it's ready. For some unknown reason model RAXE500 uses board id RAX220. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* bcm4908: enable MTD_CMDLINE_PARTSRafał Miłecki2021-11-192-0/+2
| | | | | | | It's needed to support devices with U-Boot. That bootloader passes MTD layout using cmdline. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* bcm4908: continue work on images for U-Boot based devicesRafał Miłecki2021-11-193-0/+96
| | | | | | It still isn't ready though - more data needs to be added to the bootfs. Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* sunxi: 5.10: Orange Pi Zero Plus: Fix networkingRobert Marko2021-11-191-0/+32
| | | | | | | | | | | | | | | | Orange Pi Zero Plus uses a Realtek RTL8211E RGMII Gigabit PHY, but its currently set to plain RGMII mode meaning that it doesn't introduce delays. With this setup, TX packets are completely lost and changing the mode to RGMII-ID so the PHY will add delays internally fixes the issue. It looks like this got broken in 5.10 as the PHY RGMII config got fixed due to datasheet being available and a lot of boards got broken by that. This has already been sent upstream and received multiple reviews. Signed-off-by: Robert Marko <robert.marko@sartura.hr>
* kernel: bump 5.10 to 5.10.80Rui Salvaterra2021-11-1944-485/+64
| | | | | | | | | | | | | | | | | | | | | | Deleted (upstreamed): ath79/patches-5.10/921-serial-core-add-support-for-boot-console-with-arbitr.patch [1] bcm53xx/patches-5.10/033-v5.15-0012-ARM-dts-BCM5301X-Fix-memory-nodes-names.patch [2] lantiq/patches-5.10/0016-mtd-rawnand-xway-Keep-the-driver-compatible-with-on-.patch [3] lantiq/patches-5.10/0110-MIPS-lantiq-dma-add-small-delay-after-reset.patch [4] lantiq/patches-5.10/0111-MIPS-lantiq-dma-reset-correct-number-of-channel.patch [5] lantiq/patches-5.10/0112-MIPS-lantiq-dma-fix-burst-length-for-DEU.patch [6] Manually rebased: ipq806x/patches-5.10/0065-arm-override-compiler-flags.patch [1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.80&id=47462c5e600fbaffd755cd13dedd80d04e41ff83 [2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.80&id=2fde76df1885a6bec04317e457121326070450eb [3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.80&id=9b366f5221d8aa64b22f35be137a5749326444ce [4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.80&id=5af57ce8a6155fe3e4270d28d171abf8903bebc0 [5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.80&id=b92a5df2c7adc79a57481445f67de0c1c716581f [6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.10.80&id=6b72caabc47011d03f44064452b2c65e8ed18326 Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>
* bcm4908: backport upstream DT commitsRafał Miłecki2021-11-1814-16/+468
| | | | Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* bcm53xx: use more upsteam DT patches from 5.16 / 5.17Rafał Miłecki2021-11-184-9/+116
| | | | Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
* toolchain: add a version that can be bumped to force toolchain/target rebuildFelix Fietkau2021-11-164-4/+24
| | | | | | | | This can be used to ensure that the compiled code is up to date, when something important changes in the toolchain. A recent example of this is the gcc 11 fix for a code miscompilation issue Signed-off-by: Felix Fietkau <nbd@nbd.name>
* toolchain/gcc: revert a faulty upstream commit that caused miscompiled codeFelix Fietkau2021-11-161-0/+160
| | | | | | This broke at least the OKLI loader, but possibly other things as well Signed-off-by: Felix Fietkau <nbd@nbd.name>
* lantiq: improve ethernet performanceAleksander Jan Bajkowski2021-11-1514-0/+706
| | | | | | | | This commit contains a series of fixes for DMA. The burst length patch significantly improves Ethernet performance. Patches were tested on the xRX200 and xRX330. Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
* ltq-vdsl-fw: update w921v firmware download URLDaniel Golle2021-11-153-5/+5
| | | | | | | Update Telekom Speedport W921V firmware download URL. Contained TAPI and VDSL firmware blobs are identical. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: add missing symbolStijn Tintel2021-11-151-0/+13
| | | | | | | Enabling KERNEL_FTRACE exposes the HIST_TRIGGERS triggers symbol. Add a build option for it to fix build failures with KERNEL_FTRACE enabled. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* hostapd: set VARIANT=* for wpa-cli, hostapd-utilsEneas U de Queiroz2021-11-151-0/+2
| | | | | | | | | | | | | | | | | | | | 19aae94 [build: avoid rebuilds of unset VARIANT packages] builds packages defined without a VARIANT only once, using the first VARIANT defined in the Makefile. This caused problems with wpa-cli, as it is only built for variants that include supplicant support, and the first VARIANT defined may not build it. The same happens to hostapd-utils, which is not built for supplicant-only variants. To circumvent this, set VARIANT=* for both packages so that they get built for every defined variant. This should not cause spurious rebuilds, since tey are not a dependency of any other package defined in this Makefile. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
* build: allow package to be built for all variantsEneas U de Queiroz2021-11-153-3/+3
| | | | | | | | | | | | This allows a package to be rebuilt for all different VARIANTs. To do so, set VARIANT=*. The wpa-cli package is not getting built after changes made by 19aae94 [build: avoid rebuilds of unset VARIANT packages], because wpa-cli is only built when compiling a variant that includes supplicant support, and the first selected variant may not build it. Signed-off-by: Eneas U de Queiroz <cotequeiroz@gmail.com>
* kernel: fix mac-address-increment patchAnsuel Smith2021-11-154-28/+48
| | | | | | | | | Fix mac address increment patch. Permit to overflow to the next byte and correctly calculate the incremented mac. Reported-by: Chen Minqiang <ptpt52@gmail.com> Fixes: d284e6ef0f06 ("treewide: convert mtd-mac-address-increment* to generic implementation") Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
* kernel: 5.10: backport explicit MAC06 disable patchMatthew Hagan2021-11-151-0/+47
| | | | | | | | | Backport of Ansuel Smith's "net: dsa: qca8k: make sure PAD0 MAC06 exchange is disabled", to ensure mac06 is disabled even if enabled by the bootloader. Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com> Signed-off-by: Matthew Hagan <mnhagan88@gmail.com>
* mxs: drop kernel 5.4 supportZoltan HERPAI2021-11-142-355/+0
| | | | Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
* mxs: switch to Kernel 5.10Paul Spooren2021-11-141-2/+2
| | | | Signed-off-by: Paul Spooren <mail@aparcar.org>
* lldpd: add reload triggerStijn Tintel2021-11-142-1/+5
| | | | | | | This is needed to reload the service when calling reload_config, if the UCI config has changed. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* lldpd: consolidate procd command linesStijn Tintel2021-11-142-3/+2
| | | | | | There is no need to have multiple lines for this. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* lldpd: bump to 1.0.13Stijn Tintel2021-11-141-2/+2
| | | | | | Fixes CVE-2021-43612. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
* lantiq: fix mac address from nvmem-cellsMathias Kresin2021-11-142-2/+0
| | | | | | | | | | The devicetree property mac-address is expected to be set by the bootloader and has priority over the nvmem supplied one. Drop the mac-address address property from the dtsi files, to let the mac address from nvmem-cells get used. Signed-off-by: Mathias Kresin <dev@kresin.me>
* uboot-lantiq: reduce stack sizeMathias Kresin2021-11-141-0/+56
| | | | | | | | | | | | | | | On lantiq a lot of stuff expects to be loaded to and executed at 0x80002000, including our own second stage bootloader. For all build u-boots, the initial stack pointer is at 0x80008000. After loading data to 0x80002000, every further stack operation corrupts the loaded code. Set the initial stack pointer to 0x80002000, to not overwrite code loaded in memory. A stack of 0x2000 bytes has been proven as enough in all done tests. Signed-off-by: Mathias Kresin <dev@kresin.me>
* uboot-lantiq: danube: fix SPL bootMathias Kresin2021-11-141-0/+34
| | | | | | | | | | | | | | | | On danube we only have 0x6800 bytes of usable SRAM. Everything behind can't be written to and a SPL u-boot locks up during boot. Since it's a hard to debug issue and took me more than two years to fix it, I consider it worth to include fix albeit SPL u-boots are not build in OpenWrt. I faced the issue while trying to shrink the u-boot to 64K since some boards only have an u-boot partition of that size from the days ifx-uboot was used. Signed-off-by: Mathias Kresin <dev@kresin.me> Reviewed-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
* uboot-lantiq: fix out of bounds cache invalidateMathias Kresin2021-11-141-0/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With gcc10 the variables are placed more tightly to each other, which uncovers a long existing bug in the lantiq DMA code. It can be observed when using tftpboot with the filename parameter, which gets reset during the tftpboot execution. NetRxPackets[] points to cache line size aligned addresses. In ltq_eth_rx_packet_align() the address NetRxPackets[] points to is increased by LTQ_ETH_IP_ALIGN and the resulting not cache aligned address is used further on. While doing so, the length/size is never updated. The "not cache aligned address" + len/size for a cache aligned address is passed to invalidate_dcache_range(). Hence, invalidate_dcache_range() invalidates the next 32 bit as well, which flashes the BootFile variable as well. variable BootFile is at address: 0x83ffe12c NetRxPackets[] points to 0x83ffdb20 (len is 0x600) data points to: 0x83ffdb22 (len is 0x600) ltq_dma_dcache_inv: 0x83ffdb22 (for len 0x600) invalidate_dcache_range: 0x83ffdb20 to 0x83ffe120 (size: 32) invalidate_dcache_range: 0x83ffdb20 to 0x83ffdb40 (Bootfile: a.bin) ... invalidate_dcache_range: 0x83ffe100 to 0x83ffe120 (Bootfile: a.bin) invalidate_dcache_range: 0x83ffe120 to 0x83ffe140 (Bootfile: ) In ltq_dma_tx_map() and ltq_dma_rx_map() the start address passed to ltq_dma_dcache_wb_inv() is incorrect. By considering the offset, the start address passed to flush_dcache_range() is always aligned to 32, 64 or 128 bytes dependent on configured DMA burst size. Fixes: FS#4113 Signed-off-by: Mathias Kresin <dev@kresin.me>
* uboot-lantiq: danube: fix hanging lzma kernel uncompressionMathias Kresin2021-11-141-0/+48
| | | | | | | | | | | | | | | | | | | | | | | At least since gcc 7.3.0 (OpenWrt 18.06) lwr/lwl are used in the assembly of LzmaProps_Decode. While the decission made by the compiler looks perfect fine, it triggers some obscure hang on lantiq danube-s v1.5 with MX29LV640EB NOR flash chips. Only if the offset 1 is used, the hang can be observed. Using any other offset works fine: lwl s0,0(a1) - s0 == 0x6d000080 lwl s0,1(a1) - hangs lwl s0,2(a1) - s0 == 0x0080xxxx lwl s0,3(a1) - s0 == 0x80xxxxxx It isn't clear whether it is a limitation of the flash chip, the EBU or something else. Force 8bit reads to prevent gcc optimizing the read with lwr/lwl instructions. Signed-off-by: Mathias Kresin <dev@kresin.me>
* qosify: add missing alias support in the init scriptFelix Fietkau2021-11-141-0/+18
| | | | Signed-off-by: Felix Fietkau <nbd@nbd.name>
* ipq40xx: fix missing includeChristian Lamparter2021-11-141-0/+1
| | | | | | | | | | | | This patch fixes a blunder of mine. The include needed for LED_COLOR_ID_BLUE property is missing. This caused the builds to fail with: |Error: arch/arm/boot/dts/qcom-ipq4019-r619ac.dtsi:91.13-14 syntax error |FATAL ERROR: Unable to parse input tree Fixes: 12d33d388c52 ("ipq40xx: add support for P&W R619AC (aka G-DOCK 2.0)") Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* ipq40xx: reenable Zyxel NBG6617 by defaultChristian Lamparter2021-11-141-1/+0
| | | | | | | | | The Zyxel NBG6617 already uses lzma to compress the kernel. A local build with every module enabled (either as =Y or =M) ended produced a 3058 KiB kernel (the kernel partition is 4MiB). It booted just fine, let's reenable the device. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* ipq40xx: add support for P&W R619AC (aka G-DOCK 2.0)Richard Yu2021-11-1410-1/+417
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | P&W R619AC is a IPQ4019 Dual-Band AC1200 router. It is made by P&W (p2w-tech.com) known as P&W R619AC but marketed and sold more popularly as G-DOCK 2.0. Specification: * SOC: Qualcomm Atheros IPQ4019 (717 MHz) * RAM: 512 MiB * Flash: 16 MiB (NOR) + 128 MiB (NAND) * Ethernet: 5 x 10/100/1000 (4 x LAN, 1 x WAN) * Wireless: - 2.4 GHz b/g/n Qualcomm Atheros IPQ4019 - 5 GHz a/n/ac Qualcomm Atheros IPQ4019 * USB: 1 x USB 3.0 * LED: 4 x LAN, 1 x WAN, 2 x WiFi, 1 x Power (All Blue LED) * Input: 1 x reset * 1 x MicroSD card slot * Serial console: 115200bps, pinheader J2 on PCB * Power: DC 12V 2A * 1 x Unpopulated mPCIe Slot (see below how to connect it) * 1 x Unpopulated Sim Card Slot Installation: 1. Access to tty console via UART serial 2. Enter failsafe mode and mount rootfs <https://openwrt.org/docs/guide-user/troubleshooting/failsafe_and_factory_reset> 3. Edit inittab to enable shell on tty console `sed -i 's/#ttyM/ttyM/' /etc/inittab` 4. Reboot and upload `-nand-factory.bin` to the router (using wget) 5. Use `sysupgrade` command to install Another installation method is to hijack the upgrade server domain of stock firmware, because it's using insecure http. This commit is based on @LGA1150(at GitHub)'s work <https://github.com/LGA1150/openwrt/commit/a4932c8d5a275d1fb4297bd20ec03f9270a45d1c> With some changes: 1. Added `qpic_bam` node in dts. I don't know much about this, but I observed other dtses have this node. 2. Removed `ldo` node under `sd_0_pinmux`, because `ldo` cause SD card not working. This fix is from <https://github.com/coolsnowwolf/lede/commit/51143b4c7571f717afe071db60bbb4db1532cbf2> 3. Removed the 32MB NOR variant. 4. Removed `cd-gpios` in `sdhci` node, because it's reported that it makes wlan2g led light up. 5. Added ethphy led config in dts. 6. Changed nand partition label from `rootfs` to `ubi`. About the 128MiB variant: The stock bootloader sets size of nand to 64MiB. But most of this devices have 128MiB nand. If you want to use all 128MiB, you need to modify the `MIBIB` data of bootloader. More details can be found on github: <https://github.com/openwrt/openwrt/pull/3691#issuecomment-818770060> For instructions on how to flash the MIBIB partition from u-boot console: <https://github.com/openwrt/openwrt/pull/3691#issuecomment-819138232> About the Mini PCIe slot: (from "ygleg") "The REFCLK signals on the Mini PCIe slot is not connected on this board out of the box. If you want to use the Mini PCIe slot on the board, you need to (preferably) solder two 0402 resistors: R436 (REFCLK+) and R444 (REFCLK-)..." This and much more information is provoided in the github comment: <https://github.com/openwrt/openwrt/pull/3691#issuecomment-968054670> Signed-off-by: Richard Yu <yurichard3839@gmail.com> Signed-off-by: DENG Qingfang <dqfext@gmail.com> [Added comment about MIBIB+128 MiB variant. Added commit message section about pcie slot. Renamed gpio-leds' subnodes and added color, function+enum properties.] Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
* scripts/env: fix env for git conf init.defaultBranch not set to "master"Arne Zachlod2021-11-131-1/+1
| | | | | | | | | Since version 2.28, git has a config option init.defaultBranch to set the name of the first branch created with git init. The env script expects this name to be "master". This commit sets the initial branch name to "master" instead of using the git configured one. Signed-off-by: Arne Zachlod <arne@nerdkeller.org>
* firewall4: update to latest Git HEADPaul Spooren2021-11-131-4/+4
| | | | | | | | | eb0a3ee fw4.uc: Do not quote port ranges c5a8e3e tests: adapt test to new ICMP print logic Also start using $(AUTORELEASE) Signed-off-by: Paul Spooren <mail@aparcar.org>
* base-files: stage2: improve /proc/*/stat parserDaniel Golle2021-11-131-2/+5
| | | | | | | | | | | Simply reading /proc/*/stat as a space-separated string will not work as the process name may itself contain spaces. Hence we must match on the '(' and ')' characters around the process name and can then handle the remaining string as space-separated values. This fixes shell error messages which have been popping up the console due to spaces in process names being interpreted as field separators. Signed-off-by: Daniel Golle <daniel@makrotopia.org>
* kernel: bump 5.10 to 5.10.79Rui Salvaterra2021-11-133-7/+7
| | | | | | | | | Manually rebased: generic/backport-5.10/810-v5.13-usb-ehci-add-spurious-flag-to-disable-overcurrent-ch.patch Tested-by: John Audia <graysky@archlinux.us> Tested-by: Daniel Golle <daniel@makrotopia.org> Signed-off-by: Rui Salvaterra <rsalvaterra@gmail.com>