[LEDE-DEV,1/2] kernel: bump 4.9 to 4.9.100

Message ID 1526470571-23503-1-git-send-email-koen.vandeputte@ncentric.com
State Superseded
Delegated to: John Crispin
Headers show
Series
  • [LEDE-DEV,1/2] kernel: bump 4.9 to 4.9.100
Related show

Commit Message

Koen Vandeputte May 16, 2018, 11:36 a.m.
Refreshed all patches

Compile-tested on: ar71xx
Runtime-tested on: ar71xx

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---

Will also apply to 18.06 branch


 include/kernel-version.mk                          |   4 +-
 .../ar7/patches-4.9/300-add-ac49x-platform.patch   |   4 +-
 .../403-mtd_fix_cfi_cmdset_0002_status_check.patch |  14 +-
 .../411-mtd-cfi_cmdset_0002-force-word-write.patch |   6 +-
 .../ar71xx/patches-4.9/500-MIPS-fw-myloader.patch  |   2 +-
 .../ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch  |   2 +-
 ...4-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch |  31 +-
 ...105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch |  17 +-
 .../linux/ath25/patches-4.9/107-ar5312_gpio.patch  |   2 +-
 .../patches-4.9/950-0031-Add-dwc_otg-driver.patch  |   2 +-
 ...fill-user-BO-creation-requests-from-the-k.patch |   2 +-
 ...-OOPSes-from-trying-to-cache-a-partially-.patch |   2 +-
 ...01-MIPS-BCM63XX-add-clkdev-lookup-support.patch |   2 +-
 ...match_table-parsing-for-partition-parsers.patch |   6 +-
 .../322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch    |   2 +-
 .../linux/generic/hack-4.9/220-gc_sections.patch   |   2 +-
 .../hack-4.9/301-mips_image_cmdline_hack.patch     |   2 +-
 ...net-usb-add-lte-modem-wistron-neweb-d18q1.patch |   2 +-
 ...t-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch |   2 +-
 .../pending-4.9/300-mips_expose_boot_raw.patch     |   4 +-
 .../generic/pending-4.9/304-mips_disable_fpu.patch |   2 +-
 ...m-remove-no-op-dma_map_ops-where-possible.patch |  12 +-
 ..._cmdset_0002-add-buffer-write-cmd-timeout.patch |   2 +-
 .../pending-4.9/630-packet_socket_type.patch       |  16 +-
 ...jecting-with-source-address-failed-policy.patch |  16 +-
 .../generic/pending-4.9/834-ledtrig-libata.patch   |   8 +-
 .../pending-4.9/890-uart_optional_sysrq.patch      |   4 +-
 .../patches-4.9/090-increase_entropy_pools.patch   |   2 +-
 .../patches-4.9/600-skb_avoid_dmabounce.patch      |   2 +-
 .../linux/lantiq/patches-4.9/0152-lantiq-VPE.patch |   2 +-
 .../202-core-linux-support-layerscape.patch        |   4 +-
 .../patches-4.9/817-usb-support-layerscape.patch   |  18 +-
 .../102-powerpc-add-cmdline-override.patch         |   2 +-
 .../sunxi/patches-4.9/0052-stmmac-form-4-12.patch  | 344 +++++++++++----------
 .../linux/uml/patches-4.9/101-mconsole-exec.patch  |   2 +-
 35 files changed, 273 insertions(+), 273 deletions(-)

Comments

Arjen de Korte May 16, 2018, 6:03 p.m. | #1
Citeren Koen Vandeputte <koen.vandeputte@ncentric.com>:

> Refreshed all patches
>
> Compile-tested on: ar71xx
> Runtime-tested on: ar71xx
>
> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>

Tested-by: Arjen de Korte <build+openwrt@de-korte.org>

Target: ar71xx (Netgear WNDR4300)

> ---
>
> Will also apply to 18.06 branch
>
>
>  include/kernel-version.mk                          |   4 +-
>  .../ar7/patches-4.9/300-add-ac49x-platform.patch   |   4 +-
>  .../403-mtd_fix_cfi_cmdset_0002_status_check.patch |  14 +-
>  .../411-mtd-cfi_cmdset_0002-force-word-write.patch |   6 +-
>  .../ar71xx/patches-4.9/500-MIPS-fw-myloader.patch  |   2 +-
>  .../ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch  |   2 +-
>  ...4-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch |  31 +-
>  ...105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch |  17 +-
>  .../linux/ath25/patches-4.9/107-ar5312_gpio.patch  |   2 +-
>  .../patches-4.9/950-0031-Add-dwc_otg-driver.patch  |   2 +-
>  ...fill-user-BO-creation-requests-from-the-k.patch |   2 +-
>  ...-OOPSes-from-trying-to-cache-a-partially-.patch |   2 +-
>  ...01-MIPS-BCM63XX-add-clkdev-lookup-support.patch |   2 +-
>  ...match_table-parsing-for-partition-parsers.patch |   6 +-
>  .../322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch    |   2 +-
>  .../linux/generic/hack-4.9/220-gc_sections.patch   |   2 +-
>  .../hack-4.9/301-mips_image_cmdline_hack.patch     |   2 +-
>  ...net-usb-add-lte-modem-wistron-neweb-d18q1.patch |   2 +-
>  ...t-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch |   2 +-
>  .../pending-4.9/300-mips_expose_boot_raw.patch     |   4 +-
>  .../generic/pending-4.9/304-mips_disable_fpu.patch |   2 +-
>  ...m-remove-no-op-dma_map_ops-where-possible.patch |  12 +-
>  ..._cmdset_0002-add-buffer-write-cmd-timeout.patch |   2 +-
>  .../pending-4.9/630-packet_socket_type.patch       |  16 +-
>  ...jecting-with-source-address-failed-policy.patch |  16 +-
>  .../generic/pending-4.9/834-ledtrig-libata.patch   |   8 +-
>  .../pending-4.9/890-uart_optional_sysrq.patch      |   4 +-
>  .../patches-4.9/090-increase_entropy_pools.patch   |   2 +-
>  .../patches-4.9/600-skb_avoid_dmabounce.patch      |   2 +-
>  .../linux/lantiq/patches-4.9/0152-lantiq-VPE.patch |   2 +-
>  .../202-core-linux-support-layerscape.patch        |   4 +-
>  .../patches-4.9/817-usb-support-layerscape.patch   |  18 +-
>  .../102-powerpc-add-cmdline-override.patch         |   2 +-
>  .../sunxi/patches-4.9/0052-stmmac-form-4-12.patch  | 344  
> +++++++++++----------
>  .../linux/uml/patches-4.9/101-mconsole-exec.patch  |   2 +-
>  35 files changed, 273 insertions(+), 273 deletions(-)
>
> diff --git a/include/kernel-version.mk b/include/kernel-version.mk
> index cf84e31f7b0f..8ae596d6bc2a 100644
> --- a/include/kernel-version.mk
> +++ b/include/kernel-version.mk
> @@ -4,13 +4,13 @@ LINUX_RELEASE?=1
>
>  LINUX_VERSION-3.18 = .71
>  LINUX_VERSION-4.4 = .121
> -LINUX_VERSION-4.9 = .96
>  LINUX_VERSION-4.14 = .37
> +LINUX_VERSION-4.9 = .100
>
>  LINUX_KERNEL_HASH-3.18.71 =  
> 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
>  LINUX_KERNEL_HASH-4.4.121 =  
> 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
> -LINUX_KERNEL_HASH-4.9.96 =  
> 826f596eb5197f8b17304649c2990dd7b766f5c79076cae79f4261c40cea877f
>  LINUX_KERNEL_HASH-4.14.37 =  
> 8197e7ed3620713e412905430a7bf93e2048384042ffba189a66f0eeb6908e92
> +LINUX_KERNEL_HASH-4.9.100 =  
> c5bb6f3a7113e05cbaf6e48b2b485dea4f7edae5e42b3fe81c963ba63413a77c
>
>  remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
>  sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst  
> .,_,$(subst -,_,$(subst /,_,$(1)))))))
> diff --git  
> a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch  
> b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
> index 67ed3e494a0d..639f09709ba8 100644
> --- a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
> +++ b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
> @@ -37,7 +37,7 @@
>   #define AR7_IRQ_UART0	15
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -160,7 +160,7 @@ config AR7
> +@@ -161,7 +161,7 @@ config AR7
>   	select HAVE_CLK
>   	help
>   	  Support for the Texas Instruments AR7 System-on-a-Chip
> @@ -46,7 +46,7 @@
>
>   config ATH25
>   	bool "Atheros AR231x/AR531x SoC support"
> -@@ -1004,6 +1004,7 @@ config MIPS_PARAVIRT
> +@@ -1005,6 +1005,7 @@ config MIPS_PARAVIRT
>   endchoice
>
>   source "arch/mips/alchemy/Kconfig"
> diff --git  
> a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch  
> b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
> index 415d835ee348..3a7fe99e6524 100644
> ---  
> a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
> +++  
> b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
> @@ -1,6 +1,6 @@
>  --- a/drivers/mtd/chips/cfi_cmdset_0002.c
>  +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> -@@ -1630,8 +1630,8 @@ static int __xipram do_write_oneword(str
> +@@ -1631,8 +1631,8 @@ static int __xipram do_write_oneword(str
>   			break;
>   		}
>
> @@ -11,7 +11,7 @@
>
>   		/* Latency issues. Drop the lock, wait a while and retry */
>   		UDELAY(map, chip, adr, 1);
> -@@ -1647,6 +1647,8 @@ static int __xipram do_write_oneword(str
> +@@ -1648,6 +1648,8 @@ static int __xipram do_write_oneword(str
>
>   		ret = -EIO;
>   	}
> @@ -20,7 +20,7 @@
>   	xip_enable(map, chip, adr);
>    op_done:
>   	if (mode == FL_OTP_WRITE)
> -@@ -2225,7 +2227,6 @@ static int cfi_amdstd_panic_write(struct
> +@@ -2226,7 +2228,6 @@ static int cfi_amdstd_panic_write(struct
>   	return 0;
>   }
>
> @@ -28,7 +28,7 @@
>   /*
>    * Handle devices with one erase region, that only implement
>    * the chip erase command.
> -@@ -2289,8 +2290,8 @@ static int __xipram do_erase_chip(struct
> +@@ -2291,8 +2292,8 @@ static int __xipram do_erase_chip(struct
>   			chip->erase_suspended = 0;
>   		}
>
> @@ -39,7 +39,7 @@
>
>   		if (time_after(jiffies, timeo)) {
>   			printk(KERN_WARNING "MTD %s(): software timeout\n",
> -@@ -2310,6 +2311,7 @@ static int __xipram do_erase_chip(struct
> +@@ -2312,6 +2313,7 @@ static int __xipram do_erase_chip(struct
>   		ret = -EIO;
>   	}
>
> @@ -47,7 +47,7 @@
>   	chip->state = FL_READY;
>   	xip_enable(map, chip, adr);
>   	DISABLE_VPP(map);
> -@@ -2378,9 +2380,9 @@ static int __xipram do_erase_oneblock(st
> +@@ -2381,9 +2383,9 @@ static int __xipram do_erase_oneblock(st
>   			chip->erase_suspended = 0;
>   		}
>
> @@ -59,7 +59,7 @@
>   		}
>
>   		if (time_after(jiffies, timeo)) {
> -@@ -2402,6 +2404,7 @@ static int __xipram do_erase_oneblock(st
> +@@ -2405,6 +2407,7 @@ static int __xipram do_erase_oneblock(st
>   		ret = -EIO;
>   	}
>
> diff --git  
> a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch  
> b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
> index 7f5b2f55acd1..25a73dcdff59 100644
> ---  
> a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
> +++  
> b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
> @@ -35,7 +35,7 @@
>
>   /* Atmel chips don't use the same PRI format as AMD chips */
>   static void fixup_convert_atmel_pri(struct mtd_info *mtd)
> -@@ -1789,6 +1793,7 @@ static int cfi_amdstd_write_words(struct
> +@@ -1790,6 +1794,7 @@ static int cfi_amdstd_write_words(struct
>   /*
>    * FIXME: interleaved mode not tested, and probably not supported!
>    */
> @@ -43,7 +43,7 @@
>   static int __xipram do_write_buffer(struct map_info *map, struct  
> flchip *chip,
>   				    unsigned long adr, const u_char *buf,
>   				    int len)
> -@@ -1917,7 +1922,6 @@ static int __xipram do_write_buffer(stru
> +@@ -1918,7 +1923,6 @@ static int __xipram do_write_buffer(stru
>   	return ret;
>   }
>
> @@ -51,7 +51,7 @@
>   static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t  
> to, size_t len,
>   				    size_t *retlen, const u_char *buf)
>   {
> -@@ -1992,6 +1996,7 @@ static int cfi_amdstd_write_buffers(stru
> +@@ -1993,6 +1997,7 @@ static int cfi_amdstd_write_buffers(stru
>
>   	return 0;
>   }
> diff --git  
> a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch  
> b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
> index d6a9276c3251..301422a7d8a1 100644
> --- a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
> +++ b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
> @@ -10,7 +10,7 @@
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -1149,6 +1149,9 @@ config MIPS_MSC
> +@@ -1150,6 +1150,9 @@ config MIPS_MSC
>   config MIPS_NILE4
>   	bool
>
> diff --git  
> a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch  
> b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
> index c0b5459e4578..89dd32a7c10c 100644
> --- a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
> +++ b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
> @@ -1,6 +1,6 @@
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -195,7 +195,6 @@ config ATH79
> +@@ -196,7 +196,6 @@ config ATH79
>   	select SYS_SUPPORTS_BIG_ENDIAN
>   	select SYS_SUPPORTS_MIPS16
>   	select SYS_SUPPORTS_ZBOOT_UART_PROM
> diff --git  
> a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch  
> b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
> index 1a3945eb4a39..20c69f39ed1e 100644
> ---  
> a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
> +++  
> b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
> @@ -1,5 +1,3 @@
> -diff --git  
> a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt  
> b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
> -index 61ac757..9820227 100644
>  --- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
>  +++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
>  @@ -35,7 +35,12 @@ right representation of the pin.
> @@ -13,24 +11,19 @@ index 61ac757..9820227 100644
>  +ATMEL_PIO_DRVSTR_LO, ATMEL_PIO_DRVSTR_ME, ATMEL_PIO_DRVSTR_HI. The current
>  +depends on VDDIOP. You can find the details in the DC Characteristics table
>  +from the datasheet.
> -
> +
>   Example:
> -
> -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> -index 1218005..c88e426 100644
> +
>  --- a/arch/arm/boot/dts/Makefile
>  +++ b/arch/arm/boot/dts/Makefile
>  @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
> -	wb45n.dtb
> + 	wb45n.dtb
>   dtb-$(CONFIG_SOC_SAM_V7) += \
> -	at91-kizbox2.dtb \
> + 	at91-kizbox2.dtb \
>  +	at91-sama5d27_som1_ek.dtb \
> -	at91-sama5d2_xplained.dtb \
> -	at91-sama5d3_xplained.dtb \
> -	sama5d31ek.dtb \
> -diff --git a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi  
> b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
> -new file mode 100644
> -index 0000000..7d7575f
> + 	at91-sama5d2_xplained.dtb \
> + 	at91-sama5d3_xplained.dtb \
> + 	sama5d31ek.dtb \
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
>  @@ -0,0 +1,175 @@
> @@ -209,9 +202,6 @@ index 0000000..7d7575f
>  +		};
>  +	};
>  +};
> -diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts  
> b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
> -new file mode 100644
> -index 0000000..fd12b68
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
>  @@ -0,0 +1,53 @@
> @@ -268,9 +258,6 @@ index 0000000..fd12b68
>  +	model = "Atmel SAMA5D27 SOM1 EK";
>  +	compatible = "atmel,sama5d27-som1-ek", "atmel,sama5d27-som1",  
> "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";
>  +};
> -diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi  
> b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
> -new file mode 100644
> -index 0000000..7201a8e
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
>  @@ -0,0 +1,619 @@
> @@ -893,14 +880,12 @@ index 0000000..7201a8e
>  +		};
>  +	};
>  +};
> -diff --git a/include/dt-bindings/pinctrl/at91.h  
> b/include/dt-bindings/pinctrl/at91.h
> -index bbca3d0..88eb7d0 100644
>  --- a/include/dt-bindings/pinctrl/at91.h
>  +++ b/include/dt-bindings/pinctrl/at91.h
>  @@ -37,4 +37,8 @@
>   #define AT91_PERIPH_C		3
>   #define AT91_PERIPH_D		4
> -
> +
>  +#define ATMEL_PIO_DRVSTR_LO	1
>  +#define ATMEL_PIO_DRVSTR_ME	2
>  +#define ATMEL_PIO_DRVSTR_HI	3
> diff --git  
> a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch  
> b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
> index 3da9955ee7d6..e33840cfd8b2 100644
> ---  
> a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
> +++  
> b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
> @@ -1,18 +1,13 @@
> -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> -index c88e426..cb47e80 100644
>  --- a/arch/arm/boot/dts/Makefile
>  +++ b/arch/arm/boot/dts/Makefile
>  @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
> -	wb45n.dtb
> + 	wb45n.dtb
>   dtb-$(CONFIG_SOC_SAM_V7) += \
> -	at91-kizbox2.dtb \
> + 	at91-kizbox2.dtb \
>  +	at91-sama5d2_ptc_ek.dtb \
> -	at91-sama5d27_som1_ek.dtb \
> -	at91-sama5d2_xplained.dtb \
> -	at91-sama5d3_xplained.dtb \
> -diff --git a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts  
> b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
> -new file mode 100644
> -index 0000000..257eaac
> + 	at91-sama5d27_som1_ek.dtb \
> + 	at91-sama5d2_xplained.dtb \
> + 	at91-sama5d3_xplained.dtb \
>  --- /dev/null
>  +++ b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
>  @@ -0,0 +1,422 @@
> @@ -438,5 +433,3 @@ index 0000000..257eaac
>  +		};
>  +	};
>  +};
> ---
> -2.7.4
> diff --git a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch  
> b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
> index ac729ee48e0b..f42108702d56 100644
> --- a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
> +++ b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
> @@ -202,7 +202,7 @@
>  +subsys_initcall(ar5312_gpio_init);
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -167,6 +167,7 @@ config ATH25
> +@@ -168,6 +168,7 @@ config ATH25
>   	select CEVT_R4K
>   	select CSRC_R4K
>   	select DMA_NONCOHERENT
> diff --git  
> a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch  
> b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> index 3006fefc2056..34e776466809 100644
> --- a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> +++ b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> @@ -696,7 +696,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>   }
>  --- a/drivers/usb/core/hub.c
>  +++ b/drivers/usb/core/hub.c
> -@@ -5054,7 +5054,7 @@ static void port_event(struct usb_hub *h
> +@@ -5062,7 +5062,7 @@ static void port_event(struct usb_hub *h
>   	if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
>   		u16 status = 0, unused;
>
> diff --git  
> a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch  
> b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
> index c0967b463932..71118e26cc8c 100644
> ---  
> a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
> +++  
> b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
> @@ -22,7 +22,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
>
>  --- a/drivers/gpu/drm/vc4/vc4_bo.c
>  +++ b/drivers/gpu/drm/vc4/vc4_bo.c
> -@@ -208,21 +208,22 @@ struct drm_gem_object *vc4_create_object
> +@@ -209,21 +209,22 @@ struct drm_gem_object *vc4_create_object
>   }
>
>   struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
> diff --git  
> a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch  
> b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
> index 3fed370bee5c..52d0de3914e4 100644
> ---  
> a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
> +++  
> b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
> @@ -17,7 +17,7 @@ Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
>
>  --- a/drivers/gpu/drm/vc4/vc4_bo.c
>  +++ b/drivers/gpu/drm/vc4/vc4_bo.c
> -@@ -322,6 +322,14 @@ void vc4_free_object(struct drm_gem_obje
> +@@ -323,6 +323,14 @@ void vc4_free_object(struct drm_gem_obje
>   		goto out;
>   	}
>
> diff --git  
> a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch  
> b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
> index 59e9933e5ff0..c193c72ab3e2 100644
> ---  
> a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
> +++  
> b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
> @@ -16,7 +16,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -271,6 +271,7 @@ config BCM63XX
> +@@ -272,6 +272,7 @@ config BCM63XX
>   	select GPIOLIB
>   	select HAVE_CLK
>   	select MIPS_L1_CACHE_SHIFT_4
> diff --git  
> a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch  
> b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
> index 6a93398c725d..5ae903b9373c 100644
> ---  
> a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
> +++  
> b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
> @@ -42,7 +42,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>
>  --- a/drivers/mtd/mtdpart.c
>  +++ b/drivers/mtd/mtdpart.c
> -@@ -953,8 +953,7 @@ int add_mtd_partitions(struct mtd_info *
> +@@ -940,8 +940,7 @@ int add_mtd_partitions(struct mtd_info *
>   		add_mtd_device(&slave->mtd);
>   		mtd_partition_split(master, slave);
>   		mtd_add_partition_attrs(slave);
> @@ -52,7 +52,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>
>   		cur_offset = slave->offset + slave->mtd.size;
>   	}
> -@@ -1136,7 +1135,9 @@ static int mtd_part_of_parse(struct mtd_
> +@@ -1123,7 +1122,9 @@ static int mtd_part_of_parse(struct mtd_
>   	const char *fixed = "fixed-partitions";
>   	int ret, err = 0;
>
> @@ -63,7 +63,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
>   	of_property_for_each_string(np, "compatible", prop, compat) {
>   		parser = mtd_part_get_compatible_parser(compat);
>   		if (!parser)
> -@@ -1208,8 +1209,12 @@ int parse_mtd_partitions(struct mtd_info
> +@@ -1192,8 +1193,12 @@ int parse_mtd_partitions(struct mtd_info
>   			types = types_of;
>   	}
>
> diff --git  
> a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch  
> b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
> index 0c4d034c0da8..ee0d4d657ade 100644
> ---  
> a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
> +++  
> b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
> @@ -14,7 +14,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -264,6 +264,9 @@ config BCM63XX
> +@@ -265,6 +265,9 @@ config BCM63XX
>   	select SYNC_R4K
>   	select DMA_NONCOHERENT
>   	select IRQ_MIPS_CPU
> diff --git a/target/linux/generic/hack-4.9/220-gc_sections.patch  
> b/target/linux/generic/hack-4.9/220-gc_sections.patch
> index 02e36b664ea3..40e4905db299 100644
> --- a/target/linux/generic/hack-4.9/220-gc_sections.patch
> +++ b/target/linux/generic/hack-4.9/220-gc_sections.patch
> @@ -261,7 +261,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
>   #define TRACE_SYSCALLS()
>  @@ -172,7 +172,7 @@
>   #ifdef CONFIG_SERIAL_EARLYCON
> - #define EARLYCON_TABLE() STRUCT_ALIGN();			\
> + #define EARLYCON_TABLE() . = ALIGN(8);				\
>   			 VMLINUX_SYMBOL(__earlycon_table) = .;	\
>  -			 *(__earlycon_table)			\
>  +			 KEEP(*(__earlycon_table))		\
> diff --git  
> a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch  
> b/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
> index 7c3e38efcfa5..96ae77ba09bf 100644
> --- a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
> +++ b/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
> @@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -1155,6 +1155,10 @@ config SYNC_R4K
> +@@ -1156,6 +1156,10 @@ config SYNC_R4K
>   config MIPS_MACHINE
>   	def_bool n
>
> diff --git  
> a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch  
> b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
> index 3ec5d7518ab0..8403382de78b 100644
> ---  
> a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
> +++  
> b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
> @@ -49,7 +49,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
>
>  --- a/drivers/net/usb/qmi_wwan.c
>  +++ b/drivers/net/usb/qmi_wwan.c
> -@@ -809,6 +809,9 @@ static const struct usb_device_id produc
> +@@ -810,6 +810,9 @@ static const struct usb_device_id produc
>   	{QMI_FIXED_INTF(0x0846, 0x68a2, 8)},
>   	{QMI_FIXED_INTF(0x12d1, 0x140c, 1)},	/* Huawei E173 */
>   	{QMI_FIXED_INTF(0x12d1, 0x14ac, 1)},	/* Huawei E1820 */
> diff --git  
> a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch  
> b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
> index 9d9bb4ce1d53..2a41a6a95fba 100644
> ---  
> a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
> +++  
> b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
> @@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
>
>  --- a/drivers/net/usb/qmi_wwan.c
>  +++ b/drivers/net/usb/qmi_wwan.c
> -@@ -888,6 +888,7 @@ static const struct usb_device_id produc
> +@@ -889,6 +889,7 @@ static const struct usb_device_id produc
>   	{QMI_FIXED_INTF(0x19d2, 0x2002, 4)},	/* ZTE (Vodafone) K3765-Z */
>   	{QMI_FIXED_INTF(0x2001, 0x7e19, 4)},	/* D-Link DWM-221 B1 */
>   	{QMI_FIXED_INTF(0x2001, 0x7e35, 4)},	/* D-Link DWM-222 */
> diff --git  
> a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch  
> b/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
> index cd58eb12e811..d7a3effa4cbb 100644
> --- a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
> +++ b/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
> @@ -9,7 +9,7 @@ Acked-by: Rob Landley <rob@landley.net>
>  ---
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -1064,9 +1064,6 @@ config FW_ARC
> +@@ -1065,9 +1065,6 @@ config FW_ARC
>   config ARCH_MAY_HAVE_PC_FDC
>   	bool
>
> @@ -19,7 +19,7 @@ Acked-by: Rob Landley <rob@landley.net>
>   config CEVT_BCM1480
>   	bool
>
> -@@ -2963,6 +2960,18 @@ choice
> +@@ -2964,6 +2961,18 @@ choice
>   		bool "Extend builtin kernel arguments with bootloader arguments"
>   endchoice
>
> diff --git  
> a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch  
> b/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
> index a2ec0760fe1c..5707f90becd1 100644
> --- a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
> +++ b/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
> @@ -24,7 +24,7 @@ v2: incorporated changes suggested by Jonas Gorski
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -2887,6 +2887,20 @@ config MIPS_O32_FP64_SUPPORT
> +@@ -2888,6 +2888,20 @@ config MIPS_O32_FP64_SUPPORT
>
>   	  If unsure, say N.
>
> diff --git  
> a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch  
> b/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
> index 5b237a6d2391..393046cf263d 100644
> ---  
> a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
> +++  
> b/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
> @@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -213,6 +213,7 @@ config BMIPS_GENERIC
> +@@ -214,6 +214,7 @@ config BMIPS_GENERIC
>   	select BRCMSTB_L2_IRQ
>   	select IRQ_MIPS_CPU
>   	select DMA_NONCOHERENT
> @@ -22,7 +22,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	select SYS_SUPPORTS_32BIT_KERNEL
>   	select SYS_SUPPORTS_LITTLE_ENDIAN
>   	select SYS_SUPPORTS_BIG_ENDIAN
> -@@ -338,6 +339,7 @@ config MACH_JAZZ
> +@@ -339,6 +340,7 @@ config MACH_JAZZ
>   	select CSRC_R4K
>   	select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN
>   	select GENERIC_ISA_DMA
> @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	select HAVE_PCSPKR_PLATFORM
>   	select IRQ_MIPS_CPU
>   	select I8253
> -@@ -1125,6 +1127,9 @@ config DMA_NONCOHERENT
> +@@ -1126,6 +1128,9 @@ config DMA_NONCOHERENT
>   	bool
>   	select NEED_DMA_MAP_STATE
>
> @@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   config NEED_DMA_MAP_STATE
>   	bool
>
> -@@ -1649,6 +1654,7 @@ config CPU_R10000
> +@@ -1650,6 +1655,7 @@ config CPU_R10000
>   	select CPU_SUPPORTS_64BIT_KERNEL
>   	select CPU_SUPPORTS_HIGHMEM
>   	select CPU_SUPPORTS_HUGEPAGES
> @@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	help
>   	  MIPS Technologies R10000-series processors.
>
> -@@ -1894,9 +1900,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
> +@@ -1895,9 +1901,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
>   	bool
>
>   config SYS_HAS_CPU_MIPS32_R5
> @@ -60,7 +60,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	bool
>
>   config SYS_HAS_CPU_MIPS64_R1
> -@@ -1906,6 +1914,7 @@ config SYS_HAS_CPU_MIPS64_R2
> +@@ -1907,6 +1915,7 @@ config SYS_HAS_CPU_MIPS64_R2
>   	bool
>
>   config SYS_HAS_CPU_MIPS64_R6
> diff --git  
> a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch  
> b/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
> index c1b0d4f16b89..905675e50c51 100644
> ---  
> a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
> +++  
> b/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
> @@ -7,7 +7,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua>
>   1 file changed, 1 insertion(+)
>  --- a/drivers/mtd/chips/cfi_cmdset_0002.c
>  +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
> -@@ -1828,6 +1828,7 @@ static int __xipram do_write_buffer(stru
> +@@ -1829,6 +1829,7 @@ static int __xipram do_write_buffer(stru
>
>   	/* Write Buffer Load */
>   	map_write(map, CMD(0x25), cmd_adr);
> diff --git  
> a/target/linux/generic/pending-4.9/630-packet_socket_type.patch  
> b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
> index 092011d0ec60..08d730ac31ed 100644
> --- a/target/linux/generic/pending-4.9/630-packet_socket_type.patch
> +++ b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
> @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   #define PACKET_FANOUT_LB		1
>  --- a/net/packet/af_packet.c
>  +++ b/net/packet/af_packet.c
> -@@ -1773,6 +1773,7 @@ static int packet_rcv_spkt(struct sk_buf
> +@@ -1780,6 +1780,7 @@ static int packet_rcv_spkt(struct sk_buf
>   {
>   	struct sock *sk;
>   	struct sockaddr_pkt *spkt;
> @@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>
>   	/*
>   	 *	When we registered the protocol we saved the socket in the data
> -@@ -1780,6 +1781,7 @@ static int packet_rcv_spkt(struct sk_buf
> +@@ -1787,6 +1788,7 @@ static int packet_rcv_spkt(struct sk_buf
>   	 */
>
>   	sk = pt->af_packet_priv;
> @@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>
>   	/*
>   	 *	Yank back the headers [hope the device set this
> -@@ -1792,7 +1794,7 @@ static int packet_rcv_spkt(struct sk_buf
> +@@ -1799,7 +1801,7 @@ static int packet_rcv_spkt(struct sk_buf
>   	 *	so that this procedure is noop.
>   	 */
>
> @@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   		goto out;
>
>   	if (!net_eq(dev_net(dev), sock_net(sk)))
> -@@ -2030,12 +2032,12 @@ static int packet_rcv(struct sk_buff *sk
> +@@ -2037,12 +2039,12 @@ static int packet_rcv(struct sk_buff *sk
>   	unsigned int snaplen, res;
>   	bool is_drop_n_account = false;
>
> @@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	if (!net_eq(dev_net(dev), sock_net(sk)))
>   		goto drop;
>
> -@@ -2161,12 +2163,12 @@ static int tpacket_rcv(struct sk_buff *s
> +@@ -2168,12 +2170,12 @@ static int tpacket_rcv(struct sk_buff *s
>   	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
>   	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
>
> @@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	if (!net_eq(dev_net(dev), sock_net(sk)))
>   		goto drop;
>
> -@@ -3251,6 +3253,7 @@ static int packet_create(struct net *net
> +@@ -3260,6 +3262,7 @@ static int packet_create(struct net *net
>   	mutex_init(&po->pg_vec_lock);
>   	po->rollover = NULL;
>   	po->prot_hook.func = packet_rcv;
> @@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>
>   	if (sock->type == SOCK_PACKET)
>   		po->prot_hook.func = packet_rcv_spkt;
> -@@ -3837,6 +3840,16 @@ packet_setsockopt(struct socket *sock, i
> +@@ -3873,6 +3876,16 @@ packet_setsockopt(struct socket *sock, i
>   		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
>   		return 0;
>   	}
> @@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   	default:
>   		return -ENOPROTOOPT;
>   	}
> -@@ -3889,6 +3902,13 @@ static int packet_getsockopt(struct sock
> +@@ -3925,6 +3938,13 @@ static int packet_getsockopt(struct sock
>   	case PACKET_VNET_HDR:
>   		val = po->has_vnet_hdr;
>   		break;
> diff --git  
> a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch  
> b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> index 14715718cbf4..2cebf55a447b 100644
> ---  
> a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> +++  
> b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> @@ -171,7 +171,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   /*
>    *	Allocate a dst for local (unicast / anycast) address.
>    */
> -@@ -2848,7 +2881,8 @@ static int rtm_to_fib6_config(struct sk_
> +@@ -2850,7 +2883,8 @@ static int rtm_to_fib6_config(struct sk_
>   	if (rtm->rtm_type == RTN_UNREACHABLE ||
>   	    rtm->rtm_type == RTN_BLACKHOLE ||
>   	    rtm->rtm_type == RTN_PROHIBIT ||
> @@ -181,7 +181,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   		cfg->fc_flags |= RTF_REJECT;
>
>   	if (rtm->rtm_type == RTN_LOCAL)
> -@@ -3220,6 +3254,9 @@ static int rt6_fill_node(struct net *net
> +@@ -3222,6 +3256,9 @@ static int rt6_fill_node(struct net *net
>   		case -EACCES:
>   			rtm->rtm_type = RTN_PROHIBIT;
>   			break;
> @@ -191,7 +191,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   		case -EAGAIN:
>   			rtm->rtm_type = RTN_THROW;
>   			break;
> -@@ -3496,6 +3533,8 @@ static int ip6_route_dev_notify(struct n
> +@@ -3498,6 +3535,8 @@ static int ip6_route_dev_notify(struct n
>   #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>   		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
>   		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
> @@ -200,7 +200,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
>   		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
>   #endif
> -@@ -3507,6 +3546,7 @@ static int ip6_route_dev_notify(struct n
> +@@ -3509,6 +3548,7 @@ static int ip6_route_dev_notify(struct n
>   		in6_dev_put(net->ipv6.ip6_null_entry->rt6i_idev);
>   #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>   		in6_dev_put(net->ipv6.ip6_prohibit_entry->rt6i_idev);
> @@ -208,7 +208,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   		in6_dev_put(net->ipv6.ip6_blk_hole_entry->rt6i_idev);
>   #endif
>   	}
> -@@ -3722,6 +3762,17 @@ static int __net_init ip6_route_net_init
> +@@ -3724,6 +3764,17 @@ static int __net_init ip6_route_net_init
>   	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
>   	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
>   			 ip6_template_metrics, true);
> @@ -226,7 +226,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   #endif
>
>   	net->ipv6.sysctl.flush_delay = 0;
> -@@ -3740,6 +3791,8 @@ out:
> +@@ -3742,6 +3793,8 @@ out:
>   	return ret;
>
>   #ifdef CONFIG_IPV6_MULTIPLE_TABLES
> @@ -235,7 +235,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   out_ip6_prohibit_entry:
>   	kfree(net->ipv6.ip6_prohibit_entry);
>   out_ip6_null_entry:
> -@@ -3757,6 +3810,7 @@ static void __net_exit ip6_route_net_exi
> +@@ -3759,6 +3812,7 @@ static void __net_exit ip6_route_net_exi
>   #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>   	kfree(net->ipv6.ip6_prohibit_entry);
>   	kfree(net->ipv6.ip6_blk_hole_entry);
> @@ -243,7 +243,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>   #endif
>   	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
>   }
> -@@ -3830,6 +3884,9 @@ void __init ip6_route_init_special_entri
> +@@ -3832,6 +3886,9 @@ void __init ip6_route_init_special_entri
>   	init_net.ipv6.ip6_prohibit_entry->rt6i_idev =  
> in6_dev_get(init_net.loopback_dev);
>   	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
>   	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev =  
> in6_dev_get(init_net.loopback_dev);
> diff --git  
> a/target/linux/generic/pending-4.9/834-ledtrig-libata.patch  
> b/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
> index 197e01a27422..913957370b54 100644
> --- a/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
> +++ b/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
> @@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
>   /**
>    *	ata_build_rw_tf - Build ATA taskfile for given read/write request
>    *	@tf: Target ATA taskfile
> -@@ -4985,6 +4998,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
> +@@ -4988,6 +5001,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
>   		if (tag < 0)
>   			return NULL;
>   	}
> @@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
>
>   	qc = __ata_qc_from_tag(ap, tag);
>   	qc->tag = tag;
> -@@ -5886,6 +5902,9 @@ struct ata_port *ata_port_alloc(struct a
> +@@ -5889,6 +5905,9 @@ struct ata_port *ata_port_alloc(struct a
>   	ap->stats.unhandled_irq = 1;
>   	ap->stats.idle_irq = 1;
>   #endif
> @@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
>   	ata_sff_port_init(ap);
>
>   	return ap;
> -@@ -5907,6 +5926,12 @@ static void ata_host_release(struct devi
> +@@ -5910,6 +5929,12 @@ static void ata_host_release(struct devi
>
>   		kfree(ap->pmp_link);
>   		kfree(ap->slave_link);
> @@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
>   		kfree(ap);
>   		host->ports[i] = NULL;
>   	}
> -@@ -6353,7 +6378,23 @@ int ata_host_register(struct ata_host *h
> +@@ -6356,7 +6381,23 @@ int ata_host_register(struct ata_host *h
>   		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
>   		host->ports[i]->local_port_no = i + 1;
>   	}
> diff --git  
> a/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch  
> b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
> index 1cb51a2ed53a..6cb745ee3329 100644
> --- a/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
> +++ b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
> @@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>
>  --- a/include/linux/serial_core.h
>  +++ b/include/linux/serial_core.h
> -@@ -448,7 +448,7 @@ extern void uart_handle_cts_change(struc
> +@@ -455,7 +455,7 @@ extern void uart_handle_cts_change(struc
>   extern void uart_insert_char(struct uart_port *port, unsigned int status,
>   		 unsigned int overrun, unsigned int ch, unsigned int flag);
>
> @@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
>   {
>  --- a/lib/Kconfig.debug
>  +++ b/lib/Kconfig.debug
> -@@ -410,6 +410,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
> +@@ -396,6 +396,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
>   	  This may be set to 1 or 0 to enable or disable them all, or
>   	  to a bitmask as described in Documentation/sysrq.txt.
>
> diff --git  
> a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch  
> b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
> index 2b4db053c25b..9da213911e24 100644
> --- a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
> +++ b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
> @@ -1,6 +1,6 @@
>  --- a/drivers/char/random.c
>  +++ b/drivers/char/random.c
> -@@ -278,11 +278,11 @@
> +@@ -279,11 +279,11 @@
>   /*
>    * Configuration information
>    */
> diff --git  
> a/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch  
> b/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch
> index 3f3621b0d0d7..80688a4c0a29 100644
> --- a/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch
> +++ b/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch
> @@ -10,7 +10,7 @@
>
>   	/* Get the HEAD */
>   	skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node);
> -@@ -1222,6 +1225,10 @@ int pskb_expand_head(struct sk_buff *skb
> +@@ -1223,6 +1226,10 @@ int pskb_expand_head(struct sk_buff *skb
>   	if (skb_shared(skb))
>   		BUG();
>
> diff --git a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch  
> b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
> index 7b14d9e5a906..7d6e4b808989 100644
> --- a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
> +++ b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
> @@ -1,6 +1,6 @@
>  --- a/arch/mips/Kconfig
>  +++ b/arch/mips/Kconfig
> -@@ -2320,6 +2320,12 @@ config MIPS_VPE_LOADER
> +@@ -2321,6 +2321,12 @@ config MIPS_VPE_LOADER
>   	  Includes a loader for loading an elf relocatable object
>   	  onto another VPE and running it.
>
> diff --git  
> a/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch  
> b/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
> index a284d8bbd47a..026fce7dc940 100644
> ---  
> a/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
> +++  
> b/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
> @@ -477,7 +477,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>   /* Make sure a field is enclosed inside headers_start/headers_end  
> section */
>   #define CHECK_SKB_FIELD(field) \
>   	BUILD_BUG_ON(offsetof(struct sk_buff, field) <		\
> -@@ -1073,7 +1099,7 @@ static void skb_headers_offset_update(st
> +@@ -1074,7 +1100,7 @@ static void skb_headers_offset_update(st
>   	skb->inner_mac_header += off;
>   }
>
> @@ -486,7 +486,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>   {
>   	__copy_skb_header(new, old);
>
> -@@ -1081,6 +1107,7 @@ static void copy_skb_header(struct sk_bu
> +@@ -1082,6 +1108,7 @@ static void copy_skb_header(struct sk_bu
>   	skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs;
>   	skb_shinfo(new)->gso_type = skb_shinfo(old)->gso_type;
>   }
> diff --git  
> a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch  
> b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
> index c01db458a5f2..f8917291ee25 100644
> --- a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
> +++ b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
> @@ -44,15 +44,15 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>
>  --- a/drivers/net/usb/cdc_ether.c
>  +++ b/drivers/net/usb/cdc_ether.c
> -@@ -532,6 +532,7 @@ static const struct driver_info wwan_inf
> - #define LENOVO_VENDOR_ID	0x17ef
> +@@ -533,6 +533,7 @@ static const struct driver_info wwan_inf
> + #define LINKSYS_VENDOR_ID	0x13b1
>   #define NVIDIA_VENDOR_ID	0x0955
>   #define HP_VENDOR_ID		0x03f0
>  +#define TPLINK_VENDOR_ID	0x2357
>
>   static const struct usb_device_id	products[] = {
>   /* BLACKLIST !!
> -@@ -732,6 +733,13 @@ static const struct usb_device_id	produc
> +@@ -742,6 +743,13 @@ static const struct usb_device_id	produc
>   			USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
>   	.driver_info = 0,
>   },
> @@ -68,15 +68,15 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>    *
>  --- a/drivers/net/usb/r8152.c
>  +++ b/drivers/net/usb/r8152.c
> -@@ -520,6 +520,7 @@ enum rtl8152_flags {
> - #define VENDOR_ID_SAMSUNG		0x04e8
> +@@ -521,6 +521,7 @@ enum rtl8152_flags {
>   #define VENDOR_ID_LENOVO		0x17ef
> + #define VENDOR_ID_LINKSYS		0x13b1
>   #define VENDOR_ID_NVIDIA		0x0955
>  +#define VENDOR_ID_TPLINK		0x2357
>
>   #define MCU_TYPE_PLA			0x0100
>   #define MCU_TYPE_USB			0x0000
> -@@ -1816,6 +1817,10 @@ static int rx_bottom(struct r8152 *tp, i
> +@@ -1817,6 +1818,10 @@ static int rx_bottom(struct r8152 *tp, i
>   			unsigned int pkt_len;
>   			struct sk_buff *skb;
>
> @@ -87,9 +87,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>   			pkt_len = le32_to_cpu(rx_desc->opts1) & RX_LEN_MASK;
>   			if (pkt_len < ETH_ZLEN)
>   				break;
> -@@ -4507,6 +4512,7 @@ static struct usb_device_id rtl8152_tabl
> - 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x7205)},
> +@@ -4509,6 +4514,7 @@ static struct usb_device_id rtl8152_tabl
>   	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x304f)},
> + 	{REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)},
>   	{REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA,  0x09ff)},
>  +	{REALTEK_USB_DEVICE(VENDOR_ID_TPLINK,  0x0601)},
>   	{}
> @@ -156,7 +156,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
>   	int ret;
>  --- a/drivers/usb/core/hub.c
>  +++ b/drivers/usb/core/hub.c
> -@@ -4415,6 +4415,14 @@ hub_port_init(struct usb_hub *hub, struc
> +@@ -4423,6 +4423,14 @@ hub_port_init(struct usb_hub *hub, struc
>   	else
>   		speed = usb_speed_string(udev->speed);
>
> diff --git  
> a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch  
> b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
> index c70ac1bb9d52..55976c32b16c 100644
> --- a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
> +++ b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
> @@ -17,7 +17,7 @@
>   	help
>  --- a/drivers/of/fdt.c
>  +++ b/drivers/of/fdt.c
> -@@ -1079,6 +1079,17 @@ int __init early_init_dt_scan_chosen(uns
> +@@ -1082,6 +1082,17 @@ int __init early_init_dt_scan_chosen(uns
>   	if (p != NULL && l > 0)
>   		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
>
> diff --git  
> a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch  
> b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
> index aa6b813daf74..3d9bbb229553 100644
> --- a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
> +++ b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
> @@ -3095,7 +3095,7 @@
>
>   	if (priv->hw->mode->set_16kib_bfsize)
>   		bfsize = priv->hw->mode->set_16kib_bfsize(dev->mtu);
> -@@ -1033,235 +1234,409 @@ static int init_dma_desc_rings(struct ne
> +@@ -1033,257 +1234,516 @@ static int init_dma_desc_rings(struct ne
>
>   	priv->dma_buf_sz = bfsize;
>
> @@ -3351,17 +3351,10 @@
>  -						 priv->tx_skbuff_dma[i].buf,
>  -						 priv->tx_skbuff_dma[i].len,
>  -						 DMA_TO_DEVICE);
> --		}
>  +	for (i = 0; i < DMA_TX_SIZE; i++)
>  +		stmmac_free_tx_buffer(priv, queue, i);
>  +}
> -
> --		if (priv->tx_skbuff[i]) {
> --			dev_kfree_skb_any(priv->tx_skbuff[i]);
> --			priv->tx_skbuff[i] = NULL;
> --			priv->tx_skbuff_dma[i].buf = 0;
> --			priv->tx_skbuff_dma[i].map_as_page = false;
> --		}
> ++
>  +/**
>  + * free_dma_rx_desc_resources - free RX dma desc resources
>  + * @priv: private structure
> @@ -3390,11 +3383,10 @@
>  +
>  +		kfree(rx_q->rx_skbuff_dma);
>  +		kfree(rx_q->rx_skbuff);
> - 	}
> - }
> -
> - /**
> -- * alloc_dma_desc_resources - alloc TX/RX resources.
> ++	}
> ++}
> ++
> ++/**
>  + * free_dma_tx_desc_resources - free TX dma desc resources
>  + * @priv: private structure
>  + */
> @@ -3427,90 +3419,36 @@
>  +
>  +/**
>  + * alloc_dma_rx_desc_resources - alloc RX resources.
> -  * @priv: private structure
> -  * Description: according to which descriptor can be used (extend or basic)
> -  * this function allocates the resources for TX and RX paths. In case of
> -  * reception, for example, it pre-allocated the RX socket buffer  
> in order to
> -  * allow zero-copy mechanism.
> -  */
> --static int alloc_dma_desc_resources(struct stmmac_priv *priv)
> ++ * @priv: private structure
> ++ * Description: according to which descriptor can be used (extend or basic)
> ++ * this function allocates the resources for TX and RX paths. In case of
> ++ * reception, for example, it pre-allocated the RX socket buffer  
> in order to
> ++ * allow zero-copy mechanism.
> ++ */
>  +static int alloc_dma_rx_desc_resources(struct stmmac_priv *priv)
> - {
> ++{
>  +	u32 rx_count = priv->plat->rx_queues_to_use;
> - 	int ret = -ENOMEM;
> ++	int ret = -ENOMEM;
>  +	u32 queue;
> -
> --	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
> --					    GFP_KERNEL);
> --	if (!priv->rx_skbuff_dma)
> --		return -ENOMEM;
> ++
>  +	/* RX queues buffers and DMA */
>  +	for (queue = 0; queue < rx_count; queue++) {
>  +		struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
> -
> --	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
> --					GFP_KERNEL);
> --	if (!priv->rx_skbuff)
> --		goto err_rx_skbuff;
> --
> --	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
> --					    sizeof(*priv->tx_skbuff_dma),
> --					    GFP_KERNEL);
> --	if (!priv->tx_skbuff_dma)
> --		goto err_tx_skbuff_dma;
> --
> --	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
> --					GFP_KERNEL);
> --	if (!priv->tx_skbuff)
> --		goto err_tx_skbuff;
> --
> --	if (priv->extend_desc) {
> --		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> --						    sizeof(struct
> --							   dma_extended_desc),
> --						    &priv->dma_rx_phy,
> --						    GFP_KERNEL);
> --		if (!priv->dma_erx)
> --			goto err_dma;
> ++
>  +		rx_q->queue_index = queue;
>  +		rx_q->priv_data = priv;
> -
> --		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> --						    sizeof(struct
> --							   dma_extended_desc),
> --						    &priv->dma_tx_phy,
> ++
>  +		rx_q->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE,
>  +						    sizeof(dma_addr_t),
> - 						    GFP_KERNEL);
> --		if (!priv->dma_etx) {
> --			dma_free_coherent(priv->device, DMA_RX_SIZE *
> --					  sizeof(struct dma_extended_desc),
> --					  priv->dma_erx, priv->dma_rx_phy);
> --			goto err_dma;
> --		}
> --	} else {
> --		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> --						   sizeof(struct dma_desc),
> --						   &priv->dma_rx_phy,
> --						   GFP_KERNEL);
> --		if (!priv->dma_rx)
> --			goto err_dma;
> ++						    GFP_KERNEL);
>  +		if (!rx_q->rx_skbuff_dma)
>  +			return -ENOMEM;
> -
> --		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> --						   sizeof(struct dma_desc),
> --						   &priv->dma_tx_phy,
> --						   GFP_KERNEL);
> --		if (!priv->dma_tx) {
> --			dma_free_coherent(priv->device, DMA_RX_SIZE *
> --					  sizeof(struct dma_desc),
> --					  priv->dma_rx, priv->dma_rx_phy);
> ++
>  +		rx_q->rx_skbuff = kmalloc_array(DMA_RX_SIZE,
>  +						sizeof(struct sk_buff *),
>  +						GFP_KERNEL);
>  +		if (!rx_q->rx_skbuff)
> - 			goto err_dma;
> ++			goto err_dma;
>  +
>  +		if (priv->extend_desc) {
>  +			rx_q->dma_erx = dma_zalloc_coherent(priv->device,
> @@ -3531,19 +3469,12 @@
>  +							   GFP_KERNEL);
>  +			if (!rx_q->dma_rx)
>  +				goto err_dma;
> - 		}
> - 	}
> -
> - 	return 0;
> -
> - err_dma:
> --	kfree(priv->tx_skbuff);
> --err_tx_skbuff:
> --	kfree(priv->tx_skbuff_dma);
> --err_tx_skbuff_dma:
> --	kfree(priv->rx_skbuff);
> --err_rx_skbuff:
> --	kfree(priv->rx_skbuff_dma);
> ++		}
> ++	}
> ++
> ++	return 0;
> ++
> ++err_dma:
>  +	free_dma_rx_desc_resources(priv);
>  +
>  +	return ret;
> @@ -3600,7 +3531,7 @@
>  +							   GFP_KERNEL);
>  +			if (!tx_q->dma_tx)
>  +				goto err_dma_buffers;
> -+		}
> + 		}
>  +	}
>  +
>  +	return 0;
> @@ -3629,85 +3560,126 @@
>  +
>  +	ret = alloc_dma_tx_desc_resources(priv);
>  +
> - 	return ret;
> - }
> -
> ++	return ret;
> ++}
> ++
>  +/**
>  + * free_dma_desc_resources - free dma desc resources
>  + * @priv: private structure
>  + */
> - static void free_dma_desc_resources(struct stmmac_priv *priv)
> - {
> --	/* Release the DMA TX/RX socket buffers */
> --	dma_free_rx_skbufs(priv);
> --	dma_free_tx_skbufs(priv);
> --
> --	/* Free DMA regions of consistent memory previously allocated */
> --	if (!priv->extend_desc) {
> --		dma_free_coherent(priv->device,
> --				  DMA_TX_SIZE * sizeof(struct dma_desc),
> --				  priv->dma_tx, priv->dma_tx_phy);
> --		dma_free_coherent(priv->device,
> --				  DMA_RX_SIZE * sizeof(struct dma_desc),
> --				  priv->dma_rx, priv->dma_rx_phy);
> --	} else {
> --		dma_free_coherent(priv->device, DMA_TX_SIZE *
> --				  sizeof(struct dma_extended_desc),
> --				  priv->dma_etx, priv->dma_tx_phy);
> --		dma_free_coherent(priv->device, DMA_RX_SIZE *
> --				  sizeof(struct dma_extended_desc),
> --				  priv->dma_erx, priv->dma_rx_phy);
> --	}
> --	kfree(priv->rx_skbuff_dma);
> --	kfree(priv->rx_skbuff);
> --	kfree(priv->tx_skbuff_dma);
> --	kfree(priv->tx_skbuff);
> ++static void free_dma_desc_resources(struct stmmac_priv *priv)
> ++{
>  +	/* Release the DMA RX socket buffers */
>  +	free_dma_rx_desc_resources(priv);
>  +
>  +	/* Release the DMA TX socket buffers */
>  +	free_dma_tx_desc_resources(priv);
> - }
> -
> - /**
> -@@ -1271,19 +1646,104 @@ static void free_dma_desc_resources(stru
> -  */
> - static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
> - {
> --	int rx_count = priv->dma_cap.number_rx_queues;
> --	int queue = 0;
> ++}
> ++
> ++/**
> ++ *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
> ++ *  @priv: driver private structure
> ++ *  Description: It is used for enabling the rx queues in the MAC
> ++ */
> ++static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
> ++{
>  +	u32 rx_queues_count = priv->plat->rx_queues_to_use;
>  +	int queue;
>  +	u8 mode;
>
> --	/* If GMAC does not have multiple queues, then this is not necessary*/
> --	if (rx_count == 1)
> --		return;
> +-		if (priv->tx_skbuff[i]) {
> +-			dev_kfree_skb_any(priv->tx_skbuff[i]);
> +-			priv->tx_skbuff[i] = NULL;
> +-			priv->tx_skbuff_dma[i].buf = 0;
> +-			priv->tx_skbuff_dma[i].map_as_page = false;
> +-		}
>  +	for (queue = 0; queue < rx_queues_count; queue++) {
>  +		mode = priv->plat->rx_queues_cfg[queue].mode_to_use;
>  +		priv->hw->mac->rx_queue_enable(priv->hw, mode, queue);
> -+	}
> -+}
> + 	}
> + }
>
> --	/**
> --	 *  If the core is synthesized with multiple rx queues / multiple
> --	 *  dma channels, then rx queues will be disabled by default.
> --	 *  For now only rx queue 0 is enabled.
> --	 */
> --	priv->hw->mac->rx_queue_enable(priv->hw, queue);
> -+/**
> + /**
> +- * alloc_dma_desc_resources - alloc TX/RX resources.
> +- * @priv: private structure
> +- * Description: according to which descriptor can be used (extend or basic)
> +- * this function allocates the resources for TX and RX paths. In case of
> +- * reception, for example, it pre-allocated the RX socket buffer  
> in order to
> +- * allow zero-copy mechanism.
>  + * stmmac_start_rx_dma - start RX DMA channel
>  + * @priv: driver private structure
>  + * @chan: RX channel index
>  + * Description:
>  + * This starts a RX DMA channel
> -+ */
> +  */
> +-static int alloc_dma_desc_resources(struct stmmac_priv *priv)
>  +static void stmmac_start_rx_dma(struct stmmac_priv *priv, u32 chan)
> -+{
> + {
> +-	int ret = -ENOMEM;
> +-
> +-	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
> +-					    GFP_KERNEL);
> +-	if (!priv->rx_skbuff_dma)
> +-		return -ENOMEM;
> +-
> +-	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
> +-					GFP_KERNEL);
> +-	if (!priv->rx_skbuff)
> +-		goto err_rx_skbuff;
> +-
> +-	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
> +-					    sizeof(*priv->tx_skbuff_dma),
> +-					    GFP_KERNEL);
> +-	if (!priv->tx_skbuff_dma)
> +-		goto err_tx_skbuff_dma;
> +-
> +-	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
> +-					GFP_KERNEL);
> +-	if (!priv->tx_skbuff)
> +-		goto err_tx_skbuff;
> +-
> +-	if (priv->extend_desc) {
> +-		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> +-						    sizeof(struct
> +-							   dma_extended_desc),
> +-						    &priv->dma_rx_phy,
> +-						    GFP_KERNEL);
> +-		if (!priv->dma_erx)
> +-			goto err_dma;
> +-
> +-		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> +-						    sizeof(struct
> +-							   dma_extended_desc),
> +-						    &priv->dma_tx_phy,
> +-						    GFP_KERNEL);
> +-		if (!priv->dma_etx) {
> +-			dma_free_coherent(priv->device, DMA_RX_SIZE *
> +-					  sizeof(struct dma_extended_desc),
> +-					  priv->dma_erx, priv->dma_rx_phy);
> +-			goto err_dma;
> +-		}
> +-	} else {
> +-		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
> +-						   sizeof(struct dma_desc),
> +-						   &priv->dma_rx_phy,
> +-						   GFP_KERNEL);
> +-		if (!priv->dma_rx)
> +-			goto err_dma;
>  +	netdev_dbg(priv->dev, "DMA RX processes started in channel %d\n", chan);
>  +	priv->hw->dma->start_rx(priv->ioaddr, chan);
>  +}
> -+
> +
> +-		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
> +-						   sizeof(struct dma_desc),
> +-						   &priv->dma_tx_phy,
> +-						   GFP_KERNEL);
> +-		if (!priv->dma_tx) {
> +-			dma_free_coherent(priv->device, DMA_RX_SIZE *
> +-					  sizeof(struct dma_desc),
> +-					  priv->dma_rx, priv->dma_rx_phy);
> +-			goto err_dma;
> +-		}
> +-	}
>  +/**
>  + * stmmac_start_tx_dma - start TX DMA channel
>  + * @priv: driver private structure
> @@ -3720,7 +3692,8 @@
>  +	netdev_dbg(priv->dev, "DMA TX processes started in channel %d\n", chan);
>  +	priv->hw->dma->start_tx(priv->ioaddr, chan);
>  +}
> -+
> +
> +-	return 0;
>  +/**
>  + * stmmac_stop_rx_dma - stop RX DMA channel
>  + * @priv: driver private structure
> @@ -3733,7 +3706,16 @@
>  +	netdev_dbg(priv->dev, "DMA RX processes stopped in channel %d\n", chan);
>  +	priv->hw->dma->stop_rx(priv->ioaddr, chan);
>  +}
> -+
> +
> +-err_dma:
> +-	kfree(priv->tx_skbuff);
> +-err_tx_skbuff:
> +-	kfree(priv->tx_skbuff_dma);
> +-err_tx_skbuff_dma:
> +-	kfree(priv->rx_skbuff);
> +-err_rx_skbuff:
> +-	kfree(priv->rx_skbuff_dma);
> +-	return ret;
>  +/**
>  + * stmmac_stop_tx_dma - stop TX DMA channel
>  + * @priv: driver private structure
> @@ -3745,8 +3727,9 @@
>  +{
>  +	netdev_dbg(priv->dev, "DMA TX processes stopped in channel %d\n", chan);
>  +	priv->hw->dma->stop_tx(priv->ioaddr, chan);
> -+}
> -+
> + }
> +
> +-static void free_dma_desc_resources(struct stmmac_priv *priv)
>  +/**
>  + * stmmac_start_all_dma - start all RX and TX DMA channels
>  + * @priv: driver private structure
> @@ -3754,7 +3737,31 @@
>  + * This starts all the RX and TX DMA channels
>  + */
>  +static void stmmac_start_all_dma(struct stmmac_priv *priv)
> -+{
> + {
> +-	/* Release the DMA TX/RX socket buffers */
> +-	dma_free_rx_skbufs(priv);
> +-	dma_free_tx_skbufs(priv);
> +-
> +-	/* Free DMA regions of consistent memory previously allocated */
> +-	if (!priv->extend_desc) {
> +-		dma_free_coherent(priv->device,
> +-				  DMA_TX_SIZE * sizeof(struct dma_desc),
> +-				  priv->dma_tx, priv->dma_tx_phy);
> +-		dma_free_coherent(priv->device,
> +-				  DMA_RX_SIZE * sizeof(struct dma_desc),
> +-				  priv->dma_rx, priv->dma_rx_phy);
> +-	} else {
> +-		dma_free_coherent(priv->device, DMA_TX_SIZE *
> +-				  sizeof(struct dma_extended_desc),
> +-				  priv->dma_etx, priv->dma_tx_phy);
> +-		dma_free_coherent(priv->device, DMA_RX_SIZE *
> +-				  sizeof(struct dma_extended_desc),
> +-				  priv->dma_erx, priv->dma_rx_phy);
> +-	}
> +-	kfree(priv->rx_skbuff_dma);
> +-	kfree(priv->rx_skbuff);
> +-	kfree(priv->tx_skbuff_dma);
> +-	kfree(priv->tx_skbuff);
>  +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
>  +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
>  +	u32 chan = 0;
> @@ -3764,23 +3771,38 @@
>  +
>  +	for (chan = 0; chan < tx_channels_count; chan++)
>  +		stmmac_start_tx_dma(priv, chan);
> -+}
> -+
> -+/**
> + }
> +
> + /**
> +- *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
> +- *  @priv: driver private structure
> +- *  Description: It is used for enabling the rx queues in the MAC
>  + * stmmac_stop_all_dma - stop all RX and TX DMA channels
>  + * @priv: driver private structure
>  + * Description:
>  + * This stops the RX and TX DMA channels
> -+ */
> +  */
> +-static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
>  +static void stmmac_stop_all_dma(struct stmmac_priv *priv)
> -+{
> + {
> +-	int rx_count = priv->dma_cap.number_rx_queues;
> +-	int queue = 0;
>  +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
>  +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
>  +	u32 chan = 0;
> -+
> +
> +-	/* If GMAC does not have multiple queues, then this is not necessary*/
> +-	if (rx_count == 1)
> +-		return;
>  +	for (chan = 0; chan < rx_channels_count; chan++)
>  +		stmmac_stop_rx_dma(priv, chan);
> -+
> +
> +-	/**
> +-	 *  If the core is synthesized with multiple rx queues / multiple
> +-	 *  dma channels, then rx queues will be disabled by default.
> +-	 *  For now only rx queue 0 is enabled.
> +-	 */
> +-	priv->hw->mac->rx_queue_enable(priv->hw, queue);
>  +	for (chan = 0; chan < tx_channels_count; chan++)
>  +		stmmac_stop_tx_dma(priv, chan);
>   }
> diff --git a/target/linux/uml/patches-4.9/101-mconsole-exec.patch  
> b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
> index 6682338f3963..ea9da8d8c3d1 100644
> --- a/target/linux/uml/patches-4.9/101-mconsole-exec.patch
> +++ b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
> @@ -123,7 +123,7 @@
>   };
>  --- a/arch/um/os-Linux/file.c
>  +++ b/arch/um/os-Linux/file.c
> -@@ -554,6 +554,8 @@ int os_create_unix_socket(const char *fi
> +@@ -555,6 +555,8 @@ int os_create_unix_socket(const char *fi
>
>   	addr.sun_family = AF_UNIX;
Michael Yartys via Lede-dev May 17, 2018, 2:27 p.m. | #2
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.
Patch fails after since Lantiq has been switched over to 4.14 (commit d7b7483343b5c7f157a2a97244ce9e60f4260e43):

error: target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch: does not exist in index
Patch failed at 0001 kernel: bump 4.9 to 4.9.100

Patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index cf84e31f7b0f..8ae596d6bc2a 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -4,13 +4,13 @@  LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .71
 LINUX_VERSION-4.4 = .121
-LINUX_VERSION-4.9 = .96
 LINUX_VERSION-4.14 = .37
+LINUX_VERSION-4.9 = .100
 
 LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
 LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
-LINUX_KERNEL_HASH-4.9.96 = 826f596eb5197f8b17304649c2990dd7b766f5c79076cae79f4261c40cea877f
 LINUX_KERNEL_HASH-4.14.37 = 8197e7ed3620713e412905430a7bf93e2048384042ffba189a66f0eeb6908e92
+LINUX_KERNEL_HASH-4.9.100 = c5bb6f3a7113e05cbaf6e48b2b485dea4f7edae5e42b3fe81c963ba63413a77c
 
 remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
 sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
diff --git a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
index 67ed3e494a0d..639f09709ba8 100644
--- a/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
+++ b/target/linux/ar7/patches-4.9/300-add-ac49x-platform.patch
@@ -37,7 +37,7 @@ 
  #define AR7_IRQ_UART0	15
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -160,7 +160,7 @@ config AR7
+@@ -161,7 +161,7 @@ config AR7
  	select HAVE_CLK
  	help
  	  Support for the Texas Instruments AR7 System-on-a-Chip
@@ -46,7 +46,7 @@ 
  
  config ATH25
  	bool "Atheros AR231x/AR531x SoC support"
-@@ -1004,6 +1004,7 @@ config MIPS_PARAVIRT
+@@ -1005,6 +1005,7 @@ config MIPS_PARAVIRT
  endchoice
  
  source "arch/mips/alchemy/Kconfig"
diff --git a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
index 415d835ee348..3a7fe99e6524 100644
--- a/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
+++ b/target/linux/ar71xx/patches-4.9/403-mtd_fix_cfi_cmdset_0002_status_check.patch
@@ -1,6 +1,6 @@ 
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1630,8 +1630,8 @@ static int __xipram do_write_oneword(str
+@@ -1631,8 +1631,8 @@ static int __xipram do_write_oneword(str
  			break;
  		}
  
@@ -11,7 +11,7 @@ 
  
  		/* Latency issues. Drop the lock, wait a while and retry */
  		UDELAY(map, chip, adr, 1);
-@@ -1647,6 +1647,8 @@ static int __xipram do_write_oneword(str
+@@ -1648,6 +1648,8 @@ static int __xipram do_write_oneword(str
  
  		ret = -EIO;
  	}
@@ -20,7 +20,7 @@ 
  	xip_enable(map, chip, adr);
   op_done:
  	if (mode == FL_OTP_WRITE)
-@@ -2225,7 +2227,6 @@ static int cfi_amdstd_panic_write(struct
+@@ -2226,7 +2228,6 @@ static int cfi_amdstd_panic_write(struct
  	return 0;
  }
  
@@ -28,7 +28,7 @@ 
  /*
   * Handle devices with one erase region, that only implement
   * the chip erase command.
-@@ -2289,8 +2290,8 @@ static int __xipram do_erase_chip(struct
+@@ -2291,8 +2292,8 @@ static int __xipram do_erase_chip(struct
  			chip->erase_suspended = 0;
  		}
  
@@ -39,7 +39,7 @@ 
  
  		if (time_after(jiffies, timeo)) {
  			printk(KERN_WARNING "MTD %s(): software timeout\n",
-@@ -2310,6 +2311,7 @@ static int __xipram do_erase_chip(struct
+@@ -2312,6 +2313,7 @@ static int __xipram do_erase_chip(struct
  		ret = -EIO;
  	}
  
@@ -47,7 +47,7 @@ 
  	chip->state = FL_READY;
  	xip_enable(map, chip, adr);
  	DISABLE_VPP(map);
-@@ -2378,9 +2380,9 @@ static int __xipram do_erase_oneblock(st
+@@ -2381,9 +2383,9 @@ static int __xipram do_erase_oneblock(st
  			chip->erase_suspended = 0;
  		}
  
@@ -59,7 +59,7 @@ 
  		}
  
  		if (time_after(jiffies, timeo)) {
-@@ -2402,6 +2404,7 @@ static int __xipram do_erase_oneblock(st
+@@ -2405,6 +2407,7 @@ static int __xipram do_erase_oneblock(st
  		ret = -EIO;
  	}
  
diff --git a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
index 7f5b2f55acd1..25a73dcdff59 100644
--- a/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
+++ b/target/linux/ar71xx/patches-4.9/411-mtd-cfi_cmdset_0002-force-word-write.patch
@@ -35,7 +35,7 @@ 
  
  /* Atmel chips don't use the same PRI format as AMD chips */
  static void fixup_convert_atmel_pri(struct mtd_info *mtd)
-@@ -1789,6 +1793,7 @@ static int cfi_amdstd_write_words(struct
+@@ -1790,6 +1794,7 @@ static int cfi_amdstd_write_words(struct
  /*
   * FIXME: interleaved mode not tested, and probably not supported!
   */
@@ -43,7 +43,7 @@ 
  static int __xipram do_write_buffer(struct map_info *map, struct flchip *chip,
  				    unsigned long adr, const u_char *buf,
  				    int len)
-@@ -1917,7 +1922,6 @@ static int __xipram do_write_buffer(stru
+@@ -1918,7 +1923,6 @@ static int __xipram do_write_buffer(stru
  	return ret;
  }
  
@@ -51,7 +51,7 @@ 
  static int cfi_amdstd_write_buffers(struct mtd_info *mtd, loff_t to, size_t len,
  				    size_t *retlen, const u_char *buf)
  {
-@@ -1992,6 +1996,7 @@ static int cfi_amdstd_write_buffers(stru
+@@ -1993,6 +1997,7 @@ static int cfi_amdstd_write_buffers(stru
  
  	return 0;
  }
diff --git a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
index d6a9276c3251..301422a7d8a1 100644
--- a/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
+++ b/target/linux/ar71xx/patches-4.9/500-MIPS-fw-myloader.patch
@@ -10,7 +10,7 @@ 
  
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1149,6 +1149,9 @@ config MIPS_MSC
+@@ -1150,6 +1150,9 @@ config MIPS_MSC
  config MIPS_NILE4
  	bool
  
diff --git a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
index c0b5459e4578..89dd32a7c10c 100644
--- a/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
+++ b/target/linux/ar71xx/patches-4.9/604-MIPS-ath79-no-of.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -195,7 +195,6 @@ config ATH79
+@@ -196,7 +196,6 @@ config ATH79
  	select SYS_SUPPORTS_BIG_ENDIAN
  	select SYS_SUPPORTS_MIPS16
  	select SYS_SUPPORTS_ZBOOT_UART_PROM
diff --git a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
index 1a3945eb4a39..20c69f39ed1e 100644
--- a/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
+++ b/target/linux/at91/patches-4.9/104-ARM-at91-build-dtb-for-sama5d27-SOM1-Ek.patch
@@ -1,5 +1,3 @@ 
-diff --git a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
-index 61ac757..9820227 100644
 --- a/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
 +++ b/Documentation/devicetree/bindings/pinctrl/atmel,at91-pio4-pinctrl.txt
 @@ -35,7 +35,12 @@ right representation of the pin.
@@ -13,24 +11,19 @@  index 61ac757..9820227 100644
 +ATMEL_PIO_DRVSTR_LO, ATMEL_PIO_DRVSTR_ME, ATMEL_PIO_DRVSTR_HI. The current
 +depends on VDDIOP. You can find the details in the DC Characteristics table
 +from the datasheet.
-
+ 
  Example:
-
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index 1218005..c88e426 100644
+ 
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
 @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
-	wb45n.dtb
+ 	wb45n.dtb
  dtb-$(CONFIG_SOC_SAM_V7) += \
-	at91-kizbox2.dtb \
+ 	at91-kizbox2.dtb \
 +	at91-sama5d27_som1_ek.dtb \
-	at91-sama5d2_xplained.dtb \
-	at91-sama5d3_xplained.dtb \
-	sama5d31ek.dtb \
-diff --git a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
-new file mode 100644
-index 0000000..7d7575f
+ 	at91-sama5d2_xplained.dtb \
+ 	at91-sama5d3_xplained.dtb \
+ 	sama5d31ek.dtb \
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
 @@ -0,0 +1,175 @@
@@ -209,9 +202,6 @@  index 0000000..7d7575f
 +		};
 +	};
 +};
-diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
-new file mode 100644
-index 0000000..fd12b68
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
 @@ -0,0 +1,53 @@
@@ -268,9 +258,6 @@  index 0000000..fd12b68
 +	model = "Atmel SAMA5D27 SOM1 EK";
 +	compatible = "atmel,sama5d27-som1-ek", "atmel,sama5d27-som1", "atmel,sama5d27", "atmel,sama5d2", "atmel,sama5";
 +};
-diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
-new file mode 100644
-index 0000000..7201a8e
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek_common.dtsi
 @@ -0,0 +1,619 @@
@@ -893,14 +880,12 @@  index 0000000..7201a8e
 +		};
 +	};
 +};
-diff --git a/include/dt-bindings/pinctrl/at91.h b/include/dt-bindings/pinctrl/at91.h
-index bbca3d0..88eb7d0 100644
 --- a/include/dt-bindings/pinctrl/at91.h
 +++ b/include/dt-bindings/pinctrl/at91.h
 @@ -37,4 +37,8 @@
  #define AT91_PERIPH_C		3
  #define AT91_PERIPH_D		4
-
+ 
 +#define ATMEL_PIO_DRVSTR_LO	1
 +#define ATMEL_PIO_DRVSTR_ME	2
 +#define ATMEL_PIO_DRVSTR_HI	3
diff --git a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
index 3da9955ee7d6..e33840cfd8b2 100644
--- a/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
+++ b/target/linux/at91/patches-4.9/105-ARM-at91-build-dtb-for-sama5d2-ptc-Ek.patch
@@ -1,18 +1,13 @@ 
-diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
-index c88e426..cb47e80 100644
 --- a/arch/arm/boot/dts/Makefile
 +++ b/arch/arm/boot/dts/Makefile
 @@ -49,6 +49,7 @@ dtb-$(CONFIG_SOC_AT91SAM9) += \
-	wb45n.dtb
+ 	wb45n.dtb
  dtb-$(CONFIG_SOC_SAM_V7) += \
-	at91-kizbox2.dtb \
+ 	at91-kizbox2.dtb \
 +	at91-sama5d2_ptc_ek.dtb \
-	at91-sama5d27_som1_ek.dtb \
-	at91-sama5d2_xplained.dtb \
-	at91-sama5d3_xplained.dtb \
-diff --git a/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
-new file mode 100644
-index 0000000..257eaac
+ 	at91-sama5d27_som1_ek.dtb \
+ 	at91-sama5d2_xplained.dtb \
+ 	at91-sama5d3_xplained.dtb \
 --- /dev/null
 +++ b/arch/arm/boot/dts/at91-sama5d2_ptc_ek.dts
 @@ -0,0 +1,422 @@
@@ -438,5 +433,3 @@  index 0000000..257eaac
 +		};
 +	};
 +};
---
-2.7.4
diff --git a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
index ac729ee48e0b..f42108702d56 100644
--- a/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
+++ b/target/linux/ath25/patches-4.9/107-ar5312_gpio.patch
@@ -202,7 +202,7 @@ 
 +subsys_initcall(ar5312_gpio_init);
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -167,6 +167,7 @@ config ATH25
+@@ -168,6 +168,7 @@ config ATH25
  	select CEVT_R4K
  	select CSRC_R4K
  	select DMA_NONCOHERENT
diff --git a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
index 3006fefc2056..34e776466809 100644
--- a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
@@ -696,7 +696,7 @@  Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
  }
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -5054,7 +5054,7 @@ static void port_event(struct usb_hub *h
+@@ -5062,7 +5062,7 @@ static void port_event(struct usb_hub *h
  	if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
  		u16 status = 0, unused;
  
diff --git a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
index c0967b463932..71118e26cc8c 100644
--- a/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0180-drm-vc4-Fulfill-user-BO-creation-requests-from-the-k.patch
@@ -22,7 +22,7 @@  Signed-off-by: Eric Anholt <eric@anholt.net>
 
 --- a/drivers/gpu/drm/vc4/vc4_bo.c
 +++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -208,21 +208,22 @@ struct drm_gem_object *vc4_create_object
+@@ -209,21 +209,22 @@ struct drm_gem_object *vc4_create_object
  }
  
  struct vc4_bo *vc4_bo_create(struct drm_device *dev, size_t unaligned_size,
diff --git a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
index 3fed370bee5c..52d0de3914e4 100644
--- a/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0181-drm-vc4-Fix-OOPSes-from-trying-to-cache-a-partially-.patch
@@ -17,7 +17,7 @@  Fixes: c826a6e10644 ("drm/vc4: Add a BO cache.")
 
 --- a/drivers/gpu/drm/vc4/vc4_bo.c
 +++ b/drivers/gpu/drm/vc4/vc4_bo.c
-@@ -322,6 +322,14 @@ void vc4_free_object(struct drm_gem_obje
+@@ -323,6 +323,14 @@ void vc4_free_object(struct drm_gem_obje
  		goto out;
  	}
  
diff --git a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
index 59e9933e5ff0..c193c72ab3e2 100644
--- a/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
+++ b/target/linux/brcm63xx/patches-4.9/001-4.15-01-MIPS-BCM63XX-add-clkdev-lookup-support.patch
@@ -16,7 +16,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -271,6 +271,7 @@ config BCM63XX
+@@ -272,6 +272,7 @@ config BCM63XX
  	select GPIOLIB
  	select HAVE_CLK
  	select MIPS_L1_CACHE_SHIFT_4
diff --git a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
index 6a93398c725d..5ae903b9373c 100644
--- a/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
+++ b/target/linux/brcm63xx/patches-4.9/120-mtd-add-of_match_table-parsing-for-partition-parsers.patch
@@ -42,7 +42,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
 
 --- a/drivers/mtd/mtdpart.c
 +++ b/drivers/mtd/mtdpart.c
-@@ -953,8 +953,7 @@ int add_mtd_partitions(struct mtd_info *
+@@ -940,8 +940,7 @@ int add_mtd_partitions(struct mtd_info *
  		add_mtd_device(&slave->mtd);
  		mtd_partition_split(master, slave);
  		mtd_add_partition_attrs(slave);
@@ -52,7 +52,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
  
  		cur_offset = slave->offset + slave->mtd.size;
  	}
-@@ -1136,7 +1135,9 @@ static int mtd_part_of_parse(struct mtd_
+@@ -1123,7 +1122,9 @@ static int mtd_part_of_parse(struct mtd_
  	const char *fixed = "fixed-partitions";
  	int ret, err = 0;
  
@@ -63,7 +63,7 @@  Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
  	of_property_for_each_string(np, "compatible", prop, compat) {
  		parser = mtd_part_get_compatible_parser(compat);
  		if (!parser)
-@@ -1208,8 +1209,12 @@ int parse_mtd_partitions(struct mtd_info
+@@ -1192,8 +1193,12 @@ int parse_mtd_partitions(struct mtd_info
  			types = types_of;
  	}
  
diff --git a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
index 0c4d034c0da8..ee0d4d657ade 100644
--- a/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
+++ b/target/linux/brcm63xx/patches-4.9/322-MIPS-BCM63XX-switch-to-IRQ_DOMAIN.patch
@@ -14,7 +14,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -264,6 +264,9 @@ config BCM63XX
+@@ -265,6 +265,9 @@ config BCM63XX
  	select SYNC_R4K
  	select DMA_NONCOHERENT
  	select IRQ_MIPS_CPU
diff --git a/target/linux/generic/hack-4.9/220-gc_sections.patch b/target/linux/generic/hack-4.9/220-gc_sections.patch
index 02e36b664ea3..40e4905db299 100644
--- a/target/linux/generic/hack-4.9/220-gc_sections.patch
+++ b/target/linux/generic/hack-4.9/220-gc_sections.patch
@@ -261,7 +261,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
  #define TRACE_SYSCALLS()
 @@ -172,7 +172,7 @@
  #ifdef CONFIG_SERIAL_EARLYCON
- #define EARLYCON_TABLE() STRUCT_ALIGN();			\
+ #define EARLYCON_TABLE() . = ALIGN(8);				\
  			 VMLINUX_SYMBOL(__earlycon_table) = .;	\
 -			 *(__earlycon_table)			\
 +			 KEEP(*(__earlycon_table))		\
diff --git a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch b/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
index 7c3e38efcfa5..96ae77ba09bf 100644
--- a/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
+++ b/target/linux/generic/hack-4.9/301-mips_image_cmdline_hack.patch
@@ -10,7 +10,7 @@  Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1155,6 +1155,10 @@ config SYNC_R4K
+@@ -1156,6 +1156,10 @@ config SYNC_R4K
  config MIPS_MACHINE
  	def_bool n
  
diff --git a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
index 3ec5d7518ab0..8403382de78b 100644
--- a/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
+++ b/target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
@@ -49,7 +49,7 @@  Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/usb/qmi_wwan.c
 +++ b/drivers/net/usb/qmi_wwan.c
-@@ -809,6 +809,9 @@ static const struct usb_device_id produc
+@@ -810,6 +810,9 @@ static const struct usb_device_id produc
  	{QMI_FIXED_INTF(0x0846, 0x68a2, 8)},
  	{QMI_FIXED_INTF(0x12d1, 0x140c, 1)},	/* Huawei E173 */
  	{QMI_FIXED_INTF(0x12d1, 0x14ac, 1)},	/* Huawei E1820 */
diff --git a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
index 9d9bb4ce1d53..2a41a6a95fba 100644
--- a/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
+++ b/target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch
@@ -18,7 +18,7 @@  Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/usb/qmi_wwan.c
 +++ b/drivers/net/usb/qmi_wwan.c
-@@ -888,6 +888,7 @@ static const struct usb_device_id produc
+@@ -889,6 +889,7 @@ static const struct usb_device_id produc
  	{QMI_FIXED_INTF(0x19d2, 0x2002, 4)},	/* ZTE (Vodafone) K3765-Z */
  	{QMI_FIXED_INTF(0x2001, 0x7e19, 4)},	/* D-Link DWM-221 B1 */
  	{QMI_FIXED_INTF(0x2001, 0x7e35, 4)},	/* D-Link DWM-222 */
diff --git a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch b/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
index cd58eb12e811..d7a3effa4cbb 100644
--- a/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
+++ b/target/linux/generic/pending-4.9/300-mips_expose_boot_raw.patch
@@ -9,7 +9,7 @@  Acked-by: Rob Landley <rob@landley.net>
 ---
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -1064,9 +1064,6 @@ config FW_ARC
+@@ -1065,9 +1065,6 @@ config FW_ARC
  config ARCH_MAY_HAVE_PC_FDC
  	bool
  
@@ -19,7 +19,7 @@  Acked-by: Rob Landley <rob@landley.net>
  config CEVT_BCM1480
  	bool
  
-@@ -2963,6 +2960,18 @@ choice
+@@ -2964,6 +2961,18 @@ choice
  		bool "Extend builtin kernel arguments with bootloader arguments"
  endchoice
  
diff --git a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch b/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
index a2ec0760fe1c..5707f90becd1 100644
--- a/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
+++ b/target/linux/generic/pending-4.9/304-mips_disable_fpu.patch
@@ -24,7 +24,7 @@  v2: incorporated changes suggested by Jonas Gorski
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -2887,6 +2887,20 @@ config MIPS_O32_FP64_SUPPORT
+@@ -2888,6 +2888,20 @@ config MIPS_O32_FP64_SUPPORT
  
  	  If unsure, say N.
  
diff --git a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch b/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
index 5b237a6d2391..393046cf263d 100644
--- a/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
+++ b/target/linux/generic/pending-4.9/341-MIPS-mm-remove-no-op-dma_map_ops-where-possible.patch
@@ -14,7 +14,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -213,6 +213,7 @@ config BMIPS_GENERIC
+@@ -214,6 +214,7 @@ config BMIPS_GENERIC
  	select BRCMSTB_L2_IRQ
  	select IRQ_MIPS_CPU
  	select DMA_NONCOHERENT
@@ -22,7 +22,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	select SYS_SUPPORTS_32BIT_KERNEL
  	select SYS_SUPPORTS_LITTLE_ENDIAN
  	select SYS_SUPPORTS_BIG_ENDIAN
-@@ -338,6 +339,7 @@ config MACH_JAZZ
+@@ -339,6 +340,7 @@ config MACH_JAZZ
  	select CSRC_R4K
  	select DEFAULT_SGI_PARTITION if CPU_BIG_ENDIAN
  	select GENERIC_ISA_DMA
@@ -30,7 +30,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	select HAVE_PCSPKR_PLATFORM
  	select IRQ_MIPS_CPU
  	select I8253
-@@ -1125,6 +1127,9 @@ config DMA_NONCOHERENT
+@@ -1126,6 +1128,9 @@ config DMA_NONCOHERENT
  	bool
  	select NEED_DMA_MAP_STATE
  
@@ -40,7 +40,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  config NEED_DMA_MAP_STATE
  	bool
  
-@@ -1649,6 +1654,7 @@ config CPU_R10000
+@@ -1650,6 +1655,7 @@ config CPU_R10000
  	select CPU_SUPPORTS_64BIT_KERNEL
  	select CPU_SUPPORTS_HIGHMEM
  	select CPU_SUPPORTS_HUGEPAGES
@@ -48,7 +48,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	help
  	  MIPS Technologies R10000-series processors.
  
-@@ -1894,9 +1900,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
+@@ -1895,9 +1901,11 @@ config SYS_HAS_CPU_MIPS32_R3_5
  	bool
  
  config SYS_HAS_CPU_MIPS32_R5
@@ -60,7 +60,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	bool
  
  config SYS_HAS_CPU_MIPS64_R1
-@@ -1906,6 +1914,7 @@ config SYS_HAS_CPU_MIPS64_R2
+@@ -1907,6 +1915,7 @@ config SYS_HAS_CPU_MIPS64_R2
  	bool
  
  config SYS_HAS_CPU_MIPS64_R6
diff --git a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch b/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
index c1b0d4f16b89..905675e50c51 100644
--- a/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
+++ b/target/linux/generic/pending-4.9/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch
@@ -7,7 +7,7 @@  Signed-off-by: George Kashperko <george@znau.edu.ua>
  1 file changed, 1 insertion(+)
 --- a/drivers/mtd/chips/cfi_cmdset_0002.c
 +++ b/drivers/mtd/chips/cfi_cmdset_0002.c
-@@ -1828,6 +1828,7 @@ static int __xipram do_write_buffer(stru
+@@ -1829,6 +1829,7 @@ static int __xipram do_write_buffer(stru
  
  	/* Write Buffer Load */
  	map_write(map, CMD(0x25), cmd_adr);
diff --git a/target/linux/generic/pending-4.9/630-packet_socket_type.patch b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
index 092011d0ec60..08d730ac31ed 100644
--- a/target/linux/generic/pending-4.9/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-4.9/630-packet_socket_type.patch
@@ -30,7 +30,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  #define PACKET_FANOUT_LB		1
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -1773,6 +1773,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1780,6 +1780,7 @@ static int packet_rcv_spkt(struct sk_buf
  {
  	struct sock *sk;
  	struct sockaddr_pkt *spkt;
@@ -38,7 +38,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  	/*
  	 *	When we registered the protocol we saved the socket in the data
-@@ -1780,6 +1781,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1787,6 +1788,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 */
  
  	sk = pt->af_packet_priv;
@@ -46,7 +46,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  	/*
  	 *	Yank back the headers [hope the device set this
-@@ -1792,7 +1794,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1799,7 +1801,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 *	so that this procedure is noop.
  	 */
  
@@ -55,7 +55,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  		goto out;
  
  	if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -2030,12 +2032,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -2037,12 +2039,12 @@ static int packet_rcv(struct sk_buff *sk
  	unsigned int snaplen, res;
  	bool is_drop_n_account = false;
  
@@ -71,7 +71,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -2161,12 +2163,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -2168,12 +2170,12 @@ static int tpacket_rcv(struct sk_buff *s
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
  
@@ -87,7 +87,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -3251,6 +3253,7 @@ static int packet_create(struct net *net
+@@ -3260,6 +3262,7 @@ static int packet_create(struct net *net
  	mutex_init(&po->pg_vec_lock);
  	po->rollover = NULL;
  	po->prot_hook.func = packet_rcv;
@@ -95,7 +95,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -3837,6 +3840,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3873,6 +3876,16 @@ packet_setsockopt(struct socket *sock, i
  		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
  		return 0;
  	}
@@ -112,7 +112,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -3889,6 +3902,13 @@ static int packet_getsockopt(struct sock
+@@ -3925,6 +3938,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR:
  		val = po->has_vnet_hdr;
  		break;
diff --git a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 14715718cbf4..2cebf55a447b 100644
--- a/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -171,7 +171,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2848,7 +2881,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2850,7 +2883,8 @@ static int rtm_to_fib6_config(struct sk_
  	if (rtm->rtm_type == RTN_UNREACHABLE ||
  	    rtm->rtm_type == RTN_BLACKHOLE ||
  	    rtm->rtm_type == RTN_PROHIBIT ||
@@ -181,7 +181,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -3220,6 +3254,9 @@ static int rt6_fill_node(struct net *net
+@@ -3222,6 +3256,9 @@ static int rt6_fill_node(struct net *net
  		case -EACCES:
  			rtm->rtm_type = RTN_PROHIBIT;
  			break;
@@ -191,7 +191,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case -EAGAIN:
  			rtm->rtm_type = RTN_THROW;
  			break;
-@@ -3496,6 +3533,8 @@ static int ip6_route_dev_notify(struct n
+@@ -3498,6 +3535,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -200,7 +200,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -3507,6 +3546,7 @@ static int ip6_route_dev_notify(struct n
+@@ -3509,6 +3548,7 @@ static int ip6_route_dev_notify(struct n
  		in6_dev_put(net->ipv6.ip6_null_entry->rt6i_idev);
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		in6_dev_put(net->ipv6.ip6_prohibit_entry->rt6i_idev);
@@ -208,7 +208,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		in6_dev_put(net->ipv6.ip6_blk_hole_entry->rt6i_idev);
  #endif
  	}
-@@ -3722,6 +3762,17 @@ static int __net_init ip6_route_net_init
+@@ -3724,6 +3764,17 @@ static int __net_init ip6_route_net_init
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
@@ -226,7 +226,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -3740,6 +3791,8 @@ out:
+@@ -3742,6 +3793,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -235,7 +235,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3757,6 +3810,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3759,6 +3812,7 @@ static void __net_exit ip6_route_net_exi
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
  	kfree(net->ipv6.ip6_blk_hole_entry);
@@ -243,7 +243,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3830,6 +3884,9 @@ void __init ip6_route_init_special_entri
+@@ -3832,6 +3886,9 @@ void __init ip6_route_init_special_entri
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/target/linux/generic/pending-4.9/834-ledtrig-libata.patch b/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
index 197e01a27422..913957370b54 100644
--- a/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
+++ b/target/linux/generic/pending-4.9/834-ledtrig-libata.patch
@@ -65,7 +65,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  /**
   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
   *	@tf: Target ATA taskfile
-@@ -4985,6 +4998,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
+@@ -4988,6 +5001,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
  		if (tag < 0)
  			return NULL;
  	}
@@ -75,7 +75,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  
  	qc = __ata_qc_from_tag(ap, tag);
  	qc->tag = tag;
-@@ -5886,6 +5902,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5889,6 +5905,9 @@ struct ata_port *ata_port_alloc(struct a
  	ap->stats.unhandled_irq = 1;
  	ap->stats.idle_irq = 1;
  #endif
@@ -85,7 +85,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  	ata_sff_port_init(ap);
  
  	return ap;
-@@ -5907,6 +5926,12 @@ static void ata_host_release(struct devi
+@@ -5910,6 +5929,12 @@ static void ata_host_release(struct devi
  
  		kfree(ap->pmp_link);
  		kfree(ap->slave_link);
@@ -98,7 +98,7 @@  Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  		kfree(ap);
  		host->ports[i] = NULL;
  	}
-@@ -6353,7 +6378,23 @@ int ata_host_register(struct ata_host *h
+@@ -6356,7 +6381,23 @@ int ata_host_register(struct ata_host *h
  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
  		host->ports[i]->local_port_no = i + 1;
  	}
diff --git a/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
index 1cb51a2ed53a..6cb745ee3329 100644
--- a/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
+++ b/target/linux/generic/pending-4.9/890-uart_optional_sysrq.patch
@@ -15,7 +15,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/include/linux/serial_core.h
 +++ b/include/linux/serial_core.h
-@@ -448,7 +448,7 @@ extern void uart_handle_cts_change(struc
+@@ -455,7 +455,7 @@ extern void uart_handle_cts_change(struc
  extern void uart_insert_char(struct uart_port *port, unsigned int status,
  		 unsigned int overrun, unsigned int ch, unsigned int flag);
  
@@ -26,7 +26,7 @@  Signed-off-by: Felix Fietkau <nbd@nbd.name>
  {
 --- a/lib/Kconfig.debug
 +++ b/lib/Kconfig.debug
-@@ -410,6 +410,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
+@@ -396,6 +396,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
  	  This may be set to 1 or 0 to enable or disable them all, or
  	  to a bitmask as described in Documentation/sysrq.txt.
  
diff --git a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
index 2b4db053c25b..9da213911e24 100644
--- a/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
+++ b/target/linux/ixp4xx/patches-4.9/090-increase_entropy_pools.patch
@@ -1,6 +1,6 @@ 
 --- a/drivers/char/random.c
 +++ b/drivers/char/random.c
-@@ -278,11 +278,11 @@
+@@ -279,11 +279,11 @@
  /*
   * Configuration information
   */
diff --git a/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch b/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch
index 3f3621b0d0d7..80688a4c0a29 100644
--- a/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch
+++ b/target/linux/ixp4xx/patches-4.9/600-skb_avoid_dmabounce.patch
@@ -10,7 +10,7 @@ 
  
  	/* Get the HEAD */
  	skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node);
-@@ -1222,6 +1225,10 @@ int pskb_expand_head(struct sk_buff *skb
+@@ -1223,6 +1226,10 @@ int pskb_expand_head(struct sk_buff *skb
  	if (skb_shared(skb))
  		BUG();
  
diff --git a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
index 7b14d9e5a906..7d6e4b808989 100644
--- a/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
+++ b/target/linux/lantiq/patches-4.9/0152-lantiq-VPE.patch
@@ -1,6 +1,6 @@ 
 --- a/arch/mips/Kconfig
 +++ b/arch/mips/Kconfig
-@@ -2320,6 +2320,12 @@ config MIPS_VPE_LOADER
+@@ -2321,6 +2321,12 @@ config MIPS_VPE_LOADER
  	  Includes a loader for loading an elf relocatable object
  	  onto another VPE and running it.
  
diff --git a/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch b/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
index a284d8bbd47a..026fce7dc940 100644
--- a/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/202-core-linux-support-layerscape.patch
@@ -477,7 +477,7 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  /* Make sure a field is enclosed inside headers_start/headers_end section */
  #define CHECK_SKB_FIELD(field) \
  	BUILD_BUG_ON(offsetof(struct sk_buff, field) <		\
-@@ -1073,7 +1099,7 @@ static void skb_headers_offset_update(st
+@@ -1074,7 +1100,7 @@ static void skb_headers_offset_update(st
  	skb->inner_mac_header += off;
  }
  
@@ -486,7 +486,7 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  {
  	__copy_skb_header(new, old);
  
-@@ -1081,6 +1107,7 @@ static void copy_skb_header(struct sk_bu
+@@ -1082,6 +1108,7 @@ static void copy_skb_header(struct sk_bu
  	skb_shinfo(new)->gso_segs = skb_shinfo(old)->gso_segs;
  	skb_shinfo(new)->gso_type = skb_shinfo(old)->gso_type;
  }
diff --git a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
index c01db458a5f2..f8917291ee25 100644
--- a/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
+++ b/target/linux/layerscape/patches-4.9/817-usb-support-layerscape.patch
@@ -44,15 +44,15 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
 
 --- a/drivers/net/usb/cdc_ether.c
 +++ b/drivers/net/usb/cdc_ether.c
-@@ -532,6 +532,7 @@ static const struct driver_info wwan_inf
- #define LENOVO_VENDOR_ID	0x17ef
+@@ -533,6 +533,7 @@ static const struct driver_info wwan_inf
+ #define LINKSYS_VENDOR_ID	0x13b1
  #define NVIDIA_VENDOR_ID	0x0955
  #define HP_VENDOR_ID		0x03f0
 +#define TPLINK_VENDOR_ID	0x2357
  
  static const struct usb_device_id	products[] = {
  /* BLACKLIST !!
-@@ -732,6 +733,13 @@ static const struct usb_device_id	produc
+@@ -742,6 +743,13 @@ static const struct usb_device_id	produc
  			USB_CDC_SUBCLASS_ETHERNET, USB_CDC_PROTO_NONE),
  	.driver_info = 0,
  },
@@ -68,15 +68,15 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
   *
 --- a/drivers/net/usb/r8152.c
 +++ b/drivers/net/usb/r8152.c
-@@ -520,6 +520,7 @@ enum rtl8152_flags {
- #define VENDOR_ID_SAMSUNG		0x04e8
+@@ -521,6 +521,7 @@ enum rtl8152_flags {
  #define VENDOR_ID_LENOVO		0x17ef
+ #define VENDOR_ID_LINKSYS		0x13b1
  #define VENDOR_ID_NVIDIA		0x0955
 +#define VENDOR_ID_TPLINK		0x2357
  
  #define MCU_TYPE_PLA			0x0100
  #define MCU_TYPE_USB			0x0000
-@@ -1816,6 +1817,10 @@ static int rx_bottom(struct r8152 *tp, i
+@@ -1817,6 +1818,10 @@ static int rx_bottom(struct r8152 *tp, i
  			unsigned int pkt_len;
  			struct sk_buff *skb;
  
@@ -87,9 +87,9 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  			pkt_len = le32_to_cpu(rx_desc->opts1) & RX_LEN_MASK;
  			if (pkt_len < ETH_ZLEN)
  				break;
-@@ -4507,6 +4512,7 @@ static struct usb_device_id rtl8152_tabl
- 	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x7205)},
+@@ -4509,6 +4514,7 @@ static struct usb_device_id rtl8152_tabl
  	{REALTEK_USB_DEVICE(VENDOR_ID_LENOVO,  0x304f)},
+ 	{REALTEK_USB_DEVICE(VENDOR_ID_LINKSYS, 0x0041)},
  	{REALTEK_USB_DEVICE(VENDOR_ID_NVIDIA,  0x09ff)},
 +	{REALTEK_USB_DEVICE(VENDOR_ID_TPLINK,  0x0601)},
  	{}
@@ -156,7 +156,7 @@  Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
  	int ret;
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -4415,6 +4415,14 @@ hub_port_init(struct usb_hub *hub, struc
+@@ -4423,6 +4423,14 @@ hub_port_init(struct usb_hub *hub, struc
  	else
  		speed = usb_speed_string(udev->speed);
  
diff --git a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
index c70ac1bb9d52..55976c32b16c 100644
--- a/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
+++ b/target/linux/mpc85xx/patches-4.9/102-powerpc-add-cmdline-override.patch
@@ -17,7 +17,7 @@ 
  	help
 --- a/drivers/of/fdt.c
 +++ b/drivers/of/fdt.c
-@@ -1079,6 +1079,17 @@ int __init early_init_dt_scan_chosen(uns
+@@ -1082,6 +1082,17 @@ int __init early_init_dt_scan_chosen(uns
  	if (p != NULL && l > 0)
  		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
  
diff --git a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
index aa6b813daf74..3d9bbb229553 100644
--- a/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
+++ b/target/linux/sunxi/patches-4.9/0052-stmmac-form-4-12.patch
@@ -3095,7 +3095,7 @@ 
  
  	if (priv->hw->mode->set_16kib_bfsize)
  		bfsize = priv->hw->mode->set_16kib_bfsize(dev->mtu);
-@@ -1033,235 +1234,409 @@ static int init_dma_desc_rings(struct ne
+@@ -1033,257 +1234,516 @@ static int init_dma_desc_rings(struct ne
  
  	priv->dma_buf_sz = bfsize;
  
@@ -3351,17 +3351,10 @@ 
 -						 priv->tx_skbuff_dma[i].buf,
 -						 priv->tx_skbuff_dma[i].len,
 -						 DMA_TO_DEVICE);
--		}
 +	for (i = 0; i < DMA_TX_SIZE; i++)
 +		stmmac_free_tx_buffer(priv, queue, i);
 +}
- 
--		if (priv->tx_skbuff[i]) {
--			dev_kfree_skb_any(priv->tx_skbuff[i]);
--			priv->tx_skbuff[i] = NULL;
--			priv->tx_skbuff_dma[i].buf = 0;
--			priv->tx_skbuff_dma[i].map_as_page = false;
--		}
++
 +/**
 + * free_dma_rx_desc_resources - free RX dma desc resources
 + * @priv: private structure
@@ -3390,11 +3383,10 @@ 
 +
 +		kfree(rx_q->rx_skbuff_dma);
 +		kfree(rx_q->rx_skbuff);
- 	}
- }
- 
- /**
-- * alloc_dma_desc_resources - alloc TX/RX resources.
++	}
++}
++
++/**
 + * free_dma_tx_desc_resources - free TX dma desc resources
 + * @priv: private structure
 + */
@@ -3427,90 +3419,36 @@ 
 +
 +/**
 + * alloc_dma_rx_desc_resources - alloc RX resources.
-  * @priv: private structure
-  * Description: according to which descriptor can be used (extend or basic)
-  * this function allocates the resources for TX and RX paths. In case of
-  * reception, for example, it pre-allocated the RX socket buffer in order to
-  * allow zero-copy mechanism.
-  */
--static int alloc_dma_desc_resources(struct stmmac_priv *priv)
++ * @priv: private structure
++ * Description: according to which descriptor can be used (extend or basic)
++ * this function allocates the resources for TX and RX paths. In case of
++ * reception, for example, it pre-allocated the RX socket buffer in order to
++ * allow zero-copy mechanism.
++ */
 +static int alloc_dma_rx_desc_resources(struct stmmac_priv *priv)
- {
++{
 +	u32 rx_count = priv->plat->rx_queues_to_use;
- 	int ret = -ENOMEM;
++	int ret = -ENOMEM;
 +	u32 queue;
- 
--	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
--					    GFP_KERNEL);
--	if (!priv->rx_skbuff_dma)
--		return -ENOMEM;
++
 +	/* RX queues buffers and DMA */
 +	for (queue = 0; queue < rx_count; queue++) {
 +		struct stmmac_rx_queue *rx_q = &priv->rx_queue[queue];
- 
--	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
--					GFP_KERNEL);
--	if (!priv->rx_skbuff)
--		goto err_rx_skbuff;
--
--	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
--					    sizeof(*priv->tx_skbuff_dma),
--					    GFP_KERNEL);
--	if (!priv->tx_skbuff_dma)
--		goto err_tx_skbuff_dma;
--
--	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
--					GFP_KERNEL);
--	if (!priv->tx_skbuff)
--		goto err_tx_skbuff;
--
--	if (priv->extend_desc) {
--		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
--						    sizeof(struct
--							   dma_extended_desc),
--						    &priv->dma_rx_phy,
--						    GFP_KERNEL);
--		if (!priv->dma_erx)
--			goto err_dma;
++
 +		rx_q->queue_index = queue;
 +		rx_q->priv_data = priv;
- 
--		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
--						    sizeof(struct
--							   dma_extended_desc),
--						    &priv->dma_tx_phy,
++
 +		rx_q->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE,
 +						    sizeof(dma_addr_t),
- 						    GFP_KERNEL);
--		if (!priv->dma_etx) {
--			dma_free_coherent(priv->device, DMA_RX_SIZE *
--					  sizeof(struct dma_extended_desc),
--					  priv->dma_erx, priv->dma_rx_phy);
--			goto err_dma;
--		}
--	} else {
--		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
--						   sizeof(struct dma_desc),
--						   &priv->dma_rx_phy,
--						   GFP_KERNEL);
--		if (!priv->dma_rx)
--			goto err_dma;
++						    GFP_KERNEL);
 +		if (!rx_q->rx_skbuff_dma)
 +			return -ENOMEM;
- 
--		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
--						   sizeof(struct dma_desc),
--						   &priv->dma_tx_phy,
--						   GFP_KERNEL);
--		if (!priv->dma_tx) {
--			dma_free_coherent(priv->device, DMA_RX_SIZE *
--					  sizeof(struct dma_desc),
--					  priv->dma_rx, priv->dma_rx_phy);
++
 +		rx_q->rx_skbuff = kmalloc_array(DMA_RX_SIZE,
 +						sizeof(struct sk_buff *),
 +						GFP_KERNEL);
 +		if (!rx_q->rx_skbuff)
- 			goto err_dma;
++			goto err_dma;
 +
 +		if (priv->extend_desc) {
 +			rx_q->dma_erx = dma_zalloc_coherent(priv->device,
@@ -3531,19 +3469,12 @@ 
 +							   GFP_KERNEL);
 +			if (!rx_q->dma_rx)
 +				goto err_dma;
- 		}
- 	}
- 
- 	return 0;
- 
- err_dma:
--	kfree(priv->tx_skbuff);
--err_tx_skbuff:
--	kfree(priv->tx_skbuff_dma);
--err_tx_skbuff_dma:
--	kfree(priv->rx_skbuff);
--err_rx_skbuff:
--	kfree(priv->rx_skbuff_dma);
++		}
++	}
++
++	return 0;
++
++err_dma:
 +	free_dma_rx_desc_resources(priv);
 +
 +	return ret;
@@ -3600,7 +3531,7 @@ 
 +							   GFP_KERNEL);
 +			if (!tx_q->dma_tx)
 +				goto err_dma_buffers;
-+		}
+ 		}
 +	}
 +
 +	return 0;
@@ -3629,85 +3560,126 @@ 
 +
 +	ret = alloc_dma_tx_desc_resources(priv);
 +
- 	return ret;
- }
- 
++	return ret;
++}
++
 +/**
 + * free_dma_desc_resources - free dma desc resources
 + * @priv: private structure
 + */
- static void free_dma_desc_resources(struct stmmac_priv *priv)
- {
--	/* Release the DMA TX/RX socket buffers */
--	dma_free_rx_skbufs(priv);
--	dma_free_tx_skbufs(priv);
--
--	/* Free DMA regions of consistent memory previously allocated */
--	if (!priv->extend_desc) {
--		dma_free_coherent(priv->device,
--				  DMA_TX_SIZE * sizeof(struct dma_desc),
--				  priv->dma_tx, priv->dma_tx_phy);
--		dma_free_coherent(priv->device,
--				  DMA_RX_SIZE * sizeof(struct dma_desc),
--				  priv->dma_rx, priv->dma_rx_phy);
--	} else {
--		dma_free_coherent(priv->device, DMA_TX_SIZE *
--				  sizeof(struct dma_extended_desc),
--				  priv->dma_etx, priv->dma_tx_phy);
--		dma_free_coherent(priv->device, DMA_RX_SIZE *
--				  sizeof(struct dma_extended_desc),
--				  priv->dma_erx, priv->dma_rx_phy);
--	}
--	kfree(priv->rx_skbuff_dma);
--	kfree(priv->rx_skbuff);
--	kfree(priv->tx_skbuff_dma);
--	kfree(priv->tx_skbuff);
++static void free_dma_desc_resources(struct stmmac_priv *priv)
++{
 +	/* Release the DMA RX socket buffers */
 +	free_dma_rx_desc_resources(priv);
 +
 +	/* Release the DMA TX socket buffers */
 +	free_dma_tx_desc_resources(priv);
- }
- 
- /**
-@@ -1271,19 +1646,104 @@ static void free_dma_desc_resources(stru
-  */
- static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
- {
--	int rx_count = priv->dma_cap.number_rx_queues;
--	int queue = 0;
++}
++
++/**
++ *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
++ *  @priv: driver private structure
++ *  Description: It is used for enabling the rx queues in the MAC
++ */
++static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
++{
 +	u32 rx_queues_count = priv->plat->rx_queues_to_use;
 +	int queue;
 +	u8 mode;
  
--	/* If GMAC does not have multiple queues, then this is not necessary*/
--	if (rx_count == 1)
--		return;
+-		if (priv->tx_skbuff[i]) {
+-			dev_kfree_skb_any(priv->tx_skbuff[i]);
+-			priv->tx_skbuff[i] = NULL;
+-			priv->tx_skbuff_dma[i].buf = 0;
+-			priv->tx_skbuff_dma[i].map_as_page = false;
+-		}
 +	for (queue = 0; queue < rx_queues_count; queue++) {
 +		mode = priv->plat->rx_queues_cfg[queue].mode_to_use;
 +		priv->hw->mac->rx_queue_enable(priv->hw, mode, queue);
-+	}
-+}
+ 	}
+ }
  
--	/**
--	 *  If the core is synthesized with multiple rx queues / multiple
--	 *  dma channels, then rx queues will be disabled by default.
--	 *  For now only rx queue 0 is enabled.
--	 */
--	priv->hw->mac->rx_queue_enable(priv->hw, queue);
-+/**
+ /**
+- * alloc_dma_desc_resources - alloc TX/RX resources.
+- * @priv: private structure
+- * Description: according to which descriptor can be used (extend or basic)
+- * this function allocates the resources for TX and RX paths. In case of
+- * reception, for example, it pre-allocated the RX socket buffer in order to
+- * allow zero-copy mechanism.
 + * stmmac_start_rx_dma - start RX DMA channel
 + * @priv: driver private structure
 + * @chan: RX channel index
 + * Description:
 + * This starts a RX DMA channel
-+ */
+  */
+-static int alloc_dma_desc_resources(struct stmmac_priv *priv)
 +static void stmmac_start_rx_dma(struct stmmac_priv *priv, u32 chan)
-+{
+ {
+-	int ret = -ENOMEM;
+-
+-	priv->rx_skbuff_dma = kmalloc_array(DMA_RX_SIZE, sizeof(dma_addr_t),
+-					    GFP_KERNEL);
+-	if (!priv->rx_skbuff_dma)
+-		return -ENOMEM;
+-
+-	priv->rx_skbuff = kmalloc_array(DMA_RX_SIZE, sizeof(struct sk_buff *),
+-					GFP_KERNEL);
+-	if (!priv->rx_skbuff)
+-		goto err_rx_skbuff;
+-
+-	priv->tx_skbuff_dma = kmalloc_array(DMA_TX_SIZE,
+-					    sizeof(*priv->tx_skbuff_dma),
+-					    GFP_KERNEL);
+-	if (!priv->tx_skbuff_dma)
+-		goto err_tx_skbuff_dma;
+-
+-	priv->tx_skbuff = kmalloc_array(DMA_TX_SIZE, sizeof(struct sk_buff *),
+-					GFP_KERNEL);
+-	if (!priv->tx_skbuff)
+-		goto err_tx_skbuff;
+-
+-	if (priv->extend_desc) {
+-		priv->dma_erx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
+-						    sizeof(struct
+-							   dma_extended_desc),
+-						    &priv->dma_rx_phy,
+-						    GFP_KERNEL);
+-		if (!priv->dma_erx)
+-			goto err_dma;
+-
+-		priv->dma_etx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
+-						    sizeof(struct
+-							   dma_extended_desc),
+-						    &priv->dma_tx_phy,
+-						    GFP_KERNEL);
+-		if (!priv->dma_etx) {
+-			dma_free_coherent(priv->device, DMA_RX_SIZE *
+-					  sizeof(struct dma_extended_desc),
+-					  priv->dma_erx, priv->dma_rx_phy);
+-			goto err_dma;
+-		}
+-	} else {
+-		priv->dma_rx = dma_zalloc_coherent(priv->device, DMA_RX_SIZE *
+-						   sizeof(struct dma_desc),
+-						   &priv->dma_rx_phy,
+-						   GFP_KERNEL);
+-		if (!priv->dma_rx)
+-			goto err_dma;
 +	netdev_dbg(priv->dev, "DMA RX processes started in channel %d\n", chan);
 +	priv->hw->dma->start_rx(priv->ioaddr, chan);
 +}
-+
+ 
+-		priv->dma_tx = dma_zalloc_coherent(priv->device, DMA_TX_SIZE *
+-						   sizeof(struct dma_desc),
+-						   &priv->dma_tx_phy,
+-						   GFP_KERNEL);
+-		if (!priv->dma_tx) {
+-			dma_free_coherent(priv->device, DMA_RX_SIZE *
+-					  sizeof(struct dma_desc),
+-					  priv->dma_rx, priv->dma_rx_phy);
+-			goto err_dma;
+-		}
+-	}
 +/**
 + * stmmac_start_tx_dma - start TX DMA channel
 + * @priv: driver private structure
@@ -3720,7 +3692,8 @@ 
 +	netdev_dbg(priv->dev, "DMA TX processes started in channel %d\n", chan);
 +	priv->hw->dma->start_tx(priv->ioaddr, chan);
 +}
-+
+ 
+-	return 0;
 +/**
 + * stmmac_stop_rx_dma - stop RX DMA channel
 + * @priv: driver private structure
@@ -3733,7 +3706,16 @@ 
 +	netdev_dbg(priv->dev, "DMA RX processes stopped in channel %d\n", chan);
 +	priv->hw->dma->stop_rx(priv->ioaddr, chan);
 +}
-+
+ 
+-err_dma:
+-	kfree(priv->tx_skbuff);
+-err_tx_skbuff:
+-	kfree(priv->tx_skbuff_dma);
+-err_tx_skbuff_dma:
+-	kfree(priv->rx_skbuff);
+-err_rx_skbuff:
+-	kfree(priv->rx_skbuff_dma);
+-	return ret;
 +/**
 + * stmmac_stop_tx_dma - stop TX DMA channel
 + * @priv: driver private structure
@@ -3745,8 +3727,9 @@ 
 +{
 +	netdev_dbg(priv->dev, "DMA TX processes stopped in channel %d\n", chan);
 +	priv->hw->dma->stop_tx(priv->ioaddr, chan);
-+}
-+
+ }
+ 
+-static void free_dma_desc_resources(struct stmmac_priv *priv)
 +/**
 + * stmmac_start_all_dma - start all RX and TX DMA channels
 + * @priv: driver private structure
@@ -3754,7 +3737,31 @@ 
 + * This starts all the RX and TX DMA channels
 + */
 +static void stmmac_start_all_dma(struct stmmac_priv *priv)
-+{
+ {
+-	/* Release the DMA TX/RX socket buffers */
+-	dma_free_rx_skbufs(priv);
+-	dma_free_tx_skbufs(priv);
+-
+-	/* Free DMA regions of consistent memory previously allocated */
+-	if (!priv->extend_desc) {
+-		dma_free_coherent(priv->device,
+-				  DMA_TX_SIZE * sizeof(struct dma_desc),
+-				  priv->dma_tx, priv->dma_tx_phy);
+-		dma_free_coherent(priv->device,
+-				  DMA_RX_SIZE * sizeof(struct dma_desc),
+-				  priv->dma_rx, priv->dma_rx_phy);
+-	} else {
+-		dma_free_coherent(priv->device, DMA_TX_SIZE *
+-				  sizeof(struct dma_extended_desc),
+-				  priv->dma_etx, priv->dma_tx_phy);
+-		dma_free_coherent(priv->device, DMA_RX_SIZE *
+-				  sizeof(struct dma_extended_desc),
+-				  priv->dma_erx, priv->dma_rx_phy);
+-	}
+-	kfree(priv->rx_skbuff_dma);
+-	kfree(priv->rx_skbuff);
+-	kfree(priv->tx_skbuff_dma);
+-	kfree(priv->tx_skbuff);
 +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
 +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
 +	u32 chan = 0;
@@ -3764,23 +3771,38 @@ 
 +
 +	for (chan = 0; chan < tx_channels_count; chan++)
 +		stmmac_start_tx_dma(priv, chan);
-+}
-+
-+/**
+ }
+ 
+ /**
+- *  stmmac_mac_enable_rx_queues - Enable MAC rx queues
+- *  @priv: driver private structure
+- *  Description: It is used for enabling the rx queues in the MAC
 + * stmmac_stop_all_dma - stop all RX and TX DMA channels
 + * @priv: driver private structure
 + * Description:
 + * This stops the RX and TX DMA channels
-+ */
+  */
+-static void stmmac_mac_enable_rx_queues(struct stmmac_priv *priv)
 +static void stmmac_stop_all_dma(struct stmmac_priv *priv)
-+{
+ {
+-	int rx_count = priv->dma_cap.number_rx_queues;
+-	int queue = 0;
 +	u32 rx_channels_count = priv->plat->rx_queues_to_use;
 +	u32 tx_channels_count = priv->plat->tx_queues_to_use;
 +	u32 chan = 0;
-+
+ 
+-	/* If GMAC does not have multiple queues, then this is not necessary*/
+-	if (rx_count == 1)
+-		return;
 +	for (chan = 0; chan < rx_channels_count; chan++)
 +		stmmac_stop_rx_dma(priv, chan);
-+
+ 
+-	/**
+-	 *  If the core is synthesized with multiple rx queues / multiple
+-	 *  dma channels, then rx queues will be disabled by default.
+-	 *  For now only rx queue 0 is enabled.
+-	 */
+-	priv->hw->mac->rx_queue_enable(priv->hw, queue);
 +	for (chan = 0; chan < tx_channels_count; chan++)
 +		stmmac_stop_tx_dma(priv, chan);
  }
diff --git a/target/linux/uml/patches-4.9/101-mconsole-exec.patch b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
index 6682338f3963..ea9da8d8c3d1 100644
--- a/target/linux/uml/patches-4.9/101-mconsole-exec.patch
+++ b/target/linux/uml/patches-4.9/101-mconsole-exec.patch
@@ -123,7 +123,7 @@ 
  };
 --- a/arch/um/os-Linux/file.c
 +++ b/arch/um/os-Linux/file.c
-@@ -554,6 +554,8 @@ int os_create_unix_socket(const char *fi
+@@ -555,6 +555,8 @@ int os_create_unix_socket(const char *fi
  
  	addr.sun_family = AF_UNIX;