Browse Source

Bump kernel to 4.4.167 (from upstream 17.01 branch)

RISCi_ATOM 5 years ago
parent
commit
69457be419
29 changed files with 130 additions and 122 deletions
  1. 2 2
      include/kernel-version.mk
  2. 16 16
      target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
  3. 1 1
      target/linux/generic/patches-4.4/030-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch
  4. 1 1
      target/linux/generic/patches-4.4/043-mtd-spi-nor-mx25l3205d-mx25l6405d-append-SECT_4K.patch
  5. 1 1
      target/linux/generic/patches-4.4/046-ubifs-silence-error-output-if-MS_SILENT-is-set.patch
  6. 2 2
      target/linux/generic/patches-4.4/048-mtd-spi-nor-backport-SPI_NOR_HAS_LOCK-flag.patch
  7. 3 3
      target/linux/generic/patches-4.4/052-02-ubifs-Implement-RENAME_WHITEOUT.patch
  8. 1 1
      target/linux/generic/patches-4.4/052-03-ubifs-Implement-RENAME_EXCHANGE.patch
  9. 2 2
      target/linux/generic/patches-4.4/052-04-ubifs-Use-move-variable-in-ubifs_rename.patch
  10. 2 2
      target/linux/generic/patches-4.4/082-0001-USB-core-let-USB-device-know-device-node.patch
  11. 2 2
      target/linux/generic/patches-4.4/082-0002-usb-core-usb_alloc_dev-fix-setting-of-portnum.patch
  12. 3 3
      target/linux/generic/patches-4.4/085-0004-leds-core-add-OF-variants-of-LED-registering-functio.patch
  13. 1 1
      target/linux/generic/patches-4.4/086-0001-thermal-of-thermal-Add-devm-version-of-thermal_zone_.patch
  14. 4 4
      target/linux/generic/patches-4.4/090-MIPS-c-r4k-Use-IPI-calls-for-CM-indexed-cache-ops.patch
  15. 13 13
      target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch
  16. 4 4
      target/linux/generic/patches-4.4/201-extra_optimization.patch
  17. 1 1
      target/linux/generic/patches-4.4/202-reduce_module_size.patch
  18. 8 8
      target/linux/generic/patches-4.4/304-mips_disable_fpu.patch
  19. 1 1
      target/linux/generic/patches-4.4/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch
  20. 1 1
      target/linux/generic/patches-4.4/475-mtd-spi-nor-add-macronix-mx25u25635f.patch
  21. 1 1
      target/linux/generic/patches-4.4/477-mtd-add-spi-nor-add-mx25u3235f.patch
  22. 2 2
      target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch
  23. 12 12
      target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch
  24. 16 16
      target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
  25. 17 9
      target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
  26. 6 6
      target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
  27. 2 2
      target/linux/generic/patches-4.4/721-phy_packets.patch
  28. 1 1
      target/linux/generic/patches-4.4/810-pci_disable_common_quirks.patch
  29. 4 4
      target/linux/generic/patches-4.4/902-debloat_proc.patch

+ 2 - 2
include/kernel-version.mk

@@ -2,9 +2,9 @@
 
 LINUX_RELEASE?=1
 
-LINUX_VERSION-4.4 = .159
+LINUX_VERSION-4.4 = .167
 
-LINUX_KERNEL_HASH-4.4.159 = d464fea1f888ada3a55c3aea1c05ba9fd2d4edd7ffb152369faace18a285998b
+LINUX_KERNEL_HASH-4.4.167 = 301feaaecbbe030a7a3ea05a272cca11b8958dc9ec619ec77f562eb1c75f0784
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))

+ 16 - 16
target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch

@@ -250,7 +250,7 @@
  					       &sin->sin6_addr);
  			sin->sin6_scope_id = 0;
  		}
-@@ -770,12 +770,12 @@ int ip6_datagram_send_ctl(struct net *ne
+@@ -773,12 +773,12 @@ int ip6_datagram_send_ctl(struct net *ne
  			}
  
  			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
@@ -267,7 +267,7 @@
  		case IPV6_2292HOPOPTS:
 --- a/net/ipv6/ip6_gre.c
 +++ b/net/ipv6/ip6_gre.c
-@@ -395,7 +395,7 @@ static void ip6gre_err(struct sk_buff *s
+@@ -397,7 +397,7 @@ static void ip6gre_err(struct sk_buff *s
  		return;
  	ipv6h = (const struct ipv6hdr *)skb->data;
  	greh = (const struct gre_base_hdr *)(skb->data + offset);
@@ -276,7 +276,7 @@
  
  	t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr,
  				 key, greh->protocol);
-@@ -482,11 +482,11 @@ static int ip6gre_rcv(struct sk_buff *sk
+@@ -484,11 +484,11 @@ static int ip6gre_rcv(struct sk_buff *sk
  			offset += 4;
  		}
  		if (flags&GRE_KEY) {
@@ -290,7 +290,7 @@
  			offset += 4;
  		}
  	}
-@@ -748,7 +748,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
+@@ -750,7 +750,7 @@ static netdev_tx_t ip6gre_xmit2(struct s
  
  		if (tunnel->parms.o_flags&GRE_SEQ) {
  			++tunnel->o_seqno;
@@ -299,7 +299,7 @@
  			ptr--;
  		}
  		if (tunnel->parms.o_flags&GRE_KEY) {
-@@ -844,7 +844,7 @@ static inline int ip6gre_xmit_ipv6(struc
+@@ -846,7 +846,7 @@ static inline int ip6gre_xmit_ipv6(struc
  
  	dsfield = ipv6_get_dsfield(ipv6h);
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
@@ -310,7 +310,7 @@
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
 --- a/net/ipv6/ip6_tunnel.c
 +++ b/net/ipv6/ip6_tunnel.c
-@@ -1307,7 +1307,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1319,7 +1319,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  
  	dsfield = ipv6_get_dsfield(ipv6h);
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
@@ -346,7 +346,7 @@
  #endif /* _LINUX_TYPES_H */
 --- a/net/ipv4/af_inet.c
 +++ b/net/ipv4/af_inet.c
-@@ -1321,8 +1321,8 @@ static struct sk_buff **inet_gro_receive
+@@ -1322,8 +1322,8 @@ static struct sk_buff **inet_gro_receive
  	if (unlikely(ip_fast_csum((u8 *)iph, 5)))
  		goto out_unlock;
  
@@ -359,7 +359,7 @@
  	for (p = *head; p; p = p->next) {
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -458,7 +458,7 @@ static struct neighbour *ipv4_neigh_look
+@@ -461,7 +461,7 @@ static struct neighbour *ipv4_neigh_look
  	else if (skb)
  		pkey = &ip_hdr(skb)->daddr;
  
@@ -370,7 +370,7 @@
  	return neigh_create(&arp_tbl, pkey, dev);
 --- a/net/ipv4/tcp_output.c
 +++ b/net/ipv4/tcp_output.c
-@@ -451,48 +451,53 @@ static void tcp_options_write(__be32 *pt
+@@ -456,48 +456,53 @@ static void tcp_options_write(__be32 *pt
  	u16 options = opts->options;	/* mungable copy */
  
  	if (unlikely(OPTION_MD5 & options)) {
@@ -447,7 +447,7 @@
  	}
  
  	if (unlikely(opts->num_sack_blocks)) {
-@@ -500,16 +505,17 @@ static void tcp_options_write(__be32 *pt
+@@ -505,16 +510,17 @@ static void tcp_options_write(__be32 *pt
  			tp->duplicate_sack : tp->selective_acks;
  		int this_sack;
  
@@ -471,7 +471,7 @@
  		}
  
  		tp->rx_opt.dsack = 0;
-@@ -522,13 +528,14 @@ static void tcp_options_write(__be32 *pt
+@@ -527,13 +533,14 @@ static void tcp_options_write(__be32 *pt
  
  		if (foc->exp) {
  			len = TCPOLEN_EXP_FASTOPEN_BASE + foc->len;
@@ -610,7 +610,7 @@
  			goto next_ht;
 --- a/net/ipv6/ip6_offload.c
 +++ b/net/ipv6/ip6_offload.c
-@@ -225,7 +225,7 @@ static struct sk_buff **ipv6_gro_receive
+@@ -226,7 +226,7 @@ static struct sk_buff **ipv6_gro_receive
  			continue;
  
  		iph2 = (struct ipv6hdr *)(p->data + off);
@@ -642,9 +642,9 @@
 -	*(__be32 *)iph = to;
 +	net_hdr_word(iph) = to;
  	if (skb->ip_summed == CHECKSUM_COMPLETE)
- 		skb->csum = csum_add(csum_sub(skb->csum, from), to);
- 	return 1;
-@@ -134,7 +134,7 @@ static inline int IP6_ECN_set_ce(struct
+ 		skb->csum = csum_add(csum_sub(skb->csum, (__force __wsum)from),
+ 				     (__force __wsum)to);
+@@ -135,7 +135,7 @@ static inline int IP6_ECN_set_ce(struct
  
  static inline void IP6_ECN_clear(struct ipv6hdr *iph)
  {
@@ -838,7 +838,7 @@
  
 --- a/net/ipv4/tcp_input.c
 +++ b/net/ipv4/tcp_input.c
-@@ -3818,14 +3818,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3836,14 +3836,16 @@ static bool tcp_parse_aligned_timestamp(
  {
  	const __be32 *ptr = (const __be32 *)(th + 1);
  

+ 1 - 1
target/linux/generic/patches-4.4/030-1-smsc95xx-Use-skb_cow_head-to-deal-with-cloned-skbs.patch

@@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/usb/smsc95xx.c
 +++ b/drivers/net/usb/smsc95xx.c
-@@ -1835,13 +1835,13 @@ static struct sk_buff *smsc95xx_tx_fixup
+@@ -1838,13 +1838,13 @@ static struct sk_buff *smsc95xx_tx_fixup
  	/* We do not advertise SG, so skbs should be already linearized */
  	BUG_ON(skb_shinfo(skb)->nr_frags);
  

+ 1 - 1
target/linux/generic/patches-4.4/043-mtd-spi-nor-mx25l3205d-mx25l6405d-append-SECT_4K.patch

@@ -13,7 +13,7 @@ Signed-off-by: Brian Norris <computersforpeace@gmail.com>
 
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -715,9 +715,9 @@ static const struct flash_info spi_nor_i
+@@ -721,9 +721,9 @@ static const struct flash_info spi_nor_i
  	{ "mx25l4005a",  INFO(0xc22013, 0, 64 * 1024,   8, SECT_4K) },
  	{ "mx25l8005",   INFO(0xc22014, 0, 64 * 1024,  16, 0) },
  	{ "mx25l1606e",  INFO(0xc22015, 0, 64 * 1024,  32, SECT_4K) },

+ 1 - 1
target/linux/generic/patches-4.4/046-ubifs-silence-error-output-if-MS_SILENT-is-set.patch

@@ -18,7 +18,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
 
 --- a/fs/ubifs/super.c
 +++ b/fs/ubifs/super.c
-@@ -2107,8 +2107,9 @@ static struct dentry *ubifs_mount(struct
+@@ -2116,8 +2116,9 @@ static struct dentry *ubifs_mount(struct
  	 */
  	ubi = open_ubi(name, UBI_READONLY);
  	if (IS_ERR(ubi)) {

+ 2 - 2
target/linux/generic/patches-4.4/048-mtd-spi-nor-backport-SPI_NOR_HAS_LOCK-flag.patch

@@ -25,7 +25,7 @@ Tested-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
  };
  
  #define JEDEC_MFR(info)	((info)->id[0])
-@@ -1163,7 +1164,8 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -1169,7 +1170,8 @@ int spi_nor_scan(struct spi_nor *nor, co
  
  	if (JEDEC_MFR(info) == SNOR_MFR_ATMEL ||
  	    JEDEC_MFR(info) == SNOR_MFR_INTEL ||
@@ -35,7 +35,7 @@ Tested-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
  		write_enable(nor);
  		write_sr(nor, 0);
  	}
-@@ -1179,7 +1181,8 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -1185,7 +1187,8 @@ int spi_nor_scan(struct spi_nor *nor, co
  	mtd->_read = spi_nor_read;
  
  	/* NOR protection support for STmicro/Micron chips and similar */

+ 3 - 3
target/linux/generic/patches-4.4/052-02-ubifs-Implement-RENAME_WHITEOUT.patch

@@ -244,7 +244,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
  	.setxattr    = ubifs_setxattr,
 --- a/fs/ubifs/journal.c
 +++ b/fs/ubifs/journal.c
-@@ -917,14 +917,15 @@ int ubifs_jnl_delete_inode(struct ubifs_
+@@ -922,14 +922,15 @@ int ubifs_jnl_delete_inode(struct ubifs_
   * @sync: non-zero if the write-buffer has to be synchronized
   *
   * This function implements the re-name operation which may involve writing up
@@ -262,7 +262,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
  {
  	void *p;
  	union ubifs_key key;
-@@ -980,13 +981,19 @@ int ubifs_jnl_rename(struct ubifs_info *
+@@ -985,13 +986,19 @@ int ubifs_jnl_rename(struct ubifs_info *
  	zero_dent_node_unused(dent);
  	ubifs_prep_grp_node(c, dent, dlen1, 0);
  
@@ -285,7 +285,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
  	dent2->nlen = cpu_to_le16(old_dentry->d_name.len);
  	memcpy(dent2->name, old_dentry->d_name.name, old_dentry->d_name.len);
  	dent2->name[old_dentry->d_name.len] = '\0';
-@@ -1035,16 +1042,26 @@ int ubifs_jnl_rename(struct ubifs_info *
+@@ -1040,16 +1047,26 @@ int ubifs_jnl_rename(struct ubifs_info *
  	if (err)
  		goto out_ro;
  

+ 1 - 1
target/linux/generic/patches-4.4/052-03-ubifs-Implement-RENAME_EXCHANGE.patch

@@ -104,7 +104,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
  	.setxattr    = ubifs_setxattr,
 --- a/fs/ubifs/journal.c
 +++ b/fs/ubifs/journal.c
-@@ -908,6 +908,147 @@ int ubifs_jnl_delete_inode(struct ubifs_
+@@ -913,6 +913,147 @@ int ubifs_jnl_delete_inode(struct ubifs_
  }
  
  /**

+ 2 - 2
target/linux/generic/patches-4.4/052-04-ubifs-Use-move-variable-in-ubifs_rename.patch

@@ -10,7 +10,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
 
 --- a/fs/ubifs/journal.c
 +++ b/fs/ubifs/journal.c
-@@ -1100,7 +1100,7 @@ int ubifs_jnl_rename(struct ubifs_info *
+@@ -1105,7 +1105,7 @@ int ubifs_jnl_rename(struct ubifs_info *
  	aligned_dlen1 = ALIGN(dlen1, 8);
  	aligned_dlen2 = ALIGN(dlen2, 8);
  	len = aligned_dlen1 + aligned_dlen2 + ALIGN(ilen, 8) + ALIGN(plen, 8);
@@ -19,7 +19,7 @@ Signed-off-by: Richard Weinberger <richard@nod.at>
  		len += plen;
  	dent = kmalloc(len, GFP_NOFS);
  	if (!dent)
-@@ -1216,7 +1216,7 @@ int ubifs_jnl_rename(struct ubifs_info *
+@@ -1221,7 +1221,7 @@ int ubifs_jnl_rename(struct ubifs_info *
  	if (err)
  		goto out_ro;
  

+ 2 - 2
target/linux/generic/patches-4.4/082-0001-USB-core-let-USB-device-know-device-node.patch

@@ -131,7 +131,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  
  #include <asm/io.h>
  #include <linux/scatterlist.h>
-@@ -469,6 +470,7 @@ struct usb_device *usb_alloc_dev(struct
+@@ -471,6 +472,7 @@ struct usb_device *usb_alloc_dev(struct
  		dev->route = 0;
  
  		dev->dev.parent = bus->controller;
@@ -139,7 +139,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  		dev_set_name(&dev->dev, "usb%d", bus->busnum);
  		root_hub = 1;
  	} else {
-@@ -493,6 +495,14 @@ struct usb_device *usb_alloc_dev(struct
+@@ -495,6 +497,14 @@ struct usb_device *usb_alloc_dev(struct
  		dev->dev.parent = &parent->dev;
  		dev_set_name(&dev->dev, "%d-%s", bus->busnum, dev->devpath);
  

+ 2 - 2
target/linux/generic/patches-4.4/082-0002-usb-core-usb_alloc_dev-fix-setting-of-portnum.patch

@@ -84,7 +84,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
 --- a/drivers/usb/core/usb.c
 +++ b/drivers/usb/core/usb.c
-@@ -423,6 +423,7 @@ struct usb_device *usb_alloc_dev(struct
+@@ -425,6 +425,7 @@ struct usb_device *usb_alloc_dev(struct
  	struct usb_device *dev;
  	struct usb_hcd *usb_hcd = bus_to_hcd(bus);
  	unsigned root_hub = 0;
@@ -92,7 +92,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  
  	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
  	if (!dev)
-@@ -497,11 +498,11 @@ struct usb_device *usb_alloc_dev(struct
+@@ -499,11 +500,11 @@ struct usb_device *usb_alloc_dev(struct
  
  		if (!parent->parent) {
  			/* device under root hub's port */

+ 3 - 3
target/linux/generic/patches-4.4/085-0004-leds-core-add-OF-variants-of-LED-registering-functio.patch

@@ -58,7 +58,7 @@ Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
  
  /**
   * led_classdev_unregister - unregisters a object of led_properties class.
-@@ -269,12 +273,14 @@ static void devm_led_classdev_release(st
+@@ -270,12 +274,14 @@ static void devm_led_classdev_release(st
  }
  
  /**
@@ -77,7 +77,7 @@ Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
  {
  	struct led_classdev **dr;
  	int rc;
-@@ -283,7 +289,7 @@ int devm_led_classdev_register(struct de
+@@ -284,7 +290,7 @@ int devm_led_classdev_register(struct de
  	if (!dr)
  		return -ENOMEM;
  
@@ -86,7 +86,7 @@ Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
  	if (rc) {
  		devres_free(dr);
  		return rc;
-@@ -294,7 +300,7 @@ int devm_led_classdev_register(struct de
+@@ -295,7 +301,7 @@ int devm_led_classdev_register(struct de
  
  	return 0;
  }

+ 1 - 1
target/linux/generic/patches-4.4/086-0001-thermal-of-thermal-Add-devm-version-of-thermal_zone_.patch

@@ -19,7 +19,7 @@ Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
 
 --- a/drivers/thermal/of-thermal.c
 +++ b/drivers/thermal/of-thermal.c
-@@ -559,6 +559,87 @@ void thermal_zone_of_sensor_unregister(s
+@@ -562,6 +562,87 @@ void thermal_zone_of_sensor_unregister(s
  }
  EXPORT_SYMBOL_GPL(thermal_zone_of_sensor_unregister);
  

+ 4 - 4
target/linux/generic/patches-4.4/090-MIPS-c-r4k-Use-IPI-calls-for-CM-indexed-cache-ops.patch

@@ -256,7 +256,7 @@ Cc: linux-mips@linux-mips.org
  	instruction_hazard();
  }
  
-@@ -823,7 +901,12 @@ static void local_r4k_flush_cache_sigtra
+@@ -825,7 +903,12 @@ static void local_r4k_flush_cache_sigtra
  
  static void r4k_flush_cache_sigtramp(unsigned long addr)
  {
@@ -270,7 +270,7 @@ Cc: linux-mips@linux-mips.org
  }
  
  static void r4k_flush_icache_all(void)
-@@ -837,6 +920,15 @@ struct flush_kernel_vmap_range_args {
+@@ -839,6 +922,15 @@ struct flush_kernel_vmap_range_args {
  	int		size;
  };
  
@@ -286,7 +286,7 @@ Cc: linux-mips@linux-mips.org
  static inline void local_r4k_flush_kernel_vmap_range(void *args)
  {
  	struct flush_kernel_vmap_range_args *vmra = args;
-@@ -847,12 +939,8 @@ static inline void local_r4k_flush_kerne
+@@ -849,12 +941,8 @@ static inline void local_r4k_flush_kerne
  	 * Aliases only affect the primary caches so don't bother with
  	 * S-caches or T-caches.
  	 */
@@ -301,7 +301,7 @@ Cc: linux-mips@linux-mips.org
  }
  
  static void r4k_flush_kernel_vmap_range(unsigned long vaddr, int size)
-@@ -862,7 +950,12 @@ static void r4k_flush_kernel_vmap_range(
+@@ -864,7 +952,12 @@ static void r4k_flush_kernel_vmap_range(
  	args.vaddr = (unsigned long) vaddr;
  	args.size = size;
  

+ 13 - 13
target/linux/generic/patches-4.4/160-usb-gadget-udc-net2280-add-usb2380-support.patch

@@ -112,7 +112,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  				!list_empty(&ep->queue) && ep->td_dma)
  					restart_dma(ep);
  			ep->wedged = 0;
-@@ -2394,7 +2394,7 @@ static int net2280_start(struct usb_gadg
+@@ -2397,7 +2397,7 @@ static int net2280_start(struct usb_gadg
  	 */
  	net2280_led_active(dev, 1);
  
@@ -121,7 +121,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  		defect7374_enable_data_eps_zero(dev);
  
  	ep0_start(dev);
-@@ -3060,7 +3060,7 @@ static void handle_stat0_irqs(struct net
+@@ -3066,7 +3066,7 @@ static void handle_stat0_irqs(struct net
  		}
  		ep->stopped = 0;
  		dev->protocol_stall = 0;
@@ -130,7 +130,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  			if (ep->dev->quirks & PLX_2280)
  				tmp = BIT(FIFO_OVERFLOW) |
  				    BIT(FIFO_UNDERFLOW);
-@@ -3087,7 +3087,7 @@ static void handle_stat0_irqs(struct net
+@@ -3093,7 +3093,7 @@ static void handle_stat0_irqs(struct net
  		cpu_to_le32s(&u.raw[0]);
  		cpu_to_le32s(&u.raw[1]);
  
@@ -139,7 +139,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  			defect7374_workaround(dev, u.r);
  
  		tmp = 0;
-@@ -3170,7 +3170,7 @@ static void handle_stat0_irqs(struct net
+@@ -3176,7 +3176,7 @@ static void handle_stat0_irqs(struct net
  			} else {
  				ep_vdbg(dev, "%s clear halt\n", e->ep.name);
  				clear_halt(e);
@@ -148,7 +148,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  					!list_empty(&e->queue) && e->td_dma)
  						restart_dma(e);
  			}
-@@ -3192,7 +3192,7 @@ static void handle_stat0_irqs(struct net
+@@ -3198,7 +3198,7 @@ static void handle_stat0_irqs(struct net
  			if (e->ep.name == ep0name)
  				goto do_stall;
  			set_halt(e);
@@ -157,7 +157,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  				abort_dma(e);
  			allow_status(ep);
  			ep_vdbg(dev, "%s set halt\n", ep->ep.name);
-@@ -3231,7 +3231,7 @@ do_stall:
+@@ -3237,7 +3237,7 @@ do_stall:
  #undef	w_length
  
  next_endpoints:
@@ -166,7 +166,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  		u32 mask = (BIT(ENDPOINT_0_INTERRUPT) |
  			USB3380_IRQSTAT0_EP_INTR_MASK_IN |
  			USB3380_IRQSTAT0_EP_INTR_MASK_OUT);
-@@ -3392,7 +3392,7 @@ static void handle_stat1_irqs(struct net
+@@ -3404,7 +3404,7 @@ __acquires(dev->lock)
  		writel(tmp, &dma->dmastat);
  
  		/* dma sync*/
@@ -175,7 +175,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  			u32 r_dmacount = readl(&dma->dmacount);
  			if (!ep->is_in &&  (r_dmacount & 0x00FFFFFF) &&
  			    (tmp & BIT(DMA_TRANSACTION_DONE_INTERRUPT)))
-@@ -3461,7 +3461,7 @@ static irqreturn_t net2280_irq(int irq,
+@@ -3473,7 +3473,7 @@ static irqreturn_t net2280_irq(int irq,
  	/* control requests and PIO */
  	handle_stat0_irqs(dev, readl(&dev->regs->irqstat0));
  
@@ -184,7 +184,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  		/* re-enable interrupt to trigger any possible new interrupt */
  		u32 pciirqenb1 = readl(&dev->regs->pciirqenb1);
  		writel(pciirqenb1 & 0x7FFFFFFF, &dev->regs->pciirqenb1);
-@@ -3506,7 +3506,7 @@ static void net2280_remove(struct pci_de
+@@ -3518,7 +3518,7 @@ static void net2280_remove(struct pci_de
  	}
  	if (dev->got_irq)
  		free_irq(pdev->irq, dev);
@@ -193,7 +193,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  		pci_disable_msi(pdev);
  	if (dev->regs)
  		iounmap(dev->regs);
-@@ -3586,7 +3586,7 @@ static int net2280_probe(struct pci_dev
+@@ -3598,7 +3598,7 @@ static int net2280_probe(struct pci_dev
  	dev->dep = (struct net2280_dep_regs __iomem *) (base + 0x0200);
  	dev->epregs = (struct net2280_ep_regs __iomem *) (base + 0x0300);
  
@@ -202,7 +202,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  		u32 fsmvalue;
  		u32 usbstat;
  		dev->usb_ext = (struct usb338x_usb_ext_regs __iomem *)
-@@ -3630,7 +3630,7 @@ static int net2280_probe(struct pci_dev
+@@ -3642,7 +3642,7 @@ static int net2280_probe(struct pci_dev
  		goto done;
  	}
  
@@ -211,7 +211,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  		if (pci_enable_msi(pdev))
  			ep_err(dev, "Failed to enable MSI mode\n");
  
-@@ -3748,10 +3748,19 @@ static const struct pci_device_id pci_id
+@@ -3760,10 +3760,19 @@ static const struct pci_device_id pci_id
  	.class =	((PCI_CLASS_SERIAL_USB << 8) | 0xfe),
  	.class_mask =	~0,
  	.vendor =	PCI_VENDOR_ID_PLX,
@@ -232,7 +232,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  	 },
  	{
  	.class =	((PCI_CLASS_SERIAL_USB << 8) | 0xfe),
-@@ -3760,7 +3769,7 @@ static const struct pci_device_id pci_id
+@@ -3772,7 +3781,7 @@ static const struct pci_device_id pci_id
  	.device =	0x3382,
  	.subvendor =	PCI_ANY_ID,
  	.subdevice =	PCI_ANY_ID,

+ 4 - 4
target/linux/generic/patches-4.4/201-extra_optimization.patch

@@ -1,11 +1,11 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -626,12 +626,12 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
- KBUILD_CFLAGS	+= $(call cc-disable-warning, int-in-bool-context)
+@@ -639,12 +639,12 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
+ KBUILD_CFLAGS	+= $(call cc-disable-warning, attribute-alias)
  
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
--KBUILD_CFLAGS	+= -Os
-+KBUILD_CFLAGS	+= -Os $(EXTRA_OPTIMIZATION)
+-KBUILD_CFLAGS	+= $(call cc-option,-Oz,-Os)
++KBUILD_CFLAGS	+= $(call cc-option,-Oz,-Os) $(EXTRA_OPTIMIZATION)
  else
  ifdef CONFIG_PROFILE_ALL_BRANCHES
 -KBUILD_CFLAGS	+= -O2

+ 1 - 1
target/linux/generic/patches-4.4/202-reduce_module_size.patch

@@ -1,6 +1,6 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -405,7 +405,7 @@ KBUILD_CFLAGS_KERNEL :=
+@@ -400,7 +400,7 @@ KBUILD_CFLAGS_KERNEL :=
  KBUILD_AFLAGS   := -D__ASSEMBLY__ $(call cc-option,-fno-PIE)
  KBUILD_AFLAGS_MODULE  := -DMODULE
  KBUILD_CFLAGS_MODULE  := -DMODULE

+ 8 - 8
target/linux/generic/patches-4.4/304-mips_disable_fpu.patch

@@ -86,21 +86,21 @@ v2: incorporated changes suggested by Jonas Gorski
  extern int fpu_emulator_cop1Handler(struct pt_regs *xcp,
  				    struct mips_fpu_struct *ctx, int has_fpu,
  				    void *__user *fault_addr);
-+#else	/* no CONFIG_MIPS_FPU_EMULATOR */
++#else  /* no CONFIG_MIPS_FPU_EMULATOR */
 +static inline int do_dsemulret(struct pt_regs *xcp)
 +{
-+	return 0;	/* 0 means error, should never get here anyway */
++	return 0;       /* 0 means error, should never get here anyway */
 +}
 +
 +static inline int fpu_emulator_cop1Handler(struct pt_regs *xcp,
-+				struct mips_fpu_struct *ctx, int has_fpu,
-+				void *__user *fault_addr)
++					   struct mips_fpu_struct *ctx, int has_fpu,
++					   void *__user *fault_addr)
 +{
 +	*fault_addr = NULL;
-+	return SIGILL;	/* we don't speak MIPS FPU */
++	return SIGILL;  /* we don't speak MIPS FPU */
 +}
-+#endif	/* CONFIG_MIPS_FPU_EMULATOR */
++#endif /* CONFIG_MIPS_FPU_EMULATOR */
 +
+ void force_fcr31_sig(unsigned long fcr31, void __user *fault_addr,
+ 		     struct task_struct *tsk);
  int process_fpemu_return(int sig, void __user *fault_addr,
- 			 unsigned long fcr31);
- int mm_isBranchInstr(struct pt_regs *regs, struct mm_decoded_insn dec_insn,

+ 1 - 1
target/linux/generic/patches-4.4/330-MIPS-kexec-Accept-command-line-parameters-from-users.patch

@@ -210,7 +210,7 @@ Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
  
  	/*
  	 * The generic kexec code builds a page list with physical
-@@ -98,15 +210,16 @@ machine_kexec(struct kimage *image)
+@@ -101,15 +213,16 @@ machine_kexec(struct kimage *image)
  	/*
  	 * we do not want to be bothered.
  	 */

+ 1 - 1
target/linux/generic/patches-4.4/475-mtd-spi-nor-add-macronix-mx25u25635f.patch

@@ -1,6 +1,6 @@
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -725,6 +725,7 @@ static const struct flash_info spi_nor_i
+@@ -731,6 +731,7 @@ static const struct flash_info spi_nor_i
  	{ "mx25l12805d", INFO(0xc22018, 0, 64 * 1024, 256, 0) },
  	{ "mx25l12855e", INFO(0xc22618, 0, 64 * 1024, 256, 0) },
  	{ "mx25l25635e", INFO(0xc22019, 0, 64 * 1024, 512, 0) },

+ 1 - 1
target/linux/generic/patches-4.4/477-mtd-add-spi-nor-add-mx25u3235f.patch

@@ -1,6 +1,6 @@
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -722,6 +722,7 @@ static const struct flash_info spi_nor_i
+@@ -728,6 +728,7 @@ static const struct flash_info spi_nor_i
  	{ "mx25l3205d",  INFO(0xc22016, 0, 64 * 1024,  64, SECT_4K) },
  	{ "mx25l3255e",  INFO(0xc29e16, 0, 64 * 1024,  64, SECT_4K) },
  	{ "mx25l6405d",  INFO(0xc22017, 0, 64 * 1024, 128, SECT_4K) },

+ 2 - 2
target/linux/generic/patches-4.4/530-jffs2_make_lzma_available.patch

@@ -206,7 +206,7 @@
 +}
 --- a/fs/jffs2/super.c
 +++ b/fs/jffs2/super.c
-@@ -375,14 +375,41 @@ static int __init init_jffs2_fs(void)
+@@ -373,14 +373,41 @@ static int __init init_jffs2_fs(void)
  	BUILD_BUG_ON(sizeof(struct jffs2_raw_inode) != 68);
  	BUILD_BUG_ON(sizeof(struct jffs2_raw_summary) != 32);
  
@@ -1081,7 +1081,7 @@
  ifdef CONFIG_FUNCTION_TRACER
  ORIG_CFLAGS := $(KBUILD_CFLAGS)
  KBUILD_CFLAGS = $(subst $(CC_FLAGS_FTRACE),,$(ORIG_CFLAGS))
-@@ -98,6 +108,8 @@ obj-$(CONFIG_LZ4HC_COMPRESS) += lz4/
+@@ -96,6 +106,8 @@ obj-$(CONFIG_LZ4HC_COMPRESS) += lz4/
  obj-$(CONFIG_LZ4_DECOMPRESS) += lz4/
  obj-$(CONFIG_XZ_DEC) += xz/
  obj-$(CONFIG_RAID6_PQ) += raid6/

+ 12 - 12
target/linux/generic/patches-4.4/645-bridge_multicast_to_unicast.patch

@@ -172,7 +172,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  			if (err)
  				break;
  		}
-@@ -1432,7 +1458,8 @@ br_multicast_leave_group(struct net_brid
+@@ -1439,7 +1465,8 @@ br_multicast_leave_group(struct net_brid
  			 struct net_bridge_port *port,
  			 struct br_ip *group,
  			 struct bridge_mcast_other_query *other_query,
@@ -182,7 +182,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
  	struct net_bridge_mdb_htable *mdb;
  	struct net_bridge_mdb_entry *mp;
-@@ -1456,7 +1483,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1463,7 +1490,7 @@ br_multicast_leave_group(struct net_brid
  		for (pp = &mp->ports;
  		     (p = mlock_dereference(*pp, br)) != NULL;
  		     pp = &p->next) {
@@ -191,7 +191,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  				continue;
  
  			rcu_assign_pointer(*pp, p->next);
-@@ -1519,7 +1546,7 @@ br_multicast_leave_group(struct net_brid
+@@ -1526,7 +1553,7 @@ br_multicast_leave_group(struct net_brid
  	for (p = mlock_dereference(mp->ports, br);
  	     p != NULL;
  	     p = mlock_dereference(p->next, br)) {
@@ -200,7 +200,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  			continue;
  
  		if (!hlist_unhashed(&p->mglist) &&
-@@ -1537,8 +1564,8 @@ out:
+@@ -1544,8 +1571,8 @@ out:
  
  static void br_ip4_multicast_leave_group(struct net_bridge *br,
  					 struct net_bridge_port *port,
@@ -211,7 +211,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
  	struct br_ip br_group;
  	struct bridge_mcast_own_query *own_query;
-@@ -1553,14 +1580,14 @@ static void br_ip4_multicast_leave_group
+@@ -1560,14 +1587,14 @@ static void br_ip4_multicast_leave_group
  	br_group.vid = vid;
  
  	br_multicast_leave_group(br, port, &br_group, &br->ip4_other_query,
@@ -228,7 +228,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  {
  	struct br_ip br_group;
  	struct bridge_mcast_own_query *own_query;
-@@ -1575,7 +1602,7 @@ static void br_ip6_multicast_leave_group
+@@ -1582,7 +1609,7 @@ static void br_ip6_multicast_leave_group
  	br_group.vid = vid;
  
  	br_multicast_leave_group(br, port, &br_group, &br->ip6_other_query,
@@ -237,7 +237,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  }
  #endif
  
-@@ -1584,6 +1611,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1591,6 +1618,7 @@ static int br_multicast_ipv4_rcv(struct
  				 struct sk_buff *skb,
  				 u16 vid)
  {
@@ -245,7 +245,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  	struct sk_buff *skb_trimmed = NULL;
  	struct igmphdr *ih;
  	int err;
-@@ -1600,12 +1628,13 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1607,12 +1635,13 @@ static int br_multicast_ipv4_rcv(struct
  
  	BR_INPUT_SKB_CB(skb)->igmp = 1;
  	ih = igmp_hdr(skb);
@@ -260,7 +260,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  		break;
  	case IGMPV3_HOST_MEMBERSHIP_REPORT:
  		err = br_ip4_multicast_igmp3_report(br, port, skb_trimmed, vid);
-@@ -1614,7 +1643,7 @@ static int br_multicast_ipv4_rcv(struct
+@@ -1621,7 +1650,7 @@ static int br_multicast_ipv4_rcv(struct
  		err = br_ip4_multicast_query(br, port, skb_trimmed, vid);
  		break;
  	case IGMP_HOST_LEAVE_MESSAGE:
@@ -269,7 +269,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  		break;
  	}
  
-@@ -1630,6 +1659,7 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1637,6 +1666,7 @@ static int br_multicast_ipv6_rcv(struct
  				 struct sk_buff *skb,
  				 u16 vid)
  {
@@ -277,7 +277,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  	struct sk_buff *skb_trimmed = NULL;
  	struct mld_msg *mld;
  	int err;
-@@ -1649,8 +1679,9 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1656,8 +1686,9 @@ static int br_multicast_ipv6_rcv(struct
  
  	switch (mld->mld_type) {
  	case ICMPV6_MGM_REPORT:
@@ -288,7 +288,7 @@ Implement optinal multicast->unicast conversion for igmp snooping
  		break;
  	case ICMPV6_MLD2_REPORT:
  		err = br_ip6_multicast_mld2_report(br, port, skb_trimmed, vid);
-@@ -1659,7 +1690,8 @@ static int br_multicast_ipv6_rcv(struct
+@@ -1666,7 +1697,8 @@ static int br_multicast_ipv6_rcv(struct
  		err = br_ip6_multicast_query(br, port, skb_trimmed, vid);
  		break;
  	case ICMPV6_MGM_REDUCTION:

+ 16 - 16
target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch

@@ -147,7 +147,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	}
  	return &ip6n->tnls[prio][h];
  }
-@@ -369,6 +378,12 @@ ip6_tnl_dev_uninit(struct net_device *de
+@@ -372,6 +381,12 @@ ip6_tnl_dev_uninit(struct net_device *de
  	struct net *net = t->net;
  	struct ip6_tnl_net *ip6n = net_generic(net, ip6_tnl_net_id);
  
@@ -160,7 +160,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	if (dev == ip6n->fb_tnl_dev)
  		RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
  	else
-@@ -765,6 +780,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
+@@ -768,6 +783,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
  }
  EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
  
@@ -269,7 +269,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  /**
   * ip6_tnl_rcv - decapsulate IPv6 packet and retransmit it locally
   *   @skb: received socket buffer
-@@ -810,6 +927,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
+@@ -813,6 +930,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
  		skb_reset_network_header(skb);
  		skb->protocol = htons(protocol);
  		memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
@@ -296,15 +296,15 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  		__skb_tunnel_rx(skb, t->dev, t->net);
  
-@@ -1145,6 +1282,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1153,6 +1290,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  	__u32 mtu;
  	u8 tproto;
  	int err;
 +	struct __ip6_tnl_fmr *fmr;
  
- 	tproto = ACCESS_ONCE(t->parms.proto);
- 	if ((tproto != IPPROTO_IPV6 && tproto != 0) ||
-@@ -1175,6 +1313,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+ 	if (unlikely(!pskb_may_pull(skb, sizeof(*ipv6h))))
+ 		return -1;
+@@ -1187,6 +1325,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
  		fl6.flowi6_mark = skb->mark;
  
@@ -323,7 +323,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu);
  	if (err != 0) {
  		if (err == -EMSGSIZE)
-@@ -1289,6 +1439,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1301,6 +1451,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.flowinfo = p->flowinfo;
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
@@ -338,7 +338,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1327,6 +1485,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1339,6 +1497,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -346,7 +346,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1622,6 +1781,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1634,6 +1793,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -362,7 +362,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -1653,6 +1821,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1665,6 +1833,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_PROTO])
  		parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]);
@@ -409,7 +409,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  }
  
  static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -1705,6 +1913,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -1717,6 +1925,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -422,7 +422,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -1722,6 +1936,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -1734,6 +1948,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(4) +
  		/* IFLA_IPTUN_PROTO */
  		nla_total_size(1) +
@@ -447,7 +447,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  		0;
  }
  
-@@ -1729,6 +1961,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1741,6 +1973,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -457,7 +457,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
-@@ -1737,8 +1972,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1749,8 +1984,27 @@ static int ip6_tnl_fill_info(struct sk_b
  	    nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
@@ -486,7 +486,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	return 0;
  
  nla_put_failure:
-@@ -1762,6 +2016,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -1774,6 +2028,7 @@ static const struct nla_policy ip6_tnl_p
  	[IFLA_IPTUN_FLOWINFO]		= { .type = NLA_U32 },
  	[IFLA_IPTUN_FLAGS]		= { .type = NLA_U32 },
  	[IFLA_IPTUN_PROTO]		= { .type = NLA_U8 },

+ 17 - 9
target/linux/generic/patches-4.4/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch

@@ -143,7 +143,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  static const struct rt6_info ip6_blk_hole_entry_template = {
  	.dst = {
  		.__refcnt	= ATOMIC_INIT(1),
-@@ -1899,6 +1916,11 @@ static struct rt6_info *ip6_route_info_c
+@@ -1906,6 +1923,11 @@ static struct rt6_info *ip6_route_info_c
  			rt->dst.output = ip6_pkt_prohibit_out;
  			rt->dst.input = ip6_pkt_prohibit;
  			break;
@@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case RTN_THROW:
  		case RTN_UNREACHABLE:
  		default:
-@@ -2502,6 +2524,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -2509,6 +2531,17 @@ static int ip6_pkt_prohibit_out(struct n
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2744,7 +2777,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2753,7 +2786,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 ||
@@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -3097,6 +3131,9 @@ static int rt6_fill_node(struct net *net
+@@ -3106,6 +3140,9 @@ static int rt6_fill_node(struct net *net
  		case -EACCES:
  			rtm->rtm_type = RTN_PROHIBIT;
  			break;
@@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case -EAGAIN:
  			rtm->rtm_type = RTN_THROW;
  			break;
-@@ -3376,6 +3413,8 @@ static int ip6_route_dev_notify(struct n
+@@ -3385,6 +3422,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);
@@ -202,7 +202,15 @@ 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
-@@ -3602,6 +3641,17 @@ static int __net_init ip6_route_net_init
+@@ -3396,6 +3435,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);
++		in6_dev_put(net->ipv6.ip6_policy_failed_entry->rt6i_idev);
+ 		in6_dev_put(net->ipv6.ip6_blk_hole_entry->rt6i_idev);
+ #endif
+ 	}
+@@ -3611,6 +3651,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);
@@ -220,7 +228,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -3620,6 +3670,8 @@ out:
+@@ -3629,6 +3680,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -229,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3637,6 +3689,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3646,6 +3699,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);
@@ -237,7 +245,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3710,6 +3763,9 @@ void __init ip6_route_init_special_entri
+@@ -3719,6 +3773,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);

+ 6 - 6
target/linux/generic/patches-4.4/680-NET-skip-GRO-for-foreign-MAC-addresses.patch

@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4271,6 +4271,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4300,6 +4300,9 @@ static enum gro_result dev_gro_receive(s
  	enum gro_result ret;
  	int grow;
  
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	if (!(skb->dev->features & NETIF_F_GRO))
  		goto normal;
  
-@@ -5437,6 +5440,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5470,6 +5473,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   void *private)
-@@ -5508,6 +5553,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5541,6 +5586,7 @@ static int __netdev_upper_dev_link(struc
  			goto rollback_lower_mesh;
  	}
  
@@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  				      &changeupper_info.info);
  	return 0;
-@@ -5634,6 +5680,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5667,6 +5713,7 @@ void netdev_upper_dev_unlink(struct net_
  	list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
  		__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
  
@@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, dev,
  				      &changeupper_info.info);
  }
-@@ -6174,6 +6221,7 @@ int dev_set_mac_address(struct net_devic
+@@ -6209,6 +6256,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;
@@ -114,7 +114,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
 @@ -642,7 +642,8 @@ struct sk_buff {
- 	__u8			ipvs_property:1;
+ 
  	__u8			inner_protocol_type:1;
  	__u8			remcsum_offload:1;
 -	/* 3 or 5 bit hole */

+ 2 - 2
target/linux/generic/patches-4.4/721-phy_packets.patch

@@ -52,7 +52,7 @@
  /**
   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *	@skb: buffer to alter
-@@ -2312,16 +2316,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2314,16 +2318,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
@@ -86,7 +86,7 @@
  	help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -2747,10 +2747,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -2776,10 +2776,20 @@ static int xmit_one(struct sk_buff *skb,
  	if (!list_empty(&ptype_all) || !list_empty(&dev->ptype_all))
  		dev_queue_xmit_nit(skb, dev);
  

+ 1 - 1
target/linux/generic/patches-4.4/810-pci_disable_common_quirks.patch

@@ -40,7 +40,7 @@
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled,
   * even though no one is handling them (f.e. i915 driver is never loaded).
-@@ -3065,6 +3069,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3069,6 +3073,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
  

+ 4 - 4
target/linux/generic/patches-4.4/902-debloat_proc.patch

@@ -111,7 +111,7 @@
  	if (!root_irq_dir)
 --- a/kernel/time/timer_list.c
 +++ b/kernel/time/timer_list.c
-@@ -393,6 +393,8 @@ static int __init init_timer_list_procfs
+@@ -399,6 +399,8 @@ static int __init init_timer_list_procfs
  {
  	struct proc_dir_entry *pe;
  
@@ -122,7 +122,7 @@
  		return -ENOMEM;
 --- a/mm/vmalloc.c
 +++ b/mm/vmalloc.c
-@@ -2684,6 +2684,8 @@ static const struct file_operations proc
+@@ -2685,6 +2685,8 @@ static const struct file_operations proc
  
  static int __init proc_vmalloc_init(void)
  {
@@ -133,7 +133,7 @@
  }
 --- a/mm/vmstat.c
 +++ b/mm/vmstat.c
-@@ -1558,10 +1558,12 @@ static int __init setup_vmstat(void)
+@@ -1560,10 +1560,12 @@ static int __init setup_vmstat(void)
  	cpu_notifier_register_done();
  #endif
  #ifdef CONFIG_PROC_FS
@@ -239,7 +239,7 @@
  
 --- a/net/ipv4/route.c
 +++ b/net/ipv4/route.c
-@@ -420,6 +420,9 @@ static struct pernet_operations ip_rt_pr
+@@ -423,6 +423,9 @@ static struct pernet_operations ip_rt_pr
  
  static int __init ip_rt_proc_init(void)
  {