CC: upgrade kernel to 3.18.68
authorZoltan HERPAI <wigyori@uid0.hu>
Sun, 17 Sep 2017 00:00:14 +0000 (02:00 +0200)
committerZoltan HERPAI <wigyori@uid0.hu>
Sun, 17 Sep 2017 00:00:14 +0000 (02:00 +0200)
 - compile tested on sunxi, imx6
 - runtime tested on sunxi, imx6
 - refresh patches
 - remove unnecessary patches

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
62 files changed:
include/kernel-version.mk
package/kernel/mac80211/patches/090-remove-cred.patch [new file with mode: 0644]
target/linux/adm5120/patches-3.18/101-cfi_fixup_macronix_bootloc.patch
target/linux/adm8668/patches-3.18/004-tulip_pci_split.patch
target/linux/adm8668/patches-3.18/005-tulip_platform.patch
target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch
target/linux/bcm53xx/patches-3.18/003-mtd-spi-nor-from-3.19.patch
target/linux/bcm53xx/patches-3.18/004-mtd-spi-nor-from-3.20.patch
target/linux/brcm2708/patches-3.18/0012-cma-Add-vc_cma-driver-to-enable-use-of-CMA.patch
target/linux/brcm2708/patches-3.18/0055-usb-core-make-overcurrent-messages-more-prominent.patch
target/linux/brcm2708/patches-3.18/0063-bcm2708-Allow-option-card-devices-to-be-configured-v.patch
target/linux/brcm2708/patches-3.18/0065-fdt-Add-support-for-the-CONFIG_CMDLINE_EXTEND-option.patch
target/linux/brcm47xx/patches-3.18/400-mtd-bcm47xxpart-get-nvram.patch
target/linux/cns3xxx/patches-3.18/025-smp_support.patch
target/linux/cns3xxx/patches-3.18/040-fiq_support.patch
target/linux/cns3xxx/patches-3.18/095-gpio_support.patch
target/linux/cns3xxx/patches-3.18/100-laguna_support.patch
target/linux/generic/patches-3.18/041-mtd-bcm47xxpart-backports-from-3.20.patch
target/linux/generic/patches-3.18/070-bgmac-register-napi-before-the-device.patch
target/linux/generic/patches-3.18/072-bgmac-fix-device-initialization-on-Northstar-SoCs-co.patch [deleted file]
target/linux/generic/patches-3.18/077-03-bgmac-implement-scatter-gather-support.patch
target/linux/generic/patches-3.18/078-01-bgmac-support-up-to-3-cores-devices-on-a-bus.patch
target/linux/generic/patches-3.18/078-02-bgmac-add-helper-checking-for-BCM4707-BCM53018-chip-.patch
target/linux/generic/patches-3.18/078-04-bgmac-reset-enable-Ethernet-core-before-using-it.patch
target/linux/generic/patches-3.18/080-11-fib_trie-Push-rcu_read_lock-unlock-to-callers.patch
target/linux/generic/patches-3.18/082-ipv6-ip6_fragment-fix-headroom-tests-and-skb-leak.patch
target/linux/generic/patches-3.18/141-mtd-bcm47xxpart-limit-scanned-flash-area-on-BCM47XX-.patch [deleted file]
target/linux/generic/patches-3.18/142-mtd-bcm47xxpart-don-t-fail-because-of-bit-flips.patch
target/linux/generic/patches-3.18/191-usb-ehci-orion-fix-probe-for-GENERIC_PHY.patch [deleted file]
target/linux/generic/patches-3.18/201-extra_optimization.patch
target/linux/generic/patches-3.18/204-module_strip.patch
target/linux/generic/patches-3.18/462-m25p80-mx-disable-software-protection.patch
target/linux/generic/patches-3.18/540-crypto-xz-decompression-support.patch
target/linux/generic/patches-3.18/630-packet_socket_type.patch
target/linux/generic/patches-3.18/643-bridge_remove_ipv6_dependency.patch
target/linux/generic/patches-3.18/653-disable_netlink_trim.patch
target/linux/generic/patches-3.18/655-increase_skb_pad.patch
target/linux/generic/patches-3.18/656-skb_reduce_truesize-helper.patch
target/linux/generic/patches-3.18/666-Add-support-for-MAP-E-FMRs-mesh-mode.patch
target/linux/generic/patches-3.18/667-ipv6-Fixed-source-specific-default-route-handling.patch
target/linux/generic/patches-3.18/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
target/linux/generic/patches-3.18/680-NET-skip-GRO-for-foreign-MAC-addresses.patch
target/linux/generic/patches-3.18/701-phy_extension.patch
target/linux/generic/patches-3.18/704-phy-no-genphy-soft-reset.patch
target/linux/generic/patches-3.18/710-phy-add-mdio_register_board_info.patch
target/linux/generic/patches-3.18/721-phy_packets.patch
target/linux/generic/patches-3.18/750-hostap_txpower.patch
target/linux/generic/patches-3.18/773-bgmac-add-srab-switch.patch
target/linux/generic/patches-3.18/811-pci_disable_usb_common_quirks.patch
target/linux/generic/patches-3.18/902-debloat_proc.patch
target/linux/generic/patches-3.18/940-ocf_kbuild_integration.patch
target/linux/generic/patches-3.18/997-device_tree_cmdline.patch
target/linux/imx6/patches-3.18/202-net-igb-add-i210-i211-support-for-phy-read-write.patch
target/linux/imx6/patches-3.18/203-net-igb-add-phy-read-write-functions-that-accept-phy.patch
target/linux/ixp4xx/patches-3.18/600-skb_avoid_dmabounce.patch
target/linux/lantiq/patches-3.18/0026-NET-multi-phy-support.patch
target/linux/lantiq/patches-3.18/0032-USB-fix-roothub-for-IFXHCD.patch
target/linux/mcs814x/patches-3.18/008-mcs814x_gpio.patch
target/linux/mvebu/patches-3.18/700-usb_xhci_plat_phy_support.patch
target/linux/ramips/patches-3.18/0033-NET-multi-phy-support.patch
target/linux/ramips/patches-3.18/0057-uvc-add-iPassion-iP2970-support.patch
target/linux/ramips/patches-3.18/0062-mt7621-add-ECHI-OCHI-XCHI-support.patch

index 2f6d279..87fd7a5 100644 (file)
@@ -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 (file)
index 0000000..3adb2af
--- /dev/null
@@ -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 <linux/cred.h>
+-#include <linux/version.h>
+-
+-#ifndef current_user_ns
+-#define current_user_ns()     (current->nsproxy->user_ns)
+-#endif
+-
+-#endif /* __BACKPORT_LINUX_CRED_H */
index a0caa68..92937fc 100644 (file)
@@ -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.
  
index e57bdb7..e39a168 100644 (file)
@@ -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);
  
                             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;
                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;
        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)
  
                /* 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. */
  }
  
  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) {
                        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) {
                        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));
  
  
        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));
  }
  
  
-@@ -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;
        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 =
                        /* 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);
  }
  
  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
  };
  
  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;
        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:
  }
  
  
  /* 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);
        }
  }
  
  #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); */
  }
  
  #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
  
        .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 */
  };
  #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 */
index bddc572..184a5d0 100644 (file)
@@ -26,7 +26,7 @@
  #include <linux/delay.h>
  #include <linux/mii.h>
  #include <linux/crc32.h>
-@@ -204,6 +206,9 @@ struct tulip_chip_table tulip_tbl[] = {
+@@ -203,6 +205,9 @@ struct tulip_chip_table tulip_tbl[] = {
    { "Conexant LANfinity", 256, 0x0001ebef,
        HAS_MII | HAS_ACPI, tulip_timer, tulip_media_task },
  
@@ -36,7 +36,7 @@
  };
  
  
-@@ -377,6 +382,11 @@ static void tulip_up(struct net_device *
+@@ -376,6 +381,11 @@ static void tulip_up(struct net_device *
                                         sizeof(tp->setup_frame),
                                         PCI_DMA_TODEVICE);
  #endif
@@ -48,7 +48,7 @@
                tp->tx_buffers[tp->cur_tx].skb = NULL;
                tp->tx_buffers[tp->cur_tx].mapping = mapping;
  
-@@ -396,6 +406,7 @@ static void tulip_up(struct net_device *
+@@ -395,6 +405,7 @@ static void tulip_up(struct net_device *
        i = 0;
        if (tp->mtable == NULL)
                goto media_picked;
@@ -56,7 +56,7 @@
        if (dev->if_port) {
                int looking_for = tulip_media_cap[dev->if_port] & MediaIsMII ? 11 :
                        (dev->if_port == 12 ? 0 : dev->if_port);
-@@ -489,6 +500,10 @@ media_picked:
+@@ -488,6 +499,10 @@ media_picked:
                iowrite32(ioread32(ioaddr + 0x88) | 1, ioaddr + 0x88);
                dev->if_port = tp->mii_cnt ? 11 : 0;
                tp->csr6 = 0x00040000;
@@ -67,7 +67,7 @@
        } else if (tp->chip_id == AX88140) {
                tp->csr6 = tp->mii_cnt ? 0x00040100 : 0x00000100;
        } else
-@@ -660,6 +675,10 @@ static void tulip_init_ring(struct net_d
+@@ -659,6 +674,10 @@ static void tulip_init_ring(struct net_d
                mapping = pci_map_single(tp->pdev, skb->data,
                                         PKT_BUF_SZ, PCI_DMA_FROMDEVICE);
  #endif
@@ -78,7 +78,7 @@
                tp->rx_buffers[i].mapping = mapping;
                tp->rx_ring[i].status = cpu_to_le32(DescOwned); /* Owned by Tulip chip */
                tp->rx_ring[i].buffer1 = cpu_to_le32(mapping);
-@@ -696,6 +715,11 @@ tulip_start_xmit(struct sk_buff *skb, st
+@@ -695,6 +714,11 @@ tulip_start_xmit(struct sk_buff *skb, st
        mapping = pci_map_single(tp->pdev, skb->data,
                                 skb->len, PCI_DMA_TODEVICE);
  #endif
@@ -90,7 +90,7 @@
        tp->tx_buffers[entry].mapping = mapping;
        tp->tx_ring[entry].buffer1 = cpu_to_le32(mapping);
  
-@@ -752,6 +776,13 @@ static void tulip_clean_tx_ring(struct t
+@@ -751,6 +775,13 @@ static void tulip_clean_tx_ring(struct t
                                        sizeof(tp->setup_frame),
                                        PCI_DMA_TODEVICE);
  #endif
                        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
  
                /* 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
                        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
                        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
  }
  
  
-@@ -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
        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
  
                        }
  
                        /* 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);
        }
  
        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 */
  
  #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
  
  
  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
        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
index bf03545..9310b50 100644 (file)
                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;
                }
index e7e8443..6bd1811 100644 (file)
                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;
  }
  
        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;
        }
  
        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;
  
                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
         */
  
                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 */
                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;
  
  
  #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) {
                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;
                        /* 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
index 1238785..3172e99 100644 (file)
@@ -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;
index 2edcd35..90d6c6e 100644 (file)
@@ -22,7 +22,7 @@ Signed-off-by: popcornmix <popcornmix@gmail.com>
 
 --- 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"
  
index 316f80e..8e5a74b 100644 (file)
@@ -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;
  
index c986c84..4e0a191 100644 (file)
@@ -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)
  {
index 7f61b33..17d6b92 100644 (file)
@@ -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);
index 4fb8a87..9ffc4ca 100644 (file)
@@ -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);
index 418c065..0f1f5aa 100644 (file)
@@ -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
index 4f09a36..acfe338 100644 (file)
@@ -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
index a6ce177..b95a089 100644 (file)
@@ -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 @@
index 3c0bba4..622ba54 100644 (file)
@@ -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
index 59180c2..f3dfa90 100644 (file)
@@ -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 */
index aa45860..0e7e4f8 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/drivers/net/ethernet/broadcom/bgmac.c
 +++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1515,6 +1515,8 @@ static int bgmac_probe(struct bcma_devic
+@@ -1521,6 +1521,8 @@ static int bgmac_probe(struct bcma_devic
        if (core->bus->sprom.boardflags_lo & BGMAC_BFL_ENETADM)
                bgmac_warn(bgmac, "Support for ADMtek ethernet switch not implemented\n");
  
@@ -22,7 +22,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        err = bgmac_mii_register(bgmac);
        if (err) {
                bgmac_err(bgmac, "Cannot register MDIO\n");
-@@ -1529,8 +1531,6 @@ static int bgmac_probe(struct bcma_devic
+@@ -1535,8 +1537,6 @@ static int bgmac_probe(struct bcma_devic
  
        netif_carrier_off(net_dev);
  
@@ -31,7 +31,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        return 0;
  
  err_mii_unregister:
-@@ -1549,9 +1549,9 @@ static void bgmac_remove(struct bcma_dev
+@@ -1555,9 +1555,9 @@ static void bgmac_remove(struct bcma_dev
  {
        struct bgmac *bgmac = bcma_get_drvdata(core);
  
diff --git a/target/linux/generic/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 (file)
index 121d2f4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-From 21697336d46b71dd031f29e426dda0b1e7f06cc0 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
-Date: Wed, 11 Feb 2015 18:06:34 +0100
-Subject: [PATCH] bgmac: fix device initialization on Northstar SoCs (condition
- typo)
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-On Northstar (Broadcom's ARM architecture) we need to manually enable
-all cores. Code for that is already in place, but the condition for it
-was wrong.
-
-Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com>
-Signed-off-by: David S. Miller <davem@davemloft.net>
----
- drivers/net/ethernet/broadcom/bgmac.c | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
---- a/drivers/net/ethernet/broadcom/bgmac.c
-+++ b/drivers/net/ethernet/broadcom/bgmac.c
-@@ -1412,6 +1412,7 @@ static void bgmac_mii_unregister(struct
- /* http://bcm-v4.sipsolutions.net/mac-gbit/gmac/chipattach */
- static int bgmac_probe(struct bcma_device *core)
- {
-+      struct bcma_chipinfo *ci = &core->bus->chipinfo;
-       struct net_device *net_dev;
-       struct bgmac *bgmac;
-       struct ssb_sprom *sprom = &core->bus->sprom;
-@@ -1474,8 +1475,8 @@ static int bgmac_probe(struct bcma_devic
-       bgmac_chip_reset(bgmac);
-       /* For Northstar, we have to take all GMAC core out of reset */
--      if (core->id.id == BCMA_CHIP_ID_BCM4707 ||
--          core->id.id == BCMA_CHIP_ID_BCM53018) {
-+      if (ci->id == BCMA_CHIP_ID_BCM4707 ||
-+          ci->id == BCMA_CHIP_ID_BCM53018) {
-               struct bcma_device *ns_core;
-               int ns_gmac;
index 5cb21a5..27fa732 100644 (file)
@@ -254,7 +254,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        }
  }
  
-@@ -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;
        }
  
index d093e89..2582538 100644 (file)
@@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
                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;
  
index 63010c1..3ab953f 100644 (file)
@@ -94,7 +94,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        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 */
index 8dac985..b3194f0 100644 (file)
@@ -19,9 +19,9 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- 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.
index fe55323..29bec83 100644 (file)
@@ -172,7 +172,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
        u32 portid;
  
        net = sock_net(skb->sk);
-@@ -971,9 +976,7 @@ static void nl_fib_input(struct sk_buff
+@@ -972,9 +977,7 @@ static void nl_fib_input(struct sk_buff
        nlh = nlmsg_hdr(skb);
  
        frn = (struct fib_result_nl *) nlmsg_data(nlh);
index d3da41e..9f39e5b 100644 (file)
@@ -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 (file)
index 761cff3..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
-Date: Sat, 5 Dec 2015 02:03:32 +0100
-Subject: [PATCH] mtd: bcm47xxpart: limit scanned flash area on BCM47XX (MIPS)
- only
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-We allowed using bcm47xxpart on BCM5301X arch with commit:
-9e3afa5f5c7 ("mtd: bcm47xxpart: allow enabling on ARCH_BCM_5301X")
-
-BCM5301X devices may contain some partitions in higher memory, e.g.
-Netgear R8000 has board_data at 0x2600000. To detect them we should
-use size limit on MIPS only.
-
-Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com>
----
- drivers/mtd/bcm47xxpart.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/drivers/mtd/bcm47xxpart.c
-+++ b/drivers/mtd/bcm47xxpart.c
-@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_
-       /* Parse block by block looking for magics */
-       for (offset = 0; offset <= master->size - blocksize;
-            offset += blocksize) {
--              /* Nothing more in higher memory */
--              if (offset >= 0x2000000)
-+              /* Nothing more in higher memory on BCM47XX (MIPS) */
-+              if (config_enabled(CONFIG_BCM47XX) && offset >= 0x2000000)
-                       break;
-               if (curr_part >= BCM47XXPART_MAX_PARTS) {
index 9073f79..926de5f 100644 (file)
@@ -58,7 +58,7 @@ Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com>
                        continue;
                }
  
-@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_
+@@ -252,10 +256,11 @@ static int bcm47xxpart_parse(struct mtd_
                }
  
                /* Read middle of the block */
@@ -74,7 +74,7 @@ Signed-off-by: RafaÅ‚ MiÅ‚ecki <zajec5@gmail.com>
                        continue;
                }
  
-@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_
+@@ -275,10 +280,11 @@ static int bcm47xxpart_parse(struct mtd_
                }
  
                offset = master->size - possible_nvram_sizes[i];
diff --git a/target/linux/generic/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 (file)
index 5a3dc06..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-From a95f03e51471dbdbafd3391991d867ac2358ed02 Mon Sep 17 00:00:00 2001
-From: Jonas Gorski <jogo@openwrt.org>
-Date: Sun, 23 Aug 2015 14:23:29 +0200
-Subject: [PATCH] usb: ehci-orion: fix probe for !GENERIC_PHY
-
-Commit d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
-added support for optional phys, but devm_phy_optional_get returns
--ENOSYS if GENERIC_PHY is not enabled.
-
-This causes probe failures, even when there are no phys specified:
-
-[    1.443365] orion-ehci f1058000.usb: init f1058000.usb fail, -38
-[    1.449403] orion-ehci: probe of f1058000.usb failed with error -38
-
-Similar to dwc3, treat -ENOSYS as no phy.
-
-Fixes: d445913ce0ab7f ("usb: ehci-orion: add optional PHY support")
-
-Signed-off-by: Jonas Gorski <jogo@openwrt.org>
----
- drivers/usb/host/ehci-orion.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/host/ehci-orion.c
-+++ b/drivers/usb/host/ehci-orion.c
-@@ -226,7 +226,8 @@ static int ehci_orion_drv_probe(struct p
-       priv->phy = devm_phy_optional_get(&pdev->dev, "usb");
-       if (IS_ERR(priv->phy)) {
-               err = PTR_ERR(priv->phy);
--              goto err_phy_get;
-+              if (err != -ENOSYS)
-+                      goto err_phy_get;
-       } else {
-               err = phy_init(priv->phy);
-               if (err)
index 2e2ed66..5a2396c 100644 (file)
@@ -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
index 7c40069..1b361d1 100644 (file)
@@ -32,8 +32,8 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 +#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 <nbd@openwrt.org>
  #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 <nbd@openwrt.org>
        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 <nbd@openwrt.org>
        }
        if (!is_vmlinux(modname) ||
             (is_vmlinux(modname) && vmlinux_section_warnings))
-@@ -1870,7 +1872,9 @@ static void add_header(struct buffer *b,
+@@ -1902,7 +1904,9 @@ static void add_header(struct buffer *b,
        buf_printf(b, "#include <linux/vermagic.h>\n");
        buf_printf(b, "#include <linux/compiler.h>\n");
        buf_printf(b, "\n");
@@ -147,7 +147,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        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 <nbd@openwrt.org>
  }
  
  /**
-@@ -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 <nbd@openwrt.org>
  }
  
  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);
index fef483a..f27220a 100644 (file)
@@ -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 ||
index 00b0b7c..78d677d 100644 (file)
@@ -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
index 68a4236..32fb586 100644 (file)
@@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  #define PACKET_FANOUT_LB              1
 --- a/net/packet/af_packet.c
 +++ b/net/packet/af_packet.c
-@@ -1530,6 +1530,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1529,6 +1529,7 @@ static int packet_rcv_spkt(struct sk_buf
  {
        struct sock *sk;
        struct sockaddr_pkt *spkt;
@@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  
        /*
         *      When we registered the protocol we saved the socket in the data
-@@ -1537,6 +1538,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1536,6 +1537,7 @@ static int packet_rcv_spkt(struct sk_buf
         */
  
        sk = pt->af_packet_priv;
@@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  
        /*
         *      Yank back the headers [hope the device set this
-@@ -1549,7 +1551,7 @@ static int packet_rcv_spkt(struct sk_buf
+@@ -1548,7 +1550,7 @@ static int packet_rcv_spkt(struct sk_buf
         *      so that this procedure is noop.
         */
  
@@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
                goto out;
  
        if (!net_eq(dev_net(dev), sock_net(sk)))
-@@ -1748,12 +1750,12 @@ static int packet_rcv(struct sk_buff *sk
+@@ -1747,12 +1749,12 @@ static int packet_rcv(struct sk_buff *sk
        int skb_len = skb->len;
        unsigned int snaplen, res;
  
@@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        if (!net_eq(dev_net(dev), sock_net(sk)))
                goto drop;
  
-@@ -1873,12 +1875,12 @@ static int tpacket_rcv(struct sk_buff *s
+@@ -1872,12 +1874,12 @@ static int tpacket_rcv(struct sk_buff *s
        BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
        BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
  
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        if (!net_eq(dev_net(dev), sock_net(sk)))
                goto drop;
  
-@@ -2828,6 +2830,7 @@ static int packet_create(struct net *net
+@@ -2831,6 +2833,7 @@ static int packet_create(struct net *net
        spin_lock_init(&po->bind_lock);
        mutex_init(&po->pg_vec_lock);
        po->prot_hook.func = packet_rcv;
@@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  
        if (sock->type == SOCK_PACKET)
                po->prot_hook.func = packet_rcv_spkt;
-@@ -3409,6 +3412,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3425,6 +3428,16 @@ packet_setsockopt(struct socket *sock, i
                po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
                return 0;
        }
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        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;
index 5181806..49f0285 100644 (file)
@@ -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;
  
index b38b87b..94fd139 100644 (file)
@@ -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;
index 19344cc..96f81e9 100644 (file)
@@ -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
index b326a8b..0fde9f6 100644 (file)
@@ -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);
  }
  
index 000665f..43bdbe4 100644 (file)
@@ -145,7 +145,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        if (dev == ip6n->fb_tnl_dev)
                RCU_INIT_POINTER(ip6n->tnls_wc[0], NULL);
        else
-@@ -771,6 +786,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
+@@ -781,6 +796,108 @@ int ip6_tnl_rcv_ctl(struct ip6_tnl *t,
  }
  EXPORT_SYMBOL_GPL(ip6_tnl_rcv_ctl);
  
@@ -254,7 +254,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  /**
   * ip6_tnl_rcv - decapsulate IPv6 packet and retransmit it locally
   *   @skb: received socket buffer
-@@ -815,6 +932,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
+@@ -825,6 +942,26 @@ static int ip6_tnl_rcv(struct sk_buff *s
                skb_reset_network_header(skb);
                skb->protocol = htons(protocol);
                memset(skb->cb, 0, sizeof(struct inet6_skb_parm));
@@ -281,7 +281,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
                __skb_tunnel_rx(skb, t->dev, t->net);
  
-@@ -1076,6 +1213,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1086,6 +1223,7 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
        __u8 dsfield;
        __u32 mtu;
        int err;
@@ -289,7 +289,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
        if ((t->parms.proto != IPPROTO_IPIP && t->parms.proto != 0) ||
            !ip6_tnl_xmit_ctl(t))
-@@ -1095,6 +1233,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
+@@ -1105,6 +1243,18 @@ ip4ip6_tnl_xmit(struct sk_buff *skb, str
        if (t->parms.flags & IP6_TNL_F_USE_ORIG_FWMARK)
                fl6.flowi6_mark = skb->mark;
  
@@ -308,7 +308,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        err = ip6_tnl_xmit2(skb, dev, dsfield, &fl6, encap_limit, &mtu);
        if (err != 0) {
                /* XXX: send ICMP error even if DF is not set. */
-@@ -1263,6 +1413,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
+@@ -1273,6 +1423,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
        t->parms.flowinfo = p->flowinfo;
        t->parms.link = p->link;
        t->parms.proto = p->proto;
@@ -323,7 +323,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        ip6_tnl_dst_reset(t);
        ip6_tnl_link_config(t);
        return 0;
-@@ -1293,6 +1451,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
+@@ -1303,6 +1461,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
        p->flowinfo = u->flowinfo;
        p->link = u->link;
        p->proto = u->proto;
@@ -331,7 +331,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        memcpy(p->name, u->name, sizeof(u->name));
  }
  
-@@ -1568,6 +1727,15 @@ static int ip6_tnl_validate(struct nlatt
+@@ -1578,6 +1737,15 @@ static int ip6_tnl_validate(struct nlatt
        return 0;
  }
  
@@ -347,7 +347,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  static void ip6_tnl_netlink_parms(struct nlattr *data[],
                                  struct __ip6_tnl_parm *parms)
  {
-@@ -1601,6 +1769,46 @@ static void ip6_tnl_netlink_parms(struct
+@@ -1611,6 +1779,46 @@ static void ip6_tnl_netlink_parms(struct
  
        if (data[IFLA_IPTUN_PROTO])
                parms->proto = nla_get_u8(data[IFLA_IPTUN_PROTO]);
@@ -394,7 +394,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  }
  
  static int ip6_tnl_newlink(struct net *src_net, struct net_device *dev,
-@@ -1653,6 +1861,12 @@ static void ip6_tnl_dellink(struct net_d
+@@ -1663,6 +1871,12 @@ static void ip6_tnl_dellink(struct net_d
  
  static size_t ip6_tnl_get_size(const struct net_device *dev)
  {
@@ -407,7 +407,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        return
                /* IFLA_IPTUN_LINK */
                nla_total_size(4) +
-@@ -1670,6 +1884,24 @@ static size_t ip6_tnl_get_size(const str
+@@ -1680,6 +1894,24 @@ static size_t ip6_tnl_get_size(const str
                nla_total_size(4) +
                /* IFLA_IPTUN_PROTO */
                nla_total_size(1) +
@@ -432,7 +432,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
                0;
  }
  
-@@ -1677,6 +1909,9 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1687,6 +1919,9 @@ static int ip6_tnl_fill_info(struct sk_b
  {
        struct ip6_tnl *tunnel = netdev_priv(dev);
        struct __ip6_tnl_parm *parm = &tunnel->parms;
@@ -442,7 +442,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
  
        if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
            nla_put(skb, IFLA_IPTUN_LOCAL, sizeof(struct in6_addr),
-@@ -1687,8 +1922,27 @@ static int ip6_tnl_fill_info(struct sk_b
+@@ -1697,8 +1932,27 @@ static int ip6_tnl_fill_info(struct sk_b
            nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
            nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
            nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
@@ -471,7 +471,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
        return 0;
  
  nla_put_failure:
-@@ -1704,6 +1958,7 @@ static const struct nla_policy ip6_tnl_p
+@@ -1714,6 +1968,7 @@ static const struct nla_policy ip6_tnl_p
        [IFLA_IPTUN_FLOWINFO]           = { .type = NLA_U32 },
        [IFLA_IPTUN_FLAGS]              = { .type = NLA_U32 },
        [IFLA_IPTUN_PROTO]              = { .type = NLA_U8 },
index 0c95106..de8745c 100644 (file)
@@ -26,7 +26,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
 
 --- a/net/ipv6/ip6_output.c
 +++ b/net/ipv6/ip6_output.c
-@@ -903,21 +903,45 @@ static int ip6_dst_lookup_tail(struct so
+@@ -906,21 +906,45 @@ static int ip6_dst_lookup_tail(struct so
  #endif
        int err;
  
@@ -81,7 +81,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
         * Here if the dst entry we've looked up
 --- a/net/ipv6/route.c
 +++ b/net/ipv6/route.c
-@@ -2182,9 +2182,10 @@ int ip6_route_get_saddr(struct net *net,
+@@ -2184,9 +2184,10 @@ int ip6_route_get_saddr(struct net *net,
                        unsigned int prefs,
                        struct in6_addr *saddr)
  {
index 1bf9dc9..f999d44 100644 (file)
@@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
                case RTN_THROW:
                default:
                        rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN
-@@ -2139,6 +2161,17 @@ static int ip6_pkt_prohibit_out(struct s
+@@ -2141,6 +2163,17 @@ static int ip6_pkt_prohibit_out(struct s
        return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *    Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2363,7 +2396,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2365,7 +2398,8 @@ static int rtm_to_fib6_config(struct sk_
        if (rtm->rtm_type == RTN_UNREACHABLE ||
            rtm->rtm_type == RTN_BLACKHOLE ||
            rtm->rtm_type == RTN_PROHIBIT ||
@@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
                cfg->fc_flags |= RTF_REJECT;
  
        if (rtm->rtm_type == RTN_LOCAL)
-@@ -2565,6 +2599,9 @@ static int rt6_fill_node(struct net *net
+@@ -2567,6 +2601,9 @@ static int rt6_fill_node(struct net *net
                case -EACCES:
                        rtm->rtm_type = RTN_PROHIBIT;
                        break;
@@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
                case -EAGAIN:
                        rtm->rtm_type = RTN_THROW;
                        break;
-@@ -2818,6 +2855,8 @@ static int ip6_route_dev_notify(struct n
+@@ -2825,6 +2862,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
                net->ipv6.ip6_prohibit_entry->dst.dev = dev;
                net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
                net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
                net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -3034,6 +3073,17 @@ static int __net_init ip6_route_net_init
+@@ -3047,6 +3086,17 @@ static int __net_init ip6_route_net_init
        net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
        dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
                         ip6_template_metrics, true);
@@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  
        net->ipv6.sysctl.flush_delay = 0;
-@@ -3052,6 +3102,8 @@ out:
+@@ -3065,6 +3115,8 @@ out:
        return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  out_ip6_prohibit_entry:
        kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3069,6 +3121,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3082,6 +3134,7 @@ static void __net_exit ip6_route_net_exi
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
        kfree(net->ipv6.ip6_prohibit_entry);
        kfree(net->ipv6.ip6_blk_hole_entry);
@@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
        dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3165,6 +3218,9 @@ int __init ip6_route_init(void)
+@@ -3155,6 +3208,9 @@ void __init ip6_route_init_special_entri
        init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
        init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
        init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
@@ -245,5 +245,5 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
 +      init_net.ipv6.ip6_policy_failed_entry->rt6i_idev =
 +              in6_dev_get(init_net.loopback_dev);
    #endif
-       ret = fib6_init();
-       if (ret)
+ }
index 21199fe..6b02b3c 100644 (file)
@@ -17,7 +17,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 
 --- a/net/core/dev.c
 +++ b/net/core/dev.c
-@@ -4002,6 +4002,9 @@ static enum gro_result dev_gro_receive(s
+@@ -4006,6 +4006,9 @@ static enum gro_result dev_gro_receive(s
        enum gro_result ret;
        int grow;
  
@@ -27,7 +27,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        if (!(skb->dev->features & NETIF_F_GRO))
                goto normal;
  
-@@ -5067,6 +5070,48 @@ static void __netdev_adjacent_dev_unlink
+@@ -5077,6 +5080,48 @@ static void __netdev_adjacent_dev_unlink
                                           &upper_dev->adj_list.lower);
  }
  
@@ -76,7 +76,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  static int __netdev_upper_dev_link(struct net_device *dev,
                                   struct net_device *upper_dev, bool master,
                                   void *private)
-@@ -5127,6 +5172,7 @@ static int __netdev_upper_dev_link(struc
+@@ -5137,6 +5182,7 @@ static int __netdev_upper_dev_link(struc
                        goto rollback_lower_mesh;
        }
  
@@ -84,15 +84,15 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
        call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
        return 0;
  
-@@ -5244,6 +5290,7 @@ void netdev_upper_dev_unlink(struct net_
+@@ -5254,6 +5300,7 @@ void netdev_upper_dev_unlink(struct net_
        list_for_each_entry(i, &upper_dev->all_adj_list.upper, list)
-               __netdev_adjacent_dev_unlink(dev, i->dev);
+               __netdev_adjacent_dev_unlink(dev, i->dev, i->ref_nr);
  
 +      netdev_update_addr_mask(dev);
        call_netdevice_notifiers(NETDEV_CHANGEUPPER, dev);
  }
  EXPORT_SYMBOL(netdev_upper_dev_unlink);
-@@ -5763,6 +5810,7 @@ int dev_set_mac_address(struct net_devic
+@@ -5773,6 +5820,7 @@ int dev_set_mac_address(struct net_devic
        if (err)
                return err;
        dev->addr_assign_type = NET_ADDR_SET;
@@ -113,7 +113,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
  #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;
index 5c63dbe..fa4542b 100644 (file)
@@ -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);
index 0350f9e..0c78ee1 100644 (file)
@@ -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",
index cc3cb24..424c63e 100644 (file)
@@ -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;
index 99811c6..7235ab3 100644 (file)
@@ -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);
  
  
  #include <net/protocol.h>
  #include <net/dst.h>
-@@ -469,6 +470,22 @@ struct sk_buff *__netdev_alloc_skb(struc
+@@ -471,6 +472,22 @@ struct sk_buff *__netdev_alloc_skb(struc
  }
  EXPORT_SYMBOL(__netdev_alloc_skb);
  
index 768c80f..9a8cb7f 100644 (file)
@@ -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);
        }
  
index 9f39c80..758bc3a 100644 (file)
@@ -30,7 +30,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
  /**************************************************
   * 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 <hauke@hauke-m.de>
        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);
  
index a7bf0bb..d1da506 100644 (file)
@@ -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);
index 79cecf9..596a84f 100644 (file)
                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)
  {
index 240f15e..7cf9415 100644 (file)
@@ -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
  
index dd725b0..61fe71b 100644 (file)
@@ -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));
index fb4b722..9de5dfe 100644 (file)
@@ -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:
index 7869b1c..405d4ec 100644 (file)
@@ -36,7 +36,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
  
 --- 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 <tharvey@gateworks.com>
        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 <tharvey@gateworks.com>
                        (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 <tharvey@gateworks.com>
        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 <tharvey@gateworks.com>
                        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 <tharvey@gateworks.com>
                                (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 <tharvey@gateworks.com>
                                                 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 <tharvey@gateworks.com>
  
        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 <tharvey@gateworks.com>
                                                 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 <tharvey@gateworks.com>
  
        hw->phy.ops.release(hw);
  
-@@ -2464,8 +2462,9 @@ out:
+@@ -2468,8 +2466,9 @@ out:
  }
  
  /**
@@ -144,7 +144,7 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
   *  @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 <tharvey@gateworks.com>
  {
        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 <tharvey@gateworks.com>
  
  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 <tharvey@gateworks.com>
   *  @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 <tharvey@gateworks.com>
  {
        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 <tharvey@gateworks.com>
  
  release:
        hw->phy.ops.release(hw);
-@@ -2524,6 +2539,21 @@ release:
+@@ -2528,6 +2543,21 @@ release:
  }
  
  /**
index 65b1c1f..f495fbf 100644 (file)
@@ -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();
  
index 5943602..27d3bce 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- 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 <blogic@openwrt.org>
                        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 <blogic@openwrt.org>
                }
  
                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;
index 4278669..303cb27 100644 (file)
@@ -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) {
index 92c85a7..f0944bf 100644 (file)
@@ -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.
  
index 7631b6c..93666db 100644 (file)
@@ -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);
index f6d2456..1baf40d 100644 (file)
@@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- 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 <blogic@openwrt.org>
                        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 <blogic@openwrt.org>
                }
  
                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;
index 0828cc5..28f00c1 100644 (file)
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 
 --- 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 },
index a5e4665..37b7903 100644 (file)
@@ -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) {
        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
  
        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)) {
                        /* 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);
  
                        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);
        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;
  }
  
  /*
   * 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. */
                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);
                }
                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;
  
        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;
        }
  
        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. */
                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);
                }
                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 */
                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) |
                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;
  
        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;
  
        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;
                                        /* 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. */
                        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));
                        }
        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;
  
        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);
  
        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;
  
        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;
        }
  
        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)
                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 :| */
  
        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);
  
        /* 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");