From 03ffd583b9c2a5efae2176250ee2b7a00ae33933 Mon Sep 17 00:00:00 2001 From: Zoltan HERPAI Date: Sun, 17 Sep 2017 02:00:14 +0200 Subject: [PATCH] CC: upgrade kernel to 3.18.68 - compile tested on sunxi, imx6 - runtime tested on sunxi, imx6 - refresh patches - remove unnecessary patches Signed-off-by: Zoltan HERPAI --- include/kernel-version.mk | 4 +- .../kernel/mac80211/patches/090-remove-cred.patch | 15 ++++++ .../101-cfi_fixup_macronix_bootloc.patch | 2 +- .../adm8668/patches-3.18/004-tulip_pci_split.patch | 56 +++++++++++----------- .../adm8668/patches-3.18/005-tulip_platform.patch | 36 +++++++------- .../patches-3.18/902-unaligned_access_hacks.patch | 9 ---- .../patches-3.18/003-mtd-spi-nor-from-3.19.patch | 18 +++---- .../patches-3.18/004-mtd-spi-nor-from-3.20.patch | 4 +- ...ma-Add-vc_cma-driver-to-enable-use-of-CMA.patch | 2 +- ...-make-overcurrent-messages-more-prominent.patch | 2 +- ...ow-option-card-devices-to-be-configured-v.patch | 2 +- ...port-for-the-CONFIG_CMDLINE_EXTEND-option.patch | 2 +- .../400-mtd-bcm47xxpart-get-nvram.patch | 2 +- .../cns3xxx/patches-3.18/025-smp_support.patch | 4 +- .../cns3xxx/patches-3.18/040-fiq_support.patch | 4 +- .../cns3xxx/patches-3.18/095-gpio_support.patch | 2 +- .../cns3xxx/patches-3.18/100-laguna_support.patch | 2 +- .../041-mtd-bcm47xxpart-backports-from-3.20.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 +- ...ac-support-up-to-3-cores-devices-on-a-bus.patch | 2 +- ...elper-checking-for-BCM4707-BCM53018-chip-.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 ++-- ...part-limit-scanned-flash-area-on-BCM47XX-.patch | 33 ------------- ...m47xxpart-don-t-fail-because-of-bit-flips.patch | 4 +- ...-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch | 35 -------------- .../patches-3.18/201-extra_optimization.patch | 2 +- .../generic/patches-3.18/204-module_strip.patch | 16 +++---- ...462-m25p80-mx-disable-software-protection.patch | 2 +- .../540-crypto-xz-decompression-support.patch | 2 +- .../patches-3.18/630-packet_socket_type.patch | 16 +++---- .../643-bridge_remove_ipv6_dependency.patch | 6 +-- .../patches-3.18/653-disable_netlink_trim.patch | 5 +- .../patches-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/patches-3.18/701-phy_extension.patch | 2 +- .../704-phy-no-genphy-soft-reset.patch | 11 +---- .../710-phy-add-mdio_register_board_info.patch | 2 +- .../generic/patches-3.18/721-phy_packets.patch | 8 ++-- .../generic/patches-3.18/750-hostap_txpower.patch | 2 +- .../patches-3.18/773-bgmac-add-srab-switch.patch | 4 +- .../811-pci_disable_usb_common_quirks.patch | 8 ++-- .../generic/patches-3.18/902-debloat_proc.patch | 2 +- .../patches-3.18/940-ocf_kbuild_integration.patch | 2 +- .../patches-3.18/997-device_tree_cmdline.patch | 2 +- ...-add-i210-i211-support-for-phy-read-write.patch | 12 ++--- ...-phy-read-write-functions-that-accept-phy.patch | 32 ++++++------- .../patches-3.18/600-skb_avoid_dmabounce.patch | 4 +- .../patches-3.18/0026-NET-multi-phy-support.patch | 6 +-- .../0032-USB-fix-roothub-for-IFXHCD.patch | 2 +- .../mcs814x/patches-3.18/008-mcs814x_gpio.patch | 2 +- .../700-usb_xhci_plat_phy_support.patch | 4 +- .../patches-3.18/0033-NET-multi-phy-support.patch | 6 +-- .../0057-uvc-add-iPassion-iP2970-support.patch | 2 +- .../0062-mt7621-add-ECHI-OCHI-XCHI-support.patch | 54 ++++++++++----------- 62 files changed, 239 insertions(+), 353 deletions(-) create mode 100644 package/kernel/mac80211/patches/090-remove-cred.patch delete mode 100644 target/linux/generic/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch delete mode 100644 target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch delete mode 100644 target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch diff --git a/include/kernel-version.mk b/include/kernel-version.mk index 2f6d2790b1..87fd7a5fe6 100644 --- a/include/kernel-version.mk +++ b/include/kernel-version.mk @@ -2,9 +2,9 @@ LINUX_RELEASE?=1 -LINUX_VERSION-3.18 = .45 +LINUX_VERSION-3.18 = .68 -LINUX_KERNEL_MD5SUM-3.18.45 = c527bae0aa1a5d6f3ebe31ad348c5339 +LINUX_KERNEL_MD5SUM-3.18.68 = 5022a104125feab1042d86d72d66f447 ifdef KERNEL_PATCHVER LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER))) diff --git a/package/kernel/mac80211/patches/090-remove-cred.patch b/package/kernel/mac80211/patches/090-remove-cred.patch new file mode 100644 index 0000000000..3adb2afb86 --- /dev/null +++ b/package/kernel/mac80211/patches/090-remove-cred.patch @@ -0,0 +1,15 @@ +This is only needed for kernel < 2.6.29 and conflicts with kernel 4.4.42 + +--- a/backport-include/linux/cred.h ++++ /dev/null +@@ -1,10 +0,0 @@ +-#ifndef __BACKPORT_LINUX_CRED_H +-#define __BACKPORT_LINUX_CRED_H +-#include_next +-#include +- +-#ifndef current_user_ns +-#define current_user_ns() (current->nsproxy->user_ns) +-#endif +- +-#endif /* __BACKPORT_LINUX_CRED_H */ 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/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 #include #include -@@ -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/ar71xx/patches-3.18/902-unaligned_access_hacks.patch b/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch index bf03545e43..9310b503c6 100644 --- a/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch +++ b/target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch @@ -263,15 +263,6 @@ case IPV6_2292HOPOPTS: --- a/net/ipv6/ip6_gre.c +++ b/net/ipv6/ip6_gre.c -@@ -394,7 +394,7 @@ static void ip6gre_err(struct sk_buff *s - - t = ip6gre_tunnel_lookup(skb->dev, &ipv6h->daddr, &ipv6h->saddr, - flags & GRE_KEY ? -- *(((__be32 *)p) + (grehlen / 4) - 1) : 0, -+ net_hdr_word(((__be32 *)p) + (grehlen / 4) - 1) : 0, - p[1]); - if (t == NULL) - return; @@ -476,11 +476,11 @@ static int ip6gre_rcv(struct sk_buff *sk offset += 4; } diff --git a/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch b/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch index e7e84433ca..6bd1811399 100644 --- a/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch +++ b/target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch @@ -496,7 +496,7 @@ return 1; ret = read_sr(nor); -@@ -880,11 +896,11 @@ static int spansion_quad_enable(struct s +@@ -887,11 +903,11 @@ static int spansion_quad_enable(struct s return 0; } @@ -510,7 +510,7 @@ case CFI_MFR_MACRONIX: status = macronix_quad_enable(nor); if (status) { -@@ -910,11 +926,6 @@ static int spi_nor_check(struct spi_nor +@@ -917,11 +933,6 @@ static int spi_nor_check(struct spi_nor return -EINVAL; } @@ -522,7 +522,7 @@ return 0; } -@@ -932,16 +943,24 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -939,16 +950,24 @@ int spi_nor_scan(struct spi_nor *nor, co if (ret) return ret; @@ -551,7 +551,7 @@ if (IS_ERR(jid)) { return PTR_ERR(jid); } else if (jid != id) { -@@ -966,10 +985,10 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -973,10 +992,10 @@ int spi_nor_scan(struct spi_nor *nor, co * up with the software protection bits set */ @@ -566,7 +566,7 @@ write_enable(nor); write_sr(nor, 0); } -@@ -984,7 +1003,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -991,7 +1010,7 @@ int spi_nor_scan(struct spi_nor *nor, co mtd->_read = spi_nor_read; /* nor protection support for STmicro chips */ @@ -575,7 +575,7 @@ mtd->_lock = spi_nor_lock; mtd->_unlock = spi_nor_unlock; } -@@ -995,9 +1014,8 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1002,9 +1021,8 @@ int spi_nor_scan(struct spi_nor *nor, co else mtd->_write = spi_nor_write; @@ -587,7 +587,7 @@ #ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS /* prefer "small sector" erase if possible */ -@@ -1038,7 +1056,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1045,7 +1063,7 @@ int spi_nor_scan(struct spi_nor *nor, co /* Quad/Dual-read mode takes precedence over fast/normal */ if (mode == SPI_NOR_QUAD && info->flags & SPI_NOR_QUAD_READ) { @@ -596,7 +596,7 @@ if (ret) { dev_err(dev, "quad mode not supported\n"); return ret; -@@ -1074,7 +1092,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1081,7 +1099,7 @@ int spi_nor_scan(struct spi_nor *nor, co else if (mtd->size > 0x1000000) { /* enable 4-byte addressing if the device exceeds 16MiB */ nor->addr_width = 4; @@ -605,7 +605,7 @@ /* Dedicated 4-byte command set */ switch (nor->flash_read) { case SPI_NOR_QUAD: -@@ -1095,7 +1113,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -1102,7 +1120,7 @@ int spi_nor_scan(struct spi_nor *nor, co nor->erase_opcode = SPINOR_OP_SE_4B; mtd->erasesize = info->sector_size; } else diff --git a/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch b/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch index 1238785e47..3172e990ca 100644 --- a/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch +++ b/target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch @@ -23,7 +23,7 @@ /* PMC */ { "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) }, -@@ -896,6 +896,45 @@ static int spansion_quad_enable(struct s +@@ -903,6 +903,45 @@ static int spansion_quad_enable(struct s return 0; } @@ -69,7 +69,7 @@ static int set_quad_mode(struct spi_nor *nor, struct flash_info *info) { int status; -@@ -908,6 +947,13 @@ static int set_quad_mode(struct spi_nor +@@ -915,6 +954,13 @@ static int set_quad_mode(struct spi_nor return -EINVAL; } return status; diff --git a/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch b/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch index 2edcd35cd4..90d6c6e004 100644 --- a/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch +++ b/target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch @@ -22,7 +22,7 @@ Signed-off-by: popcornmix --- a/drivers/char/Kconfig +++ b/drivers/char/Kconfig -@@ -581,6 +581,8 @@ config DEVPORT +@@ -583,6 +583,8 @@ config DEVPORT source "drivers/s390/char/Kconfig" diff --git a/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch b/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch index 316f80eb87..8e5a74b8d0 100644 --- a/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch +++ b/target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch @@ -10,7 +10,7 @@ Hub overcurrent messages are more serious than "debug". Increase loglevel. --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4932,7 +4932,7 @@ static void port_event(struct usb_hub *h +@@ -4933,7 +4933,7 @@ static void port_event(struct usb_hub *h if (portchange & USB_PORT_STAT_C_OVERCURRENT) { u16 status = 0, unused; diff --git a/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch b/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch index c986c840fb..4e0a191fa8 100644 --- a/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch +++ b/target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch @@ -369,7 +369,7 @@ support code with each new device. mmc_of_parse(mmc); --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -1086,8 +1086,12 @@ static struct debugfs_blob_wrapper flat_ +@@ -1092,8 +1092,12 @@ static struct debugfs_blob_wrapper flat_ static int __init of_flat_dt_debugfs_export_fdt(void) { diff --git a/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch b/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch index 7f61b338db..17d6b927db 100644 --- a/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch +++ b/target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch @@ -9,7 +9,7 @@ Subject: [PATCH 65/99] fdt: Add support for the CONFIG_CMDLINE_EXTEND option --- a/drivers/of/fdt.c +++ b/drivers/of/fdt.c -@@ -901,22 +901,38 @@ int __init early_init_dt_scan_chosen(uns +@@ -907,22 +907,38 @@ int __init early_init_dt_scan_chosen(uns /* Retrieve command line */ p = of_get_flat_dt_prop(node, "bootargs", &l); diff --git a/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch b/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch index 4fb8a87d4c..9ffc4ca31c 100644 --- a/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch +++ b/target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch @@ -8,7 +8,7 @@ /* * Some really old flashes (like AT45DB*) had smaller erasesize-s, but -@@ -334,12 +335,23 @@ static int bcm47xxpart_parse(struct mtd_ +@@ -332,12 +333,23 @@ static int bcm47xxpart_parse(struct mtd_ if (buf[0] == NVRAM_HEADER) { bcm47xxpart_add_part(&parts[curr_part++], "nvram", master->size - blocksize, 0); diff --git a/target/linux/cns3xxx/patches-3.18/025-smp_support.patch b/target/linux/cns3xxx/patches-3.18/025-smp_support.patch index 418c065a97..0f1f5aa630 100644 --- a/target/linux/cns3xxx/patches-3.18/025-smp_support.patch +++ b/target/linux/cns3xxx/patches-3.18/025-smp_support.patch @@ -1,8 +1,8 @@ --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile -@@ -5,3 +5,5 @@ cns3xxx-y += core.o pm.o - cns3xxx-$(CONFIG_ATAGS) += devices.o +@@ -6,3 +6,5 @@ cns3xxx-$(CONFIG_ATAGS) += devices.o cns3xxx-$(CONFIG_PCI) += pcie.o + CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o +cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o +cns3xxx-$(CONFIG_HOTPLUG_CPU) += hotplug.o diff --git a/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch b/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch index 4f09a36f14..acfe338312 100644 --- a/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch +++ b/target/linux/cns3xxx/patches-3.18/040-fiq_support.patch @@ -10,9 +10,9 @@ --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile -@@ -5,5 +5,5 @@ cns3xxx-y += core.o pm.o - cns3xxx-$(CONFIG_ATAGS) += devices.o +@@ -6,5 +6,5 @@ cns3xxx-$(CONFIG_ATAGS) += devices.o cns3xxx-$(CONFIG_PCI) += pcie.o + CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o -cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o +cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o cns3xxx_fiq.o diff --git a/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch b/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch index a6ce177493..b95a0897fa 100644 --- a/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch +++ b/target/linux/cns3xxx/patches-3.18/095-gpio_support.patch @@ -32,7 +32,7 @@ +cns3xxx-y += core.o pm.o gpio.o cns3xxx-$(CONFIG_ATAGS) += devices.o cns3xxx-$(CONFIG_PCI) += pcie.o - cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o + CFLAGS_pcie.o += -Wframe-larger-than=1536 # override default 1024, this is safe here --- a/arch/arm/mach-cns3xxx/cns3xxx.h +++ b/arch/arm/mach-cns3xxx/cns3xxx.h @@ -68,8 +68,10 @@ diff --git a/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch b/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch index 3c0bba4316..622ba5453b 100644 --- a/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch +++ b/target/linux/cns3xxx/patches-3.18/100-laguna_support.patch @@ -15,7 +15,7 @@ endif --- a/arch/arm/mach-cns3xxx/Makefile +++ b/arch/arm/mach-cns3xxx/Makefile -@@ -7,3 +7,5 @@ cns3xxx-$(CONFIG_PCI) += pcie.o +@@ -8,3 +8,5 @@ CFLAGS_pcie.o += -Wframe-larger-than= cns3xxx-$(CONFIG_MACH_CNS3420VB) += cns3420vb.o cns3xxx-$(CONFIG_SMP) += platsmp.o headsmp.o cns3xxx_fiq.o cns3xxx-$(CONFIG_HOTPLUG_CPU) += hotplug.o diff --git a/target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch b/target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch index 59180c2084..f3dfa901f1 100644 --- a/target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch +++ b/target/linux/generic/patches-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/patches-3.18/070-bgmac-register-napi-before-the-device.patch b/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch index aa45860e93..0e7e4f8b12 100644 --- a/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch +++ b/target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch @@ -13,7 +13,7 @@ Signed-off-by: David S. Miller --- 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 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 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/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch b/target/linux/generic/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch deleted file mode 100644 index 121d2f4122..0000000000 --- a/target/linux/generic/patches-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?= -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 -Signed-off-by: David S. Miller ---- - 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/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch b/target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch index 5cb21a565a..27fa7321e9 100644 --- a/target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch +++ b/target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch @@ -254,7 +254,7 @@ Signed-off-by: Felix Fietkau } } -@@ -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/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch b/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch index d093e89dea..2582538966 100644 --- a/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch +++ b/target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch @@ -44,7 +44,7 @@ Signed-off-by: David S. Miller pr_err("Unsupported core_unit %d\n", core->core_unit); return -ENOTSUPP; } -@@ -1588,8 +1597,17 @@ static int bgmac_probe(struct bcma_devic +@@ -1593,8 +1602,17 @@ static int bgmac_probe(struct bcma_devic } bgmac->cmn = core->bus->drv_gmac_cmn.core; diff --git a/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch b/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch index 63010c1450..3ab953f1c4 100644 --- a/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch +++ b/target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch @@ -94,7 +94,7 @@ Signed-off-by: David S. Miller struct net_device *net_dev; struct bgmac *bgmac; struct ssb_sprom *sprom = &core->bus->sprom; -@@ -1626,8 +1629,7 @@ static int bgmac_probe(struct bcma_devic +@@ -1631,8 +1634,7 @@ static int bgmac_probe(struct bcma_devic bgmac_chip_reset(bgmac); /* For Northstar, we have to take all GMAC core out of reset */ diff --git a/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch b/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch index 8dac985a72..b3194f04e0 100644 --- a/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch +++ b/target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch @@ -19,9 +19,9 @@ Signed-off-by: David S. Miller --- a/drivers/net/ethernet/broadcom/bgmac.c +++ b/drivers/net/ethernet/broadcom/bgmac.c -@@ -1578,6 +1578,11 @@ static int bgmac_probe(struct bcma_devic - dev_warn(&core->dev, "Using random MAC: %pM\n", mac); - } +@@ -1583,6 +1583,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/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch b/target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch index fe55323a50..29bec8387d 100644 --- a/target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch +++ b/target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch @@ -172,7 +172,7 @@ Signed-off-by: David S. Miller 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/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch b/target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch index d3da41e918..9f39e5ba5e 100644 --- a/target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch +++ b/target/linux/generic/patches-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/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch b/target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch deleted file mode 100644 index 761cff316d..0000000000 --- a/target/linux/generic/patches-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?= -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 ---- - 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/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch b/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch index 9073f795e2..926de5fef7 100644 --- a/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch +++ b/target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch @@ -58,7 +58,7 @@ Signed-off-by: Rafał Miłecki 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 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/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch b/target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch deleted file mode 100644 index 5a3dc06c14..0000000000 --- a/target/linux/generic/patches-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 -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 ---- - 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/patches-3.18/201-extra_optimization.patch b/target/linux/generic/patches-3.18/201-extra_optimization.patch index 2e2ed66161..5a2396cfa3 100644 --- a/target/linux/generic/patches-3.18/201-extra_optimization.patch +++ b/target/linux/generic/patches-3.18/201-extra_optimization.patch @@ -1,6 +1,6 @@ --- a/Makefile +++ b/Makefile -@@ -614,9 +614,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-P +@@ -618,9 +618,9 @@ KBUILD_CFLAGS += $(call cc-option,-fno-P KBUILD_AFLAGS += $(call cc-option,-fno-PIE) ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE diff --git a/target/linux/generic/patches-3.18/204-module_strip.patch b/target/linux/generic/patches-3.18/204-module_strip.patch index 7c4006913f..1b361d178e 100644 --- a/target/linux/generic/patches-3.18/204-module_strip.patch +++ b/target/linux/generic/patches-3.18/204-module_strip.patch @@ -32,8 +32,8 @@ Signed-off-by: Felix Fietkau +#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) @@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau #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 */ @@ -127,7 +127,7 @@ Signed-off-by: Felix Fietkau 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); @@ -137,7 +137,7 @@ Signed-off-by: Felix Fietkau } 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 \n"); buf_printf(b, "#include \n"); buf_printf(b, "\n"); @@ -147,7 +147,7 @@ Signed-off-by: Felix Fietkau 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) { @@ -168,7 +168,7 @@ Signed-off-by: Felix Fietkau } /** -@@ -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) { @@ -182,7 +182,7 @@ Signed-off-by: Felix Fietkau } 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/patches-3.18/462-m25p80-mx-disable-software-protection.patch b/target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch index fef483a67d..f27220a281 100644 --- a/target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch +++ b/target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch @@ -1,6 +1,6 @@ --- a/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c -@@ -963,6 +963,7 @@ int spi_nor_scan(struct spi_nor *nor, co +@@ -970,6 +970,7 @@ int spi_nor_scan(struct spi_nor *nor, co if (JEDEC_MFR(info->jedec_id) == CFI_MFR_ATMEL || JEDEC_MFR(info->jedec_id) == CFI_MFR_INTEL || diff --git a/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch b/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch index 00b0b7cadd..78d677d94f 100644 --- a/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch +++ b/target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch @@ -16,7 +16,7 @@ config CRYPTO_ANSI_CPRNG --- a/crypto/Makefile +++ b/crypto/Makefile -@@ -89,6 +89,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc. +@@ -91,6 +91,7 @@ obj-$(CONFIG_CRYPTO_AUTHENC) += authenc. obj-$(CONFIG_CRYPTO_LZO) += lzo.o obj-$(CONFIG_CRYPTO_LZ4) += lz4.o obj-$(CONFIG_CRYPTO_LZ4HC) += lz4hc.o diff --git a/target/linux/generic/patches-3.18/630-packet_socket_type.patch b/target/linux/generic/patches-3.18/630-packet_socket_type.patch index 68a42362dd..32fb5869b8 100644 --- a/target/linux/generic/patches-3.18/630-packet_socket_type.patch +++ b/target/linux/generic/patches-3.18/630-packet_socket_type.patch @@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau #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 /* * 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 /* * 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 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 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 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 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 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/patches-3.18/643-bridge_remove_ipv6_dependency.patch b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch index 5181806497..49f0285c5f 100644 --- a/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch +++ b/target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch @@ -1,6 +1,6 @@ --- a/include/net/addrconf.h +++ b/include/net/addrconf.h -@@ -88,6 +88,12 @@ int ipv6_rcv_saddr_equal(const struct so +@@ -90,6 +90,12 @@ int ipv6_rcv_saddr_equal(const struct so void addrconf_join_solict(struct net_device *dev, const struct in6_addr *addr); void addrconf_leave_solict(struct inet6_dev *idev, const struct in6_addr *addr); @@ -52,7 +52,7 @@ int __ipv6_get_lladdr(struct inet6_dev *idev, struct in6_addr *addr, u32 banned_flags) -@@ -5469,6 +5468,9 @@ int __init addrconf_init(void) +@@ -5473,6 +5472,9 @@ int __init addrconf_init(void) ipv6_addr_label_rtnl_register(); @@ -62,7 +62,7 @@ return 0; errout: rtnl_af_unregister(&inet6_ops); -@@ -5488,6 +5490,9 @@ void addrconf_cleanup(void) +@@ -5492,6 +5494,9 @@ void addrconf_cleanup(void) struct net_device *dev; int i; diff --git a/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch b/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch index b38b87b48f..94fd139c22 100644 --- a/target/linux/generic/patches-3.18/653-disable_netlink_trim.patch +++ b/target/linux/generic/patches-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,24 +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; diff --git a/target/linux/generic/patches-3.18/655-increase_skb_pad.patch b/target/linux/generic/patches-3.18/655-increase_skb_pad.patch index 19344cca3f..96f81e9aa7 100644 --- a/target/linux/generic/patches-3.18/655-increase_skb_pad.patch +++ b/target/linux/generic/patches-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/patches-3.18/656-skb_reduce_truesize-helper.patch b/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch index b326a8b727..0fde9f6e62 100644 --- a/target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch +++ b/target/linux/generic/patches-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/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch b/target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch index 000665f047..43bdbe456d 100644 --- a/target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch +++ b/target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch @@ -145,7 +145,7 @@ Signed-off-by: Steven Barth 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 /** * 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 __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 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 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 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 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 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 } 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 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 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 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 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/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch b/target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch index 0c951069c2..de8745cdc3 100644 --- a/target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch +++ b/target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch @@ -26,7 +26,7 @@ Signed-off-by: David S. Miller --- 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 * 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/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch index 1bf9dc99dc..f999d44df0 100644 --- a/target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch +++ b/target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch @@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski 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 /* * 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 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 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 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 #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 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 #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 + 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/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch b/target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch index 21199fe6c7..6b02b3ca9c 100644 --- a/target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch +++ b/target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch @@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau --- 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 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 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 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 #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/patches-3.18/701-phy_extension.patch b/target/linux/generic/patches-3.18/701-phy_extension.patch index 5c63dbec62..fa4542b88b 100644 --- a/target/linux/generic/patches-3.18/701-phy_extension.patch +++ b/target/linux/generic/patches-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/patches-3.18/704-phy-no-genphy-soft-reset.patch b/target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch index 0350f9efe4..0c78ee1be5 100644 --- a/target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch +++ b/target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch @@ -9,16 +9,7 @@ { /* 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[] +@@ -1364,7 +1364,7 @@ static struct phy_driver genphy_driver[] .phy_id = 0xffffffff, .phy_id_mask = 0xffffffff, .name = "Generic 10G PHY", diff --git a/target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch b/target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch index cc3cb2445d..424c63e311 100644 --- a/target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch +++ b/target/linux/generic/patches-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/patches-3.18/721-phy_packets.patch b/target/linux/generic/patches-3.18/721-phy_packets.patch index 99811c6242..7235ab355f 100644 --- a/target/linux/generic/patches-3.18/721-phy_packets.patch +++ b/target/linux/generic/patches-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 #include -@@ -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/patches-3.18/750-hostap_txpower.patch b/target/linux/generic/patches-3.18/750-hostap_txpower.patch index 768c80f73b..9a8cb7fb5c 100644 --- a/target/linux/generic/patches-3.18/750-hostap_txpower.patch +++ b/target/linux/generic/patches-3.18/750-hostap_txpower.patch @@ -64,7 +64,7 @@ #endif /* HOSTAP_H */ --- a/drivers/net/wireless/hostap/hostap_hw.c +++ b/drivers/net/wireless/hostap/hostap_hw.c -@@ -928,6 +928,7 @@ static int hfa384x_set_rid(struct net_de +@@ -933,6 +933,7 @@ static int hfa384x_set_rid(struct net_de prism2_hw_reset(dev); } diff --git a/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch b/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch index 9f39c8000e..758bc3a852 100644 --- a/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch +++ b/target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch @@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens /************************************************** * BCMA bus ops **************************************************/ -@@ -1688,6 +1700,14 @@ static int bgmac_probe(struct bcma_devic +@@ -1693,6 +1705,14 @@ static int bgmac_probe(struct bcma_devic net_dev->hw_features = net_dev->features; net_dev->vlan_features = net_dev->features; @@ -45,7 +45,7 @@ Signed-off-by: Hauke Mehrtens err = register_netdev(bgmac->net_dev); if (err) { bgmac_err(bgmac, "Cannot register net device\n"); -@@ -1714,6 +1734,10 @@ static void bgmac_remove(struct bcma_dev +@@ -1719,6 +1739,10 @@ static void bgmac_remove(struct bcma_dev { struct bgmac *bgmac = bcma_get_drvdata(core); diff --git a/target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch b/target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch index a7bf0bb9fa..d1da5062bc 100644 --- a/target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch +++ b/target/linux/generic/patches-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) +@@ -461,6 +463,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: +@@ -540,8 +546,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 +@@ -1102,3 +1117,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/patches-3.18/902-debloat_proc.patch b/target/linux/generic/patches-3.18/902-debloat_proc.patch index 79cecf90d4..596a84f8dd 100644 --- a/target/linux/generic/patches-3.18/902-debloat_proc.patch +++ b/target/linux/generic/patches-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/patches-3.18/940-ocf_kbuild_integration.patch b/target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch index 240f15eb61..7cf94153e8 100644 --- a/target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch +++ b/target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch @@ -9,7 +9,7 @@ + --- a/crypto/Makefile +++ b/crypto/Makefile -@@ -101,6 +101,8 @@ obj-$(CONFIG_CRYPTO_USER_API) += af_alg. +@@ -103,6 +103,8 @@ obj-$(CONFIG_CRYPTO_USER_API) += af_alg. obj-$(CONFIG_CRYPTO_USER_API_HASH) += algif_hash.o obj-$(CONFIG_CRYPTO_USER_API_SKCIPHER) += algif_skcipher.o diff --git a/target/linux/generic/patches-3.18/997-device_tree_cmdline.patch b/target/linux/generic/patches-3.18/997-device_tree_cmdline.patch index dd725b01b1..61fe71b784 100644 --- a/target/linux/generic/patches-3.18/997-device_tree_cmdline.patch +++ b/target/linux/generic/patches-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)); diff --git a/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch b/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch index fb4b722569..9de5dfe44a 100644 --- a/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch +++ b/target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch @@ -10,7 +10,7 @@ Date: Thu May 15 00:12:26 2014 -0700 --- a/drivers/net/ethernet/intel/igb/e1000_phy.c +++ b/drivers/net/ethernet/intel/igb/e1000_phy.c -@@ -135,7 +135,7 @@ out: +@@ -139,7 +139,7 @@ out: s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data) { struct e1000_phy_info *phy = &hw->phy; @@ -19,7 +19,7 @@ Date: Thu May 15 00:12:26 2014 -0700 s32 ret_val = 0; if (offset > MAX_PHY_REG_ADDRESS) { -@@ -148,11 +148,25 @@ s32 igb_read_phy_reg_mdic(struct e1000_h +@@ -152,11 +152,25 @@ s32 igb_read_phy_reg_mdic(struct e1000_h * Control register. The MAC will take care of interfacing with the * PHY to retrieve the desired data. */ @@ -48,7 +48,7 @@ Date: Thu May 15 00:12:26 2014 -0700 /* Poll the ready bit to see if the MDI read completed * Increasing the time out as testing showed failures with -@@ -177,6 +191,18 @@ s32 igb_read_phy_reg_mdic(struct e1000_h +@@ -181,6 +195,18 @@ s32 igb_read_phy_reg_mdic(struct e1000_h *data = (u16) mdic; out: @@ -67,7 +67,7 @@ Date: Thu May 15 00:12:26 2014 -0700 return ret_val; } -@@ -191,7 +217,7 @@ out: +@@ -195,7 +221,7 @@ out: s32 igb_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data) { struct e1000_phy_info *phy = &hw->phy; @@ -76,7 +76,7 @@ Date: Thu May 15 00:12:26 2014 -0700 s32 ret_val = 0; if (offset > MAX_PHY_REG_ADDRESS) { -@@ -204,12 +230,27 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -208,12 +234,27 @@ s32 igb_write_phy_reg_mdic(struct e1000_ * Control register. The MAC will take care of interfacing with the * PHY to retrieve the desired data. */ @@ -108,7 +108,7 @@ Date: Thu May 15 00:12:26 2014 -0700 /* Poll the ready bit to see if the MDI read completed * Increasing the time out as testing showed failures with -@@ -233,6 +274,18 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -237,6 +278,18 @@ s32 igb_write_phy_reg_mdic(struct e1000_ } out: diff --git a/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch b/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch index 7869b1cf53..405d4ec37f 100644 --- a/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch +++ b/target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch @@ -36,7 +36,7 @@ Signed-off-by: Tim Harvey --- a/drivers/net/ethernet/intel/igb/e1000_phy.c +++ b/drivers/net/ethernet/intel/igb/e1000_phy.c -@@ -132,9 +132,8 @@ out: +@@ -136,9 +136,8 @@ out: * Reads the MDI control regsiter in the PHY at offset and stores the * information read to data. **/ @@ -47,7 +47,7 @@ Signed-off-by: Tim Harvey u32 i, mdicnfg, mdic = 0; s32 ret_val = 0; -@@ -153,14 +152,14 @@ s32 igb_read_phy_reg_mdic(struct e1000_h +@@ -157,14 +156,14 @@ s32 igb_read_phy_reg_mdic(struct e1000_h case e1000_i211: mdicnfg = rd32(E1000_MDICNFG); mdicnfg &= ~(E1000_MDICNFG_PHY_MASK); @@ -64,7 +64,7 @@ Signed-off-by: Tim Harvey (E1000_MDIC_OP_READ)); break; } -@@ -214,9 +213,8 @@ out: +@@ -218,9 +217,8 @@ out: * * Writes data to MDI control register in the PHY at offset. **/ @@ -75,7 +75,7 @@ Signed-off-by: Tim Harvey u32 i, mdicnfg, mdic = 0; s32 ret_val = 0; -@@ -235,7 +233,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -239,7 +237,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ case e1000_i211: mdicnfg = rd32(E1000_MDICNFG); mdicnfg &= ~(E1000_MDICNFG_PHY_MASK); @@ -84,7 +84,7 @@ Signed-off-by: Tim Harvey wr32(E1000_MDICNFG, mdicnfg); mdic = (((u32)data) | (offset << E1000_MDIC_REG_SHIFT) | -@@ -244,7 +242,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ +@@ -248,7 +246,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_ default: mdic = (((u32)data) | (offset << E1000_MDIC_REG_SHIFT) | @@ -93,7 +93,7 @@ Signed-off-by: Tim Harvey (E1000_MDIC_OP_WRITE)); break; } -@@ -464,7 +462,7 @@ s32 igb_read_phy_reg_igp(struct e1000_hw +@@ -468,7 +466,7 @@ s32 igb_read_phy_reg_igp(struct e1000_hw goto out; if (offset > MAX_PHY_MULTI_PAGE_REG) { @@ -102,7 +102,7 @@ Signed-off-by: Tim Harvey IGP01E1000_PHY_PAGE_SELECT, (u16)offset); if (ret_val) { -@@ -473,8 +471,8 @@ s32 igb_read_phy_reg_igp(struct e1000_hw +@@ -477,8 +475,8 @@ s32 igb_read_phy_reg_igp(struct e1000_hw } } @@ -113,7 +113,7 @@ Signed-off-by: Tim Harvey hw->phy.ops.release(hw); -@@ -503,7 +501,7 @@ s32 igb_write_phy_reg_igp(struct e1000_h +@@ -507,7 +505,7 @@ s32 igb_write_phy_reg_igp(struct e1000_h goto out; if (offset > MAX_PHY_MULTI_PAGE_REG) { @@ -122,7 +122,7 @@ Signed-off-by: Tim Harvey IGP01E1000_PHY_PAGE_SELECT, (u16)offset); if (ret_val) { -@@ -512,8 +510,8 @@ s32 igb_write_phy_reg_igp(struct e1000_h +@@ -516,8 +514,8 @@ s32 igb_write_phy_reg_igp(struct e1000_h } } @@ -133,7 +133,7 @@ Signed-off-by: Tim Harvey hw->phy.ops.release(hw); -@@ -2464,8 +2462,9 @@ out: +@@ -2468,8 +2466,9 @@ out: } /** @@ -144,7 +144,7 @@ Signed-off-by: Tim Harvey * @offset: lower half is register offset to write to * upper half is page to use. * @data: data to write at register offset -@@ -2473,7 +2472,7 @@ out: +@@ -2477,7 +2476,7 @@ out: * Acquires semaphore, if necessary, then writes the data to PHY register * at the offset. Release any acquired semaphores before exiting. **/ @@ -153,7 +153,7 @@ Signed-off-by: Tim Harvey { s32 ret_val; u16 page = offset >> GS40G_PAGE_SHIFT; -@@ -2483,10 +2482,10 @@ s32 igb_write_phy_reg_gs40g(struct e1000 +@@ -2487,10 +2486,10 @@ s32 igb_write_phy_reg_gs40g(struct e1000 if (ret_val) return ret_val; @@ -166,7 +166,7 @@ Signed-off-by: Tim Harvey release: hw->phy.ops.release(hw); -@@ -2494,8 +2493,24 @@ release: +@@ -2498,8 +2497,24 @@ release: } /** @@ -192,7 +192,7 @@ Signed-off-by: Tim Harvey * @offset: lower half is register offset to read to * upper half is page to use. * @data: data to read at register offset -@@ -2503,7 +2518,7 @@ release: +@@ -2507,7 +2522,7 @@ release: * Acquires semaphore, if necessary, then reads the data in the PHY register * at the offset. Release any acquired semaphores before exiting. **/ @@ -201,7 +201,7 @@ Signed-off-by: Tim Harvey { s32 ret_val; u16 page = offset >> GS40G_PAGE_SHIFT; -@@ -2513,10 +2528,10 @@ s32 igb_read_phy_reg_gs40g(struct e1000_ +@@ -2517,10 +2532,10 @@ s32 igb_read_phy_reg_gs40g(struct e1000_ if (ret_val) return ret_val; @@ -214,7 +214,7 @@ Signed-off-by: Tim Harvey release: hw->phy.ops.release(hw); -@@ -2524,6 +2539,21 @@ release: +@@ -2528,6 +2543,21 @@ release: } /** diff --git a/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch b/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch index 65b1c1f51e..f495fbf2bf 100644 --- a/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch +++ b/target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch @@ -1,6 +1,6 @@ --- a/net/core/skbuff.c +++ b/net/core/skbuff.c -@@ -210,6 +210,9 @@ struct sk_buff *__alloc_skb(unsigned int +@@ -212,6 +212,9 @@ struct sk_buff *__alloc_skb(unsigned int if (sk_memalloc_socks() && (flags & SKB_ALLOC_RX)) gfp_mask |= __GFP_MEMALLOC; @@ -10,7 +10,7 @@ /* Get the HEAD */ skb = kmem_cache_alloc_node(cache, gfp_mask & ~__GFP_DMA, node); -@@ -1096,6 +1099,10 @@ int pskb_expand_head(struct sk_buff *skb +@@ -1098,6 +1101,10 @@ int pskb_expand_head(struct sk_buff *skb if (skb_shared(skb)) BUG(); diff --git a/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch b/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch index 5943602adb..27d3bcea6c 100644 --- a/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch +++ b/target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch @@ -11,7 +11,7 @@ Signed-off-by: John Crispin --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -838,7 +838,8 @@ void phy_state_machine(struct work_struc +@@ -841,7 +841,8 @@ void phy_state_machine(struct work_struc /* If the link is down, give up on negotiation for now */ if (!phydev->link) { phydev->state = PHY_NOLINK; @@ -21,7 +21,7 @@ Signed-off-by: John Crispin phydev->adjust_link(phydev->attached_dev); break; } -@@ -911,7 +912,8 @@ void phy_state_machine(struct work_struc +@@ -914,7 +915,8 @@ void phy_state_machine(struct work_struc netif_carrier_on(phydev->attached_dev); } else { phydev->state = PHY_NOLINK; @@ -31,7 +31,7 @@ Signed-off-by: John Crispin } phydev->adjust_link(phydev->attached_dev); -@@ -923,7 +925,8 @@ void phy_state_machine(struct work_struc +@@ -926,7 +928,8 @@ void phy_state_machine(struct work_struc case PHY_HALTED: if (phydev->link) { phydev->link = 0; diff --git a/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch b/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch index 4278669dda..303cb2704d 100644 --- a/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch +++ b/target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch @@ -20,7 +20,7 @@ Subject: [PATCH 32/36] USB: fix roothub for IFXHCD choice --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -4321,7 +4321,7 @@ hub_port_init (struct usb_hub *hub, stru +@@ -4320,7 +4320,7 @@ hub_port_init (struct usb_hub *hub, stru udev->ttport = hdev->ttport; } else if (udev->speed != USB_SPEED_HIGH && hdev->speed == USB_SPEED_HIGH) { diff --git a/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch b/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch index 92c85a700f..f0944bffd3 100644 --- a/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch +++ b/target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch @@ -1,6 +1,6 @@ --- a/drivers/gpio/Kconfig +++ b/drivers/gpio/Kconfig -@@ -819,6 +819,12 @@ config GPIO_MC33880 +@@ -820,6 +820,12 @@ config GPIO_MC33880 SPI driver for Freescale MC33880 high-side/low-side switch. This provides GPIO interface supporting inputs and outputs. diff --git a/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch b/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch index 7631b6c5cd..93666dbc78 100644 --- a/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch +++ b/target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch @@ -37,8 +37,8 @@ put_usb3_hcd: usb_put_hcd(xhci->shared_hcd); -@@ -190,6 +206,7 @@ static int xhci_plat_remove(struct platf - struct clk *clk = xhci->clk; +@@ -192,6 +208,7 @@ static int xhci_plat_remove(struct platf + xhci->xhc_state |= XHCI_STATE_REMOVING; usb_remove_hcd(xhci->shared_hcd); + usb_phy_shutdown(hcd->usb_phy); diff --git a/target/linux/ramips/patches-3.18/0033-NET-multi-phy-support.patch b/target/linux/ramips/patches-3.18/0033-NET-multi-phy-support.patch index f6d2456bad..1baf40dadb 100644 --- a/target/linux/ramips/patches-3.18/0033-NET-multi-phy-support.patch +++ b/target/linux/ramips/patches-3.18/0033-NET-multi-phy-support.patch @@ -11,7 +11,7 @@ Signed-off-by: John Crispin --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c -@@ -838,7 +838,8 @@ void phy_state_machine(struct work_struc +@@ -841,7 +841,8 @@ void phy_state_machine(struct work_struc /* If the link is down, give up on negotiation for now */ if (!phydev->link) { phydev->state = PHY_NOLINK; @@ -21,7 +21,7 @@ Signed-off-by: John Crispin phydev->adjust_link(phydev->attached_dev); break; } -@@ -911,7 +912,8 @@ void phy_state_machine(struct work_struc +@@ -914,7 +915,8 @@ void phy_state_machine(struct work_struc netif_carrier_on(phydev->attached_dev); } else { phydev->state = PHY_NOLINK; @@ -31,7 +31,7 @@ Signed-off-by: John Crispin } phydev->adjust_link(phydev->attached_dev); -@@ -923,7 +925,8 @@ void phy_state_machine(struct work_struc +@@ -926,7 +928,8 @@ void phy_state_machine(struct work_struc case PHY_HALTED: if (phydev->link) { phydev->link = 0; diff --git a/target/linux/ramips/patches-3.18/0057-uvc-add-iPassion-iP2970-support.patch b/target/linux/ramips/patches-3.18/0057-uvc-add-iPassion-iP2970-support.patch index 0828cc51b1..28f00c1f27 100644 --- a/target/linux/ramips/patches-3.18/0057-uvc-add-iPassion-iP2970-support.patch +++ b/target/linux/ramips/patches-3.18/0057-uvc-add-iPassion-iP2970-support.patch @@ -13,7 +13,7 @@ Signed-off-by: John Crispin --- a/drivers/media/usb/uvc/uvc_driver.c +++ b/drivers/media/usb/uvc/uvc_driver.c -@@ -2504,6 +2504,20 @@ static struct usb_device_id uvc_ids[] = +@@ -2610,6 +2610,20 @@ static struct usb_device_id uvc_ids[] = .bInterfaceProtocol = 0, .driver_info = UVC_QUIRK_PROBE_MINMAX | UVC_QUIRK_IGNORE_SELECTOR_UNIT }, diff --git a/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch b/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch index a5e46659f9..37b79036de 100644 --- a/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch +++ b/target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch @@ -16,7 +16,7 @@ /* EHCI, OHCI */ --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -1304,7 +1304,7 @@ static void hub_quiesce(struct usb_hub * +@@ -1261,7 +1261,7 @@ static void hub_quiesce(struct usb_hub * if (type != HUB_SUSPEND) { /* Disconnect all the children */ for (i = 0; i < hdev->maxchild; ++i) { @@ -5062,7 +5062,7 @@ irq = platform_get_irq(pdev, 0); +#endif if (irq < 0) - return -ENODEV; + return irq; --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -5087,7 +5087,7 @@ return 1; } -@@ -2843,6 +2847,7 @@ static int prepare_ring(struct xhci_hcd +@@ -2835,6 +2839,7 @@ static int prepare_ring(struct xhci_hcd next = ring->enqueue; while (last_trb(xhci, ring, ring->enq_seg, next)) { @@ -5095,7 +5095,7 @@ /* If we're not dealing with 0.95 hardware or isoc rings * on AMD 0.96 host, clear the chain bit. */ -@@ -2852,6 +2857,9 @@ static int prepare_ring(struct xhci_hcd +@@ -2844,6 +2849,9 @@ static int prepare_ring(struct xhci_hcd next->link.control &= cpu_to_le32(~TRB_CHAIN); else next->link.control |= cpu_to_le32(TRB_CHAIN); @@ -5105,7 +5105,7 @@ wmb(); next->link.control ^= cpu_to_le32(TRB_CYCLE); -@@ -2982,6 +2990,9 @@ static void giveback_first_trb(struct xh +@@ -2974,6 +2982,9 @@ static void giveback_first_trb(struct xh start_trb->field[3] |= cpu_to_le32(start_cycle); else start_trb->field[3] &= cpu_to_le32(~TRB_CYCLE); @@ -5115,7 +5115,7 @@ xhci_ring_ep_doorbell(xhci, slot_id, ep_index, stream_id); } -@@ -3037,6 +3048,29 @@ static u32 xhci_td_remainder(unsigned in +@@ -3029,6 +3040,29 @@ static u32 xhci_td_remainder(unsigned in return (remainder >> 10) << 17; } @@ -5145,7 +5145,7 @@ /* * For xHCI 1.0 host controllers, TD size is the number of max packet sized * packets remaining in the TD (*not* including this TRB). -@@ -3194,6 +3228,7 @@ static int queue_bulk_sg_tx(struct xhci_ +@@ -3186,6 +3220,7 @@ static int queue_bulk_sg_tx(struct xhci_ } /* Set the TRB length, TD size, and interrupter fields. */ @@ -5153,7 +5153,7 @@ if (xhci->hci_version < 0x100) { remainder = xhci_td_remainder( urb->transfer_buffer_length - -@@ -3203,6 +3238,12 @@ static int queue_bulk_sg_tx(struct xhci_ +@@ -3195,6 +3230,12 @@ static int queue_bulk_sg_tx(struct xhci_ trb_buff_len, total_packet_count, urb, num_trbs - 1); } @@ -5166,7 +5166,7 @@ length_field = TRB_LEN(trb_buff_len) | remainder | TRB_INTR_TARGET(0); -@@ -3267,6 +3308,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3259,6 +3300,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd * int running_total, trb_buff_len, ret; unsigned int total_packet_count; u64 addr; @@ -5176,7 +5176,7 @@ if (urb->num_sgs) return queue_bulk_sg_tx(xhci, mem_flags, urb, slot_id, ep_index); -@@ -3291,6 +3335,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3283,6 +3327,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd * num_trbs++; running_total += TRB_MAX_BUFF_SIZE; } @@ -5202,7 +5202,7 @@ ret = prepare_transfer(xhci, xhci->devs[slot_id], ep_index, urb->stream_id, -@@ -3367,6 +3430,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3359,6 +3422,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd * field |= TRB_ISP; /* Set the TRB length, TD size, and interrupter fields. */ @@ -5210,7 +5210,7 @@ if (xhci->hci_version < 0x100) { remainder = xhci_td_remainder( urb->transfer_buffer_length - -@@ -3376,6 +3440,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd * +@@ -3368,6 +3432,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd * trb_buff_len, total_packet_count, urb, num_trbs - 1); } @@ -5221,7 +5221,7 @@ length_field = TRB_LEN(trb_buff_len) | remainder | TRB_INTR_TARGET(0); -@@ -3465,7 +3533,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3457,7 +3525,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * field |= 0x1; /* xHCI 1.0/1.1 6.4.1.2.1: Transfer Type field */ @@ -5233,7 +5233,7 @@ if (urb->transfer_buffer_length > 0) { if (setup->bRequestType & USB_DIR_IN) field |= TRB_TX_TYPE(TRB_DATA_IN); -@@ -3489,7 +3561,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * +@@ -3481,7 +3553,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd * field = TRB_TYPE(TRB_DATA); length_field = TRB_LEN(urb->transfer_buffer_length) | @@ -5246,7 +5246,7 @@ TRB_INTR_TARGET(0); if (urb->transfer_buffer_length > 0) { if (setup->bRequestType & USB_DIR_IN) -@@ -3612,6 +3689,9 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3604,6 +3681,9 @@ static int xhci_queue_isoc_tx(struct xhc u64 start_addr, addr; int i, j; bool more_trbs_coming; @@ -5256,7 +5256,7 @@ ep_ring = xhci->devs[slot_id]->eps[ep_index].ring; -@@ -3625,6 +3705,21 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3617,6 +3697,21 @@ static int xhci_queue_isoc_tx(struct xhc start_trb = &ep_ring->enqueue->generic; start_cycle = ep_ring->cycle_state; @@ -5278,7 +5278,7 @@ urb_priv = urb->hcpriv; /* Queue the first TRB, even if it's zero-length */ for (i = 0; i < num_tds; i++) { -@@ -3696,9 +3791,13 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3688,9 +3783,13 @@ static int xhci_queue_isoc_tx(struct xhc } else { td->last_trb = ep_ring->enqueue; field |= TRB_IOC; @@ -5292,7 +5292,7 @@ /* Set BEI bit except for the last td */ if (i < num_tds - 1) field |= TRB_BEI; -@@ -3713,6 +3812,7 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3705,6 +3804,7 @@ static int xhci_queue_isoc_tx(struct xhc trb_buff_len = td_remain_len; /* Set the TRB length, TD size, & interrupter fields. */ @@ -5300,7 +5300,7 @@ if (xhci->hci_version < 0x100) { remainder = xhci_td_remainder( td_len - running_total); -@@ -3722,6 +3822,10 @@ static int xhci_queue_isoc_tx(struct xhc +@@ -3714,6 +3814,10 @@ static int xhci_queue_isoc_tx(struct xhc total_packet_count, urb, (trbs_per_td - j - 1)); } @@ -5413,7 +5413,7 @@ xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_run for USB2 roothub"); return 0; -@@ -1651,6 +1692,14 @@ int xhci_drop_endpoint(struct usb_hcd *h +@@ -1638,6 +1679,14 @@ int xhci_drop_endpoint(struct usb_hcd *h u32 drop_flag; u32 new_add_flags, new_drop_flags; int ret; @@ -5428,7 +5428,7 @@ ret = xhci_check_args(hcd, udev, ep, 1, true, __func__); if (ret <= 0) -@@ -1698,6 +1747,40 @@ int xhci_drop_endpoint(struct usb_hcd *h +@@ -1685,6 +1734,40 @@ int xhci_drop_endpoint(struct usb_hcd *h xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep); @@ -5469,7 +5469,7 @@ xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n", (unsigned int) ep->desc.bEndpointAddress, udev->slot_id, -@@ -1730,6 +1813,19 @@ int xhci_add_endpoint(struct usb_hcd *hc +@@ -1717,6 +1800,19 @@ int xhci_add_endpoint(struct usb_hcd *hc u32 new_add_flags, new_drop_flags; struct xhci_virt_device *virt_dev; int ret = 0; @@ -5489,7 +5489,7 @@ ret = xhci_check_args(hcd, udev, ep, 1, true, __func__); if (ret <= 0) { -@@ -1796,6 +1892,56 @@ int xhci_add_endpoint(struct usb_hcd *hc +@@ -1783,6 +1879,56 @@ int xhci_add_endpoint(struct usb_hcd *hc return -ENOMEM; } @@ -5546,7 +5546,7 @@ ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs); new_add_flags = le32_to_cpu(ctrl_ctx->add_flags); -@@ -4467,8 +4613,14 @@ static u16 xhci_call_host_update_timeout +@@ -4454,8 +4600,14 @@ static u16 xhci_call_host_update_timeout u16 *timeout) { if (state == USB3_LPM_U1) @@ -5561,7 +5561,7 @@ return xhci_calculate_u2_timeout(xhci, udev, desc); return USB3_LPM_DISABLED; -@@ -4853,7 +5005,9 @@ int xhci_gen_setup(struct usb_hcd *hcd, +@@ -4840,7 +4992,9 @@ int xhci_gen_setup(struct usb_hcd *hcd, hcd->self.no_sg_constraint = 1; /* XHCI controllers don't stop the ep queue on short packets :| */ @@ -5571,7 +5571,7 @@ if (usb_hcd_is_primary_hcd(hcd)) { xhci = kzalloc(sizeof(struct xhci_hcd), GFP_KERNEL); -@@ -4926,6 +5080,10 @@ int xhci_gen_setup(struct usb_hcd *hcd, +@@ -4913,6 +5067,10 @@ int xhci_gen_setup(struct usb_hcd *hcd, if (xhci->quirks & XHCI_NO_64BIT_SUPPORT) xhci->hcc_params &= ~BIT(0); @@ -5582,7 +5582,7 @@ /* Set dma_mask and coherent_dma_mask to 64-bits, * if xHC supports 64-bit addressing */ if (HCC_64BIT_ADDR(xhci->hcc_params) && -@@ -5020,8 +5178,57 @@ MODULE_DESCRIPTION(DRIVER_DESC); +@@ -5007,8 +5165,57 @@ MODULE_DESCRIPTION(DRIVER_DESC); MODULE_AUTHOR(DRIVER_AUTHOR); MODULE_LICENSE("GPL"); -- 2.11.0