[LEDE-DEV] [PATCH] kernel: update to 3.18.71

Florian Fainelli f.fainelli at gmail.com
Sat Sep 16 16:41:48 PDT 2017


Delete a bunch of fixes that are already included.
Refresh patches.
Compile-tested on malta/mipsel
Runtime-tested on malta/mipsel

Signed-off-by: Florian Fainelli <f.fainelli at gmail.com>
---
 include/kernel-version.mk                          |  4 +-
 .../pending-3.18/002-phy_drivers_backport.patch    | 56 +++++++-------
 .../041-mtd-bcm47xxpart-backports-from-3.20.patch  |  2 +-
 .../044-backport-m25p80-jedec-probe.patch          |  2 +-
 ...070-bgmac-register-napi-before-the-device.patch |  6 +-
 ...evice-initialization-on-Northstar-SoCs-co.patch | 40 ----------
 ...03-bgmac-implement-scatter-gather-support.patch |  2 +-
 ...eset-enable-Ethernet-core-before-using-it.patch |  6 +-
 ...trie-Push-rcu_read_lock-unlock-to-callers.patch |  2 +-
 ..._fragment-fix-headroom-tests-and-skb-leak.patch |  8 +-
 ...-overlayfs-fallback-to-readonly-when-full.patch |  2 +-
 ...up_flags-FOLL_WRITE-games-from-__get_user.patch | 90 ----------------------
 ...gnore-__arch_swab-16-32-64-when-using-MIP.patch | 53 -------------
 ...part-limit-scanned-flash-area-on-BCM47XX-.patch | 33 --------
 ...m47xxpart-don-t-fail-because-of-bit-flips.patch |  4 +-
 ...upport_for_moving_ndp_to_end_of_ncm_frame.patch | 22 +++---
 ...-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch | 35 ---------
 ...l-Add-support-for-Quectel-EC20-Mini-PCIe-.patch |  4 +-
 ...n-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch |  6 +-
 .../pending-3.18/201-extra_optimization.patch      |  4 +-
 .../generic/pending-3.18/204-module_strip.patch    | 16 ++--
 .../550-ubifs-symlink-xattr-support.patch          |  2 +-
 .../pending-3.18/630-packet_socket_type.patch      | 16 ++--
 .../pending-3.18/653-disable_netlink_trim.patch    |  8 +-
 .../pending-3.18/655-increase_skb_pad.patch        |  2 +-
 .../656-skb_reduce_truesize-helper.patch           |  2 +-
 .../666-Add-support-for-MAP-E-FMRs-mesh-mode.patch | 26 +++----
 ...ed-source-specific-default-route-handling.patch |  4 +-
 ...jecting-with-source-address-failed-policy.patch | 20 ++---
 ...80-NET-skip-GRO-for-foreign-MAC-addresses.patch | 14 ++--
 .../generic/pending-3.18/701-phy_extension.patch   |  2 +-
 .../704-phy-no-genphy-soft-reset.patch             | 29 -------
 .../710-phy-add-mdio_register_board_info.patch     |  2 +-
 .../generic/pending-3.18/721-phy_packets.patch     |  8 +-
 .../pending-3.18/773-bgmac-add-srab-switch.patch   |  4 +-
 .../811-pci_disable_usb_common_quirks.patch        |  8 +-
 .../pending-3.18/901-debloat_sock_diag.patch       |  2 +-
 .../generic/pending-3.18/902-debloat_proc.patch    |  2 +-
 .../pending-3.18/997-device_tree_cmdline.patch     |  2 +-
 39 files changed, 133 insertions(+), 417 deletions(-)
 delete mode 100644 target/linux/generic/pending-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch
 delete mode 100644 target/linux/generic/pending-3.18/097-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch
 delete mode 100644 target/linux/generic/pending-3.18/133-MIPS-UAPI-Ignore-__arch_swab-16-32-64-when-using-MIP.patch
 delete mode 100644 target/linux/generic/pending-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch
 delete mode 100644 target/linux/generic/pending-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch
 delete mode 100644 target/linux/generic/pending-3.18/704-phy-no-genphy-soft-reset.patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 0fd915adc21d..3f799ab29888 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -2,11 +2,11 @@
 
 LINUX_RELEASE?=1
 
-LINUX_VERSION-3.18 = .43
+LINUX_VERSION-3.18 = .71
 LINUX_VERSION-4.4 = .88
 LINUX_VERSION-4.9 = .49
 
-LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
+LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
 LINUX_KERNEL_HASH-4.4.88 = 144fe8dd773ec317fa06109b8d7bd04141bf1941daa03799fb4f437bbbb919b4
 LINUX_KERNEL_HASH-4.9.49 = 57ecdcf180b56356b2e15264ca567a8fcd9eec993fc70286bec3bd0005e791fb
 
diff --git a/target/linux/generic/pending-3.18/002-phy_drivers_backport.patch b/target/linux/generic/pending-3.18/002-phy_drivers_backport.patch
index c97c759e7ee8..63071c999745 100644
--- a/target/linux/generic/pending-3.18/002-phy_drivers_backport.patch
+++ b/target/linux/generic/pending-3.18/002-phy_drivers_backport.patch
@@ -1,6 +1,6 @@
 --- a/drivers/net/phy/adm6996.c
 +++ b/drivers/net/phy/adm6996.c
-@@ -287,7 +287,7 @@ static u16
+@@ -289,7 +289,7 @@ static u16
  adm6996_read_mii_reg(struct adm6996_priv *priv, enum admreg reg)
  {
  	struct phy_device *phydev = priv->priv;
@@ -9,7 +9,7 @@
  
  	return bus->read(bus, PHYADDR(reg));
  }
-@@ -296,7 +296,7 @@ static void
+@@ -298,7 +298,7 @@ static void
  adm6996_write_mii_reg(struct adm6996_priv *priv, enum admreg reg, u16 val)
  {
  	struct phy_device *phydev = priv->priv;
@@ -18,7 +18,7 @@
  
  	bus->write(bus, PHYADDR(reg), val);
  }
-@@ -1019,13 +1019,13 @@ static int adm6996_config_init(struct ph
+@@ -1050,13 +1050,13 @@ static int adm6996_config_init(struct ph
  	pdev->supported = ADVERTISED_100baseT_Full;
  	pdev->advertising = ADVERTISED_100baseT_Full;
  
@@ -35,7 +35,7 @@
  	if (!priv)
  		return -ENOMEM;
  
-@@ -1045,7 +1045,7 @@ static int adm6996_config_init(struct ph
+@@ -1076,7 +1076,7 @@ static int adm6996_config_init(struct ph
  }
  
  /*
@@ -44,7 +44,7 @@
   */
  static int adm6996_read_status(struct phy_device *phydev)
  {
-@@ -1061,7 +1061,7 @@ static int adm6996_read_status(struct ph
+@@ -1092,7 +1092,7 @@ static int adm6996_read_status(struct ph
  }
  
  /*
@@ -53,7 +53,7 @@
   */
  static int adm6996_config_aneg(struct phy_device *phydev)
  {
-@@ -1070,11 +1070,11 @@ static int adm6996_config_aneg(struct ph
+@@ -1101,11 +1101,11 @@ static int adm6996_config_aneg(struct ph
  
  static int adm6996_fixup(struct phy_device *dev)
  {
@@ -67,7 +67,7 @@
  		return 0;
  
  	/* look for the switch on the bus */
-@@ -1121,6 +1121,7 @@ static struct phy_driver adm6996_phy_dri
+@@ -1152,6 +1152,7 @@ static struct phy_driver adm6996_phy_dri
  	.config_aneg	= &adm6996_config_aneg,
  	.read_status	= &adm6996_read_status,
  	.soft_reset	= adm6996_soft_reset,
@@ -75,7 +75,7 @@
  };
  
  static int adm6996_gpio_probe(struct platform_device *pdev)
-@@ -1193,7 +1194,7 @@ static int __init adm6996_init(void)
+@@ -1220,7 +1221,7 @@ static int __init adm6996_init(void)
  	int err;
  
  	phy_register_fixup_for_id(PHY_ANY_ID, adm6996_fixup);
@@ -95,7 +95,7 @@
  	ret |= BMCR_ANENABLE | BMCR_ANRESTART;
  	return phy_write(phydev, MII_BMCR, ret);
  }
-@@ -1996,7 +1996,7 @@ ar8xxx_phy_config_init(struct phy_device
+@@ -2007,7 +2007,7 @@ ar8xxx_phy_config_init(struct phy_device
  
  	priv->phy = phydev;
  
@@ -104,7 +104,7 @@
  		if (chip_is_ar8316(priv)) {
  			/* switch device has been initialized, reinit */
  			priv->dev.ports = (AR8216_NUM_PORTS - 1);
-@@ -2044,7 +2044,7 @@ ar8xxx_check_link_states(struct ar8xxx_p
+@@ -2055,7 +2055,7 @@ ar8xxx_check_link_states(struct ar8xxx_p
  		/* flush ARL entries for this port if it went down*/
  		if (!link_new)
  			priv->chip->atu_flush_port(priv, i);
@@ -113,7 +113,7 @@
  			 i, link_new ? "up" : "down");
  	}
  
-@@ -2063,10 +2063,10 @@ ar8xxx_phy_read_status(struct phy_device
+@@ -2074,10 +2074,10 @@ ar8xxx_phy_read_status(struct phy_device
  	if (phydev->state == PHY_CHANGELINK)
  		ar8xxx_check_link_states(priv);
  
@@ -126,7 +126,7 @@
  	phydev->link = !!link.link;
  	if (!phydev->link)
  		return 0;
-@@ -2096,7 +2096,7 @@ ar8xxx_phy_read_status(struct phy_device
+@@ -2107,7 +2107,7 @@ ar8xxx_phy_read_status(struct phy_device
  static int
  ar8xxx_phy_config_aneg(struct phy_device *phydev)
  {
@@ -135,7 +135,7 @@
  		return 0;
  
  	return genphy_config_aneg(phydev);
-@@ -2151,15 +2151,15 @@ ar8xxx_phy_probe(struct phy_device *phyd
+@@ -2162,15 +2162,15 @@ ar8xxx_phy_probe(struct phy_device *phyd
  	int ret;
  
  	/* skip PHYs at unused adresses */
@@ -154,7 +154,7 @@
  			goto found;
  
  	priv = ar8xxx_create();
-@@ -2168,7 +2168,7 @@ ar8xxx_phy_probe(struct phy_device *phyd
+@@ -2179,7 +2179,7 @@ ar8xxx_phy_probe(struct phy_device *phyd
  		goto unlock;
  	}
  
@@ -163,7 +163,7 @@
  
  	ret = ar8xxx_probe_switch(priv);
  	if (ret)
-@@ -2189,7 +2189,7 @@ ar8xxx_phy_probe(struct phy_device *phyd
+@@ -2200,7 +2200,7 @@ ar8xxx_phy_probe(struct phy_device *phyd
  found:
  	priv->use_count++;
  
@@ -172,7 +172,7 @@
  		if (ar8xxx_has_gige(priv)) {
  			phydev->supported = SUPPORTED_1000baseT_Full;
  			phydev->advertising = ADVERTISED_1000baseT_Full;
-@@ -2277,21 +2277,33 @@ ar8xxx_phy_soft_reset(struct phy_device
+@@ -2288,21 +2288,33 @@ ar8xxx_phy_soft_reset(struct phy_device
  	return 0;
  }
  
@@ -223,7 +223,7 @@
  MODULE_LICENSE("GPL");
 --- a/drivers/net/phy/ar8327.c
 +++ b/drivers/net/phy/ar8327.c
-@@ -619,11 +619,11 @@ ar8327_hw_init(struct ar8xxx_priv *priv)
+@@ -627,11 +627,11 @@ ar8327_hw_init(struct ar8xxx_priv *priv)
  	if (!priv->chip_data)
  		return -ENOMEM;
  
@@ -363,7 +363,7 @@
  }
  
  
-@@ -392,13 +388,12 @@ mvswitch_probe(struct phy_device *pdev)
+@@ -398,13 +394,12 @@ mvswitch_probe(struct phy_device *pdev)
  static int
  mvswitch_fixup(struct phy_device *dev)
  {
@@ -379,9 +379,9 @@
  	if (reg != MV_IDENT_VALUE)
  		return 0;
  
-@@ -418,13 +413,14 @@ static struct phy_driver mvswitch_driver
- 	.config_init	= &mvswitch_config_init,
+@@ -425,13 +420,14 @@ static struct phy_driver mvswitch_driver
  	.config_aneg	= &mvswitch_config_aneg,
+ 	.aneg_done	= &mvswitch_aneg_done,
  	.read_status	= &mvswitch_read_status,
 +	.driver		= { .owner = THIS_MODULE,},
  };
@@ -464,7 +464,7 @@
  module_init(psb6970_init);
 --- a/drivers/net/phy/rtl8306.c
 +++ b/drivers/net/phy/rtl8306.c
-@@ -872,7 +872,7 @@ rtl8306_config_init(struct phy_device *p
+@@ -876,7 +876,7 @@ rtl8306_config_init(struct phy_device *p
  	int err;
  
  	/* Only init the switch for the primary PHY */
@@ -473,7 +473,7 @@
  		return 0;
  
  	val.value.i = 1;
-@@ -882,7 +882,7 @@ rtl8306_config_init(struct phy_device *p
+@@ -886,7 +886,7 @@ rtl8306_config_init(struct phy_device *p
  	priv->dev.ops = &rtl8306_ops;
  	priv->do_cpu = 0;
  	priv->page = -1;
@@ -482,7 +482,7 @@
  
  	chipid = rtl_get(dev, RTL_REG_CHIPID);
  	chipver = rtl_get(dev, RTL_REG_CHIPVER);
-@@ -928,13 +928,13 @@ rtl8306_fixup(struct phy_device *pdev)
+@@ -932,13 +932,13 @@ rtl8306_fixup(struct phy_device *pdev)
  	u16 chipid;
  
  	/* Attach to primary LAN port and WAN port */
@@ -498,7 +498,7 @@
  	chipid = rtl_get(&priv.dev, RTL_REG_CHIPID);
  	if (chipid == 0x5988)
  		pdev->phy_id = RTL8306_MAGIC;
-@@ -952,14 +952,14 @@ rtl8306_probe(struct phy_device *pdev)
+@@ -956,14 +956,14 @@ rtl8306_probe(struct phy_device *pdev)
  		 * share one rtl_priv instance between virtual phy
  		 * devices on the same bus
  		 */
@@ -515,7 +515,7 @@
  
  found:
  	pdev->priv = priv;
-@@ -980,7 +980,7 @@ rtl8306_config_aneg(struct phy_device *p
+@@ -984,7 +984,7 @@ rtl8306_config_aneg(struct phy_device *p
  	struct rtl_priv *priv = pdev->priv;
  
  	/* Only for WAN */
@@ -524,7 +524,7 @@
  		return 0;
  
  	/* Restart autonegotiation */
-@@ -996,7 +996,7 @@ rtl8306_read_status(struct phy_device *p
+@@ -1000,7 +1000,7 @@ rtl8306_read_status(struct phy_device *p
  	struct rtl_priv *priv = pdev->priv;
  	struct switch_dev *dev = &priv->dev;
  
@@ -533,7 +533,7 @@
  		/* WAN */
  		pdev->speed = rtl_get(dev, RTL_PORT_REG(4, SPEED)) ? SPEED_100 : SPEED_10;
  		pdev->duplex = rtl_get(dev, RTL_PORT_REG(4, DUPLEX)) ? DUPLEX_FULL : DUPLEX_HALF;
-@@ -1037,6 +1037,7 @@ static struct phy_driver rtl8306_driver
+@@ -1041,6 +1041,7 @@ static struct phy_driver rtl8306_driver
  	.config_init	= &rtl8306_config_init,
  	.config_aneg	= &rtl8306_config_aneg,
  	.read_status	= &rtl8306_read_status,
@@ -541,7 +541,7 @@
  };
  
  
-@@ -1044,7 +1045,7 @@ static int __init
+@@ -1048,7 +1049,7 @@ static int __init
  rtl_init(void)
  {
  	phy_register_fixup_for_id(PHY_ANY_ID, rtl8306_fixup);
diff --git a/target/linux/generic/pending-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch b/target/linux/generic/pending-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch
index 59180c2084dc..f3dfa901f1f7 100644
--- a/target/linux/generic/pending-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch
+++ b/target/linux/generic/pending-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch
@@ -83,7 +83,7 @@
  						     offset + trx->offset[i],
  						     0);
  				i++;
-@@ -205,7 +235,8 @@ static int bcm47xxpart_parse(struct mtd_
+@@ -203,7 +233,8 @@ static int bcm47xxpart_parse(struct mtd_
  		}
  
  		/* Squashfs on devices not using TRX */
diff --git a/target/linux/generic/pending-3.18/044-backport-m25p80-jedec-probe.patch b/target/linux/generic/pending-3.18/044-backport-m25p80-jedec-probe.patch
index 41b912d5d454..24c264ba9740 100644
--- a/target/linux/generic/pending-3.18/044-backport-m25p80-jedec-probe.patch
+++ b/target/linux/generic/pending-3.18/044-backport-m25p80-jedec-probe.patch
@@ -24,7 +24,7 @@
  	.probe	= m25p_probe,
 --- a/drivers/mtd/spi-nor/spi-nor.c
 +++ b/drivers/mtd/spi-nor/spi-nor.c
-@@ -927,8 +927,11 @@ int spi_nor_scan(struct spi_nor *nor, co
+@@ -934,8 +934,11 @@ int spi_nor_scan(struct spi_nor *nor, co
  	if (ret)
  		return ret;
  
diff --git a/target/linux/generic/pending-3.18/070-bgmac-register-napi-before-the-device.patch b/target/linux/generic/pending-3.18/070-bgmac-register-napi-before-the-device.patch
index aa45860e933a..0e7e4f8b125c 100644
--- a/target/linux/generic/pending-3.18/070-bgmac-register-napi-before-the-device.patch
+++ b/target/linux/generic/pending-3.18/070-bgmac-register-napi-before-the-device.patch
@@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/ethernet/broadcom/bgmac.c
 +++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_devic
+@@ -1521,6 +1521,8 @@ static int bgmac_probe(struct bcma_devic
  	if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM)
  		bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n");
  
@@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	err = bgmac_mii_register(bgmac);
  	if (err) {
  		bgmac_err(bgmac, "Cannot register MDIO\n");
-@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_devic
+@@ -1535,8 +1537,6 @@ static int bgmac_probe(struct bcma_devic
  
  	netif_carrier_off(net_dev);
  
@@ -31,7 +31,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	return 0;
  
  err_mii_unregister:
-@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_dev
+@@ -1555,9 +1555,9 @@ static void bgmac_remove(struct bcma_dev
  {
  	struct bgmac *bgmac = bcma_get_drvdata(core);
  
diff --git a/target/linux/generic/pending-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch b/target/linux/generic/pending-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch
deleted file mode 100644
index 121d2f41224b..000000000000
--- a/target/linux/generic/pending-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 21697336d46b71dd031f29e426dda0b1e7f06cc0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
-Date: Wed, 11 Feb 2015 18:06:34 +0100
-Subject: [PATCH] bgmac: fix device initialization on Northstar SoCs (condition
- typo)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-On Northstar (Broadcom's ARM architecture) we need to manually enable
-all cores. Code for that is already in place, but the condition for it
-was wrong.
-
-Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
-Signed-off-by: David S. Miller <davem at davemloft.net>
----
- drivers/net/ethernet/broadcom/bgmac.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
---- a/drivers/net/ethernet/broadcom/bgmac.c
-+++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1412,6 +1412,7 @@ static void bgmac_mii_unregister(struct
- /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */
- static int bgmac_probe(struct bcma_device *core)
- {
-+	struct bcma_chipinfo *ci = &core->bus->chipinfo;
- 	struct net_device *net_dev;
- 	struct bgmac *bgmac;
- 	struct ssb_sprom *sprom = &core->bus->sprom;
-@@ -1474,8 +1475,8 @@ static int bgmac_probe(struct bcma_devic
- 	bgmac_chip_reset(bgmac);
- 
- 	/* For Northstar, we have to take all GMAC core out of reset */
--	if (core->id.id == BCMA_CHIP_ID_BCM4707 ||
--	    core->id.id == BCMA_CHIP_ID_BCM53018) {
-+	if (ci->id == BCMA_CHIP_ID_BCM4707 ||
-+	    ci->id == BCMA_CHIP_ID_BCM53018) {
- 		struct bcma_device *ns_core;
- 		int ns_gmac;
- 
diff --git a/target/linux/generic/pending-3.18/077-03-bgmac-implement-scatter-gather-support.patch b/target/linux/generic/pending-3.18/077-03-bgmac-implement-scatter-gather-support.patch
index ceb25e85ad87..642dd2ad7358 100644
--- a/target/linux/generic/pending-3.18/077-03-bgmac-implement-scatter-gather-support.patch
+++ b/target/linux/generic/pending-3.18/077-03-bgmac-implement-scatter-gather-support.patch
@@ -254,7 +254,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}
  }
  
-@@ -1583,6 +1657,10 @@ static int bgmac_probe(struct bcma_devic
+@@ -1588,6 +1662,10 @@ static int bgmac_probe(struct bcma_devic
  		goto err_dma_free;
  	}
  
diff --git a/target/linux/generic/pending-3.18/078-bgmac-reset-enable-Ethernet-core-before-using-it.patch b/target/linux/generic/pending-3.18/078-bgmac-reset-enable-Ethernet-core-before-using-it.patch
index ca061a50d16e..a4c7876d7feb 100644
--- a/target/linux/generic/pending-3.18/078-bgmac-reset-enable-Ethernet-core-before-using-it.patch
+++ b/target/linux/generic/pending-3.18/078-bgmac-reset-enable-Ethernet-core-before-using-it.patch
@@ -17,9 +17,9 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/drivers/net/ethernet/broadcom/bgmac.c
 +++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1564,6 +1564,11 @@ static int bgmac_probe(struct bcma_devic
- 		dev_warn(&core->dev, "Using random MAC: %pM\n", mac);
- 	}
+@@ -1569,6 +1569,11 @@ static int bgmac_probe(struct bcma_devic
+ 	 */
+ 	bcma_core_enable(core, 0);
  
 +	/* This (reset &) enable is not preset in specs or reference driver but
 +	 * Broadcom does it in arch PCI code when enabling fake PCI device.
diff --git a/target/linux/generic/pending-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch b/target/linux/generic/pending-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch
index fe55323a50e9..29bec8387d78 100644
--- a/target/linux/generic/pending-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch
+++ b/target/linux/generic/pending-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch
@@ -172,7 +172,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	u32 portid;
  
  	net = sock_net(skb->sk);
-@@ -971,9 +976,7 @@ static void nl_fib_input(struct sk_buff
+@@ -972,9 +977,7 @@ static void nl_fib_input(struct sk_buff
  	nlh = nlmsg_hdr(skb);
  
  	frn = (struct fib_result_nl *) nlmsg_data(nlh);
diff --git a/target/linux/generic/pending-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch b/target/linux/generic/pending-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch
index d3da41e91805..9f39e5ba5eac 100644
--- a/target/linux/generic/pending-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch
+++ b/target/linux/generic/pending-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch
@@ -44,7 +44,7 @@ Closes 20532
 
 --- a/net/ipv6/ip6_output.c
 +++ b/net/ipv6/ip6_output.c
-@@ -597,20 +597,22 @@ int ip6_fragment(struct sk_buff *skb, in
+@@ -600,20 +600,22 @@ int ip6_fragment(struct sk_buff *skb, in
  	}
  	mtu -= hlen + sizeof(struct frag_hdr);
  
@@ -69,7 +69,7 @@ Closes 20532
  				goto slow_path_clean;
  
  			/* Partially cloned skb? */
-@@ -627,8 +629,6 @@ int ip6_fragment(struct sk_buff *skb, in
+@@ -630,8 +632,6 @@ int ip6_fragment(struct sk_buff *skb, in
  
  		err = 0;
  		offset = 0;
@@ -78,7 +78,7 @@ Closes 20532
  		/* BUILD HEADER */
  
  		*prevhdr = NEXTHDR_FRAGMENT;
-@@ -636,8 +636,11 @@ int ip6_fragment(struct sk_buff *skb, in
+@@ -639,8 +639,11 @@ int ip6_fragment(struct sk_buff *skb, in
  		if (!tmp_hdr) {
  			IP6_INC_STATS(net, ip6_dst_idev(skb_dst(skb)),
  				      IPSTATS_MIB_FRAGFAILS);
@@ -91,7 +91,7 @@ Closes 20532
  
  		__skb_pull(skb, hlen);
  		fh = (struct frag_hdr *)__skb_push(skb, sizeof(struct frag_hdr));
-@@ -735,7 +738,6 @@ slow_path:
+@@ -738,7 +741,6 @@ slow_path:
  	 */
  
  	*prevhdr = NEXTHDR_FRAGMENT;
diff --git a/target/linux/generic/pending-3.18/090-overlayfs-fallback-to-readonly-when-full.patch b/target/linux/generic/pending-3.18/090-overlayfs-fallback-to-readonly-when-full.patch
index c75af99c6049..6c26a47c5fb9 100644
--- a/target/linux/generic/pending-3.18/090-overlayfs-fallback-to-readonly-when-full.patch
+++ b/target/linux/generic/pending-3.18/090-overlayfs-fallback-to-readonly-when-full.patch
@@ -44,7 +44,7 @@ Miklos
 
 --- a/fs/overlayfs/copy_up.c
 +++ b/fs/overlayfs/copy_up.c
-@@ -313,6 +313,9 @@ int ovl_copy_up_one(struct dentry *paren
+@@ -315,6 +315,9 @@ int ovl_copy_up_one(struct dentry *paren
  	struct cred *override_cred;
  	char *link = NULL;
  
diff --git a/target/linux/generic/pending-3.18/097-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch b/target/linux/generic/pending-3.18/097-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch
deleted file mode 100644
index 213f85b0a92a..000000000000
--- a/target/linux/generic/pending-3.18/097-mm-remove-gup_flags-FOLL_WRITE-games-from-__get_user.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-From e45a502bdeae5a075257c4f061d1ff4ff0821354 Mon Sep 17 00:00:00 2001
-From: Linus Torvalds <torvalds at linux-foundation.org>
-Date: Thu, 13 Oct 2016 13:07:36 -0700
-Subject: [PATCH] mm: remove gup_flags FOLL_WRITE games from __get_user_pages()
-
-[ Upstream commit 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 ]
-
-This is an ancient bug that was actually attempted to be fixed once
-(badly) by me eleven years ago in commit 4ceb5db9757a ("Fix
-get_user_pages() race for write access") but that was then undone due to
-problems on s390 by commit f33ea7f404e5 ("fix get_user_pages bug").
-
-In the meantime, the s390 situation has long been fixed, and we can now
-fix it by checking the pte_dirty() bit properly (and do it better).  The
-s390 dirty bit was implemented in abf09bed3cce ("s390/mm: implement
-software dirty bits") which made it into v3.9.  Earlier kernels will
-have to look at the page state itself.
-
-Also, the VM has become more scalable, and what used a purely
-theoretical race back then has become easier to trigger.
-
-To fix it, we introduce a new internal FOLL_COW flag to mark the "yes,
-we already did a COW" rather than play racy games with FOLL_WRITE that
-is very fundamental, and then use the pte dirty flag to validate that
-the FOLL_COW flag is still valid.
-
-Reported-and-tested-by: Phil "not Paul" Oester <kernel at linuxace.com>
-Acked-by: Hugh Dickins <hughd at google.com>
-Reviewed-by: Michal Hocko <mhocko at suse.com>
-Cc: Andy Lutomirski <luto at kernel.org>
-Cc: Kees Cook <keescook at chromium.org>
-Cc: Oleg Nesterov <oleg at redhat.com>
-Cc: Willy Tarreau <w at 1wt.eu>
-Cc: Nick Piggin <npiggin at gmail.com>
-Cc: Greg Thelen <gthelen at google.com>
-Cc: stable at vger.kernel.org
-Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
-Signed-off-by: Sasha Levin <alexander.levin at verizon.com>
----
- include/linux/mm.h |  1 +
- mm/gup.c           | 14 ++++++++++++--
- 2 files changed, 13 insertions(+), 2 deletions(-)
-
---- a/include/linux/mm.h
-+++ b/include/linux/mm.h
-@@ -2029,6 +2029,7 @@ static inline struct page *follow_page(s
- #define FOLL_NUMA	0x200	/* force NUMA hinting page fault */
- #define FOLL_MIGRATION	0x400	/* wait for page to replace migration entry */
- #define FOLL_TRIED	0x800	/* a retry, previous pass started an IO */
-+#define FOLL_COW	0x4000	/* internal GUP flag */
- 
- typedef int (*pte_fn_t)(pte_t *pte, pgtable_t token, unsigned long addr,
- 			void *data);
---- a/mm/gup.c
-+++ b/mm/gup.c
-@@ -32,6 +32,16 @@ static struct page *no_page_table(struct
- 	return NULL;
- }
- 
-+/*
-+ * FOLL_FORCE can write to even unwritable pte's, but only
-+ * after we've gone through a COW cycle and they are dirty.
-+ */
-+static inline bool can_follow_write_pte(pte_t pte, unsigned int flags)
-+{
-+	return pte_write(pte) ||
-+		((flags & FOLL_FORCE) && (flags & FOLL_COW) && pte_dirty(pte));
-+}
-+
- static struct page *follow_page_pte(struct vm_area_struct *vma,
- 		unsigned long address, pmd_t *pmd, unsigned int flags)
- {
-@@ -66,7 +76,7 @@ retry:
- 	}
- 	if ((flags & FOLL_NUMA) && pte_numa(pte))
- 		goto no_page;
--	if ((flags & FOLL_WRITE) && !pte_write(pte)) {
-+	if ((flags & FOLL_WRITE) && !can_follow_write_pte(pte, flags)) {
- 		pte_unmap_unlock(ptep, ptl);
- 		return NULL;
- 	}
-@@ -315,7 +325,7 @@ static int faultin_page(struct task_stru
- 	 * reCOWed by userspace write).
- 	 */
- 	if ((ret & VM_FAULT_WRITE) && !(vma->vm_flags & VM_WRITE))
--		*flags &= ~FOLL_WRITE;
-+	        *flags |= FOLL_COW;
- 	return 0;
- }
- 
diff --git a/target/linux/generic/pending-3.18/133-MIPS-UAPI-Ignore-__arch_swab-16-32-64-when-using-MIP.patch b/target/linux/generic/pending-3.18/133-MIPS-UAPI-Ignore-__arch_swab-16-32-64-when-using-MIP.patch
deleted file mode 100644
index ebbe1bbaeea4..000000000000
--- a/target/linux/generic/pending-3.18/133-MIPS-UAPI-Ignore-__arch_swab-16-32-64-when-using-MIP.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 71a0a72456b48de972d7ed613b06a22a3aa9057f Mon Sep 17 00:00:00 2001
-From: Yousong Zhou <yszhou4tech at gmail.com>
-Date: Sat, 26 Sep 2015 13:41:43 +0800
-Subject: [PATCH] MIPS: UAPI: Ignore __arch_swab{16,32,64} when using MIPS16
-
-Some GCC versions (e.g. 4.8.3) can incorrectly inline a function with
-MIPS32 instructions into another function with MIPS16 code [1], causing
-the assembler to genereate incorrect binary code or fail right away
-complaining about unrecognized opcode.
-
-In the case of __arch_swab{16,32}, when inlined by the compiler with
-flags `-mips32r2 -mips16 -Os', the assembler can fail with the following
-error.
-
-    {standard input}:79: Error: unrecognized opcode `wsbh $2,$2'
-
-For performance concerns and to workaround the issue already existing in
-older compilers, just ignore these 2 functions when compiling with
-mips16 enabled.
-
- [1] Inlining nomips16 function into mips16 function can result in
-     undefined builtins, https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55777
-
-Signed-off-by: Yousong Zhou <yszhou4tech at gmail.com>
-Cc: Maciej W. Rozycki <macro at linux-mips.org>
-Cc: linux-mips at linux-mips.org
-Patchwork: https://patchwork.linux-mips.org/patch/11241/
-Signed-off-by: Ralf Baechle <ralf at linux-mips.org>
----
- arch/mips/include/uapi/asm/swab.h |    7 ++++---
- 1 file changed, 4 insertions(+), 3 deletions(-)
-
---- a/arch/mips/include/uapi/asm/swab.h
-+++ b/arch/mips/include/uapi/asm/swab.h
-@@ -13,8 +13,9 @@
- 
- #define __SWAB_64_THRU_32__
- 
--#if (defined(__mips_isa_rev) && (__mips_isa_rev >= 2)) ||		\
--    defined(_MIPS_ARCH_LOONGSON3A)
-+#if !defined(__mips16) &&					\
-+	((defined(__mips_isa_rev) && (__mips_isa_rev >= 2)) ||	\
-+	 defined(_MIPS_ARCH_LOONGSON3A))
- 
- static inline __attribute_const__ __u16 __arch_swab16(__u16 x)
- {
-@@ -65,5 +66,5 @@ static inline __attribute_const__ __u64
- }
- #define __arch_swab64 __arch_swab64
- #endif /* __mips64 */
--#endif /* MIPS R2 or newer or Loongson 3A */
-+#endif /* (not __mips16) and (MIPS R2 or newer or Loongson 3A) */
- #endif /* _ASM_SWAB_H */
diff --git a/target/linux/generic/pending-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch b/target/linux/generic/pending-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch
deleted file mode 100644
index 761cff316d04..000000000000
--- a/target/linux/generic/pending-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5 at gmail.com>
-Date: Sat, 5 Dec 2015 02:03:32 +0100
-Subject: [PATCH] mtd: bcm47xxpart: limit scanned flash area on BCM47XX (MIPS)
- only
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We allowed using bcm47xxpart on BCM5301X arch with commit:
-9e3afa5f5c7 ("mtd: bcm47xxpart: allow enabling on ARCH_BCM_5301X")
-
-BCM5301X devices may contain some partitions in higher memory, e.g.
-Netgear R8000 has board_data at 0x2600000. To detect them we should
-use size limit on MIPS only.
-
-Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
----
- drivers/mtd/bcm47xxpart.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/mtd/bcm47xxpart.c
-+++ b/drivers/mtd/bcm47xxpart.c
-@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_
- 	/* Parse block by block looking for magics */
- 	for (offset = 0; offset <= master->size - blocksize;
- 	     offset += blocksize) {
--		/* Nothing more in higher memory */
--		if (offset >= 0x2000000)
-+		/* Nothing more in higher memory on BCM47XX (MIPS) */
-+		if (config_enabled(CONFIG_BCM47XX) && offset >= 0x2000000)
- 			break;
- 
- 		if (curr_part >= BCM47XXPART_MAX_PARTS) {
diff --git a/target/linux/generic/pending-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch b/target/linux/generic/pending-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch
index 9073f795e2e3..926de5fef73e 100644
--- a/target/linux/generic/pending-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch
+++ b/target/linux/generic/pending-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch
@@ -58,7 +58,7 @@ Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
  			continue;
  		}
  
-@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_
+@@ -252,10 +256,11 @@ static int bcm47xxpart_parse(struct mtd_
  		}
  
  		/* Read middle of the block */
@@ -74,7 +74,7 @@ Signed-off-by: Rafał Miłecki <zajec5 at gmail.com>
  			continue;
  		}
  
-@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_
+@@ -275,10 +280,11 @@ static int bcm47xxpart_parse(struct mtd_
  		}
  
  		offset = master->size - possible_nvram_sizes[i];
diff --git a/target/linux/generic/pending-3.18/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch b/target/linux/generic/pending-3.18/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch
index 0b03963f0af5..632384d56f4d 100644
--- a/target/linux/generic/pending-3.18/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch
+++ b/target/linux/generic/pending-3.18/190-cdc_ncm_add_support_for_moving_ndp_to_end_of_ncm_frame.patch
@@ -79,21 +79,21 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	/* override ethtool_ops */
  	dev->net->ethtool_ops = &cdc_ncm_ethtool_ops;
  
-@@ -958,8 +971,11 @@ static int cdc_ncm_bind(struct usbnet *d
+@@ -956,8 +969,11 @@ static int cdc_ncm_bind(struct usbnet *d
  	if (cdc_ncm_select_altsetting(intf) != CDC_NCM_COMM_ALTSETTING_NCM)
  		return -ENODEV;
  
 -	/* The NCM data altsetting is fixed */
--	ret = cdc_ncm_bind_common(dev, intf, CDC_NCM_DATA_ALTSETTING_NCM);
+-	return cdc_ncm_bind_common(dev, intf, CDC_NCM_DATA_ALTSETTING_NCM);
 +	/* The NCM data altsetting is fixed, so we hard-coded it.
 +	 * Additionally, generic NCM devices are assumed to accept arbitrarily
 +	 * placed NDP.
 +	 */
-+	ret = cdc_ncm_bind_common(dev, intf, CDC_NCM_DATA_ALTSETTING_NCM, 0);
++	return cdc_ncm_bind_common(dev, intf, CDC_NCM_DATA_ALTSETTING_NCM, 0);
+ }
  
- 	/*
- 	 * We should get an event when network connection is "connected" or
-@@ -990,6 +1006,14 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
+ static void cdc_ncm_align_tail(struct sk_buff *skb, size_t modulus, size_t remainder, size_t max)
+@@ -979,6 +995,14 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
  	struct usb_cdc_ncm_nth16 *nth16 = (void *)skb->data;
  	size_t ndpoffset = le16_to_cpu(nth16->wNdpIndex);
  
@@ -108,7 +108,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	/* follow the chain of NDPs, looking for a match */
  	while (ndpoffset) {
  		ndp16 = (struct usb_cdc_ncm_ndp16 *)(skb->data + ndpoffset);
-@@ -999,7 +1023,8 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
+@@ -988,7 +1012,8 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
  	}
  
  	/* align new NDP */
@@ -118,7 +118,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  
  	/* verify that there is room for the NDP and the datagram (reserve) */
  	if ((ctx->tx_max - skb->len - reserve) < ctx->max_ndp_size)
-@@ -1012,7 +1037,11 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
+@@ -1001,7 +1026,11 @@ static struct usb_cdc_ncm_ndp16 *cdc_ncm
  		nth16->wNdpIndex = cpu_to_le16(skb->len);
  
  	/* push a new empty NDP */
@@ -131,7 +131,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	ndp16->dwSignature = sign;
  	ndp16->wLength = cpu_to_le16(sizeof(struct usb_cdc_ncm_ndp16) + sizeof(struct usb_cdc_ncm_dpe16));
  	return ndp16;
-@@ -1027,6 +1056,15 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
+@@ -1016,6 +1045,15 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
  	struct sk_buff *skb_out;
  	u16 n = 0, index, ndplen;
  	u8 ready2send = 0;
@@ -147,7 +147,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  
  	/* if there is a remaining skb, it gets priority */
  	if (skb != NULL) {
-@@ -1081,7 +1119,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
+@@ -1070,7 +1108,7 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
  		cdc_ncm_align_tail(skb_out,  ctx->tx_modulus, ctx->tx_remainder, ctx->tx_max);
  
  		/* check if we had enough room left for both NDP and frame */
@@ -156,7 +156,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  			if (n == 0) {
  				/* won't fit, MTU problem? */
  				dev_kfree_skb_any(skb);
-@@ -1154,6 +1192,17 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
+@@ -1143,6 +1181,17 @@ cdc_ncm_fill_tx_frame(struct usbnet *dev
  		/* variables will be reset at next call */
  	}
  
diff --git a/target/linux/generic/pending-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch b/target/linux/generic/pending-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch
deleted file mode 100644
index 5a3dc06c14bf..000000000000
--- a/target/linux/generic/pending-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From a95f03e51471dbdbafd3391991d867ac2358ed02 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jogo at openwrt.org>
-Date: Sun, 23 Aug 2015 14:23:29 +0200
-Subject: [PATCH] usb: ehci-orion: fix probe for !GENERIC_PHY
-
-Commit d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
-added support for optional phys, but devm_phy_optional_get returns
--ENOSYS if GENERIC_PHY is not enabled.
-
-This causes probe failures, even when there are no phys specified:
-
-[    1.443365] orion-ehci f1058000.usb: init f1058000.usb fail, -38
-[    1.449403] orion-ehci: probe of f1058000.usb failed with error -38
-
-Similar to dwc3, treat -ENOSYS as no phy.
-
-Fixes: d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
-
-Signed-off-by: Jonas Gorski <jogo at openwrt.org>
----
- drivers/usb/host/ehci-orion.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/host/ehci-orion.c
-+++ b/drivers/usb/host/ehci-orion.c
-@@ -226,7 +226,8 @@ static int ehci_orion_drv_probe(struct p
- 	priv->phy = devm_phy_optional_get(&pdev->dev, "usb");
- 	if (IS_ERR(priv->phy)) {
- 		err = PTR_ERR(priv->phy);
--		goto err_phy_get;
-+		if (err != -ENOSYS)
-+			goto err_phy_get;
- 	} else {
- 		err = phy_init(priv->phy);
- 		if (err)
diff --git a/target/linux/generic/pending-3.18/192-USB-qcserial-Add-support-for-Quectel-EC20-Mini-PCIe-.patch b/target/linux/generic/pending-3.18/192-USB-qcserial-Add-support-for-Quectel-EC20-Mini-PCIe-.patch
index 7c49a6f11114..ae018cbab0c9 100644
--- a/target/linux/generic/pending-3.18/192-USB-qcserial-Add-support-for-Quectel-EC20-Mini-PCIe-.patch
+++ b/target/linux/generic/pending-3.18/192-USB-qcserial-Add-support-for-Quectel-EC20-Mini-PCIe-.patch
@@ -61,7 +61,7 @@ Signed-off-by: Petr Štetiar <ynezz at true.cz>
  /* standard device layouts supported by this driver */
  enum qcserial_layouts {
  	QCSERIAL_G2K = 0,	/* Gobi 2000 */
-@@ -171,6 +173,38 @@ static const struct usb_device_id id_tab
+@@ -176,6 +178,38 @@ static const struct usb_device_id id_tab
  };
  MODULE_DEVICE_TABLE(usb, id_table);
  
@@ -100,7 +100,7 @@ Signed-off-by: Petr Štetiar <ynezz at true.cz>
  static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
  {
  	struct usb_host_interface *intf = serial->interface->cur_altsetting;
-@@ -239,6 +273,11 @@ static int qcprobe(struct usb_serial *se
+@@ -244,6 +278,11 @@ static int qcprobe(struct usb_serial *se
  			altsetting = -1;
  		break;
  	case QCSERIAL_G2K:
diff --git a/target/linux/generic/pending-3.18/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch b/target/linux/generic/pending-3.18/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch
index 1b1afd5d31d0..ee0d7b2cccba 100644
--- a/target/linux/generic/pending-3.18/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch
+++ b/target/linux/generic/pending-3.18/193-USB-qmi_wwan-Add-quirk-for-Quectel-EC20-Mini-PCIe-mo.patch
@@ -48,7 +48,7 @@ Signed-off-by: Petr Štetiar <ynezz at true.cz>
 
 --- a/drivers/net/usb/qmi_wwan.c
 +++ b/drivers/net/usb/qmi_wwan.c
-@@ -822,6 +822,7 @@ static const struct usb_device_id produc
+@@ -825,6 +825,7 @@ static const struct usb_device_id produc
  	{QMI_GOBI_DEVICE(0x05c6, 0x9245)},	/* Samsung Gobi 2000 Modem device (VL176) */
  	{QMI_GOBI_DEVICE(0x03f0, 0x251d)},	/* HP Gobi 2000 Modem device (VP412) */
  	{QMI_GOBI_DEVICE(0x05c6, 0x9215)},	/* Acer Gobi 2000 Modem device (VP413) */
@@ -56,7 +56,7 @@ Signed-off-by: Petr Štetiar <ynezz at true.cz>
  	{QMI_GOBI_DEVICE(0x05c6, 0x9265)},	/* Asus Gobi 2000 Modem device (VR305) */
  	{QMI_GOBI_DEVICE(0x05c6, 0x9235)},	/* Top Global Gobi 2000 Modem device (VR306) */
  	{QMI_GOBI_DEVICE(0x05c6, 0x9275)},	/* iRex Technologies Gobi 2000 Modem device (VR307) */
-@@ -853,10 +854,24 @@ static const struct usb_device_id produc
+@@ -856,10 +857,24 @@ static const struct usb_device_id produc
  };
  MODULE_DEVICE_TABLE(usb, products);
  
@@ -81,7 +81,7 @@ Signed-off-by: Petr Štetiar <ynezz at true.cz>
  
  	/* Workaround to enable dynamic IDs.  This disables usbnet
  	 * blacklisting functionality.  Which, if required, can be
-@@ -868,6 +883,12 @@ static int qmi_wwan_probe(struct usb_int
+@@ -871,6 +886,12 @@ static int qmi_wwan_probe(struct usb_int
  		id->driver_info = (unsigned long)&qmi_wwan_info;
  	}
  
diff --git a/target/linux/generic/pending-3.18/201-extra_optimization.patch b/target/linux/generic/pending-3.18/201-extra_optimization.patch
index 7ec93a47f44e..5a2396cfa377 100644
--- a/target/linux/generic/pending-3.18/201-extra_optimization.patch
+++ b/target/linux/generic/pending-3.18/201-extra_optimization.patch
@@ -1,7 +1,7 @@
 --- a/Makefile
 +++ b/Makefile
-@@ -612,9 +612,9 @@ include $(srctree)/arch/$(SRCARCH)/Makef
- KBUILD_CFLAGS	+= $(call cc-option,-fno-delete-null-pointer-checks,)
+@@ -618,9 +618,9 @@ KBUILD_CFLAGS	+= $(call cc-option,-fno-P
+ KBUILD_AFLAGS	+= $(call cc-option,-fno-PIE)
  
  ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
 -KBUILD_CFLAGS	+= -Os $(call cc-disable-warning,maybe-uninitialized,)
diff --git a/target/linux/generic/pending-3.18/204-module_strip.patch b/target/linux/generic/pending-3.18/204-module_strip.patch
index 844c3b550e20..2df7ba01347e 100644
--- a/target/linux/generic/pending-3.18/204-module_strip.patch
+++ b/target/linux/generic/pending-3.18/204-module_strip.patch
@@ -28,8 +28,8 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 +#if defined(MODULE) && !defined(CONFIG_MODULE_STRIPPED)
  /* Creates an alias so file2alias.c can find device table. */
  #define MODULE_DEVICE_TABLE(type, name)					\
-   extern const struct type##_device_id __mod_##type##__##name##_device_table \
-@@ -159,7 +160,9 @@ void trim_init_extable(struct module *m)
+ extern const typeof(name) __mod_##type##__##name##_device_table		\
+@@ -159,7 +160,9 @@ extern const typeof(name) __mod_##type##
   */
  
  #if defined(MODULE) || !defined(CONFIG_SYSFS)
@@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #else
  #define MODULE_VERSION(_version)					\
  	static struct module_version_attribute ___modver_attr = {	\
-@@ -181,7 +184,7 @@ void trim_init_extable(struct module *m)
+@@ -181,7 +184,7 @@ extern const typeof(name) __mod_##type##
  /* Optional firmware file (or files) needed by the module
   * format is simply firmware file name.  Multiple firmware
   * files require multiple MODULE_FIRMWARE() specifiers */
@@ -123,7 +123,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	set_license(mod, get_modinfo(info, "license"));
 --- a/scripts/mod/modpost.c
 +++ b/scripts/mod/modpost.c
-@@ -1726,7 +1726,9 @@ static void read_symbols(char *modname)
+@@ -1758,7 +1758,9 @@ static void read_symbols(char *modname)
  		symname = remove_dot(info.strtab + sym->st_name);
  
  		handle_modversions(mod, &info, sym, symname);
@@ -133,7 +133,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	}
  	if (!is_vmlinux(modname) ||
  	     (is_vmlinux(modname) && vmlinux_section_warnings))
-@@ -1870,7 +1872,9 @@ static void add_header(struct buffer *b,
+@@ -1902,7 +1904,9 @@ static void add_header(struct buffer *b,
  	buf_printf(b, "#include <linux/vermagic.h>\n");
  	buf_printf(b, "#include <linux/compiler.h>\n");
  	buf_printf(b, "\n");
@@ -143,7 +143,7 @@ Signed-off-by: Felix Fietkau <nbd at 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");
-@@ -1887,16 +1891,20 @@ static void add_header(struct buffer *b,
+@@ -1919,16 +1923,20 @@ static void add_header(struct buffer *b,
  
  static void add_intree_flag(struct buffer *b, int is_intree)
  {
@@ -164,7 +164,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  /**
-@@ -1989,11 +1997,13 @@ static void add_depends(struct buffer *b
+@@ -2021,11 +2029,13 @@ static void add_depends(struct buffer *b
  
  static void add_srcversion(struct buffer *b, struct module *mod)
  {
@@ -178,7 +178,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  }
  
  static void write_if_changed(struct buffer *b, const char *fname)
-@@ -2224,7 +2234,9 @@ int main(int argc, char **argv)
+@@ -2256,7 +2266,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/pending-3.18/550-ubifs-symlink-xattr-support.patch b/target/linux/generic/pending-3.18/550-ubifs-symlink-xattr-support.patch
index 42ae9cb84af1..6e08ca302e56 100644
--- a/target/linux/generic/pending-3.18/550-ubifs-symlink-xattr-support.patch
+++ b/target/linux/generic/pending-3.18/550-ubifs-symlink-xattr-support.patch
@@ -39,7 +39,7 @@
  
 --- a/fs/ubifs/xattr.c
 +++ b/fs/ubifs/xattr.c
-@@ -209,12 +209,12 @@ static int change_xattr(struct ubifs_inf
+@@ -210,12 +210,12 @@ static int change_xattr(struct ubifs_inf
  		goto out_free;
  	}
  	inode->i_size = ui->ui_size = size;
diff --git a/target/linux/generic/pending-3.18/630-packet_socket_type.patch b/target/linux/generic/pending-3.18/630-packet_socket_type.patch
index 61ddea84c689..ec7383e114a8 100644
--- a/target/linux/generic/pending-3.18/630-packet_socket_type.patch
+++ b/target/linux/generic/pending-3.18/630-packet_socket_type.patch
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #define PACKET_FANOUT_LB		1
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -1530,6 +1530,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1529,6 +1529,7 @@ static int packet_rcv_spkt(struct sk_buf
  {
  	struct sock *sk;
  	struct sockaddr_pkt *spkt;
@@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	/*
  	 *	When we registered the protocol we saved the socket in the data
-@@ -1537,6 +1538,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1536,6 +1537,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 */
  
  	sk = pt->af_packet_priv;
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	/*
  	 *	Yank back the headers [hope the device set this
-@@ -1549,7 +1551,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1548,7 +1550,7 @@ static int packet_rcv_spkt(struct sk_buf
  	 *	so that this procedure is noop.
  	 */
  
@@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  		goto out;
  
  	if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -1748,12 +1750,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -1747,12 +1749,12 @@ static int packet_rcv(struct sk_buff *sk
  	int skb_len = skb->len;
  	unsigned int snaplen, res;
  
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -1873,12 +1875,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -1872,12 +1874,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);
  
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	if (!net_eq(dev_net(dev), sock_net(sk)))
  		goto drop;
  
-@@ -2828,6 +2830,7 @@ static int packet_create(struct net *net
+@@ -2831,6 +2833,7 @@ static int packet_create(struct net *net
  	spin_lock_init(&po->bind_lock);
  	mutex_init(&po->pg_vec_lock);
  	po->prot_hook.func = packet_rcv;
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  
  	if (sock->type == SOCK_PACKET)
  		po->prot_hook.func = packet_rcv_spkt;
-@@ -3409,6 +3412,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3425,6 +3428,16 @@ packet_setsockopt(struct socket *sock, i
  		po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
  		return 0;
  	}
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	default:
  		return -ENOPROTOOPT;
  	}
-@@ -3460,6 +3473,13 @@ static int packet_getsockopt(struct sock
+@@ -3476,6 +3489,13 @@ static int packet_getsockopt(struct sock
  	case PACKET_VNET_HDR:
  		val = po->has_vnet_hdr;
  		break;
diff --git a/target/linux/generic/pending-3.18/653-disable_netlink_trim.patch b/target/linux/generic/pending-3.18/653-disable_netlink_trim.patch
index b38b87b48f8a..fe62110f0659 100644
--- a/target/linux/generic/pending-3.18/653-disable_netlink_trim.patch
+++ b/target/linux/generic/pending-3.18/653-disable_netlink_trim.patch
@@ -1,15 +1,12 @@
 --- a/net/netlink/af_netlink.c
 +++ b/net/netlink/af_netlink.c
-@@ -1721,27 +1721,7 @@ void netlink_detachskb(struct sock *sk,
+@@ -1107,23 +1107,7 @@ void netlink_detachskb(struct sock *sk,
  
  static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
  {
 -	int delta;
 -
  	WARN_ON(skb->sk != NULL);
--	if (netlink_skb_is_mmaped(skb))
--		return skb;
--
 -	delta = skb->end - skb->tail;
 -	if (is_vmalloc_addr(skb->head) || delta * 2 < skb->truesize)
 -		return skb;
@@ -24,7 +21,6 @@
 -
 -	if (!pskb_expand_head(skb, 0, -delta, allocation))
 -		skb->truesize -= delta;
--
+ 
  	return skb;
  }
- 
diff --git a/target/linux/generic/pending-3.18/655-increase_skb_pad.patch b/target/linux/generic/pending-3.18/655-increase_skb_pad.patch
index 19344cca3f23..96f81e9aa78b 100644
--- a/target/linux/generic/pending-3.18/655-increase_skb_pad.patch
+++ b/target/linux/generic/pending-3.18/655-increase_skb_pad.patch
@@ -1,6 +1,6 @@
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2023,7 +2023,7 @@ static inline int pskb_network_may_pull(
+@@ -2024,7 +2024,7 @@ static inline int pskb_network_may_pull(
   * NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
   */
  #ifndef NET_SKB_PAD
diff --git a/target/linux/generic/pending-3.18/656-skb_reduce_truesize-helper.patch b/target/linux/generic/pending-3.18/656-skb_reduce_truesize-helper.patch
index b326a8b72789..0fde9f6e6290 100644
--- a/target/linux/generic/pending-3.18/656-skb_reduce_truesize-helper.patch
+++ b/target/linux/generic/pending-3.18/656-skb_reduce_truesize-helper.patch
@@ -14,7 +14,7 @@ when needed.
 
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2068,6 +2068,24 @@ static inline void pskb_trim_unique(stru
+@@ -2069,6 +2069,24 @@ static inline void pskb_trim_unique(stru
  	BUG_ON(err);
  }
  
diff --git a/target/linux/generic/pending-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/pending-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
index 000665f04765..43bdbe456d9d 100644
--- a/target/linux/generic/pending-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
+++ b/target/linux/generic/pending-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
@@ -145,7 +145,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	if (dev == ip6n->fb_tnl_dev)
  		RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
  	else
-@@ -771,6 +786,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
+@@ -781,6 +796,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
  }
  EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
  
@@ -254,7 +254,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  /**
   * ip6_tnl_rcv - decapsulate IPv6 packet and retransmit it locally
   *   @skb: received socket buffer
-@@ -815,6 +932,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
+@@ -825,6 +942,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));
@@ -281,7 +281,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  		__skb_tunnel_rx(skb, t->dev, t->net);
  
-@@ -1076,6 +1213,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1086,6 +1223,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
  	__u8 dsfield;
  	__u32 mtu;
  	int err;
@@ -289,7 +289,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  	if ((t->parms.proto != IPPROTO_IPIP && t->parms.proto != 0) ||
  	    !ip6_tnl_xmit_ctl(t))
-@@ -1095,6 +1233,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1105,6 +1243,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
  	if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
  		fl6.flowi6_mark = skb->mark;
  
@@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu);
  	if (err != 0) {
  		/* XXX: send ICMP error even if DF is not set. */
-@@ -1263,6 +1413,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1273,6 +1423,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
  	t->parms.flowinfo = p->flowinfo;
  	t->parms.link = p->link;
  	t->parms.proto = p->proto;
@@ -323,7 +323,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	ip6_tnl_dst_reset(t);
  	ip6_tnl_link_config(t);
  	return 0;
-@@ -1293,6 +1451,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1303,6 +1461,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
  	p->flowinfo = u->flowinfo;
  	p->link = u->link;
  	p->proto = u->proto;
@@ -331,7 +331,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1568,6 +1727,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1578,6 +1737,15 @@ static int ip6_tnl_validate(struct nlatt
  	return 0;
  }
  
@@ -347,7 +347,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
  				  struct __ip6_tnl_parm *parms)
  {
-@@ -1601,6 +1769,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1611,6 +1779,46 @@ static void ip6_tnl_netlink_parms(struct
  
  	if (data[IFLA_IPTUN_PROTO])
  		parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]);
@@ -394,7 +394,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  }
  
  static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -1653,6 +1861,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -1663,6 +1871,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -407,7 +407,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	return
  		/* IFLA_IPTUN_LINK */
  		nla_total_size(4) +
-@@ -1670,6 +1884,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -1680,6 +1894,24 @@ static size_t ip6_tnl_get_size(const str
  		nla_total_size(4) +
  		/* IFLA_IPTUN_PROTO */
  		nla_total_size(1) +
@@ -432,7 +432,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  		0;
  }
  
-@@ -1677,6 +1909,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1687,6 +1919,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
  	struct ip6_tnl *tunnel = netdev_priv(dev);
  	struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -442,7 +442,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  
  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
  	    nla_put(skb, IFLA_IPTUN_LOCAL, sizeof(struct in6_addr),
-@@ -1687,8 +1922,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1697,8 +1932,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) ||
@@ -471,7 +471,7 @@ Signed-off-by: Steven Barth <cyrus at openwrt.org>
  	return 0;
  
  nla_put_failure:
-@@ -1704,6 +1958,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -1714,6 +1968,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/pending-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch b/target/linux/generic/pending-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch
index 0c951069c24e..de8745cdc39d 100644
--- a/target/linux/generic/pending-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch
+++ b/target/linux/generic/pending-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch
@@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
 
 --- a/net/ipv6/ip6_output.c
 +++ b/net/ipv6/ip6_output.c
-@@ -903,21 +903,45 @@ static int ip6_dst_lookup_tail(struct so
+@@ -906,21 +906,45 @@ static int ip6_dst_lookup_tail(struct so
  #endif
  	int err;
  
@@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem at davemloft.net>
  	 * Here if the dst entry we've looked up
 --- a/net/ipv6/route.c
 +++ b/net/ipv6/route.c
-@@ -2182,9 +2182,10 @@ int ip6_route_get_saddr(struct net *net,
+@@ -2184,9 +2184,10 @@ int ip6_route_get_saddr(struct net *net,
  			unsigned int prefs,
  			struct in6_addr *saddr)
  {
diff --git a/target/linux/generic/pending-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/pending-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 1bf9dc99dcbf..f999d44df0b4 100644
--- a/target/linux/generic/pending-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/pending-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		case RTN_THROW:
  		default:
  			rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN
-@@ -2139,6 +2161,17 @@ static int ip6_pkt_prohibit_out(struct s
+@@ -2141,6 +2163,17 @@ static int ip6_pkt_prohibit_out(struct s
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2363,7 +2396,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2365,7 +2398,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 at openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -2565,6 +2599,9 @@ static int rt6_fill_node(struct net *net
+@@ -2567,6 +2601,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 at openwrt.org>
  		case -EAGAIN:
  			rtm->rtm_type = RTN_THROW;
  			break;
-@@ -2818,6 +2855,8 @@ static int ip6_route_dev_notify(struct n
+@@ -2825,6 +2862,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,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -3034,6 +3073,17 @@ static int __net_init ip6_route_net_init
+@@ -3047,6 +3086,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 +220,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -3052,6 +3102,8 @@ out:
+@@ -3065,6 +3115,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3069,6 +3121,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3082,6 +3134,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 +237,7 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3165,6 +3218,9 @@ int __init ip6_route_init(void)
+@@ -3155,6 +3208,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);
@@ -245,5 +245,5 @@ Signed-off-by: Jonas Gorski <jogo at openwrt.org>
 +	init_net.ipv6.ip6_policy_failed_entry->rt6i_idev =
 +		in6_dev_get(init_net.loopback_dev);
    #endif
- 	ret = fib6_init();
- 	if (ret)
+ }
+ 
diff --git a/target/linux/generic/pending-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/pending-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
index 714097bca066..da4b58883a70 100644
--- a/target/linux/generic/pending-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
+++ b/target/linux/generic/pending-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
 
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4002,6 +4002,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4006,6 +4006,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 at nbd.name>
  	if (!(skb->dev->features & NETIF_F_GRO))
  		goto normal;
  
-@@ -5067,6 +5070,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5077,6 +5080,48 @@ static void __netdev_adjacent_dev_unlink
  					   &upper_dev->adj_list.lower);
  }
  
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  static int __netdev_upper_dev_link(struct net_device *dev,
  				   struct net_device *upper_dev, bool master,
  				   void *private)
-@@ -5127,6 +5172,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5137,6 +5182,7 @@ static int __netdev_upper_dev_link(struc
  			goto rollback_lower_mesh;
  	}
  
@@ -84,15 +84,15 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  	call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
  	return 0;
  
-@@ -5244,6 +5290,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5254,6 +5300,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);
+ 		__netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
  
 +	netdev_update_addr_mask(dev);
  	call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
  }
  EXPORT_SYMBOL(netdev_upper_dev_unlink);
-@@ -5763,6 +5810,7 @@ int dev_set_mac_address(struct net_devic
+@@ -5773,6 +5820,7 @@ int dev_set_mac_address(struct net_devic
  	if (err)
  		return err;
  	dev->addr_assign_type = NET_ADDR_SET;
@@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd at nbd.name>
  #endif
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -597,7 +597,8 @@ struct sk_buff {
+@@ -598,7 +598,8 @@ struct sk_buff {
  #endif
  	__u8			ipvs_property:1;
  	__u8			inner_protocol_type:1;
diff --git a/target/linux/generic/pending-3.18/701-phy_extension.patch b/target/linux/generic/pending-3.18/701-phy_extension.patch
index 5c63dbec62ae..fa4542b88bca 100644
--- a/target/linux/generic/pending-3.18/701-phy_extension.patch
+++ b/target/linux/generic/pending-3.18/701-phy_extension.patch
@@ -53,7 +53,7 @@
   * @phydev: the phy_device struct
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -748,6 +748,7 @@ void phy_start_machine(struct phy_device
+@@ -752,6 +752,7 @@ void phy_start_machine(struct phy_device
  void phy_stop_machine(struct phy_device *phydev);
  int phy_ethtool_sset(struct phy_device *phydev, struct ethtool_cmd *cmd);
  int phy_ethtool_gset(struct phy_device *phydev, struct ethtool_cmd *cmd);
diff --git a/target/linux/generic/pending-3.18/704-phy-no-genphy-soft-reset.patch b/target/linux/generic/pending-3.18/704-phy-no-genphy-soft-reset.patch
deleted file mode 100644
index 0350f9efe4fb..000000000000
--- a/target/linux/generic/pending-3.18/704-phy-no-genphy-soft-reset.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/drivers/net/phy/phy_device.c
-+++ b/drivers/net/phy/phy_device.c
-@@ -1133,7 +1133,7 @@ int genphy_config_init(struct phy_device
- 	return 0;
- }
- 
--static int gen10g_soft_reset(struct phy_device *phydev)
-+static int no_soft_reset(struct phy_device *phydev)
- {
- 	/* Do nothing for now */
- 	return 0;
-@@ -1347,7 +1347,7 @@ static struct phy_driver genphy_driver[]
- 	.phy_id		= 0xffffffff,
- 	.phy_id_mask	= 0xffffffff,
- 	.name		= "Generic PHY",
--	.soft_reset	= genphy_soft_reset,
-+	.soft_reset	= no_soft_reset,
- 	.config_init	= genphy_config_init,
- 	.features	= PHY_GBIT_FEATURES | SUPPORTED_MII |
- 			  SUPPORTED_AUI | SUPPORTED_FIBRE |
-@@ -1362,7 +1362,7 @@ static struct phy_driver genphy_driver[]
- 	.phy_id         = 0xffffffff,
- 	.phy_id_mask    = 0xffffffff,
- 	.name           = "Generic 10G PHY",
--	.soft_reset	= gen10g_soft_reset,
-+	.soft_reset	= no_soft_reset,
- 	.config_init    = gen10g_config_init,
- 	.features       = 0,
- 	.config_aneg    = gen10g_config_aneg,
diff --git a/target/linux/generic/pending-3.18/710-phy-add-mdio_register_board_info.patch b/target/linux/generic/pending-3.18/710-phy-add-mdio_register_board_info.patch
index cc3cb2445de6..424c63e31172 100644
--- a/target/linux/generic/pending-3.18/710-phy-add-mdio_register_board_info.patch
+++ b/target/linux/generic/pending-3.18/710-phy-add-mdio_register_board_info.patch
@@ -46,7 +46,7 @@
  		phy_device_free(phydev);
 --- a/include/linux/phy.h
 +++ b/include/linux/phy.h
-@@ -785,4 +785,22 @@ int __init mdio_bus_init(void);
+@@ -789,4 +789,22 @@ int __init mdio_bus_init(void);
  void mdio_bus_exit(void);
  
  extern struct bus_type mdio_bus_type;
diff --git a/target/linux/generic/pending-3.18/721-phy_packets.patch b/target/linux/generic/pending-3.18/721-phy_packets.patch
index 99811c62428e..7235ab355f25 100644
--- a/target/linux/generic/pending-3.18/721-phy_packets.patch
+++ b/target/linux/generic/pending-3.18/721-phy_packets.patch
@@ -41,7 +41,7 @@
   */
 --- a/include/linux/skbuff.h
 +++ b/include/linux/skbuff.h
-@@ -2054,6 +2054,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -2055,6 +2055,10 @@ static inline int pskb_trim(struct sk_bu
  	return (len < skb->len) ? __pskb_trim(skb, len) : 0;
  }
  
@@ -52,7 +52,7 @@
  /**
   *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
   *	@skb: buffer to alter
-@@ -2180,16 +2184,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -2181,16 +2185,6 @@ static inline struct sk_buff *dev_alloc_
  }
  
  
@@ -86,7 +86,7 @@
  	help
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -2623,10 +2623,20 @@ static int xmit_one(struct sk_buff *skb,
+@@ -2626,10 +2626,20 @@ static int xmit_one(struct sk_buff *skb,
  	if (!list_empty(&ptype_all))
  		dev_queue_xmit_nit(skb, dev);
  
@@ -121,7 +121,7 @@
  
  #include <net/protocol.h>
  #include <net/dst.h>
-@@ -469,6 +470,22 @@ struct sk_buff *__netdev_alloc_skb(struc
+@@ -471,6 +472,22 @@ struct sk_buff *__netdev_alloc_skb(struc
  }
  EXPORT_SYMBOL(__netdev_alloc_skb);
  
diff --git a/target/linux/generic/pending-3.18/773-bgmac-add-srab-switch.patch b/target/linux/generic/pending-3.18/773-bgmac-add-srab-switch.patch
index 52fc252447c9..a93877b69ea2 100644
--- a/target/linux/generic/pending-3.18/773-bgmac-add-srab-switch.patch
+++ b/target/linux/generic/pending-3.18/773-bgmac-add-srab-switch.patch
@@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  /**************************************************
   * BCMA bus ops
   **************************************************/
-@@ -1666,6 +1678,16 @@ static int bgmac_probe(struct bcma_devic
+@@ -1671,6 +1683,16 @@ static int bgmac_probe(struct bcma_devic
  	net_dev->hw_features = net_dev->features;
  	net_dev->vlan_features = net_dev->features;
  
@@ -47,7 +47,7 @@ Signed-off-by: Hauke Mehrtens <hauke at hauke-m.de>
  	err = register_netdev(bgmac->net_dev);
  	if (err) {
  		bgmac_err(bgmac, "Cannot register net device\n");
-@@ -1692,6 +1714,10 @@ static void bgmac_remove(struct bcma_dev
+@@ -1697,6 +1719,10 @@ static void bgmac_remove(struct bcma_dev
  {
  	struct bgmac *bgmac = bcma_get_drvdata(core);
  
diff --git a/target/linux/generic/pending-3.18/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/pending-3.18/811-pci_disable_usb_common_quirks.patch
index a7bf0bb9faad..ddc854963407 100644
--- a/target/linux/generic/pending-3.18/811-pci_disable_usb_common_quirks.patch
+++ b/target/linux/generic/pending-3.18/811-pci_disable_usb_common_quirks.patch
@@ -1,7 +1,7 @@
 
 --- a/drivers/usb/host/pci-quirks.c
 +++ b/drivers/usb/host/pci-quirks.c
-@@ -97,6 +97,8 @@ struct amd_chipset_type {
+@@ -98,6 +98,8 @@ struct amd_chipset_type {
  	u8 rev;
  };
  
@@ -10,7 +10,7 @@
  static struct amd_chipset_info {
  	struct pci_dev	*nb_dev;
  	struct pci_dev	*smbus_dev;
-@@ -454,6 +456,10 @@ void usb_amd_dev_put(void)
+@@ -462,6 +464,10 @@ void usb_amd_dev_put(void)
  }
  EXPORT_SYMBOL_GPL(usb_amd_dev_put);
  
@@ -21,7 +21,7 @@
  /*
   * Make sure the controller is completely inactive, unable to
   * generate interrupts or do DMA.
-@@ -533,8 +539,17 @@ reset_needed:
+@@ -541,8 +547,17 @@ reset_needed:
  	uhci_reset_hc(pdev, base);
  	return 1;
  }
@@ -39,7 +39,7 @@
  static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
  {
  	u16 cmd;
-@@ -1095,3 +1110,4 @@ static void quirk_usb_early_handoff(stru
+@@ -1103,3 +1118,4 @@ static void quirk_usb_early_handoff(stru
  }
  DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_ANY_ID, PCI_ANY_ID,
  			PCI_CLASS_SERIAL_USB, 8, quirk_usb_early_handoff);
diff --git a/target/linux/generic/pending-3.18/901-debloat_sock_diag.patch b/target/linux/generic/pending-3.18/901-debloat_sock_diag.patch
index 99f23a027e28..41c9220a608b 100644
--- a/target/linux/generic/pending-3.18/901-debloat_sock_diag.patch
+++ b/target/linux/generic/pending-3.18/901-debloat_sock_diag.patch
@@ -45,7 +45,7 @@
  	  Support for UNIX socket monitoring interface used by the ss tool.
 --- a/net/netlink/Kconfig
 +++ b/net/netlink/Kconfig
-@@ -13,6 +13,7 @@ config NETLINK_MMAP
+@@ -4,6 +4,7 @@
  
  config NETLINK_DIAG
  	tristate "NETLINK: socket monitoring interface"
diff --git a/target/linux/generic/pending-3.18/902-debloat_proc.patch b/target/linux/generic/pending-3.18/902-debloat_proc.patch
index 79cecf90d469..596a84f8dde4 100644
--- a/target/linux/generic/pending-3.18/902-debloat_proc.patch
+++ b/target/linux/generic/pending-3.18/902-debloat_proc.patch
@@ -173,7 +173,7 @@
  		goto err;
 --- a/net/core/sock.c
 +++ b/net/core/sock.c
-@@ -2933,6 +2933,8 @@ static __net_initdata struct pernet_oper
+@@ -2939,6 +2939,8 @@ static __net_initdata struct pernet_oper
  
  static int __init proto_init(void)
  {
diff --git a/target/linux/generic/pending-3.18/997-device_tree_cmdline.patch b/target/linux/generic/pending-3.18/997-device_tree_cmdline.patch
index dd725b01b123..61fe71b784bc 100644
--- a/target/linux/generic/pending-3.18/997-device_tree_cmdline.patch
+++ b/target/linux/generic/pending-3.18/997-device_tree_cmdline.patch
@@ -1,6 +1,6 @@
 --- a/drivers/of/fdt.c
 +++ b/drivers/of/fdt.c
-@@ -903,6 +903,9 @@ int __init early_init_dt_scan_chosen(uns
+@@ -909,6 +909,9 @@ int __init early_init_dt_scan_chosen(uns
  	p = of_get_flat_dt_prop(node, "bootargs", &l);
  	if (p != NULL && l > 0)
  		strlcpy(data, p, min((int)l, COMMAND_LINE_SIZE));
-- 
2.11.0




More information about the Lede-dev mailing list