diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 7fe6e7910b..10d03a1461 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -3,10 +3,10 @@
 LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .43
-LINUX_VERSION-4.4 = .116
+LINUX_VERSION-4.4 = .119
 
 LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
-LINUX_KERNEL_HASH-4.4.116 = 566fea5814627ee65cc1e6b9c4bfe2f7642ac36b6185e2a3dcb9e8ba1e325fa3
+LINUX_KERNEL_HASH-4.4.119 = 4f1f9b7b6b2ee93597239d89bb3b6b60c71ebd8c91d706fadd36f515c68443e6
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
diff --git a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
index 9a440b4505..72d964df63 100644
--- a/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
+++ b/target/linux/ar71xx/patches-4.4/910-unaligned_access_hacks.patch
@@ -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
-@@ -1410,7 +1410,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1307,7 +1307,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  
  	dsfield = ipv6_get_dsfield(ipv6h);
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_TCLASS)
diff --git a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch
index 1f652dc998..561fcaed10 100644
--- a/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0029-Add-dwc_otg-driver.patch
@@ -4592,7 +4592,7 @@ dwc_otg: Remove duplicate gadget probe/unregister function
 +module_exit(fsg_cleanup);
 --- a/drivers/usb/host/Kconfig
 +++ b/drivers/usb/host/Kconfig
-@@ -735,6 +735,19 @@ config USB_HWA_HCD
+@@ -737,6 +737,19 @@ config USB_HWA_HCD
  	  To compile this driver a module, choose M here: the module
  	  will be called "hwa-hc".
  
diff --git a/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch b/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
index e3101e0131..859a08db3a 100644
--- a/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
+++ b/target/linux/brcm2708/patches-4.4/0083-mfd-Add-Raspberry-Pi-Sense-HAT-core-driver.patch
@@ -390,7 +390,7 @@ Subject: [PATCH] mfd: Add Raspberry Pi Sense HAT core driver
 +
 --- a/drivers/video/fbdev/Kconfig
 +++ b/drivers/video/fbdev/Kconfig
-@@ -2505,3 +2505,16 @@ config FB_SM712
+@@ -2506,3 +2506,16 @@ config FB_SM712
  	  This driver is also available as a module. The module will be
  	  called sm712fb. If you want to compile it as a module, say M
  	  here and read <file:Documentation/kbuild/modules.txt>.
diff --git a/target/linux/brcm2708/patches-4.4/0551-kbuild-add-fno-PIE.patch b/target/linux/brcm2708/patches-4.4/0551-kbuild-add-fno-PIE.patch
index 5bfbbf667c..c3b5adc7c4 100644
--- a/target/linux/brcm2708/patches-4.4/0551-kbuild-add-fno-PIE.patch
+++ b/target/linux/brcm2708/patches-4.4/0551-kbuild-add-fno-PIE.patch
@@ -29,7 +29,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -622,6 +622,8 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
+@@ -624,6 +624,8 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
  KBUILD_CFLAGS	+= $(call cc-disable-warning, format-truncation)
  KBUILD_CFLAGS	+= $(call cc-disable-warning, format-overflow)
  KBUILD_CFLAGS	+= $(call cc-disable-warning, int-in-bool-context)
diff --git a/target/linux/brcm2708/patches-4.4/0552-kbuild-Steal-gcc-s-pie-from-the-very-beginning.patch b/target/linux/brcm2708/patches-4.4/0552-kbuild-Steal-gcc-s-pie-from-the-very-beginning.patch
index 3e3d35a529..de20f9e8c4 100644
--- a/target/linux/brcm2708/patches-4.4/0552-kbuild-Steal-gcc-s-pie-from-the-very-beginning.patch
+++ b/target/linux/brcm2708/patches-4.4/0552-kbuild-Steal-gcc-s-pie-from-the-very-beginning.patch
@@ -38,7 +38,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
 --- a/Makefile
 +++ b/Makefile
-@@ -622,8 +622,6 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
+@@ -624,8 +624,6 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
  KBUILD_CFLAGS	+= $(call cc-disable-warning, format-truncation)
  KBUILD_CFLAGS	+= $(call cc-disable-warning, format-overflow)
  KBUILD_CFLAGS	+= $(call cc-disable-warning, int-in-bool-context)
diff --git a/target/linux/generic/patches-4.4/201-extra_optimization.patch b/target/linux/generic/patches-4.4/201-extra_optimization.patch
index 2f834422cb..b4235a11d4 100644
--- a/target/linux/generic/patches-4.4/201-extra_optimization.patch
+++ b/target/linux/generic/patches-4.4/201-extra_optimization.patch
@@ -1,6 +1,6 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -624,12 +624,12 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
+@@ -626,12 +626,12 @@ KBUILD_CFLAGS	+= $(call cc-disable-warni
  KBUILD_CFLAGS	+= $(call cc-disable-warning, int-in-bool-context)
  
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
diff --git a/target/linux/generic/patches-4.4/202-reduce_module_size.patch b/target/linux/generic/patches-4.4/202-reduce_module_size.patch
index d68c463648..1aabf3e722 100644
--- a/target/linux/generic/patches-4.4/202-reduce_module_size.patch
+++ b/target/linux/generic/patches-4.4/202-reduce_module_size.patch
@@ -1,6 +1,6 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -403,7 +403,7 @@ KBUILD_CFLAGS_KERNEL :=
+@@ -405,7 +405,7 @@ KBUILD_CFLAGS_KERNEL :=
  KBUILD_AFLAGS   := -D__ASSEMBLY__ $(call cc-option,-fno-PIE)
  KBUILD_AFLAGS_MODULE  := -DMODULE
  KBUILD_CFLAGS_MODULE  := -DMODULE
diff --git a/target/linux/generic/patches-4.4/204-module_strip.patch b/target/linux/generic/patches-4.4/204-module_strip.patch
index 106b0a5aed..a661f98c65 100644
--- a/target/linux/generic/patches-4.4/204-module_strip.patch
+++ b/target/linux/generic/patches-4.4/204-module_strip.patch
@@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  config MODULES_TREE_LOOKUP
 --- a/kernel/module.c
 +++ b/kernel/module.c
-@@ -2871,6 +2871,7 @@ static struct module *setup_load_info(st
+@@ -2880,6 +2880,7 @@ static void check_modinfo_retpoline(stru
  
  static int check_modinfo(struct module *mod, struct load_info *info, int flags)
  {
@@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	const char *modmagic = get_modinfo(info, "vermagic");
  	int err;
  
-@@ -2900,6 +2901,7 @@ static int check_modinfo(struct module *
+@@ -2911,6 +2912,7 @@ static int check_modinfo(struct module *
  		pr_warn("%s: module is from the staging directory, the quality "
  			"is unknown, you have been warned.\n", mod->name);
  	}
@@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  	buf_printf(b, "\n");
  	buf_printf(b, "__visible struct module __this_module\n");
  	buf_printf(b, "__attribute__((section(\".gnu.linkonce.this_module\"))) = {\n");
-@@ -2125,16 +2129,20 @@ static void add_header(struct buffer *b,
+@@ -2125,8 +2129,10 @@ static void add_header(struct buffer *b,
  
  static void add_intree_flag(struct buffer *b, int is_intree)
  {
@@ -153,6 +153,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
 +#endif
  }
  
+ /* Cannot check for assembler */
+@@ -2139,10 +2145,12 @@ static void add_retpoline(struct buffer
+ 
  static void add_staging_flag(struct buffer *b, const char *name)
  {
 +#ifndef CONFIG_MODULE_STRIPPED
@@ -164,7 +167,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
  
  /* In kernel, this size is defined in linux/module.h;
-@@ -2238,11 +2246,13 @@ static void add_depends(struct buffer *b
+@@ -2246,11 +2254,13 @@ static void add_depends(struct buffer *b
  
  static void add_srcversion(struct buffer *b, struct module *mod)
  {
@@ -178,7 +181,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  }
  
  static void write_if_changed(struct buffer *b, const char *fname)
-@@ -2476,7 +2486,9 @@ int main(int argc, char **argv)
+@@ -2485,7 +2495,9 @@ int main(int argc, char **argv)
  		add_staging_flag(&buf, mod->name);
  		err |= add_versions(&buf, mod);
  		add_depends(&buf, mod, modules);
diff --git a/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index 303d831214..fe599798ce 100644
--- a/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/patches-4.4/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -16,7 +16,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 
 --- a/include/net/ip6_tunnel.h
 +++ b/include/net/ip6_tunnel.h
-@@ -15,6 +15,18 @@
+@@ -17,6 +17,18 @@
  /* determine capability on a per-packet basis */
  #define IP6_TNL_F_CAP_PER_PACKET 0x40000
  
@@ -35,7 +35,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  struct __ip6_tnl_parm {
  	char name[IFNAMSIZ];	/* name of tunnel device */
  	int link;		/* ifindex of underlying L2 interface */
-@@ -25,6 +37,7 @@ struct __ip6_tnl_parm {
+@@ -27,6 +39,7 @@ struct __ip6_tnl_parm {
  	__u32 flags;		/* tunnel flags */
  	struct in6_addr laddr;	/* local tunnel end-point address */
  	struct in6_addr raddr;	/* remote tunnel end-point address */
@@ -94,7 +94,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  }
  
  static int ip6_tnl_dev_init(struct net_device *dev);
-@@ -230,20 +230,29 @@ EXPORT_SYMBOL_GPL(ip6_tnl_dst_init);
+@@ -139,20 +139,29 @@ static struct net_device_stats *ip6_get_
  static struct ip6_tnl *
  ip6_tnl_lookup(struct net *net, const struct in6_addr *remote, const struct in6_addr *local)
  {
@@ -129,7 +129,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	for_each_ip6_tunnel_rcu(ip6n->tnls_r_l[hash]) {
  		if (ipv6_addr_equal(local, &t->parms.laddr) &&
  		    ipv6_addr_any(&t->parms.raddr) &&
-@@ -251,7 +260,7 @@ ip6_tnl_lookup(struct net *net, const st
+@@ -160,7 +169,7 @@ ip6_tnl_lookup(struct net *net, const st
  			return t;
  	}
  
@@ -138,7 +138,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	for_each_ip6_tunnel_rcu(ip6n->tnls_r_l[hash]) {
  		if (ipv6_addr_equal(remote, &t->parms.raddr) &&
  		    ipv6_addr_any(&t->parms.laddr) &&
-@@ -287,7 +296,7 @@ ip6_tnl_bucket(struct ip6_tnl_net *ip6n,
+@@ -196,7 +205,7 @@ ip6_tnl_bucket(struct ip6_tnl_net *ip6n,
  
  	if (!ipv6_addr_any(remote) || !ipv6_addr_any(local)) {
  		prio = 1;
@@ -147,7 +147,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  	}
  	return &ip6n->tnls[prio][h];
  }
-@@ -460,6 +469,12 @@ ip6_tnl_dev_uninit(struct net_device *de
+@@ -369,6 +378,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
-@@ -856,6 +871,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
+@@ -765,6 +780,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
-@@ -901,6 +1018,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
+@@ -810,6 +927,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,7 +296,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  		__skb_tunnel_rx(skb, t->dev, t->net);
  
-@@ -1248,6 +1385,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1145,6 +1282,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
  	__u32 mtu;
  	u8 tproto;
  	int err;
@@ -304,7 +304,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
  	tproto = ACCESS_ONCE(t->parms.proto);
  	if ((tproto != IPPROTO_IPV6 && tproto != 0) ||
-@@ -1278,6 +1416,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1175,6 +1313,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)
-@@ -1392,6 +1542,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1289,6 +1439,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.flowinfo = p->flowinfo;
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
@@ -335,10 +335,10 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
 +	}
 +	t->parms.fmrs = p->fmrs;
 +
- 	ip6_tnl_dst_reset(t);
+ 	dst_cache_reset(&t->dst_cache);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1430,6 +1588,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1327,6 +1485,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));
  }
  
-@@ -1725,6 +1884,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1622,6 +1781,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)
  {
-@@ -1756,6 +1924,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1653,6 +1821,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,
-@@ -1808,6 +2016,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -1705,6 +1913,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) +
-@@ -1825,6 +2039,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -1722,6 +1936,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;
  }
  
-@@ -1832,6 +2064,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1729,6 +1961,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) ||
-@@ -1840,8 +2075,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1737,8 +1972,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:
-@@ -1865,6 +2119,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -1762,6 +2016,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 },
diff --git a/target/linux/generic/patches-4.4/901-debloat_sock_diag.patch b/target/linux/generic/patches-4.4/901-debloat_sock_diag.patch
index fa9f37b716..4733d1b79c 100644
--- a/target/linux/generic/patches-4.4/901-debloat_sock_diag.patch
+++ b/target/linux/generic/patches-4.4/901-debloat_sock_diag.patch
@@ -39,7 +39,7 @@
  
 --- a/net/ipv4/Kconfig
 +++ b/net/ipv4/Kconfig
-@@ -414,6 +414,7 @@ config INET_LRO
+@@ -415,6 +415,7 @@ config INET_LRO
  
  config INET_DIAG
  	tristate "INET: socket monitoring interface"
diff --git a/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch b/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch
index 4fb406442c..36298ed2a9 100644
--- a/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch
+++ b/target/linux/ipq806x/patches-4.4/096-08-usb-dwc3-remove-num_event_buffers.patch
@@ -161,7 +161,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  
 --- a/drivers/usb/dwc3/gadget.c
 +++ b/drivers/usb/dwc3/gadget.c
-@@ -2569,14 +2569,14 @@ static void dwc3_process_event_entry(str
+@@ -2571,14 +2571,14 @@ static void dwc3_process_event_entry(str
  	}
  }
  
@@ -178,7 +178,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  	left = evt->count;
  
  	if (!(evt->flags & DWC3_EVENT_PENDING))
-@@ -2601,7 +2601,7 @@ static irqreturn_t dwc3_process_event_bu
+@@ -2603,7 +2603,7 @@ static irqreturn_t dwc3_process_event_bu
  		evt->lpos = (evt->lpos + 4) % DWC3_EVENT_BUFFERS_SIZE;
  		left -= 4;
  
@@ -187,7 +187,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  	}
  
  	evt->count = 0;
-@@ -2609,9 +2609,9 @@ static irqreturn_t dwc3_process_event_bu
+@@ -2611,9 +2611,9 @@ static irqreturn_t dwc3_process_event_bu
  	ret = IRQ_HANDLED;
  
  	/* Unmask interrupt */
@@ -199,7 +199,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  
  	return ret;
  }
-@@ -2621,27 +2621,23 @@ static irqreturn_t dwc3_thread_interrupt
+@@ -2623,27 +2623,23 @@ static irqreturn_t dwc3_thread_interrupt
  	struct dwc3 *dwc = _dwc;
  	unsigned long flags;
  	irqreturn_t ret = IRQ_NONE;
@@ -231,7 +231,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  	count &= DWC3_GEVNTCOUNT_MASK;
  	if (!count)
  		return IRQ_NONE;
-@@ -2650,9 +2646,9 @@ static irqreturn_t dwc3_check_event_buf(
+@@ -2652,9 +2648,9 @@ static irqreturn_t dwc3_check_event_buf(
  	evt->flags |= DWC3_EVENT_PENDING;
  
  	/* Mask interrupt */
@@ -243,7 +243,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  
  	return IRQ_WAKE_THREAD;
  }
-@@ -2660,18 +2656,8 @@ static irqreturn_t dwc3_check_event_buf(
+@@ -2662,18 +2658,8 @@ static irqreturn_t dwc3_check_event_buf(
  static irqreturn_t dwc3_interrupt(int irq, void *_dwc)
  {
  	struct dwc3			*dwc = _dwc;
diff --git a/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch b/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch
index 6592a4eece..e2aa2a18b9 100644
--- a/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch
+++ b/target/linux/ipq806x/patches-4.4/096-09-usb-dwc3-drop-ev_buffs-array.patch
@@ -76,7 +76,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  	struct usb_gadget	gadget;
 --- a/drivers/usb/dwc3/gadget.c
 +++ b/drivers/usb/dwc3/gadget.c
-@@ -2576,7 +2576,7 @@ static irqreturn_t dwc3_process_event_bu
+@@ -2578,7 +2578,7 @@ static irqreturn_t dwc3_process_event_bu
  	int left;
  	u32 reg;
  
@@ -85,7 +85,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
  	left = evt->count;
  
  	if (!(evt->flags & DWC3_EVENT_PENDING))
-@@ -2635,7 +2635,7 @@ static irqreturn_t dwc3_check_event_buf(
+@@ -2637,7 +2637,7 @@ static irqreturn_t dwc3_check_event_buf(
  	u32 count;
  	u32 reg;
  
diff --git a/target/linux/layerscape/patches-4.4/7224-fsl-mc-msi-Added-FSL-MC-specific-member-to-the-msi_d.patch b/target/linux/layerscape/patches-4.4/7224-fsl-mc-msi-Added-FSL-MC-specific-member-to-the-msi_d.patch
index 8dd11f4160..62a0f8a962 100644
--- a/target/linux/layerscape/patches-4.4/7224-fsl-mc-msi-Added-FSL-MC-specific-member-to-the-msi_d.patch
+++ b/target/linux/layerscape/patches-4.4/7224-fsl-mc-msi-Added-FSL-MC-specific-member-to-the-msi_d.patch
@@ -15,7 +15,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 
 --- a/include/linux/msi.h
 +++ b/include/linux/msi.h
-@@ -33,6 +33,14 @@ struct platform_msi_desc {
+@@ -39,6 +39,14 @@ struct platform_msi_desc {
  };
  
  /**
@@ -30,7 +30,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
   * struct msi_desc - Descriptor structure for MSI based interrupts
   * @list:	List head for management
   * @irq:	The base interrupt number
-@@ -87,6 +95,7 @@ struct msi_desc {
+@@ -93,6 +101,7 @@ struct msi_desc {
  		 * tree wide cleanup.
  		 */
  		struct platform_msi_desc platform;
diff --git a/target/linux/mediatek/patches-4.4/0020-arm64-dts-mediatek-add-xHCI-usb-phy-for-mt8173.patch b/target/linux/mediatek/patches-4.4/0020-arm64-dts-mediatek-add-xHCI-usb-phy-for-mt8173.patch
index 50c03ee892..5b57b9edbc 100644
--- a/target/linux/mediatek/patches-4.4/0020-arm64-dts-mediatek-add-xHCI-usb-phy-for-mt8173.patch
+++ b/target/linux/mediatek/patches-4.4/0020-arm64-dts-mediatek-add-xHCI-usb-phy-for-mt8173.patch
@@ -57,7 +57,7 @@ Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
  #include <dt-bindings/power/mt8173-power.h>
  #include <dt-bindings/reset-controller/mt8173-resets.h>
  #include "mt8173-pinfunc.h"
-@@ -510,6 +511,47 @@
+@@ -512,6 +513,47 @@
  			status = "disabled";
  		};
  
diff --git a/target/linux/mediatek/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch b/target/linux/mediatek/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch
index a5b51d4a90..f1f4971b3d 100644
--- a/target/linux/mediatek/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch
+++ b/target/linux/mediatek/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch
@@ -5142,7 +5142,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  		      long long offset, long long length);
 --- a/include/linux/mtd/sh_flctl.h
 +++ b/include/linux/mtd/sh_flctl.h
-@@ -143,11 +143,11 @@ enum flctl_ecc_res_t {
+@@ -143,7 +143,6 @@ enum flctl_ecc_res_t {
  struct dma_chan;
  
  struct sh_flctl {
@@ -5150,12 +5150,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  	struct nand_chip	chip;
  	struct platform_device	*pdev;
  	struct dev_pm_qos_request pm_qos;
- 	void __iomem		*reg;
-+	resource_size_t		fifo;
- 
- 	uint8_t	done_buff[2048 + 64];	/* max size 2048 + 64 */
- 	int	read_bytes;
-@@ -186,7 +186,7 @@ struct sh_flctl_platform_data {
+@@ -187,7 +186,7 @@ struct sh_flctl_platform_data {
  
  static inline struct sh_flctl *mtd_to_flctl(struct mtd_info *mtdinfo)
  {
diff --git a/target/linux/oxnas/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch b/target/linux/oxnas/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch
index a5b51d4a90..f1f4971b3d 100644
--- a/target/linux/oxnas/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch
+++ b/target/linux/oxnas/patches-4.4/0072-mtd-backport-v4.7-0day-patches-from-Boris.patch
@@ -5142,7 +5142,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  		      long long offset, long long length);
 --- a/include/linux/mtd/sh_flctl.h
 +++ b/include/linux/mtd/sh_flctl.h
-@@ -143,11 +143,11 @@ enum flctl_ecc_res_t {
+@@ -143,7 +143,6 @@ enum flctl_ecc_res_t {
  struct dma_chan;
  
  struct sh_flctl {
@@ -5150,12 +5150,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
  	struct nand_chip	chip;
  	struct platform_device	*pdev;
  	struct dev_pm_qos_request pm_qos;
- 	void __iomem		*reg;
-+	resource_size_t		fifo;
- 
- 	uint8_t	done_buff[2048 + 64];	/* max size 2048 + 64 */
- 	int	read_bytes;
-@@ -186,7 +186,7 @@ struct sh_flctl_platform_data {
+@@ -187,7 +186,7 @@ struct sh_flctl_platform_data {
  
  static inline struct sh_flctl *mtd_to_flctl(struct mtd_info *mtdinfo)
  {
diff --git a/target/linux/oxnas/patches-4.4/800-oxnas-ehci.patch b/target/linux/oxnas/patches-4.4/800-oxnas-ehci.patch
index 5b25afc953..7f26de6b14 100644
--- a/target/linux/oxnas/patches-4.4/800-oxnas-ehci.patch
+++ b/target/linux/oxnas/patches-4.4/800-oxnas-ehci.patch
@@ -1,6 +1,6 @@
 --- a/drivers/usb/host/Kconfig
 +++ b/drivers/usb/host/Kconfig
-@@ -313,6 +313,13 @@ config USB_OCTEON_EHCI
+@@ -315,6 +315,13 @@ config USB_OCTEON_EHCI
  	  USB 2.0 device support.  All CN6XXX based chips with USB are
  	  supported.
  
