diff options
author | Koen Vandeputte <koen.vandeputte@ncentric.com> | 2018-08-20 10:43:09 +0200 |
---|---|---|
committer | Koen Vandeputte <koen.vandeputte@ncentric.com> | 2018-08-20 13:03:23 +0200 |
commit | 548182bc6d38a3817c8e9f5b11207043a31c59b9 (patch) | |
tree | 47925b7011e6f85ccac7ce7eb6fae55423778248 | |
parent | 1f7ce19df292dfe3c270091ac0f7edc5bb9a8324 (diff) | |
download | upstream-548182bc6d38a3817c8e9f5b11207043a31c59b9.tar.gz upstream-548182bc6d38a3817c8e9f5b11207043a31c59b9.tar.bz2 upstream-548182bc6d38a3817c8e9f5b11207043a31c59b9.zip |
kernel: bump 3.18 to 3.18.119
Refreshed all patches.
Compile-tested on: adm5120, adm8668, au1000, mcs814x, ppc40x, ppc44x, xburst
Runtime-tested on: none
Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
46 files changed, 173 insertions, 198 deletions
diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 94e14845c3..eef80250f2 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -2,11 +2,11 @@ LINUX_RELEASE?=1 -LINUX_VERSION-3.18 = .71 +LINUX_VERSION-3.18 = .119 LINUX_VERSION-4.9 = .122 LINUX_VERSION-4.14 = .65 -LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240 +LINUX_KERNEL_HASH-3.18.119 = 2bab623ed868b679eac224f62212cc285264061bedf1e32897f72e35aa26160d LINUX_KERNEL_HASH-4.9.122 = a46f90876b2cdb8ca1626e6489e76f8706dfd593a9d44fc91e68df47db6cf86c LINUX_KERNEL_HASH-4.14.65 = 12980c406bb9be670db58a88464d1c36cafd3c1d4d5ee09e8ecfa71e5eb5a5ec diff --git a/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch b/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch index a5a0abf43b..7a84217bee 100644 --- a/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch +++ b/target/linux/adm5120/patches-3.18/007-adm5120_pci.patch @@ -10,7 +10,7 @@ obj-$(CONFIG_PCI_AR724X) += pci-ar724x.o --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h -@@ -1820,6 +1820,9 @@ +@@ -1821,6 +1821,9 @@ #define PCI_VENDOR_ID_CB 0x1307 /* Measurement Computing */ diff --git a/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch b/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch index a0caa680bc..92937fce14 100644 --- a/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch +++ b/target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch @@ -67,7 +67,7 @@ --- a/drivers/mtd/chips/Kconfig +++ b/drivers/mtd/chips/Kconfig -@@ -188,6 +188,14 @@ config MTD_CFI_AMDSTD +@@ -189,6 +189,14 @@ config MTD_CFI_AMDSTD provides support for command set 0002, used on chips including the AMD Am29LV320. diff --git a/target/linux/adm5120/patches-3.18/120-rb153_cf_driver.patch b/target/linux/adm5120/patches-3.18/120-rb153_cf_driver.patch index c5d4d3a57e..5390bd95b7 100644 --- a/target/linux/adm5120/patches-3.18/120-rb153_cf_driver.patch +++ b/target/linux/adm5120/patches-3.18/120-rb153_cf_driver.patch @@ -10,7 +10,7 @@ obj-$(CONFIG_PATA_SAMSUNG_CF) += pata_samsung_cf.o --- a/drivers/ata/Kconfig +++ b/drivers/ata/Kconfig -@@ -955,6 +955,15 @@ config PATA_QDI +@@ -958,6 +958,15 @@ config PATA_QDI help Support for QDI 6500 and 6580 PATA controllers on VESA local bus. diff --git a/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch b/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch index 70ee00db5a..d013d08b5d 100644 --- a/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch +++ b/target/linux/adm8668/patches-3.18/002-adm8668_pci.patch @@ -10,7 +10,7 @@ obj-$(CONFIG_CAVIUM_OCTEON_SOC) += msi-octeon.o --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h -@@ -1820,6 +1820,9 @@ +@@ -1821,6 +1821,9 @@ #define PCI_VENDOR_ID_CB 0x1307 /* Measurement Computing */ diff --git a/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch b/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch index e57bdb73cc..e39a1686ce 100644 --- a/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch +++ b/target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch @@ -1,6 +1,6 @@ --- a/drivers/net/ethernet/dec/tulip/tulip_core.c +++ b/drivers/net/ethernet/dec/tulip/tulip_core.c -@@ -207,6 +207,7 @@ struct tulip_chip_table tulip_tbl[] = { +@@ -206,6 +206,7 @@ struct tulip_chip_table tulip_tbl[] = { }; @@ -8,7 +8,7 @@ static const struct pci_device_id tulip_pci_tbl[] = { { 0x1011, 0x0009, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21140 }, { 0x1011, 0x0019, PCI_ANY_ID, PCI_ANY_ID, 0, 0, DC21143 }, -@@ -250,7 +251,7 @@ static const struct pci_device_id tulip_ +@@ -249,7 +250,7 @@ static const struct pci_device_id tulip_ { } /* terminate list */ }; MODULE_DEVICE_TABLE(pci, tulip_pci_tbl); @@ -17,7 +17,7 @@ /* A full-duplex map for media types. */ const char tulip_media_cap[32] = -@@ -268,11 +269,14 @@ static void tulip_down(struct net_device +@@ -267,11 +268,14 @@ static void tulip_down(struct net_device static struct net_device_stats *tulip_get_stats(struct net_device *dev); static int private_ioctl(struct net_device *dev, struct ifreq *rq, int cmd); static void set_rx_mode(struct net_device *dev); @@ -32,7 +32,7 @@ static void tulip_set_power_state (struct tulip_private *tp, int sleep, int snooze) { -@@ -289,7 +293,7 @@ static void tulip_set_power_state (struc +@@ -288,7 +292,7 @@ static void tulip_set_power_state (struc } } @@ -41,7 +41,7 @@ static void tulip_up(struct net_device *dev) { -@@ -303,6 +307,7 @@ static void tulip_up(struct net_device * +@@ -302,6 +306,7 @@ static void tulip_up(struct net_device * napi_enable(&tp->napi); #endif @@ -49,7 +49,7 @@ /* Wake the chip from sleep/snooze mode. */ tulip_set_power_state (tp, 0, 0); -@@ -310,6 +315,7 @@ static void tulip_up(struct net_device * +@@ -309,6 +314,7 @@ static void tulip_up(struct net_device * pci_enable_wake(tp->pdev, PCI_D3hot, 0); pci_enable_wake(tp->pdev, PCI_D3cold, 0); tulip_set_wolopts(tp->pdev, 0); @@ -57,7 +57,7 @@ /* On some chip revs we must set the MII/SYM port before the reset!? */ if (tp->mii_cnt || (tp->mtable && tp->mtable->has_mii)) -@@ -317,18 +323,22 @@ static void tulip_up(struct net_device * +@@ -316,18 +322,22 @@ static void tulip_up(struct net_device * /* Reset the chip, holding bit 0 set at least 50 PCI cycles. */ iowrite32(0x00000001, ioaddr + CSR0); @@ -81,7 +81,7 @@ iowrite32(tp->rx_ring_dma, ioaddr + CSR3); iowrite32(tp->tx_ring_dma, ioaddr + CSR4); -@@ -362,9 +372,11 @@ static void tulip_up(struct net_device * +@@ -361,9 +371,11 @@ static void tulip_up(struct net_device * *setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[1]; *setup_frm++ = eaddrs[2]; *setup_frm++ = eaddrs[2]; @@ -93,7 +93,7 @@ tp->tx_buffers[tp->cur_tx].skb = NULL; tp->tx_buffers[tp->cur_tx].mapping = mapping; -@@ -520,7 +532,7 @@ tulip_open(struct net_device *dev) +@@ -519,7 +531,7 @@ tulip_open(struct net_device *dev) tulip_init_ring (dev); @@ -102,7 +102,7 @@ dev->name, dev); if (retval) goto free_ring; -@@ -644,8 +656,10 @@ static void tulip_init_ring(struct net_d +@@ -643,8 +655,10 @@ static void tulip_init_ring(struct net_d tp->rx_buffers[i].skb = skb; if (skb == NULL) break; @@ -113,7 +113,7 @@ tp->rx_buffers[i].mapping = mapping; tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */ tp->rx_ring[i].buffer1 = cpu_to_le32(mapping); -@@ -678,8 +692,10 @@ tulip_start_xmit(struct sk_buff *skb, st +@@ -677,8 +691,10 @@ tulip_start_xmit(struct sk_buff *skb, st entry = tp->cur_tx % TX_RING_SIZE; tp->tx_buffers[entry].skb = skb; @@ -124,7 +124,7 @@ tp->tx_buffers[entry].mapping = mapping; tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping); -@@ -730,16 +746,19 @@ static void tulip_clean_tx_ring(struct t +@@ -729,16 +745,19 @@ static void tulip_clean_tx_ring(struct t if (tp->tx_buffers[entry].skb == NULL) { /* test because dummy frames not mapped */ if (tp->tx_buffers[entry].mapping) @@ -145,7 +145,7 @@ /* Free the original skb. */ dev_kfree_skb_irq(tp->tx_buffers[entry].skb); -@@ -790,7 +809,9 @@ static void tulip_down (struct net_devic +@@ -789,7 +808,9 @@ static void tulip_down (struct net_devic dev->if_port = tp->saved_if_port; /* Leave the driver in snooze, not sleep, mode. */ @@ -155,7 +155,7 @@ } static void tulip_free_ring (struct net_device *dev) -@@ -811,8 +832,10 @@ static void tulip_free_ring (struct net_ +@@ -810,8 +831,10 @@ static void tulip_free_ring (struct net_ /* An invalid address. */ tp->rx_ring[i].buffer1 = cpu_to_le32(0xBADF00D0); if (skb) { @@ -166,7 +166,7 @@ dev_kfree_skb (skb); } } -@@ -821,8 +844,10 @@ static void tulip_free_ring (struct net_ +@@ -820,8 +843,10 @@ static void tulip_free_ring (struct net_ struct sk_buff *skb = tp->tx_buffers[i].skb; if (skb != NULL) { @@ -177,7 +177,7 @@ dev_kfree_skb (skb); } tp->tx_buffers[i].skb = NULL; -@@ -843,7 +868,7 @@ static int tulip_close (struct net_devic +@@ -842,7 +867,7 @@ static int tulip_close (struct net_devic netdev_dbg(dev, "Shutting down ethercard, status was %02x\n", ioread32 (ioaddr + CSR5)); @@ -186,7 +186,7 @@ tulip_free_ring (dev); -@@ -874,7 +899,9 @@ static void tulip_get_drvinfo(struct net +@@ -873,7 +898,9 @@ static void tulip_get_drvinfo(struct net struct tulip_private *np = netdev_priv(dev); strlcpy(info->driver, DRV_NAME, sizeof(info->driver)); strlcpy(info->version, DRV_VERSION, sizeof(info->version)); @@ -196,7 +196,7 @@ } -@@ -887,7 +914,9 @@ static int tulip_ethtool_set_wol(struct +@@ -886,7 +913,9 @@ static int tulip_ethtool_set_wol(struct return -EOPNOTSUPP; tp->wolinfo.wolopts = wolinfo->wolopts; @@ -207,7 +207,7 @@ return 0; } -@@ -1165,9 +1194,11 @@ static void set_rx_mode(struct net_devic +@@ -1164,9 +1193,11 @@ static void set_rx_mode(struct net_devic tp->tx_buffers[entry].skb = NULL; tp->tx_buffers[entry].mapping = @@ -219,7 +219,7 @@ /* Put the setup frame on the Tx list. */ if (entry == TX_RING_SIZE-1) tx_flags |= DESC_RING_WRAP; /* Wrap ring. */ -@@ -1264,19 +1295,22 @@ out: +@@ -1263,19 +1294,22 @@ out: netdev_dbg(dev, "MWI config cacheline=%d, csr0=%08x\n", cache, csr0); } @@ -243,7 +243,7 @@ static const struct net_device_ops tulip_netdev_ops = { .ndo_open = tulip_open, -@@ -1294,6 +1328,7 @@ static const struct net_device_ops tulip +@@ -1293,6 +1327,7 @@ static const struct net_device_ops tulip #endif }; @@ -251,7 +251,7 @@ const struct pci_device_id early_486_chipsets[] = { { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82424) }, { PCI_DEVICE(PCI_VENDOR_ID_SI, PCI_DEVICE_ID_SI_496) }, -@@ -1471,6 +1506,8 @@ static int tulip_init_one(struct pci_dev +@@ -1470,6 +1505,8 @@ static int tulip_init_one(struct pci_dev } } tp->pdev = pdev; @@ -260,7 +260,7 @@ tp->base_addr = ioaddr; tp->revision = pdev->revision; tp->csr0 = csr0; -@@ -1801,6 +1838,7 @@ err_out_free_netdev: +@@ -1800,6 +1837,7 @@ err_out_free_netdev: } @@ -268,7 +268,7 @@ /* set the registers according to the given wolopts */ static void tulip_set_wolopts (struct pci_dev *pdev, u32 wolopts) { -@@ -1829,6 +1867,7 @@ static void tulip_set_wolopts (struct pc +@@ -1828,6 +1866,7 @@ static void tulip_set_wolopts (struct pc iowrite32(tmp, ioaddr + CSR13); } } @@ -276,7 +276,7 @@ #ifdef CONFIG_PM -@@ -1943,6 +1982,7 @@ static void tulip_remove_one(struct pci_ +@@ -1942,6 +1981,7 @@ static void tulip_remove_one(struct pci_ /* pci_power_off (pdev, -1); */ } @@ -284,7 +284,7 @@ #ifdef CONFIG_NET_POLL_CONTROLLER /* -@@ -1964,7 +2004,8 @@ static void poll_tulip (struct net_devic +@@ -1963,7 +2003,8 @@ static void poll_tulip (struct net_devic } #endif @@ -294,7 +294,7 @@ .name = DRV_NAME, .id_table = tulip_pci_tbl, .probe = tulip_init_one, -@@ -1974,10 +2015,12 @@ static struct pci_driver tulip_driver = +@@ -1973,10 +2014,12 @@ static struct pci_driver tulip_driver = .resume = tulip_resume, #endif /* CONFIG_PM */ }; @@ -307,7 +307,7 @@ #ifdef MODULE pr_info("%s", version); #endif -@@ -1987,13 +2030,18 @@ static int __init tulip_init (void) +@@ -1992,13 +2035,18 @@ static int __init tulip_init (void) tulip_max_interrupt_work = max_interrupt_work; /* probe for and init boards */ diff --git a/target/linux/adm8668/patches-3.18/005-tulip_platform.patch b/target/linux/adm8668/patches-3.18/005-tulip_platform.patch index bddc572c66..184a5d0a70 100644 --- a/target/linux/adm8668/patches-3.18/005-tulip_platform.patch +++ b/target/linux/adm8668/patches-3.18/005-tulip_platform.patch @@ -26,7 +26,7 @@ #include <linux/delay.h> #include <linux/mii.h> #include <linux/crc32.h> -@@ -204,6 +206,9 @@ struct tulip_chip_table tulip_tbl[] = { +@@ -203,6 +205,9 @@ struct tulip_chip_table tulip_tbl[] = { { "Conexant LANfinity", 256, 0x0001ebef, HAS_MII | HAS_ACPI, tulip_timer, tulip_media_task }, @@ -36,7 +36,7 @@ }; -@@ -377,6 +382,11 @@ static void tulip_up(struct net_device * +@@ -376,6 +381,11 @@ static void tulip_up(struct net_device * sizeof(tp->setup_frame), PCI_DMA_TODEVICE); #endif @@ -48,7 +48,7 @@ tp->tx_buffers[tp->cur_tx].skb = NULL; tp->tx_buffers[tp->cur_tx].mapping = mapping; -@@ -396,6 +406,7 @@ static void tulip_up(struct net_device * +@@ -395,6 +405,7 @@ static void tulip_up(struct net_device * i = 0; if (tp->mtable == NULL) goto media_picked; @@ -56,7 +56,7 @@ if (dev->if_port) { int looking_for = tulip_media_cap[dev->if_port] & MediaIsMII ? 11 : (dev->if_port == 12 ? 0 : dev->if_port); -@@ -489,6 +500,10 @@ media_picked: +@@ -488,6 +499,10 @@ media_picked: iowrite32(ioread32(ioaddr + 0x88) | 1, ioaddr + 0x88); dev->if_port = tp->mii_cnt ? 11 : 0; tp->csr6 = 0x00040000; @@ -67,7 +67,7 @@ } else if (tp->chip_id == AX88140) { tp->csr6 = tp->mii_cnt ? 0x00040100 : 0x00000100; } else -@@ -660,6 +675,10 @@ static void tulip_init_ring(struct net_d +@@ -659,6 +674,10 @@ static void tulip_init_ring(struct net_d mapping = pci_map_single(tp->pdev, skb->data, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); #endif @@ -78,7 +78,7 @@ tp->rx_buffers[i].mapping = mapping; tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */ tp->rx_ring[i].buffer1 = cpu_to_le32(mapping); -@@ -696,6 +715,11 @@ tulip_start_xmit(struct sk_buff *skb, st +@@ -695,6 +714,11 @@ tulip_start_xmit(struct sk_buff *skb, st mapping = pci_map_single(tp->pdev, skb->data, skb->len, PCI_DMA_TODEVICE); #endif @@ -90,7 +90,7 @@ tp->tx_buffers[entry].mapping = mapping; tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping); -@@ -752,6 +776,13 @@ static void tulip_clean_tx_ring(struct t +@@ -751,6 +775,13 @@ static void tulip_clean_tx_ring(struct t sizeof(tp->setup_frame), PCI_DMA_TODEVICE); #endif @@ -104,7 +104,7 @@ continue; } #ifdef CONFIG_TULIP_PCI -@@ -759,6 +790,11 @@ static void tulip_clean_tx_ring(struct t +@@ -758,6 +789,11 @@ static void tulip_clean_tx_ring(struct t tp->tx_buffers[entry].skb->len, PCI_DMA_TODEVICE); #endif @@ -116,7 +116,7 @@ /* Free the original skb. */ dev_kfree_skb_irq(tp->tx_buffers[entry].skb); -@@ -836,6 +872,10 @@ static void tulip_free_ring (struct net_ +@@ -835,6 +871,10 @@ static void tulip_free_ring (struct net_ pci_unmap_single(tp->pdev, mapping, PKT_BUF_SZ, PCI_DMA_FROMDEVICE); #endif @@ -127,7 +127,7 @@ dev_kfree_skb (skb); } } -@@ -848,6 +888,10 @@ static void tulip_free_ring (struct net_ +@@ -847,6 +887,10 @@ static void tulip_free_ring (struct net_ pci_unmap_single(tp->pdev, tp->tx_buffers[i].mapping, skb->len, PCI_DMA_TODEVICE); #endif @@ -138,7 +138,7 @@ dev_kfree_skb (skb); } tp->tx_buffers[i].skb = NULL; -@@ -902,6 +946,9 @@ static void tulip_get_drvinfo(struct net +@@ -901,6 +945,9 @@ static void tulip_get_drvinfo(struct net #ifdef CONFIG_TULIP_PCI strlcpy(info->bus_info, pci_name(np->pdev), sizeof(info->bus_info)); #endif @@ -148,7 +148,7 @@ } -@@ -917,6 +964,9 @@ static int tulip_ethtool_set_wol(struct +@@ -916,6 +963,9 @@ static int tulip_ethtool_set_wol(struct #ifdef CONFIG_TULIP_PCI device_set_wakeup_enable(tp->kdev, tp->wolinfo.wolopts); #endif @@ -158,7 +158,7 @@ return 0; } -@@ -1192,13 +1242,20 @@ static void set_rx_mode(struct net_devic +@@ -1191,13 +1241,20 @@ static void set_rx_mode(struct net_devic } @@ -180,7 +180,7 @@ /* Put the setup frame on the Tx list. */ if (entry == TX_RING_SIZE-1) tx_flags |= DESC_RING_WRAP; /* Wrap ring. */ -@@ -1218,6 +1275,9 @@ static void set_rx_mode(struct net_devic +@@ -1217,6 +1274,9 @@ static void set_rx_mode(struct net_devic spin_unlock_irqrestore(&tp->lock, flags); } @@ -190,7 +190,7 @@ iowrite32(csr6, ioaddr + CSR6); } -@@ -1984,6 +2044,126 @@ static void tulip_remove_one(struct pci_ +@@ -1983,6 +2043,126 @@ static void tulip_remove_one(struct pci_ } #endif /* CONFIG_TULIP_PCI */ @@ -317,7 +317,7 @@ #ifdef CONFIG_NET_POLL_CONTROLLER /* * Polling 'interrupt' - used by things like netconsole to send skbs -@@ -2017,6 +2197,17 @@ static struct pci_driver tulip_pci_drive +@@ -2016,6 +2196,17 @@ static struct pci_driver tulip_pci_drive }; #endif @@ -335,7 +335,7 @@ static int __init tulip_init (void) { -@@ -2033,6 +2224,9 @@ static int __init tulip_init (void) +@@ -2038,6 +2229,9 @@ static int __init tulip_init (void) #ifdef CONFIG_TULIP_PCI ret = pci_register_driver(&tulip_pci_driver); #endif @@ -345,7 +345,7 @@ return ret; } -@@ -2042,6 +2236,9 @@ static void __exit tulip_cleanup (void) +@@ -2047,6 +2241,9 @@ static void __exit tulip_cleanup (void) #ifdef CONFIG_TULIP_PCI pci_unregister_driver (&tulip_pci_driver); #endif diff --git a/target/linux/generic/pending-3.18/001-mtdsplit_backport.patch b/target/linux/generic/pending-3.18/001-mtdsplit_backport.patch index 97cd62d75c..f0f2effbe4 100644 --- a/target/linux/generic/pending-3.18/001-mtdsplit_backport.patch +++ b/target/linux/generic/pending-3.18/001-mtdsplit_backport.patch @@ -129,7 +129,7 @@ return __mtdsplit_parse_uimage(master, pparts, data, --- a/drivers/mtd/mtdsplit/mtdsplit_wrgg.c +++ b/drivers/mtd/mtdsplit/mtdsplit_wrgg.c -@@ -40,8 +40,8 @@ struct wrgg03_header { +@@ -51,8 +51,8 @@ struct wrg_header { static int mtdsplit_parse_wrgg(struct mtd_info *master, 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 504d772def..c500138309 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 @@ -95,7 +95,7 @@ ret |= BMCR_ANENABLE | BMCR_ANRESTART; return phy_write(phydev, MII_BMCR, ret); } -@@ -2007,7 +2007,7 @@ ar8xxx_phy_config_init(struct phy_device +@@ -2012,7 +2012,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); -@@ -2055,7 +2055,7 @@ ar8xxx_check_link_states(struct ar8xxx_p +@@ -2060,7 +2060,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"); } -@@ -2074,10 +2074,10 @@ ar8xxx_phy_read_status(struct phy_device +@@ -2079,10 +2079,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; -@@ -2107,7 +2107,7 @@ ar8xxx_phy_read_status(struct phy_device +@@ -2112,7 +2112,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); -@@ -2162,15 +2162,15 @@ ar8xxx_phy_probe(struct phy_device *phyd +@@ -2167,15 +2167,15 @@ ar8xxx_phy_probe(struct phy_device *phyd int ret; /* skip PHYs at unused adresses */ @@ -154,7 +154,7 @@ goto found; priv = ar8xxx_create(); -@@ -2179,7 +2179,7 @@ ar8xxx_phy_probe(struct phy_device *phyd +@@ -2184,7 +2184,7 @@ ar8xxx_phy_probe(struct phy_device *phyd goto unlock; } @@ -163,7 +163,7 @@ ret = ar8xxx_probe_switch(priv); if (ret) -@@ -2200,7 +2200,7 @@ ar8xxx_phy_probe(struct phy_device *phyd +@@ -2205,7 +2205,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; -@@ -2288,21 +2288,33 @@ ar8xxx_phy_soft_reset(struct phy_device +@@ -2293,21 +2293,33 @@ ar8xxx_phy_soft_reset(struct phy_device return 0; } diff --git a/target/linux/generic/pending-3.18/030-nl80211-Allow-set-network-namespace-by-fd.patch b/target/linux/generic/pending-3.18/030-nl80211-Allow-set-network-namespace-by-fd.patch index 52a2391ccd..80f9708306 100644 --- a/target/linux/generic/pending-3.18/030-nl80211-Allow-set-network-namespace-by-fd.patch +++ b/target/linux/generic/pending-3.18/030-nl80211-Allow-set-network-namespace-by-fd.patch @@ -11,7 +11,7 @@ Signed-off-by: Johannes Berg <johannes.berg@intel.com> --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c -@@ -361,6 +361,7 @@ struct net *get_net_ns_by_fd(int fd) +@@ -380,6 +380,7 @@ struct net *get_net_ns_by_fd(int fd) return ERR_PTR(-EINVAL); } #endif diff --git a/target/linux/generic/pending-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch b/target/linux/generic/pending-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch index 347049a924..fb44df97e9 100644 --- a/target/linux/generic/pending-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch +++ b/target/linux/generic/pending-3.18/081-01-pppoe-Use-workqueue-to-die-properly-when-a-PADT-is-r.patch @@ -67,8 +67,8 @@ Signed-off-by: David S. Miller <davem@davemloft.net> + INIT_WORK(&po->proto.pppoe.padt_work, pppoe_unbind_sock_work); + error = -EINVAL; - if (sp->sa_protocol != PX_PROTO_OE) - goto end; + + if (sockaddr_len != sizeof(struct sockaddr_pppox)) --- a/include/linux/if_pppox.h +++ b/include/linux/if_pppox.h @@ -19,6 +19,7 @@ diff --git a/target/linux/generic/pending-3.18/081-07-ppp-remove-PPPOX_ZOMBIE-socket-state.patch b/target/linux/generic/pending-3.18/081-07-ppp-remove-PPPOX_ZOMBIE-socket-state.patch index ffdba4d923..28ec03b410 100644 --- a/target/linux/generic/pending-3.18/081-07-ppp-remove-PPPOX_ZOMBIE-socket-state.patch +++ b/target/linux/generic/pending-3.18/081-07-ppp-remove-PPPOX_ZOMBIE-socket-state.patch @@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> pppox_unbind_sock(sk); sk->sk_state_change(sk); po->pppoe_dev = NULL; -@@ -775,7 +775,7 @@ static int pppoe_ioctl(struct socket *so +@@ -779,7 +779,7 @@ static int pppoe_ioctl(struct socket *so struct pppox_sock *relay_po; err = -EBUSY; diff --git a/target/linux/generic/pending-3.18/081-08-pppoe-fix-memory-corruption-in-padt-work-structure.patch b/target/linux/generic/pending-3.18/081-08-pppoe-fix-memory-corruption-in-padt-work-structure.patch index 147e9712db..8637746b5b 100644 --- a/target/linux/generic/pending-3.18/081-08-pppoe-fix-memory-corruption-in-padt-work-structure.patch +++ b/target/linux/generic/pending-3.18/081-08-pppoe-fix-memory-corruption-in-padt-work-structure.patch @@ -62,9 +62,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net> - INIT_WORK(&po->proto.pppoe.padt_work, pppoe_unbind_sock_work); - error = -EINVAL; - if (sp->sa_protocol != PX_PROTO_OE) - goto end; -@@ -645,8 +646,13 @@ static int pppoe_connect(struct socket * + + if (sockaddr_len != sizeof(struct sockaddr_pppox)) +@@ -649,8 +650,13 @@ static int pppoe_connect(struct socket * po->pppoe_dev = NULL; } 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 9f39e5ba5e..51f31ea06e 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 -@@ -600,20 +600,22 @@ int ip6_fragment(struct sk_buff *skb, in +@@ -602,20 +602,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? */ -@@ -630,8 +632,6 @@ int ip6_fragment(struct sk_buff *skb, in +@@ -632,8 +634,6 @@ int ip6_fragment(struct sk_buff *skb, in err = 0; offset = 0; @@ -78,7 +78,7 @@ Closes 20532 /* BUILD HEADER */ *prevhdr = NEXTHDR_FRAGMENT; -@@ -639,8 +639,11 @@ int ip6_fragment(struct sk_buff *skb, in +@@ -641,8 +641,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)); -@@ -738,7 +741,6 @@ slow_path: +@@ -740,7 +743,6 @@ slow_path: */ *prevhdr = NEXTHDR_FRAGMENT; diff --git a/target/linux/generic/pending-3.18/110-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch b/target/linux/generic/pending-3.18/110-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch index f671db6e94..6bbeb93cfa 100644 --- a/target/linux/generic/pending-3.18/110-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch +++ b/target/linux/generic/pending-3.18/110-jffs2-use-.rename2-and-add-RENAME_WHITEOUT-support.patch @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> .get_acl = jffs2_get_acl, .set_acl = jffs2_set_acl, .setattr = jffs2_setattr, -@@ -756,8 +756,27 @@ static int jffs2_mknod (struct inode *di +@@ -752,8 +752,27 @@ static int jffs2_mknod (struct inode *di return ret; } @@ -56,7 +56,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> { int ret; struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb); -@@ -765,6 +784,9 @@ static int jffs2_rename (struct inode *o +@@ -761,6 +780,9 @@ static int jffs2_rename (struct inode *o uint8_t type; uint32_t now; @@ -66,7 +66,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> /* The VFS will check for us and prevent trying to rename a * file over a directory and vice versa, but if it's a directory, * the VFS can't check whether the victim is empty. The filesystem -@@ -828,9 +850,14 @@ static int jffs2_rename (struct inode *o +@@ -824,9 +846,14 @@ static int jffs2_rename (struct inode *o if (S_ISDIR(old_dentry->d_inode->i_mode) && !victim_f) inc_nlink(new_dir_i); diff --git a/target/linux/generic/pending-3.18/111-jffs2-add-RENAME_EXCHANGE-support.patch b/target/linux/generic/pending-3.18/111-jffs2-add-RENAME_EXCHANGE-support.patch index be87c3507e..e0ed3312a2 100644 --- a/target/linux/generic/pending-3.18/111-jffs2-add-RENAME_EXCHANGE-support.patch +++ b/target/linux/generic/pending-3.18/111-jffs2-add-RENAME_EXCHANGE-support.patch @@ -7,7 +7,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/fs/jffs2/dir.c +++ b/fs/jffs2/dir.c -@@ -784,7 +784,7 @@ static int jffs2_rename (struct inode *o +@@ -780,7 +780,7 @@ static int jffs2_rename (struct inode *o uint8_t type; uint32_t now; @@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> return -EINVAL; /* The VFS will check for us and prevent trying to rename a -@@ -792,7 +792,7 @@ static int jffs2_rename (struct inode *o +@@ -788,7 +788,7 @@ static int jffs2_rename (struct inode *o * the VFS can't check whether the victim is empty. The filesystem * needs to do that for itself. */ @@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> victim_f = JFFS2_INODE_INFO(new_dentry->d_inode); if (S_ISDIR(new_dentry->d_inode->i_mode)) { struct jffs2_full_dirent *fd; -@@ -827,7 +827,7 @@ static int jffs2_rename (struct inode *o +@@ -823,7 +823,7 @@ static int jffs2_rename (struct inode *o if (ret) return ret; @@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> /* There was a victim. Kill it off nicely */ if (S_ISDIR(new_dentry->d_inode->i_mode)) clear_nlink(new_dentry->d_inode); -@@ -853,6 +853,12 @@ static int jffs2_rename (struct inode *o +@@ -849,6 +849,12 @@ static int jffs2_rename (struct inode *o if (flags & RENAME_WHITEOUT) /* Replace with whiteout */ ret = jffs2_whiteout(old_dir_i, old_dentry); @@ -47,7 +47,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> else /* Unlink the original */ ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i), -@@ -879,7 +885,7 @@ static int jffs2_rename (struct inode *o +@@ -875,7 +881,7 @@ static int jffs2_rename (struct inode *o return ret; } 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 ae018cbab0..c75cc9ded1 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@true.cz> /* standard device layouts supported by this driver */ enum qcserial_layouts { QCSERIAL_G2K = 0, /* Gobi 2000 */ -@@ -176,6 +178,38 @@ static const struct usb_device_id id_tab +@@ -181,6 +183,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@true.cz> static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id) { struct usb_host_interface *intf = serial->interface->cur_altsetting; -@@ -244,6 +278,11 @@ static int qcprobe(struct usb_serial *se +@@ -249,6 +283,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 ee0d7b2ccc..ae3533db19 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@true.cz> --- a/drivers/net/usb/qmi_wwan.c +++ b/drivers/net/usb/qmi_wwan.c -@@ -825,6 +825,7 @@ static const struct usb_device_id produc +@@ -836,6 +836,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@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) */ -@@ -856,10 +857,24 @@ static const struct usb_device_id produc +@@ -867,6 +868,19 @@ static const struct usb_device_id produc }; MODULE_DEVICE_TABLE(usb, products); @@ -65,9 +65,9 @@ Signed-off-by: Petr Å tetiar <ynezz@true.cz> + struct usb_device *dev = interface_to_usbdev(intf); + + if (dev->actconfig && -+ le16_to_cpu(dev->descriptor.idVendor) == 0x05c6 && -+ le16_to_cpu(dev->descriptor.idProduct) == 0x9215 && -+ dev->actconfig->desc.bNumInterfaces == 5) ++ le16_to_cpu(dev->descriptor.idVendor) == 0x05c6 && ++ le16_to_cpu(dev->descriptor.idProduct) == 0x9215 && ++ dev->actconfig->desc.bNumInterfaces == 5) + return true; + + return false; @@ -76,13 +76,8 @@ Signed-off-by: Petr Å tetiar <ynezz@true.cz> static int qmi_wwan_probe(struct usb_interface *intf, const struct usb_device_id *prod) { - struct usb_device_id *id = (struct usb_device_id *)prod; -+ struct usb_interface_descriptor *desc = &intf->cur_altsetting->desc; - - /* Workaround to enable dynamic IDs. This disables usbnet - * blacklisting functionality. Which, if required, can be -@@ -871,6 +886,12 @@ static int qmi_wwan_probe(struct usb_int - id->driver_info = (unsigned long)&qmi_wwan_info; +@@ -895,6 +909,12 @@ static int qmi_wwan_probe(struct usb_int + return -ENODEV; } + /* Quectel EC20 quirk where we've QMI on interface 4 instead of 0 */ diff --git a/target/linux/generic/pending-3.18/202-reduce_module_size.patch b/target/linux/generic/pending-3.18/202-reduce_module_size.patch index b98ea4e9d8..60ea5c2085 100644 --- a/target/linux/generic/pending-3.18/202-reduce_module_size.patch +++ b/target/linux/generic/pending-3.18/202-reduce_module_size.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -409,7 +409,7 @@ KBUILD_CFLAGS_KERNEL := +@@ -408,7 +408,7 @@ KBUILD_CFLAGS_KERNEL := KBUILD_AFLAGS := -D__ASSEMBLY__ KBUILD_AFLAGS_MODULE := -DMODULE KBUILD_CFLAGS_MODULE := -DMODULE diff --git a/target/linux/generic/pending-3.18/214-spidev_h_portability.patch b/target/linux/generic/pending-3.18/214-spidev_h_portability.patch index dbee090547..39fa32ffa2 100644 --- a/target/linux/generic/pending-3.18/214-spidev_h_portability.patch +++ b/target/linux/generic/pending-3.18/214-spidev_h_portability.patch @@ -1,6 +1,6 @@ --- a/include/uapi/linux/spi/spidev.h +++ b/include/uapi/linux/spi/spidev.h -@@ -111,7 +111,7 @@ struct spi_ioc_transfer { +@@ -112,7 +112,7 @@ struct spi_ioc_transfer { /* not all platforms use <asm-generic/ioctl.h> or _IOC_TYPECHECK() ... */ #define SPI_MSGSIZE(N) \ diff --git a/target/linux/generic/pending-3.18/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch b/target/linux/generic/pending-3.18/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch index 10d698f961..6f7ba681c1 100644 --- a/target/linux/generic/pending-3.18/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch +++ b/target/linux/generic/pending-3.18/272-uapi-if_ether.h-prevent-redefinition-of-struct-ethhd.patch @@ -26,7 +26,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> /* * IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble -@@ -134,11 +135,13 @@ +@@ -135,11 +136,13 @@ * This is an Ethernet frame header. */ diff --git a/target/linux/generic/pending-3.18/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch b/target/linux/generic/pending-3.18/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch index c437a140f0..382b44a939 100644 --- a/target/linux/generic/pending-3.18/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch +++ b/target/linux/generic/pending-3.18/461-mtd-cfi_cmdset_0002-add-buffer-write-cmd-timeout.patch @@ -8,7 +8,7 @@ Signed-off-by: George Kashperko <george@znau.edu.ua> 1 file changed, 1 insertion(+) --- a/drivers/mtd/chips/cfi_cmdset_0002.c +++ b/drivers/mtd/chips/cfi_cmdset_0002.c -@@ -1830,6 +1830,7 @@ static int __xipram do_write_buffer(stru +@@ -1831,6 +1831,7 @@ static int __xipram do_write_buffer(stru /* Write Buffer Load */ map_write(map, CMD(0x25), cmd_adr); diff --git a/target/linux/generic/pending-3.18/476-mtd-spi-nor-add-eon-en25qh32.patch b/target/linux/generic/pending-3.18/476-mtd-spi-nor-add-eon-en25qh32.patch index 7c95ce7093..950970dbc9 100644 --- a/target/linux/generic/pending-3.18/476-mtd-spi-nor-add-eon-en25qh32.patch +++ b/target/linux/generic/pending-3.18/476-mtd-spi-nor-add-eon-en25qh32.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -497,6 +497,7 @@ +@@ -497,6 +497,7 @@ static const struct spi_device_id spi_no { "en25q32b", INFO(0x1c3016, 0, 64 * 1024, 64, 0) }, { "en25p64", INFO(0x1c2017, 0, 64 * 1024, 128, 0) }, { "en25q64", INFO(0x1c3017, 0, 64 * 1024, 128, SECT_4K) }, diff --git a/target/linux/generic/pending-3.18/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch b/target/linux/generic/pending-3.18/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch index bca3487d18..b2b46ac6aa 100644 --- a/target/linux/generic/pending-3.18/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch +++ b/target/linux/generic/pending-3.18/490-ubi-auto-attach-mtd-device-named-ubi-or-data-on-boot.patch @@ -11,7 +11,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> --- a/drivers/mtd/ubi/build.c +++ b/drivers/mtd/ubi/build.c -@@ -1212,6 +1212,49 @@ static struct mtd_info * __init open_mtd +@@ -1223,6 +1223,49 @@ static struct mtd_info * __init open_mtd return mtd; } @@ -61,7 +61,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> static int __init ubi_init(void) { int err, i, k; -@@ -1301,6 +1344,12 @@ static int __init ubi_init(void) +@@ -1312,6 +1355,12 @@ static int __init ubi_init(void) } } diff --git a/target/linux/generic/pending-3.18/610-netfilter_match_bypass_default_checks.patch b/target/linux/generic/pending-3.18/610-netfilter_match_bypass_default_checks.patch index e5c7a77b46..b96402fd3e 100644 --- a/target/linux/generic/pending-3.18/610-netfilter_match_bypass_default_checks.patch +++ b/target/linux/generic/pending-3.18/610-netfilter_match_bypass_default_checks.patch @@ -57,9 +57,9 @@ + ip_checkdefault(&e->ip); + j = 0; + memset(&mtpar, 0, sizeof(mtpar)); mtpar.net = net; - mtpar.table = name; -@@ -942,6 +970,7 @@ copy_entries_to_user(unsigned int total_ +@@ -943,6 +971,7 @@ copy_entries_to_user(unsigned int total_ const struct xt_table_info *private = table->private; int ret = 0; const void *loc_cpu_entry; @@ -67,7 +67,7 @@ counters = alloc_counters(table); if (IS_ERR(counters)) -@@ -973,6 +1002,14 @@ copy_entries_to_user(unsigned int total_ +@@ -974,6 +1003,14 @@ copy_entries_to_user(unsigned int total_ goto free_counters; } @@ -82,7 +82,7 @@ for (i = sizeof(struct ipt_entry); i < e->target_offset; i += m->u.match_size) { -@@ -1379,12 +1416,15 @@ compat_copy_entry_to_user(struct ipt_ent +@@ -1380,12 +1417,15 @@ compat_copy_entry_to_user(struct ipt_ent compat_uint_t origsize; const struct xt_entry_match *ematch; int ret = 0; 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 ec7383e114..81e296e031 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@nbd.name> #define PACKET_FANOUT_LB 1 --- a/net/packet/af_packet.c +++ b/net/packet/af_packet.c -@@ -1529,6 +1529,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1551,6 +1551,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@nbd.name> /* * When we registered the protocol we saved the socket in the data -@@ -1536,6 +1537,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1558,6 +1559,7 @@ static int packet_rcv_spkt(struct sk_buf */ sk = pt->af_packet_priv; @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> /* * Yank back the headers [hope the device set this -@@ -1548,7 +1550,7 @@ static int packet_rcv_spkt(struct sk_buf +@@ -1570,7 +1572,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@nbd.name> goto out; if (!net_eq(dev_net(dev), sock_net(sk))) -@@ -1747,12 +1749,12 @@ static int packet_rcv(struct sk_buff *sk +@@ -1769,12 +1771,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@nbd.name> if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -1872,12 +1874,12 @@ static int tpacket_rcv(struct sk_buff *s +@@ -1894,12 +1896,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@nbd.name> if (!net_eq(dev_net(dev), sock_net(sk))) goto drop; -@@ -2831,6 +2833,7 @@ static int packet_create(struct net *net +@@ -2862,6 +2864,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@nbd.name> if (sock->type == SOCK_PACKET) po->prot_hook.func = packet_rcv_spkt; -@@ -3425,6 +3428,16 @@ packet_setsockopt(struct socket *sock, i +@@ -3485,6 +3488,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@nbd.name> default: return -ENOPROTOOPT; } -@@ -3476,6 +3489,13 @@ static int packet_getsockopt(struct sock +@@ -3536,6 +3549,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/645-bridge_multicast_to_unicast.patch b/target/linux/generic/pending-3.18/645-bridge_multicast_to_unicast.patch index 1226770a3b..642cf03d33 100644 --- a/target/linux/generic/pending-3.18/645-bridge_multicast_to_unicast.patch +++ b/target/linux/generic/pending-3.18/645-bridge_multicast_to_unicast.patch @@ -372,7 +372,7 @@ Implement optinal multicast->unicast conversion for igmp snooping --- a/net/bridge/br_sysfs_if.c +++ b/net/bridge/br_sysfs_if.c -@@ -202,6 +202,7 @@ static BRPORT_ATTR(multicast_router, S_I +@@ -187,6 +187,7 @@ static BRPORT_ATTR(multicast_router, S_I store_multicast_router); BRPORT_ATTR_FLAG(multicast_fast_leave, BR_MULTICAST_FAST_LEAVE); @@ -380,11 +380,11 @@ Implement optinal multicast->unicast conversion for igmp snooping #endif static const struct brport_attribute *brport_attrs[] = { -@@ -228,6 +229,7 @@ static const struct brport_attribute *br +@@ -213,6 +214,7 @@ static const struct brport_attribute *br #ifdef CONFIG_BRIDGE_IGMP_SNOOPING &brport_attr_multicast_router, &brport_attr_multicast_fast_leave, + &brport_attr_multicast_to_unicast, #endif - &brport_attr_isolate_mode, + &brport_attr_isolated, NULL diff --git a/target/linux/generic/pending-3.18/650-pppoe_header_pad.patch b/target/linux/generic/pending-3.18/650-pppoe_header_pad.patch index eb9b4bfd15..e69de29bb2 100644 --- a/target/linux/generic/pending-3.18/650-pppoe_header_pad.patch +++ b/target/linux/generic/pending-3.18/650-pppoe_header_pad.patch @@ -1,20 +0,0 @@ ---- a/drivers/net/ppp/pppoe.c -+++ b/drivers/net/ppp/pppoe.c -@@ -859,7 +859,7 @@ static int pppoe_sendmsg(struct kiocb *i - goto end; - - -- skb = sock_wmalloc(sk, total_len + dev->hard_header_len + 32, -+ skb = sock_wmalloc(sk, total_len + dev->hard_header_len + 32 + NET_SKB_PAD, - 0, GFP_KERNEL); - if (!skb) { - error = -ENOMEM; -@@ -867,7 +867,7 @@ static int pppoe_sendmsg(struct kiocb *i - } - - /* Reserve space for headers. */ -- skb_reserve(skb, dev->hard_header_len); -+ skb_reserve(skb, dev->hard_header_len + NET_SKB_PAD); - skb_reset_network_header(skb); - - skb->dev = dev; 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 fe62110f06..ebe5da4ec0 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,6 +1,6 @@ --- a/net/netlink/af_netlink.c +++ b/net/netlink/af_netlink.c -@@ -1107,23 +1107,7 @@ void netlink_detachskb(struct sock *sk, +@@ -1154,23 +1154,7 @@ void netlink_detachskb(struct sock *sk, static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation) { 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 3948d726b8..c9686f1f01 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 @@ -132,7 +132,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> } return &ip6n->tnls[prio][h]; } -@@ -388,6 +397,12 @@ ip6_tnl_dev_uninit(struct net_device *de +@@ -391,6 +400,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); @@ -145,7 +145,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> if (dev == ip6n->fb_tnl_dev) RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL); else -@@ -781,6 +796,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t, +@@ -784,6 +799,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@openwrt.org> /** * ip6_tnl_rcv - decapsulate IPv6 packet and retransmit it locally * @skb: received socket buffer -@@ -825,6 +942,26 @@ static int ip6_tnl_rcv(struct sk_buff *s +@@ -828,6 +945,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@openwrt.org> __skb_tunnel_rx(skb, t->dev, t->net); -@@ -1086,6 +1223,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1089,6 +1226,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@openwrt.org> if ((t->parms.proto != IPPROTO_IPIP && t->parms.proto != 0) || !ip6_tnl_xmit_ctl(t)) -@@ -1105,6 +1243,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str +@@ -1108,6 +1246,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@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. */ -@@ -1273,6 +1423,14 @@ ip6_tnl_change(struct ip6_tnl *t, const +@@ -1276,6 +1426,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@openwrt.org> ip6_tnl_dst_reset(t); ip6_tnl_link_config(t); return 0; -@@ -1303,6 +1461,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_ +@@ -1306,6 +1464,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@openwrt.org> memcpy(p->name, u->name, sizeof(u->name)); } -@@ -1578,6 +1737,15 @@ static int ip6_tnl_validate(struct nlatt +@@ -1581,6 +1740,15 @@ static int ip6_tnl_validate(struct nlatt return 0; } @@ -347,7 +347,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> static void ip6_tnl_netlink_parms(struct nlattr *data[], struct __ip6_tnl_parm *parms) { -@@ -1611,6 +1779,46 @@ static void ip6_tnl_netlink_parms(struct +@@ -1614,6 +1782,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@openwrt.org> } static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev, -@@ -1663,6 +1871,12 @@ static void ip6_tnl_dellink(struct net_d +@@ -1666,6 +1874,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@openwrt.org> return /* IFLA_IPTUN_LINK */ nla_total_size(4) + -@@ -1680,6 +1894,24 @@ static size_t ip6_tnl_get_size(const str +@@ -1683,6 +1897,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@openwrt.org> 0; } -@@ -1687,6 +1919,9 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -1690,6 +1922,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@openwrt.org> if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || nla_put(skb, IFLA_IPTUN_LOCAL, sizeof(struct in6_addr), -@@ -1697,8 +1932,27 @@ static int ip6_tnl_fill_info(struct sk_b +@@ -1700,8 +1935,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@openwrt.org> return 0; nla_put_failure: -@@ -1714,6 +1968,7 @@ static const struct nla_policy ip6_tnl_p +@@ -1717,6 +1971,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 de8745cdc3..95d3578139 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@davemloft.net> --- a/net/ipv6/ip6_output.c +++ b/net/ipv6/ip6_output.c -@@ -906,21 +906,45 @@ static int ip6_dst_lookup_tail(struct so +@@ -908,21 +908,45 @@ static int ip6_dst_lookup_tail(struct so #endif int err; @@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> * Here if the dst entry we've looked up --- a/net/ipv6/route.c +++ b/net/ipv6/route.c -@@ -2184,9 +2184,10 @@ int ip6_route_get_saddr(struct net *net, +@@ -2185,9 +2185,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 f999d44df0..ac4a0a6bf9 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 @@ -143,7 +143,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> static const struct rt6_info ip6_blk_hole_entry_template = { .dst = { .__refcnt = ATOMIC_INIT(1), -@@ -1578,6 +1595,11 @@ int ip6_route_add(struct fib6_config *cf +@@ -1579,6 +1596,11 @@ int ip6_route_add(struct fib6_config *cf rt->dst.output = ip6_pkt_prohibit_out; rt->dst.input = ip6_pkt_prohibit; break; @@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> case RTN_THROW: default: rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN -@@ -2141,6 +2163,17 @@ static int ip6_pkt_prohibit_out(struct s +@@ -2142,6 +2164,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@openwrt.org> /* * Allocate a dst for local (unicast / anycast) address. */ -@@ -2365,7 +2398,8 @@ static int rtm_to_fib6_config(struct sk_ +@@ -2368,7 +2401,8 @@ static int rtm_to_fib6_config(struct sk_ if (rtm->rtm_type == RTN_UNREACHABLE || rtm->rtm_type == RTN_BLACKHOLE || rtm->rtm_type == RTN_PROHIBIT || @@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> cfg->fc_flags |= RTF_REJECT; if (rtm->rtm_type == RTN_LOCAL) -@@ -2567,6 +2601,9 @@ static int rt6_fill_node(struct net *net +@@ -2570,6 +2604,9 @@ static int rt6_fill_node(struct net *net case -EACCES: rtm->rtm_type = RTN_PROHIBIT; break; @@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> case -EAGAIN: rtm->rtm_type = RTN_THROW; break; -@@ -2825,6 +2862,8 @@ static int ip6_route_dev_notify(struct n +@@ -2828,6 +2865,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@openwrt.org> net->ipv6.ip6_blk_hole_entry->dst.dev = dev; net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev); #endif -@@ -3047,6 +3086,17 @@ static int __net_init ip6_route_net_init +@@ -3054,6 +3093,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@openwrt.org> #endif net->ipv6.sysctl.flush_delay = 0; -@@ -3065,6 +3115,8 @@ out: +@@ -3072,6 +3122,8 @@ out: return ret; #ifdef CONFIG_IPV6_MULTIPLE_TABLES @@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org> out_ip6_prohibit_entry: kfree(net->ipv6.ip6_prohibit_entry); out_ip6_null_entry: -@@ -3082,6 +3134,7 @@ static void __net_exit ip6_route_net_exi +@@ -3089,6 +3141,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@openwrt.org> #endif dst_entries_destroy(&net->ipv6.ip6_dst_ops); } -@@ -3155,6 +3208,9 @@ void __init ip6_route_init_special_entri +@@ -3162,6 +3215,9 @@ void __init ip6_route_init_special_entri init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev; init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev); diff --git a/target/linux/generic/pending-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 da4b58883a..1f2f89daa9 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@nbd.name> --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -4006,6 +4006,9 @@ static enum gro_result dev_gro_receive(s +@@ -4028,6 +4028,9 @@ static enum gro_result dev_gro_receive(s enum gro_result ret; int grow; @@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> if (!(skb->dev->features & NETIF_F_GRO)) goto normal; -@@ -5077,6 +5080,48 @@ static void __netdev_adjacent_dev_unlink +@@ -5099,6 +5102,48 @@ static void __netdev_adjacent_dev_unlink &upper_dev->adj_list.lower); } @@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> static int __netdev_upper_dev_link(struct net_device *dev, struct net_device *upper_dev, bool master, void *private) -@@ -5137,6 +5182,7 @@ static int __netdev_upper_dev_link(struc +@@ -5159,6 +5204,7 @@ static int __netdev_upper_dev_link(struc goto rollback_lower_mesh; } @@ -84,7 +84,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev); return 0; -@@ -5254,6 +5300,7 @@ void netdev_upper_dev_unlink(struct net_ +@@ -5276,6 +5322,7 @@ void netdev_upper_dev_unlink(struct net_ list_for_each_entry(i, &upper_dev->all_adj_list.upper, list) __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr); @@ -92,7 +92,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev); } EXPORT_SYMBOL(netdev_upper_dev_unlink); -@@ -5773,6 +5820,7 @@ int dev_set_mac_address(struct net_devic +@@ -5795,6 +5842,7 @@ int dev_set_mac_address(struct net_devic if (err) return err; dev->addr_assign_type = NET_ADDR_SET; @@ -114,8 +114,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -598,7 +598,8 @@ struct sk_buff { - #endif __u8 ipvs_property:1; + __u8 inner_protocol_type:1; - /* 4 or 6 bit hole */ + __u8 gro_skip: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 fa4542b88b..ffc310a134 100644 --- a/target/linux/generic/pending-3.18/701-phy_extension.patch +++ b/target/linux/generic/pending-3.18/701-phy_extension.patch @@ -1,6 +1,6 @@ --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -357,6 +357,50 @@ int phy_ethtool_gset(struct phy_device * +@@ -363,6 +363,50 @@ int phy_ethtool_gset(struct phy_device * } EXPORT_SYMBOL(phy_ethtool_gset); @@ -53,7 +53,7 @@ * @phydev: the phy_device struct --- a/include/linux/phy.h +++ b/include/linux/phy.h -@@ -752,6 +752,7 @@ void phy_start_machine(struct phy_device +@@ -759,6 +759,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/702-phy_add_aneg_done_function.patch b/target/linux/generic/pending-3.18/702-phy_add_aneg_done_function.patch index bc9515217a..49ffd27814 100644 --- a/target/linux/generic/pending-3.18/702-phy_add_aneg_done_function.patch +++ b/target/linux/generic/pending-3.18/702-phy_add_aneg_done_function.patch @@ -1,6 +1,6 @@ --- a/include/linux/phy.h +++ b/include/linux/phy.h -@@ -484,6 +484,12 @@ struct phy_driver { +@@ -480,6 +480,12 @@ struct phy_driver { /* Determines the negotiated speed and duplex */ int (*read_status)(struct phy_device *phydev); diff --git a/target/linux/generic/pending-3.18/703-phy-add-detach-callback-to-struct-phy_driver.patch b/target/linux/generic/pending-3.18/703-phy-add-detach-callback-to-struct-phy_driver.patch index 061e40fb49..ca8e455833 100644 --- a/target/linux/generic/pending-3.18/703-phy-add-detach-callback-to-struct-phy_driver.patch +++ b/target/linux/generic/pending-3.18/703-phy-add-detach-callback-to-struct-phy_driver.patch @@ -12,7 +12,7 @@ --- a/include/linux/phy.h +++ b/include/linux/phy.h -@@ -502,6 +502,12 @@ struct phy_driver { +@@ -498,6 +498,12 @@ struct phy_driver { */ int (*did_interrupt)(struct phy_device *phydev); 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 424c63e311..60026b474c 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 -@@ -789,4 +789,22 @@ int __init mdio_bus_init(void); +@@ -796,4 +796,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 7235ab355f..ed51bb1d2d 100644 --- a/target/linux/generic/pending-3.18/721-phy_packets.patch +++ b/target/linux/generic/pending-3.18/721-phy_packets.patch @@ -86,7 +86,7 @@ help --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -2626,10 +2626,20 @@ static int xmit_one(struct sk_buff *skb, +@@ -2637,10 +2637,20 @@ static int xmit_one(struct sk_buff *skb, if (!list_empty(&ptype_all)) dev_queue_xmit_nit(skb, dev); diff --git a/target/linux/generic/pending-3.18/834-ledtrig-libata.patch b/target/linux/generic/pending-3.18/834-ledtrig-libata.patch index d0aee1c2d0..25dffdc58d 100644 --- a/target/linux/generic/pending-3.18/834-ledtrig-libata.patch +++ b/target/linux/generic/pending-3.18/834-ledtrig-libata.patch @@ -69,7 +69,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> /** * ata_build_rw_tf - Build ATA taskfile for given read/write request * @tf: Target ATA taskfile -@@ -4800,6 +4813,9 @@ static struct ata_queued_cmd *ata_qc_new +@@ -4825,6 +4838,9 @@ static struct ata_queued_cmd *ata_qc_new break; } } @@ -79,7 +79,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> return qc; } -@@ -5710,6 +5726,9 @@ struct ata_port *ata_port_alloc(struct a +@@ -5734,6 +5750,9 @@ struct ata_port *ata_port_alloc(struct a ap->stats.unhandled_irq = 1; ap->stats.idle_irq = 1; #endif @@ -89,7 +89,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> ata_sff_port_init(ap); return ap; -@@ -5731,6 +5750,12 @@ static void ata_host_release(struct devi +@@ -5755,6 +5774,12 @@ static void ata_host_release(struct devi kfree(ap->pmp_link); kfree(ap->slave_link); @@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org> kfree(ap); host->ports[i] = NULL; } -@@ -6177,7 +6202,23 @@ int ata_host_register(struct ata_host *h +@@ -6201,7 +6226,23 @@ int ata_host_register(struct ata_host *h host->ports[i]->print_id = atomic_inc_return(&ata_print_id); host->ports[i]->local_port_no = i + 1; } diff --git a/target/linux/generic/pending-3.18/902-debloat_proc.patch b/target/linux/generic/pending-3.18/902-debloat_proc.patch index 596a84f8dd..69cf448414 100644 --- a/target/linux/generic/pending-3.18/902-debloat_proc.patch +++ b/target/linux/generic/pending-3.18/902-debloat_proc.patch @@ -34,7 +34,7 @@ } --- a/fs/proc/proc_tty.c +++ b/fs/proc/proc_tty.c -@@ -143,7 +143,10 @@ static const struct file_operations proc +@@ -144,7 +144,10 @@ static const struct file_operations proc void proc_tty_register_driver(struct tty_driver *driver) { struct proc_dir_entry *ent; @@ -46,7 +46,7 @@ if (!driver->driver_name || driver->proc_entry || !driver->ops->proc_fops) return; -@@ -160,6 +163,9 @@ void proc_tty_unregister_driver(struct t +@@ -161,6 +164,9 @@ void proc_tty_unregister_driver(struct t { struct proc_dir_entry *ent; @@ -56,7 +56,7 @@ ent = driver->proc_entry; if (!ent) return; -@@ -174,6 +180,9 @@ void proc_tty_unregister_driver(struct t +@@ -175,6 +181,9 @@ void proc_tty_unregister_driver(struct t */ void __init proc_tty_init(void) { @@ -122,7 +122,7 @@ return -ENOMEM; --- a/mm/vmalloc.c +++ b/mm/vmalloc.c -@@ -2662,6 +2662,8 @@ static const struct file_operations proc +@@ -2663,6 +2663,8 @@ static const struct file_operations proc static int __init proc_vmalloc_init(void) { @@ -173,7 +173,7 @@ goto err; --- a/net/core/sock.c +++ b/net/core/sock.c -@@ -2939,6 +2939,8 @@ static __net_initdata struct pernet_oper +@@ -2941,6 +2941,8 @@ static __net_initdata struct pernet_oper static int __init proto_init(void) { @@ -239,7 +239,7 @@ --- a/net/ipv4/route.c +++ b/net/ipv4/route.c -@@ -416,6 +416,9 @@ static struct pernet_operations ip_rt_pr +@@ -418,6 +418,9 @@ static struct pernet_operations ip_rt_pr static int __init ip_rt_proc_init(void) { @@ -251,7 +251,7 @@ --- a/ipc/msg.c +++ b/ipc/msg.c -@@ -1072,6 +1072,9 @@ void __init msg_init(void) +@@ -1075,6 +1075,9 @@ void __init msg_init(void) printk(KERN_INFO "msgmni has been set to %d\n", init_ipc_ns.msg_ctlmni); diff --git a/target/linux/mcs814x/patches-3.18/004-usb.patch b/target/linux/mcs814x/patches-3.18/004-usb.patch index d69ec211a5..410c53085d 100644 --- a/target/linux/mcs814x/patches-3.18/004-usb.patch +++ b/target/linux/mcs814x/patches-3.18/004-usb.patch @@ -14,7 +14,7 @@ int retval = 0; --- a/drivers/usb/host/ohci-hcd.c +++ b/drivers/usb/host/ohci-hcd.c -@@ -1259,6 +1259,11 @@ MODULE_LICENSE ("GPL"); +@@ -1260,6 +1260,11 @@ MODULE_LICENSE ("GPL"); #define PLATFORM_DRIVER ohci_hcd_tilegx_driver #endif diff --git a/target/linux/mcs814x/patches-3.18/012-mtd-cfi_cmdset_0002-force-word-write.patch b/target/linux/mcs814x/patches-3.18/012-mtd-cfi_cmdset_0002-force-word-write.patch index 10593ce70d..6269e40a09 100644 --- a/target/linux/mcs814x/patches-3.18/012-mtd-cfi_cmdset_0002-force-word-write.patch +++ b/target/linux/mcs814x/patches-3.18/012-mtd-cfi_cmdset_0002-force-word-write.patch @@ -7,8 +7,8 @@ -#define FORCE_WORD_WRITE 0 +#define FORCE_WORD_WRITE 1 --#define MAX_WORD_RETRIES 3 -+#define MAX_WORD_RETRIES 10 +-#define MAX_RETRIES 3 ++#define MAX_RETRIES 10 #define SST49LF004B 0x0060 #define SST49LF040B 0x0050 diff --git a/target/linux/mcs814x/patches-3.18/013-ohci_workarounds.patch b/target/linux/mcs814x/patches-3.18/013-ohci_workarounds.patch index 8697f03386..9d4982b0fb 100644 --- a/target/linux/mcs814x/patches-3.18/013-ohci_workarounds.patch +++ b/target/linux/mcs814x/patches-3.18/013-ohci_workarounds.patch @@ -18,8 +18,8 @@ + u32 hcca_area; /* Accept arbitrarily long scatter-gather lists */ - hcd->self.sg_tablesize = ~0; -@@ -501,11 +502,13 @@ static int ohci_init (struct ohci_hcd *o + if (!(hcd->driver->flags & HCD_LOCAL_MEM)) +@@ -502,11 +503,13 @@ static int ohci_init (struct ohci_hcd *o (unsigned long) ohci); set_timer_slack(&ohci->io_watchdog, msecs_to_jiffies(20)); @@ -35,7 +35,7 @@ if ((ret = ohci_mem_init (ohci)) < 0) ohci_stop (hcd); else { -@@ -523,6 +526,7 @@ static int ohci_init (struct ohci_hcd *o +@@ -524,6 +527,7 @@ static int ohci_init (struct ohci_hcd *o */ static int ohci_run (struct ohci_hcd *ohci) { @@ -43,7 +43,7 @@ u32 mask, val; int first = ohci->fminterval == 0; struct usb_hcd *hcd = ohci_to_hcd(ohci); -@@ -573,6 +577,8 @@ static int ohci_run (struct ohci_hcd *oh +@@ -574,6 +578,8 @@ static int ohci_run (struct ohci_hcd *oh msleep(val); memset (ohci->hcca, 0, sizeof (struct ohci_hcca)); @@ -52,7 +52,7 @@ /* 2msec timelimit here means no irqs/preempt */ spin_lock_irq (&ohci->lock); -@@ -984,9 +990,6 @@ static void ohci_stop (struct usb_hcd *h +@@ -985,9 +991,6 @@ static void ohci_stop (struct usb_hcd *h remove_debug_files (ohci); ohci_mem_cleanup (ohci); if (ohci->hcca) { diff --git a/target/linux/xburst/patches-3.18/002-NAND-Optimize-NAND_ECC_HW_OOB_FIRST-read.patch b/target/linux/xburst/patches-3.18/002-NAND-Optimize-NAND_ECC_HW_OOB_FIRST-read.patch index 046da51912..ce87452a16 100644 --- a/target/linux/xburst/patches-3.18/002-NAND-Optimize-NAND_ECC_HW_OOB_FIRST-read.patch +++ b/target/linux/xburst/patches-3.18/002-NAND-Optimize-NAND_ECC_HW_OOB_FIRST-read.patch @@ -10,7 +10,7 @@ Avoid sending unnecessary READ commands to the chip. --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c -@@ -1360,9 +1360,16 @@ static int nand_read_page_hwecc_oob_firs +@@ -1365,9 +1365,16 @@ static int nand_read_page_hwecc_oob_firs unsigned int max_bitflips = 0; /* Read the OOB area first */ @@ -30,7 +30,7 @@ Avoid sending unnecessary READ commands to the chip. for (i = 0; i < chip->ecc.total; i++) ecc_code[i] = chip->oob_poi[eccpos[i]]; -@@ -1575,7 +1582,9 @@ static int nand_do_read_ops(struct mtd_i +@@ -1580,7 +1587,9 @@ static int nand_do_read_ops(struct mtd_i __func__, buf); read_retry: diff --git a/target/linux/xburst/patches-3.18/003-NAND-Add-support-for-subpage-reads-for-NAND_ECC_HW_O.patch b/target/linux/xburst/patches-3.18/003-NAND-Add-support-for-subpage-reads-for-NAND_ECC_HW_O.patch index 974eb7a5db..65e739d479 100644 --- a/target/linux/xburst/patches-3.18/003-NAND-Add-support-for-subpage-reads-for-NAND_ECC_HW_O.patch +++ b/target/linux/xburst/patches-3.18/003-NAND-Add-support-for-subpage-reads-for-NAND_ECC_HW_O.patch @@ -10,7 +10,7 @@ Subject: [PATCH 3/7] NAND: Add support for subpage reads for --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c -@@ -1393,6 +1393,75 @@ static int nand_read_page_hwecc_oob_firs +@@ -1398,6 +1398,75 @@ static int nand_read_page_hwecc_oob_firs } /** @@ -86,7 +86,7 @@ Subject: [PATCH 3/7] NAND: Add support for subpage reads for * nand_read_page_syndrome - [REPLACEABLE] hardware ECC syndrome based page read * @mtd: mtd info structure * @chip: nand chip info structure -@@ -3950,8 +4019,14 @@ int nand_scan_tail(struct mtd_info *mtd) +@@ -3961,8 +4030,14 @@ int nand_scan_tail(struct mtd_info *mtd) pr_warn("No ECC functions supplied; hardware ECC not possible\n"); BUG(); } diff --git a/target/linux/xburst/patches-3.18/007-qi_lb60-Don-t-use-3-wire-spi-mode-for-the-display-fo.patch b/target/linux/xburst/patches-3.18/007-qi_lb60-Don-t-use-3-wire-spi-mode-for-the-display-fo.patch index b8aac66b3e..fd89ad3bca 100644 --- a/target/linux/xburst/patches-3.18/007-qi_lb60-Don-t-use-3-wire-spi-mode-for-the-display-fo.patch +++ b/target/linux/xburst/patches-3.18/007-qi_lb60-Don-t-use-3-wire-spi-mode-for-the-display-fo.patch @@ -11,7 +11,7 @@ The spi_gpio driver does not support 3-wire mode. --- a/arch/mips/jz4740/board-qi_lb60.c +++ b/arch/mips/jz4740/board-qi_lb60.c -@@ -312,7 +312,6 @@ static struct spi_board_info qi_lb60_spi +@@ -313,7 +313,6 @@ static struct spi_board_info qi_lb60_spi .chip_select = 0, .bus_num = 1, .max_speed_hz = 30 * 1000, |