kernel: update 3.10 to 3.10.28
Signed-off-by: Gabor Juhos <juhosg@openwrt.org> SVN-Revision: 39399
This commit is contained in:
		@@ -17,8 +17,8 @@ endif
 | 
			
		||||
ifeq ($(LINUX_VERSION),3.9.11)
 | 
			
		||||
  LINUX_KERNEL_MD5SUM:=edbf88eb7f7d34dbd5d3887726790755
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(LINUX_VERSION),3.10.26)
 | 
			
		||||
  LINUX_KERNEL_MD5SUM:=9cdbcb3463b9753fafd97cddb38d1211
 | 
			
		||||
ifeq ($(LINUX_VERSION),3.10.28)
 | 
			
		||||
  LINUX_KERNEL_MD5SUM:=789a39e8a381a60e46fe922cb66d77e2
 | 
			
		||||
endif
 | 
			
		||||
ifeq ($(LINUX_VERSION),3.12.5)
 | 
			
		||||
  LINUX_KERNEL_MD5SUM:=5b5330f657f562f7bef6da100a7133b1
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ FEATURES:=squashfs atm
 | 
			
		||||
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
SUBTARGETS:=generic ac49x
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/mtd/Makefile
 | 
			
		||||
+++ b/drivers/mtd/Makefile
 | 
			
		||||
@@ -15,7 +15,7 @@ obj-$(CONFIG_MTD_OF_PARTS)	+= ofpart.o
 | 
			
		||||
@@ -16,7 +16,7 @@ obj-$(CONFIG_MTD_OF_PARTS)	+= ofpart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
 | 
			
		||||
 obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_AFS_PARTS)	+= afs.o
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/mtd/Kconfig
 | 
			
		||||
+++ b/drivers/mtd/Kconfig
 | 
			
		||||
@@ -188,6 +188,11 @@ config MTD_OF_PARTS
 | 
			
		||||
@@ -192,6 +192,11 @@ config MTD_OF_PARTS
 | 
			
		||||
 	  the partition map from the children of the flash node,
 | 
			
		||||
 	  as described in Documentation/devicetree/booting-without-of.txt.
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 	---help---
 | 
			
		||||
--- a/drivers/mtd/Makefile
 | 
			
		||||
+++ b/drivers/mtd/Makefile
 | 
			
		||||
@@ -14,6 +14,7 @@ mtd-$(CONFIG_MTD_SPLIT_UIMAGE_FW) += mtd
 | 
			
		||||
@@ -15,6 +15,7 @@ mtd-$(CONFIG_MTD_SPLIT_LZMA_FW) += mtdsp
 | 
			
		||||
 obj-$(CONFIG_MTD_OF_PARTS)	+= ofpart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_REDBOOT_PARTS) += redboot.o
 | 
			
		||||
 obj-$(CONFIG_MTD_CMDLINE_PARTS) += cmdlinepart.o
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ FEATURES:=mips16
 | 
			
		||||
CPU_TYPE=34kc
 | 
			
		||||
SUBTARGETS:=generic nand mikrotik
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/mtd/Kconfig
 | 
			
		||||
+++ b/drivers/mtd/Kconfig
 | 
			
		||||
@@ -208,6 +208,12 @@ config MTD_BCM47XX_PARTS
 | 
			
		||||
@@ -212,6 +212,12 @@ config MTD_BCM47XX_PARTS
 | 
			
		||||
 	  This provides partitions parser for devices based on BCM47xx
 | 
			
		||||
 	  boards.
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@
 | 
			
		||||
 	depends on ADM5120 || ATHEROS_AR231X || ATHEROS_AR71XX || ATH79
 | 
			
		||||
--- a/drivers/mtd/Makefile
 | 
			
		||||
+++ b/drivers/mtd/Makefile
 | 
			
		||||
@@ -19,6 +19,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
 | 
			
		||||
@@ -20,6 +20,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
 | 
			
		||||
 obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/mtd/Kconfig
 | 
			
		||||
+++ b/drivers/mtd/Kconfig
 | 
			
		||||
@@ -210,7 +210,7 @@ config MTD_BCM47XX_PARTS
 | 
			
		||||
@@ -214,7 +214,7 @@ config MTD_BCM47XX_PARTS
 | 
			
		||||
 
 | 
			
		||||
 config MTD_WRT160NL_PARTS
 | 
			
		||||
 	tristate "Linksys WRT160NL partitioning support"
 | 
			
		||||
@@ -9,7 +9,7 @@
 | 
			
		||||
 	---help---
 | 
			
		||||
 	   Linksys WRT160NL partitioning support
 | 
			
		||||
 
 | 
			
		||||
@@ -230,6 +230,12 @@ config MTD_MYLOADER_PARTS
 | 
			
		||||
@@ -234,6 +234,12 @@ config MTD_MYLOADER_PARTS
 | 
			
		||||
 	  You will still need the parsing functions to be called by the driver
 | 
			
		||||
 	  for your particular device. It won't happen automatically.
 | 
			
		||||
 
 | 
			
		||||
@@ -24,7 +24,7 @@
 | 
			
		||||
 config MTD_BLKDEVS
 | 
			
		||||
--- a/drivers/mtd/Makefile
 | 
			
		||||
+++ b/drivers/mtd/Makefile
 | 
			
		||||
@@ -19,6 +19,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
 | 
			
		||||
@@ -20,6 +20,7 @@ obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
 | 
			
		||||
 obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_MYLOADER_PARTS) += myloader.o
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ BOARDNAME:=Atmel AVR32
 | 
			
		||||
FEATURES:=squashfs
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ FEATURES:=squashfs usb pci pcie gpio
 | 
			
		||||
MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
 | 
			
		||||
CPU_TYPE:=cortex-a9
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ MAINTAINER:=Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
CPU_TYPE:=arm1176jzf-s
 | 
			
		||||
CPU_SUBTYPE:=vfp
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
DEFAULT_PACKAGES += brcm2708-gpu-fw kmod-usb-hid kmod-sound-core kmod-sound-arm-bcm2835
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ BOARDNAME:=Broadcom BCM947xx/953xx
 | 
			
		||||
FEATURES:=squashfs usb pcmcia
 | 
			
		||||
MAINTAINER:=Hauke Mehrtens <hauke@hauke-m.de>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
DEFAULT_PACKAGES += swconfig wpad-mini nvram \
 | 
			
		||||
 
 | 
			
		||||
@@ -174,7 +174,7 @@
 | 
			
		||||
 		return phy_mii_ioctl(phydev, ifr, cmd);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@@ -17190,8 +17197,10 @@ static int tg3_init_one(struct pci_dev *
 | 
			
		||||
@@ -17193,8 +17200,10 @@ static int tg3_init_one(struct pci_dev *
 | 
			
		||||
 			tg3_flag_set(tp, FLUSH_POSTED_WRITES);
 | 
			
		||||
 		if (ssb_gige_one_dma_at_once(pdev))
 | 
			
		||||
 			tg3_flag_set(tp, ONE_DMA_AT_ONCE);
 | 
			
		||||
@@ -186,7 +186,7 @@
 | 
			
		||||
 		if (ssb_gige_is_rgmii(pdev))
 | 
			
		||||
 			tg3_flag_set(tp, RGMII_MODE);
 | 
			
		||||
 	}
 | 
			
		||||
@@ -17461,7 +17470,7 @@ static int tg3_init_one(struct pci_dev *
 | 
			
		||||
@@ -17464,7 +17473,7 @@ static int tg3_init_one(struct pci_dev *
 | 
			
		||||
 
 | 
			
		||||
 	if (tp->phy_flags & TG3_PHYFLG_IS_CONNECTED) {
 | 
			
		||||
 		struct phy_device *phydev;
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ BOARD:=brcm63xx
 | 
			
		||||
BOARDNAME:=Broadcom BCM63xx
 | 
			
		||||
SUBTARGETS:=generic smp
 | 
			
		||||
FEATURES:=squashfs usb atm pci pcmcia usbgadget
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ BOARDNAME:=Cavium Networks Econa CNS21xx
 | 
			
		||||
FEATURES:=squashfs
 | 
			
		||||
CPU_TYPE:=fa526
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/mtd/Kconfig
 | 
			
		||||
+++ b/drivers/mtd/Kconfig
 | 
			
		||||
@@ -208,6 +208,22 @@ config MTD_BCM47XX_PARTS
 | 
			
		||||
@@ -212,6 +212,22 @@ config MTD_BCM47XX_PARTS
 | 
			
		||||
 	  This provides partitions parser for devices based on BCM47xx
 | 
			
		||||
 	  boards.
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
 config MTD_BLKDEVS
 | 
			
		||||
--- a/drivers/mtd/Makefile
 | 
			
		||||
+++ b/drivers/mtd/Makefile
 | 
			
		||||
@@ -18,6 +18,7 @@ obj-$(CONFIG_MTD_AFS_PARTS)	+= afs.o
 | 
			
		||||
@@ -19,6 +19,7 @@ obj-$(CONFIG_MTD_AFS_PARTS)	+= afs.o
 | 
			
		||||
 obj-$(CONFIG_MTD_AR7_PARTS)	+= ar7part.o
 | 
			
		||||
 obj-$(CONFIG_MTD_BCM63XX_PARTS)	+= bcm63xxpart.o
 | 
			
		||||
 obj-$(CONFIG_MTD_BCM47XX_PARTS)	+= bcm47xxpart.o
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
@@ -1382,6 +1382,7 @@ static int packet_rcv_spkt(struct sk_buf
 | 
			
		||||
@@ -1403,6 +1403,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
 | 
			
		||||
@@ -1389,6 +1390,7 @@ static int packet_rcv_spkt(struct sk_buf
 | 
			
		||||
@@ -1410,6 +1411,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
 | 
			
		||||
@@ -1401,7 +1403,7 @@ static int packet_rcv_spkt(struct sk_buf
 | 
			
		||||
@@ -1422,7 +1424,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)))
 | 
			
		||||
@@ -1608,12 +1610,12 @@ static int packet_rcv(struct sk_buff *sk
 | 
			
		||||
@@ -1629,12 +1631,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;
 | 
			
		||||
 
 | 
			
		||||
@@ -1726,12 +1728,12 @@ static int tpacket_rcv(struct sk_buff *s
 | 
			
		||||
@@ -1747,12 +1749,12 @@ static int tpacket_rcv(struct sk_buff *s
 | 
			
		||||
 	struct timespec ts;
 | 
			
		||||
 	__u32 ts_status;
 | 
			
		||||
 
 | 
			
		||||
@@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
			
		||||
 	if (!net_eq(dev_net(dev), sock_net(sk)))
 | 
			
		||||
 		goto drop;
 | 
			
		||||
 
 | 
			
		||||
@@ -2627,6 +2629,7 @@ static int packet_create(struct net *net
 | 
			
		||||
@@ -2641,6 +2643,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;
 | 
			
		||||
@@ -3237,6 +3240,16 @@ packet_setsockopt(struct socket *sock, i
 | 
			
		||||
@@ -3251,6 +3254,16 @@ packet_setsockopt(struct socket *sock, i
 | 
			
		||||
 		po->tp_tx_has_off = !!val;
 | 
			
		||||
 		return 0;
 | 
			
		||||
 	}
 | 
			
		||||
@@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
			
		||||
 	default:
 | 
			
		||||
 		return -ENOPROTOOPT;
 | 
			
		||||
 	}
 | 
			
		||||
@@ -3288,6 +3301,13 @@ static int packet_getsockopt(struct sock
 | 
			
		||||
@@ -3302,6 +3315,13 @@ static int packet_getsockopt(struct sock
 | 
			
		||||
 	case PACKET_VNET_HDR:
 | 
			
		||||
 		val = po->has_vnet_hdr;
 | 
			
		||||
 		break;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
--- a/include/linux/skbuff.h
 | 
			
		||||
+++ b/include/linux/skbuff.h
 | 
			
		||||
@@ -1844,7 +1844,7 @@ static inline int pskb_network_may_pull(
 | 
			
		||||
@@ -1849,7 +1849,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
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ when needed.
 | 
			
		||||
 | 
			
		||||
--- a/include/linux/skbuff.h
 | 
			
		||||
+++ b/include/linux/skbuff.h
 | 
			
		||||
@@ -1889,6 +1889,24 @@ static inline void pskb_trim_unique(stru
 | 
			
		||||
@@ -1894,6 +1894,24 @@ static inline void pskb_trim_unique(stru
 | 
			
		||||
 	BUG_ON(err);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -102,7 +102,7 @@
 | 
			
		||||
 		return -EINVAL;
 | 
			
		||||
--- a/net/ipv6/route.c
 | 
			
		||||
+++ b/net/ipv6/route.c
 | 
			
		||||
@@ -251,6 +251,24 @@ static const struct rt6_info ip6_prohibi
 | 
			
		||||
@@ -250,6 +250,24 @@ static const struct rt6_info ip6_prohibi
 | 
			
		||||
 	.rt6i_ref	= ATOMIC_INIT(1),
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
@@ -127,17 +127,19 @@
 | 
			
		||||
 static const struct rt6_info ip6_blk_hole_entry_template = {
 | 
			
		||||
 	.dst = {
 | 
			
		||||
 		.__refcnt	= ATOMIC_INIT(1),
 | 
			
		||||
@@ -1511,6 +1529,9 @@ int ip6_route_add(struct fib6_config *cf
 | 
			
		||||
 		case RTN_THROW:
 | 
			
		||||
 			rt->dst.error = -EAGAIN;
 | 
			
		||||
@@ -1509,6 +1527,11 @@ int ip6_route_add(struct fib6_config *cf
 | 
			
		||||
 			rt->dst.output = ip6_pkt_prohibit_out;
 | 
			
		||||
 			rt->dst.input = ip6_pkt_prohibit;
 | 
			
		||||
 			break;
 | 
			
		||||
+		case RTN_FAILED_POLICY:
 | 
			
		||||
+			rt->dst.error = -EPERM;
 | 
			
		||||
+			rt->dst.output = ip6_pkt_failed_policy_out;
 | 
			
		||||
+			rt->dst.input = ip6_pkt_failed_policy;
 | 
			
		||||
+			break;
 | 
			
		||||
 		case RTN_THROW:
 | 
			
		||||
 		default:
 | 
			
		||||
 			rt->dst.error = -ENETUNREACH;
 | 
			
		||||
 			break;
 | 
			
		||||
@@ -2090,6 +2111,17 @@ static int ip6_pkt_prohibit_out(struct s
 | 
			
		||||
 			rt->dst.error = (cfg->fc_type == RTN_THROW) ? -EAGAIN
 | 
			
		||||
@@ -2088,6 +2111,17 @@ static int ip6_pkt_prohibit_out(struct s
 | 
			
		||||
 	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -152,10 +154,10 @@
 | 
			
		||||
+	return ip6_pkt_drop(skb, ICMPV6_POLICY_FAIL, IPSTATS_MIB_OUTNOROUTES);
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
@@ -2296,7 +2328,8 @@ static int rtm_to_fib6_config(struct sk_
 | 
			
		||||
  *	Allocate a dst for local (unicast / anycast) address.
 | 
			
		||||
  */
 | 
			
		||||
@@ -2290,7 +2324,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 ||
 | 
			
		||||
@@ -165,7 +167,7 @@
 | 
			
		||||
 		cfg->fc_flags |= RTF_REJECT;
 | 
			
		||||
 
 | 
			
		||||
 	if (rtm->rtm_type == RTN_LOCAL)
 | 
			
		||||
@@ -2498,6 +2531,9 @@ static int rt6_fill_node(struct net *net
 | 
			
		||||
@@ -2492,6 +2527,9 @@ static int rt6_fill_node(struct net *net
 | 
			
		||||
 		case -EACCES:
 | 
			
		||||
 			rtm->rtm_type = RTN_PROHIBIT;
 | 
			
		||||
 			break;
 | 
			
		||||
@@ -175,7 +177,7 @@
 | 
			
		||||
 		case -EAGAIN:
 | 
			
		||||
 			rtm->rtm_type = RTN_THROW;
 | 
			
		||||
 			break;
 | 
			
		||||
@@ -2748,6 +2784,8 @@ static int ip6_route_dev_notify(struct n
 | 
			
		||||
@@ -2742,6 +2780,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);
 | 
			
		||||
@@ -184,7 +186,7 @@
 | 
			
		||||
 		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
 | 
			
		||||
 		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
 | 
			
		||||
 #endif
 | 
			
		||||
@@ -3008,6 +3046,17 @@ static int __net_init ip6_route_net_init
 | 
			
		||||
@@ -3002,6 +3042,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);
 | 
			
		||||
@@ -202,7 +204,7 @@
 | 
			
		||||
 #endif
 | 
			
		||||
 
 | 
			
		||||
 	net->ipv6.sysctl.flush_delay = 0;
 | 
			
		||||
@@ -3026,6 +3075,8 @@ out:
 | 
			
		||||
@@ -3020,6 +3071,8 @@ out:
 | 
			
		||||
 	return ret;
 | 
			
		||||
 
 | 
			
		||||
 #ifdef CONFIG_IPV6_MULTIPLE_TABLES
 | 
			
		||||
@@ -211,7 +213,7 @@
 | 
			
		||||
 out_ip6_prohibit_entry:
 | 
			
		||||
 	kfree(net->ipv6.ip6_prohibit_entry);
 | 
			
		||||
 out_ip6_null_entry:
 | 
			
		||||
@@ -3043,6 +3094,7 @@ static void __net_exit ip6_route_net_exi
 | 
			
		||||
@@ -3037,6 +3090,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);
 | 
			
		||||
@@ -219,7 +221,7 @@
 | 
			
		||||
 #endif
 | 
			
		||||
 	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
 | 
			
		||||
 }
 | 
			
		||||
@@ -3139,6 +3191,9 @@ int __init ip6_route_init(void)
 | 
			
		||||
@@ -3133,6 +3187,9 @@ int __init ip6_route_init(void)
 | 
			
		||||
 	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);
 | 
			
		||||
 
 | 
			
		||||
@@ -34,7 +34,7 @@
 | 
			
		||||
 #define IF_GET_IFACE	0x0001		/* for querying only */
 | 
			
		||||
--- a/include/linux/skbuff.h
 | 
			
		||||
+++ b/include/linux/skbuff.h
 | 
			
		||||
@@ -1874,6 +1874,10 @@ static inline int pskb_trim(struct sk_bu
 | 
			
		||||
@@ -1879,6 +1879,10 @@ static inline int pskb_trim(struct sk_bu
 | 
			
		||||
 	return (len < skb->len) ? __pskb_trim(skb, len) : 0;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -45,7 +45,7 @@
 | 
			
		||||
 /**
 | 
			
		||||
  *	pskb_trim_unique - remove end from a paged unique (not cloned) buffer
 | 
			
		||||
  *	@skb: buffer to alter
 | 
			
		||||
@@ -1998,16 +2002,6 @@ static inline struct sk_buff *dev_alloc_
 | 
			
		||||
@@ -2003,16 +2007,6 @@ static inline struct sk_buff *dev_alloc_
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ CPU_TYPE:=cortex-a9
 | 
			
		||||
CPU_SUBTYPE:=vfpv3
 | 
			
		||||
MAINTAINER:=Luka Perkov <luka@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ FEATURES:=squashfs
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
SUBTARGETS=generic harddisk
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ FEATURES:=targz usb jffs2_nand ubifs
 | 
			
		||||
CPU_TYPE:=xscale
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ BOARDNAME:=Lantiq GPON/XWAY/SVIP
 | 
			
		||||
FEATURES:=squashfs
 | 
			
		||||
SUBTARGETS=xway xrx200 ase falcon
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
CPU_TYPE:=mips32r2
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/phy/Kconfig
 | 
			
		||||
+++ b/drivers/net/phy/Kconfig
 | 
			
		||||
@@ -149,6 +149,11 @@ config MICREL_PHY
 | 
			
		||||
@@ -153,6 +153,11 @@ config MICREL_PHY
 | 
			
		||||
 	---help---
 | 
			
		||||
 	  Currently has a driver for the KSZ8041
 | 
			
		||||
 
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ SUBTARGETS:=le be le64 be64
 | 
			
		||||
INITRAMFS_EXTRA_FILES:=
 | 
			
		||||
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
DEVICE_TYPE:=developerboard
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ FEATURES:=spe_fpu squashfs
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
SUBTARGETS=generic p1020
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ CPU_TYPE:=cortex-a9
 | 
			
		||||
CPU_SUBTYPE:=vfpv3
 | 
			
		||||
MAINTAINER:=Luka Perkov <luka@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ CPU_TYPE:=octeon
 | 
			
		||||
CPU_CFLAGS_octeon:=-march=octeon
 | 
			
		||||
MAINTAINER:=John Crispin <blogic@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ FEATURES:=squashfs
 | 
			
		||||
CPU_TYPE:=405
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ FEATURES:=squashfs broken
 | 
			
		||||
CPU_TYPE:=440
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ BOARDNAME:=Ralink RT288x/RT3xxx
 | 
			
		||||
SUBTARGETS:=rt305x mt7620a mt7620n mt7621 rt3883 rt288x
 | 
			
		||||
FEATURES:=squashfs gpio
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
DEFAULT_PACKAGES+=\
 | 
			
		||||
 
 | 
			
		||||
@@ -16,11 +16,9 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
 | 
			
		||||
 arch/mips/kernel/irq-gic.c |   15 +++++++--------
 | 
			
		||||
 1 file changed, 7 insertions(+), 8 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/arch/mips/kernel/irq-gic.c b/arch/mips/kernel/irq-gic.c
 | 
			
		||||
index c01b307..5b5ddb2 100644
 | 
			
		||||
--- a/arch/mips/kernel/irq-gic.c
 | 
			
		||||
+++ b/arch/mips/kernel/irq-gic.c
 | 
			
		||||
@@ -219,16 +219,15 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *cpumask,
 | 
			
		||||
@@ -219,16 +219,15 @@ static int gic_set_affinity(struct irq_d
 | 
			
		||||
 
 | 
			
		||||
 	/* Assumption : cpumask refers to a single CPU */
 | 
			
		||||
 	spin_lock_irqsave(&gic_lock, flags);
 | 
			
		||||
@@ -44,6 +42,3 @@ index c01b307..5b5ddb2 100644
 | 
			
		||||
 	cpumask_copy(d->affinity, cpumask);
 | 
			
		||||
 	spin_unlock_irqrestore(&gic_lock, flags);
 | 
			
		||||
 
 | 
			
		||||
-- 
 | 
			
		||||
1.7.10.4
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -40,11 +40,9 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
 | 
			
		||||
 arch/mips/Kconfig |    1 +
 | 
			
		||||
 1 file changed, 1 insertion(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
 | 
			
		||||
index e82c066..b537fb1 100644
 | 
			
		||||
--- a/arch/mips/Kconfig
 | 
			
		||||
+++ b/arch/mips/Kconfig
 | 
			
		||||
@@ -2010,6 +2010,7 @@ config MIPS_VPE_APSP_API
 | 
			
		||||
@@ -2038,6 +2038,7 @@ config MIPS_VPE_APSP_API
 | 
			
		||||
 config MIPS_CMP
 | 
			
		||||
 	bool "MIPS CMP framework support"
 | 
			
		||||
 	depends on SYS_SUPPORTS_MIPS_CMP
 | 
			
		||||
@@ -52,6 +50,3 @@ index e82c066..b537fb1 100644
 | 
			
		||||
 	select SYNC_R4K
 | 
			
		||||
 	select SYS_SUPPORTS_SMP
 | 
			
		||||
 	select SYS_SUPPORTS_SCHED_SMT if SMP
 | 
			
		||||
-- 
 | 
			
		||||
1.7.10.4
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,8 +19,6 @@ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
 | 
			
		||||
 arch/mips/kernel/smp-cmp.c |   13 +++++++++++--
 | 
			
		||||
 1 file changed, 11 insertions(+), 2 deletions(-)
 | 
			
		||||
 | 
			
		||||
diff --git a/arch/mips/kernel/smp-cmp.c b/arch/mips/kernel/smp-cmp.c
 | 
			
		||||
index c2e5d74..5969f1e 100644
 | 
			
		||||
--- a/arch/mips/kernel/smp-cmp.c
 | 
			
		||||
+++ b/arch/mips/kernel/smp-cmp.c
 | 
			
		||||
@@ -99,7 +99,9 @@ static void cmp_init_secondary(void)
 | 
			
		||||
@@ -52,6 +50,3 @@ index c2e5d74..5969f1e 100644
 | 
			
		||||
 		smp_num_siblings = nvpe;
 | 
			
		||||
 	}
 | 
			
		||||
 	pr_info("Detected %i available secondary CPU(s)\n", ncpu);
 | 
			
		||||
-- 
 | 
			
		||||
1.7.10.4
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -10,11 +10,9 @@ Signed-off-by: Steven J. Hill <Steven.Hill@imgtec.com>
 | 
			
		||||
 arch/mips/kernel/smp-mt.c |   32 ++++++++++++++++++++++++++++++++
 | 
			
		||||
 1 file changed, 32 insertions(+)
 | 
			
		||||
 | 
			
		||||
diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c
 | 
			
		||||
index 2f8c468..d057c84 100644
 | 
			
		||||
--- a/arch/mips/kernel/smp-mt.c
 | 
			
		||||
+++ b/arch/mips/kernel/smp-mt.c
 | 
			
		||||
@@ -71,6 +71,7 @@ static unsigned int __init smvp_vpe_init(unsigned int tc, unsigned int mvpconf0,
 | 
			
		||||
@@ -71,6 +71,7 @@ static unsigned int __init smvp_vpe_init
 | 
			
		||||
 
 | 
			
		||||
 		/* Record this as available CPU */
 | 
			
		||||
 		set_cpu_possible(tc, true);
 | 
			
		||||
@@ -22,7 +20,7 @@ index 2f8c468..d057c84 100644
 | 
			
		||||
 		__cpu_number_map[tc]	= ++ncpu;
 | 
			
		||||
 		__cpu_logical_map[ncpu] = tc;
 | 
			
		||||
 	}
 | 
			
		||||
@@ -112,12 +113,35 @@ static void __init smvp_tc_init(unsigned int tc, unsigned int mvpconf0)
 | 
			
		||||
@@ -112,12 +113,35 @@ static void __init smvp_tc_init(unsigned
 | 
			
		||||
 	write_tc_c0_tchalt(TCHALT_H);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -58,7 +56,7 @@ index 2f8c468..d057c84 100644
 | 
			
		||||
 	local_irq_save(flags);
 | 
			
		||||
 
 | 
			
		||||
 	vpflags = dvpe();	/* can't access the other CPU's registers whilst MVPE enabled */
 | 
			
		||||
@@ -164,6 +188,8 @@ static void __cpuinit vsmp_init_secondary(void)
 | 
			
		||||
@@ -164,6 +188,8 @@ static void __cpuinit vsmp_init_secondar
 | 
			
		||||
 
 | 
			
		||||
 static void __cpuinit vsmp_smp_finish(void)
 | 
			
		||||
 {
 | 
			
		||||
@@ -67,7 +65,7 @@ index 2f8c468..d057c84 100644
 | 
			
		||||
 	/* CDFIXME: remove this? */
 | 
			
		||||
 	write_c0_compare(read_c0_count() + (8* mips_hpt_frequency/HZ));
 | 
			
		||||
 
 | 
			
		||||
@@ -178,6 +204,7 @@ static void __cpuinit vsmp_smp_finish(void)
 | 
			
		||||
@@ -178,6 +204,7 @@ static void __cpuinit vsmp_smp_finish(vo
 | 
			
		||||
 
 | 
			
		||||
 static void vsmp_cpus_done(void)
 | 
			
		||||
 {
 | 
			
		||||
@@ -101,6 +99,3 @@ index 2f8c468..d057c84 100644
 | 
			
		||||
 	mips_mt_set_cpuoptions();
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
-- 
 | 
			
		||||
1.7.10.4
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,6 @@
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/core/hub.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/core/hub.c	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/core/hub.c	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
@@ -1259,7 +1259,7 @@
 | 
			
		||||
--- a/drivers/usb/core/hub.c
 | 
			
		||||
+++ b/drivers/usb/core/hub.c
 | 
			
		||||
@@ -1259,7 +1259,7 @@ static void hub_quiesce(struct usb_hub *
 | 
			
		||||
 	if (type != HUB_SUSPEND) {
 | 
			
		||||
 		/* Disconnect all the children */
 | 
			
		||||
 		for (i = 0; i < hdev->maxchild; ++i) {
 | 
			
		||||
@@ -11,11 +9,9 @@ Index: linux-3.10.26/drivers/usb/core/hub.c
 | 
			
		||||
 				usb_disconnect(&hub->ports[i]->child);
 | 
			
		||||
 		}
 | 
			
		||||
 	}
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/core/port.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/core/port.c	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/core/port.c	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
@@ -193,6 +193,7 @@
 | 
			
		||||
--- a/drivers/usb/core/port.c
 | 
			
		||||
+++ b/drivers/usb/core/port.c
 | 
			
		||||
@@ -193,6 +193,7 @@ exit:
 | 
			
		||||
 void usb_hub_remove_port_device(struct usb_hub *hub,
 | 
			
		||||
 				       int port1)
 | 
			
		||||
 {
 | 
			
		||||
@@ -24,11 +20,9 @@ Index: linux-3.10.26/drivers/usb/core/port.c
 | 
			
		||||
+		device_unregister(&hub->ports[port1 - 1]->dev);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/Kconfig
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/Kconfig	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/Kconfig	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
@@ -28,7 +28,11 @@
 | 
			
		||||
--- a/drivers/usb/host/Kconfig
 | 
			
		||||
+++ b/drivers/usb/host/Kconfig
 | 
			
		||||
@@ -28,7 +28,11 @@ config USB_XHCI_HCD
 | 
			
		||||
 if USB_XHCI_HCD
 | 
			
		||||
 
 | 
			
		||||
 config USB_XHCI_PLATFORM
 | 
			
		||||
@@ -41,11 +35,9 @@ Index: linux-3.10.26/drivers/usb/host/Kconfig
 | 
			
		||||
 
 | 
			
		||||
 config USB_XHCI_HCD_DEBUGGING
 | 
			
		||||
 	bool "Debugging for the xHCI host controller"
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/Makefile
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/Makefile	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/Makefile	2014-01-19 16:30:54.964617843 +0000
 | 
			
		||||
@@ -13,15 +13,23 @@
 | 
			
		||||
--- a/drivers/usb/host/Makefile
 | 
			
		||||
+++ b/drivers/usb/host/Makefile
 | 
			
		||||
@@ -13,15 +13,23 @@ fhci-$(CONFIG_FHCI_DEBUG) += fhci-dbg.o
 | 
			
		||||
 
 | 
			
		||||
 xhci-hcd-y := xhci.o xhci-mem.o
 | 
			
		||||
 xhci-hcd-y += xhci-ring.o xhci-hub.o xhci-dbg.o
 | 
			
		||||
@@ -70,10 +62,8 @@ Index: linux-3.10.26/drivers/usb/host/Makefile
 | 
			
		||||
 
 | 
			
		||||
 obj-$(CONFIG_USB_EHCI_HCD)	+= ehci-hcd.o
 | 
			
		||||
 obj-$(CONFIG_USB_EHCI_PCI)	+= ehci-pci.o
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/pci-quirks.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/pci-quirks.h	2014-01-19 16:29:17.392615927 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/pci-quirks.h	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
--- a/drivers/usb/host/pci-quirks.h
 | 
			
		||||
+++ b/drivers/usb/host/pci-quirks.h
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
 #ifndef __LINUX_USB_PCI_QUIRKS_H
 | 
			
		||||
 #define __LINUX_USB_PCI_QUIRKS_H
 | 
			
		||||
@@ -82,11 +72,9 @@ Index: linux-3.10.26/drivers/usb/host/pci-quirks.h
 | 
			
		||||
+#if defined (CONFIG_PCI) && !defined (CONFIG_USB_MT7621_XHCI_PLATFORM)
 | 
			
		||||
 void uhci_reset_hc(struct pci_dev *pdev, unsigned long base);
 | 
			
		||||
 int uhci_check_and_reset_hc(struct pci_dev *pdev, unsigned long base);
 | 
			
		||||
 bool usb_is_intel_switchable_xhci(struct pci_dev *pdev);
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/xhci.c	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/xhci.c	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
 #endif  /* CONFIG_PCI */
 | 
			
		||||
--- a/drivers/usb/host/xhci.c
 | 
			
		||||
+++ b/drivers/usb/host/xhci.c
 | 
			
		||||
@@ -30,6 +30,16 @@
 | 
			
		||||
 
 | 
			
		||||
 #include "xhci.h"
 | 
			
		||||
@@ -104,7 +92,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 #define DRIVER_AUTHOR "Sarah Sharp"
 | 
			
		||||
 #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
 | 
			
		||||
 
 | 
			
		||||
@@ -38,6 +48,18 @@
 | 
			
		||||
@@ -38,6 +48,18 @@ static int link_quirk;
 | 
			
		||||
 module_param(link_quirk, int, S_IRUGO | S_IWUSR);
 | 
			
		||||
 MODULE_PARM_DESC(link_quirk, "Don't clear the chain bit on a link TRB");
 | 
			
		||||
 
 | 
			
		||||
@@ -123,7 +111,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 /* TODO: copied from ehci-hcd.c - can this be refactored? */
 | 
			
		||||
 /*
 | 
			
		||||
  * xhci_handshake - spin reading hc until handshake completes or fails
 | 
			
		||||
@@ -189,7 +211,7 @@
 | 
			
		||||
@@ -189,7 +211,7 @@ int xhci_reset(struct xhci_hcd *xhci)
 | 
			
		||||
 	return ret;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -132,7 +120,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 static int xhci_free_msi(struct xhci_hcd *xhci)
 | 
			
		||||
 {
 | 
			
		||||
 	int i;
 | 
			
		||||
@@ -386,6 +408,7 @@
 | 
			
		||||
@@ -386,6 +408,7 @@ static int xhci_try_enable_msi(struct us
 | 
			
		||||
 		return ret;
 | 
			
		||||
 	}
 | 
			
		||||
 	hcd->irq = pdev->irq;
 | 
			
		||||
@@ -140,7 +128,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	return 0;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -427,6 +450,11 @@
 | 
			
		||||
@@ -427,6 +450,11 @@ static void compliance_mode_recovery(uns
 | 
			
		||||
 			xhci_dbg(xhci, "Attempting compliance mode recovery\n");
 | 
			
		||||
 			hcd = xhci->shared_hcd;
 | 
			
		||||
 
 | 
			
		||||
@@ -152,7 +140,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 			if (hcd->state == HC_STATE_SUSPENDED)
 | 
			
		||||
 				usb_hcd_resume_root_hub(hcd);
 | 
			
		||||
 
 | 
			
		||||
@@ -475,6 +503,9 @@
 | 
			
		||||
@@ -475,6 +503,9 @@ bool xhci_compliance_mode_recovery_timer
 | 
			
		||||
 {
 | 
			
		||||
 	const char *dmi_product_name, *dmi_sys_vendor;
 | 
			
		||||
 
 | 
			
		||||
@@ -162,7 +150,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
 | 
			
		||||
 	dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
 | 
			
		||||
 	if (!dmi_product_name || !dmi_sys_vendor)
 | 
			
		||||
@@ -518,6 +549,10 @@
 | 
			
		||||
@@ -518,6 +549,10 @@ int xhci_init(struct usb_hcd *hcd)
 | 
			
		||||
 	} else {
 | 
			
		||||
 		xhci_dbg(xhci, "xHCI doesn't need link TRB QUIRK\n");
 | 
			
		||||
 	}
 | 
			
		||||
@@ -173,7 +161,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	retval = xhci_mem_init(xhci, GFP_KERNEL);
 | 
			
		||||
 	xhci_dbg(xhci, "Finished xhci_init\n");
 | 
			
		||||
 
 | 
			
		||||
@@ -661,7 +696,11 @@
 | 
			
		||||
@@ -661,7 +696,11 @@ int xhci_run(struct usb_hcd *hcd)
 | 
			
		||||
 	xhci_dbg(xhci, "// Set the interrupt modulation register\n");
 | 
			
		||||
 	temp = xhci_readl(xhci, &xhci->ir_set->irq_control);
 | 
			
		||||
 	temp &= ~ER_IRQ_INTERVAL_MASK;
 | 
			
		||||
@@ -185,7 +173,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	xhci_writel(xhci, temp, &xhci->ir_set->irq_control);
 | 
			
		||||
 
 | 
			
		||||
 	/* Set the HCD state before we enable the irqs */
 | 
			
		||||
@@ -682,6 +721,9 @@
 | 
			
		||||
@@ -682,6 +721,9 @@ int xhci_run(struct usb_hcd *hcd)
 | 
			
		||||
 		xhci_queue_vendor_command(xhci, 0, 0, 0,
 | 
			
		||||
 				TRB_TYPE(TRB_NEC_GET_FW));
 | 
			
		||||
 
 | 
			
		||||
@@ -195,7 +183,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	xhci_dbg(xhci, "Finished xhci_run for USB2 roothub\n");
 | 
			
		||||
 	return 0;
 | 
			
		||||
 }
 | 
			
		||||
@@ -999,7 +1041,6 @@
 | 
			
		||||
@@ -999,7 +1041,6 @@ int xhci_resume(struct xhci_hcd *xhci, b
 | 
			
		||||
 
 | 
			
		||||
 	/* If restore operation fails, re-initialize the HC during resume */
 | 
			
		||||
 	if ((temp & STS_SRE) || hibernated) {
 | 
			
		||||
@@ -203,7 +191,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 		if ((xhci->quirks & XHCI_COMP_MODE_QUIRK) &&
 | 
			
		||||
 				!(xhci_all_ports_seen_u0(xhci))) {
 | 
			
		||||
 			del_timer_sync(&xhci->comp_mode_recovery_timer);
 | 
			
		||||
@@ -1583,6 +1624,13 @@
 | 
			
		||||
@@ -1583,6 +1624,13 @@ int xhci_drop_endpoint(struct usb_hcd *h
 | 
			
		||||
 	u32 drop_flag;
 | 
			
		||||
 	u32 new_add_flags, new_drop_flags, new_slot_info;
 | 
			
		||||
 	int ret;
 | 
			
		||||
@@ -217,7 +205,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 
 | 
			
		||||
 	ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
 | 
			
		||||
 	if (ret <= 0)
 | 
			
		||||
@@ -1634,6 +1682,40 @@
 | 
			
		||||
@@ -1634,6 +1682,40 @@ int xhci_drop_endpoint(struct usb_hcd *h
 | 
			
		||||
 
 | 
			
		||||
 	xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
 | 
			
		||||
 
 | 
			
		||||
@@ -258,7 +246,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x, new slot info = %#x\n",
 | 
			
		||||
 			(unsigned int) ep->desc.bEndpointAddress,
 | 
			
		||||
 			udev->slot_id,
 | 
			
		||||
@@ -1669,6 +1751,18 @@
 | 
			
		||||
@@ -1669,6 +1751,18 @@ int xhci_add_endpoint(struct usb_hcd *hc
 | 
			
		||||
 	u32 new_add_flags, new_drop_flags, new_slot_info;
 | 
			
		||||
 	struct xhci_virt_device *virt_dev;
 | 
			
		||||
 	int ret = 0;
 | 
			
		||||
@@ -277,7 +265,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 
 | 
			
		||||
 	ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
 | 
			
		||||
 	if (ret <= 0) {
 | 
			
		||||
@@ -1731,6 +1825,56 @@
 | 
			
		||||
@@ -1731,6 +1825,56 @@ int xhci_add_endpoint(struct usb_hcd *hc
 | 
			
		||||
 		return -ENOMEM;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@@ -334,7 +322,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs);
 | 
			
		||||
 	new_add_flags = le32_to_cpu(ctrl_ctx->add_flags);
 | 
			
		||||
 
 | 
			
		||||
@@ -2694,7 +2838,7 @@
 | 
			
		||||
@@ -2694,7 +2838,7 @@ int xhci_check_bandwidth(struct usb_hcd
 | 
			
		||||
 	if (ctrl_ctx->add_flags == cpu_to_le32(SLOT_FLAG) &&
 | 
			
		||||
 			ctrl_ctx->drop_flags == 0)
 | 
			
		||||
 		return 0;
 | 
			
		||||
@@ -343,7 +331,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	xhci_dbg(xhci, "New Input Control Context:\n");
 | 
			
		||||
 	slot_ctx = xhci_get_slot_ctx(xhci, virt_dev->in_ctx);
 | 
			
		||||
 	xhci_dbg_ctx(xhci, virt_dev->in_ctx,
 | 
			
		||||
@@ -4230,10 +4374,14 @@
 | 
			
		||||
@@ -4230,10 +4374,14 @@ static u16 xhci_call_host_update_timeout
 | 
			
		||||
 		u16 *timeout)
 | 
			
		||||
 {
 | 
			
		||||
 	if (state == USB3_LPM_U1) {
 | 
			
		||||
@@ -358,7 +346,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 			return xhci_calculate_intel_u2_timeout(udev, desc);
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@@ -4659,7 +4807,9 @@
 | 
			
		||||
@@ -4659,7 +4807,9 @@ int xhci_gen_setup(struct usb_hcd *hcd,
 | 
			
		||||
 	/* Accept arbitrarily long scatter-gather lists */
 | 
			
		||||
 	hcd->self.sg_tablesize = ~0;
 | 
			
		||||
 	/* XHCI controllers don't stop the ep queue on short packets :| */
 | 
			
		||||
@@ -368,7 +356,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 
 | 
			
		||||
 	if (usb_hcd_is_primary_hcd(hcd)) {
 | 
			
		||||
 		xhci = kzalloc(sizeof(struct xhci_hcd), GFP_KERNEL);
 | 
			
		||||
@@ -4728,6 +4878,10 @@
 | 
			
		||||
@@ -4728,6 +4878,10 @@ int xhci_gen_setup(struct usb_hcd *hcd,
 | 
			
		||||
 		goto error;
 | 
			
		||||
 	xhci_dbg(xhci, "Reset complete\n");
 | 
			
		||||
 
 | 
			
		||||
@@ -379,7 +367,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	temp = xhci_readl(xhci, &xhci->cap_regs->hcc_params);
 | 
			
		||||
 	if (HCC_64BIT_ADDR(temp)) {
 | 
			
		||||
 		xhci_dbg(xhci, "Enabling 64-bit DMA addresses.\n");
 | 
			
		||||
@@ -4752,8 +4906,21 @@
 | 
			
		||||
@@ -4752,8 +4906,21 @@ MODULE_DESCRIPTION(DRIVER_DESC);
 | 
			
		||||
 MODULE_AUTHOR(DRIVER_AUTHOR);
 | 
			
		||||
 MODULE_LICENSE("GPL");
 | 
			
		||||
 
 | 
			
		||||
@@ -401,7 +389,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	int retval;
 | 
			
		||||
 
 | 
			
		||||
 	retval = xhci_register_pci();
 | 
			
		||||
@@ -4766,6 +4933,33 @@
 | 
			
		||||
@@ -4766,6 +4933,33 @@ static int __init xhci_hcd_init(void)
 | 
			
		||||
 		printk(KERN_DEBUG "Problem registering platform driver.");
 | 
			
		||||
 		goto unreg_pci;
 | 
			
		||||
 	}
 | 
			
		||||
@@ -435,7 +423,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	/*
 | 
			
		||||
 	 * Check the compiler generated sizes of structures that must be laid
 | 
			
		||||
 	 * out in specific ways for hardware access.
 | 
			
		||||
@@ -4783,6 +4977,7 @@
 | 
			
		||||
@@ -4783,6 +4977,7 @@ static int __init xhci_hcd_init(void)
 | 
			
		||||
 	BUILD_BUG_ON(sizeof(struct xhci_intr_reg) != 8*32/8);
 | 
			
		||||
 	/* xhci_run_regs has eight fields and embeds 128 xhci_intr_regs */
 | 
			
		||||
 	BUILD_BUG_ON(sizeof(struct xhci_run_regs) != (8+8*128)*32/8);
 | 
			
		||||
@@ -443,10 +431,8 @@ Index: linux-3.10.26/drivers/usb/host/xhci.c
 | 
			
		||||
 	return 0;
 | 
			
		||||
 unreg_pci:
 | 
			
		||||
 	xhci_unregister_pci();
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/xhci-dbg.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/xhci-dbg.c	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/xhci-dbg.c	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
--- a/drivers/usb/host/xhci-dbg.c
 | 
			
		||||
+++ b/drivers/usb/host/xhci-dbg.c
 | 
			
		||||
@@ -21,6 +21,9 @@
 | 
			
		||||
  */
 | 
			
		||||
 
 | 
			
		||||
@@ -457,10 +443,8 @@ Index: linux-3.10.26/drivers/usb/host/xhci-dbg.c
 | 
			
		||||
 
 | 
			
		||||
 #define XHCI_INIT_VALUE 0x0
 | 
			
		||||
 
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/xhci.h
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/xhci.h	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/xhci.h	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
--- a/drivers/usb/host/xhci.h
 | 
			
		||||
+++ b/drivers/usb/host/xhci.h
 | 
			
		||||
@@ -29,9 +29,24 @@
 | 
			
		||||
 #include <linux/usb/hcd.h>
 | 
			
		||||
 
 | 
			
		||||
@@ -487,7 +471,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.h
 | 
			
		||||
 /* xHCI PCI Configuration Registers */
 | 
			
		||||
 #define XHCI_SBRN_OFFSET	(0x60)
 | 
			
		||||
 
 | 
			
		||||
@@ -1536,8 +1551,12 @@
 | 
			
		||||
@@ -1536,8 +1551,12 @@ struct xhci_hcd {
 | 
			
		||||
 	/* Compliance Mode Recovery Data */
 | 
			
		||||
 	struct timer_list	comp_mode_recovery_timer;
 | 
			
		||||
 	u32			port_status_u0;
 | 
			
		||||
@@ -500,7 +484,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci.h
 | 
			
		||||
 };
 | 
			
		||||
 
 | 
			
		||||
 /* convert between an HCD pointer and the corresponding EHCI_HCD */
 | 
			
		||||
@@ -1703,7 +1722,7 @@
 | 
			
		||||
@@ -1703,7 +1722,7 @@ void xhci_urb_free_priv(struct xhci_hcd
 | 
			
		||||
 void xhci_free_command(struct xhci_hcd *xhci,
 | 
			
		||||
 		struct xhci_command *command);
 | 
			
		||||
 
 | 
			
		||||
@@ -509,11 +493,9 @@ Index: linux-3.10.26/drivers/usb/host/xhci.h
 | 
			
		||||
 /* xHCI PCI glue */
 | 
			
		||||
 int xhci_register_pci(void);
 | 
			
		||||
 void xhci_unregister_pci(void);
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/xhci-mem.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/xhci-mem.c	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/xhci-mem.c	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
@@ -65,6 +65,9 @@
 | 
			
		||||
--- a/drivers/usb/host/xhci-mem.c
 | 
			
		||||
+++ b/drivers/usb/host/xhci-mem.c
 | 
			
		||||
@@ -65,6 +65,9 @@ static struct xhci_segment *xhci_segment
 | 
			
		||||
 
 | 
			
		||||
 static void xhci_segment_free(struct xhci_hcd *xhci, struct xhci_segment *seg)
 | 
			
		||||
 {
 | 
			
		||||
@@ -523,7 +505,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-mem.c
 | 
			
		||||
 	if (seg->trbs) {
 | 
			
		||||
 		dma_pool_free(xhci->segment_pool, seg->trbs, seg->dma);
 | 
			
		||||
 		seg->trbs = NULL;
 | 
			
		||||
@@ -1446,9 +1449,17 @@
 | 
			
		||||
@@ -1446,9 +1449,17 @@ int xhci_endpoint_init(struct xhci_hcd *
 | 
			
		||||
 			max_burst = (usb_endpoint_maxp(&ep->desc)
 | 
			
		||||
 				     & 0x1800) >> 11;
 | 
			
		||||
 		}
 | 
			
		||||
@@ -541,11 +523,9 @@ Index: linux-3.10.26/drivers/usb/host/xhci-mem.c
 | 
			
		||||
 		break;
 | 
			
		||||
 	default:
 | 
			
		||||
 		BUG();
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/xhci-plat.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/xhci-plat.c	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/xhci-plat.c	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
@@ -25,6 +25,13 @@
 | 
			
		||||
--- a/drivers/usb/host/xhci-plat.c
 | 
			
		||||
+++ b/drivers/usb/host/xhci-plat.c
 | 
			
		||||
@@ -25,6 +25,13 @@ static void xhci_plat_quirks(struct devi
 | 
			
		||||
 	 * dev struct in order to setup MSI
 | 
			
		||||
 	 */
 | 
			
		||||
 	xhci->quirks |= XHCI_PLAT;
 | 
			
		||||
@@ -559,7 +539,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-plat.c
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 /* called during probe() after chip reset completes */
 | 
			
		||||
@@ -96,20 +103,32 @@
 | 
			
		||||
@@ -96,20 +103,32 @@ static int xhci_plat_probe(struct platfo
 | 
			
		||||
 
 | 
			
		||||
 	driver = &xhci_plat_xhci_driver;
 | 
			
		||||
 
 | 
			
		||||
@@ -592,11 +572,9 @@ Index: linux-3.10.26/drivers/usb/host/xhci-plat.c
 | 
			
		||||
 
 | 
			
		||||
 	if (!request_mem_region(hcd->rsrc_start, hcd->rsrc_len,
 | 
			
		||||
 				driver->description)) {
 | 
			
		||||
Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/usb/host/xhci-ring.c	2014-01-09 20:25:15.000000000 +0000
 | 
			
		||||
+++ linux-3.10.26/drivers/usb/host/xhci-ring.c	2014-01-19 16:29:18.548615960 +0000
 | 
			
		||||
@@ -236,7 +236,6 @@
 | 
			
		||||
--- a/drivers/usb/host/xhci-ring.c
 | 
			
		||||
+++ b/drivers/usb/host/xhci-ring.c
 | 
			
		||||
@@ -236,7 +236,6 @@ static void inc_enq(struct xhci_hcd *xhc
 | 
			
		||||
 			 */
 | 
			
		||||
 			if (!chain && !more_trbs_coming)
 | 
			
		||||
 				break;
 | 
			
		||||
@@ -604,7 +582,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 			/* If we're not dealing with 0.95 hardware or
 | 
			
		||||
 			 * isoc rings on AMD 0.96 host,
 | 
			
		||||
 			 * carry over the chain bit of the previous TRB
 | 
			
		||||
@@ -273,16 +272,20 @@
 | 
			
		||||
@@ -273,16 +272,20 @@ static void inc_enq(struct xhci_hcd *xhc
 | 
			
		||||
 static inline int room_on_ring(struct xhci_hcd *xhci, struct xhci_ring *ring,
 | 
			
		||||
 		unsigned int num_trbs)
 | 
			
		||||
 {
 | 
			
		||||
@@ -625,7 +603,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 
 | 
			
		||||
 	return 1;
 | 
			
		||||
 }
 | 
			
		||||
@@ -2910,6 +2913,7 @@
 | 
			
		||||
@@ -2910,6 +2913,7 @@ static int prepare_ring(struct xhci_hcd
 | 
			
		||||
 		next = ring->enqueue;
 | 
			
		||||
 
 | 
			
		||||
 		while (last_trb(xhci, ring, ring->enq_seg, next)) {
 | 
			
		||||
@@ -633,7 +611,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 			/* If we're not dealing with 0.95 hardware or isoc rings
 | 
			
		||||
 			 * on AMD 0.96 host, clear the chain bit.
 | 
			
		||||
 			 */
 | 
			
		||||
@@ -2919,7 +2923,9 @@
 | 
			
		||||
@@ -2919,7 +2923,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);
 | 
			
		||||
@@ -644,7 +622,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 			wmb();
 | 
			
		||||
 			next->link.control ^= cpu_to_le32(TRB_CYCLE);
 | 
			
		||||
 
 | 
			
		||||
@@ -3049,6 +3055,9 @@
 | 
			
		||||
@@ -3049,6 +3055,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);
 | 
			
		||||
@@ -654,7 +632,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 	xhci_ring_ep_doorbell(xhci, slot_id, ep_index, stream_id);
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -3108,6 +3117,29 @@
 | 
			
		||||
@@ -3108,6 +3117,29 @@ static u32 xhci_td_remainder(unsigned in
 | 
			
		||||
 		return (remainder >> 10) << 17;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@@ -684,7 +662,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 /*
 | 
			
		||||
  * For xHCI 1.0 host controllers, TD size is the number of max packet sized
 | 
			
		||||
  * packets remaining in the TD (*not* including this TRB).
 | 
			
		||||
@@ -3245,6 +3277,7 @@
 | 
			
		||||
@@ -3245,6 +3277,7 @@ static int queue_bulk_sg_tx(struct xhci_
 | 
			
		||||
 		}
 | 
			
		||||
 
 | 
			
		||||
 		/* Set the TRB length, TD size, and interrupter fields. */
 | 
			
		||||
@@ -692,7 +670,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 		if (xhci->hci_version < 0x100) {
 | 
			
		||||
 			remainder = xhci_td_remainder(
 | 
			
		||||
 					urb->transfer_buffer_length -
 | 
			
		||||
@@ -3254,6 +3287,13 @@
 | 
			
		||||
@@ -3254,6 +3287,13 @@ static int queue_bulk_sg_tx(struct xhci_
 | 
			
		||||
 					trb_buff_len, total_packet_count, urb,
 | 
			
		||||
 					num_trbs - 1);
 | 
			
		||||
 		}
 | 
			
		||||
@@ -706,7 +684,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 		length_field = TRB_LEN(trb_buff_len) |
 | 
			
		||||
 			remainder |
 | 
			
		||||
 			TRB_INTR_TARGET(0);
 | 
			
		||||
@@ -3316,6 +3356,9 @@
 | 
			
		||||
@@ -3316,6 +3356,9 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
 | 
			
		||||
 	int running_total, trb_buff_len, ret;
 | 
			
		||||
 	unsigned int total_packet_count;
 | 
			
		||||
 	u64 addr;
 | 
			
		||||
@@ -716,7 +694,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 
 | 
			
		||||
 	if (urb->num_sgs)
 | 
			
		||||
 		return queue_bulk_sg_tx(xhci, mem_flags, urb, slot_id, ep_index);
 | 
			
		||||
@@ -3341,6 +3384,25 @@
 | 
			
		||||
@@ -3341,6 +3384,25 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
 | 
			
		||||
 		running_total += TRB_MAX_BUFF_SIZE;
 | 
			
		||||
 	}
 | 
			
		||||
 	/* FIXME: this doesn't deal with URB_ZERO_PACKET - need one more */
 | 
			
		||||
@@ -742,7 +720,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 
 | 
			
		||||
 	ret = prepare_transfer(xhci, xhci->devs[slot_id],
 | 
			
		||||
 			ep_index, urb->stream_id,
 | 
			
		||||
@@ -3400,6 +3462,7 @@
 | 
			
		||||
@@ -3400,6 +3462,7 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
 | 
			
		||||
 			field |= TRB_ISP;
 | 
			
		||||
 
 | 
			
		||||
 		/* Set the TRB length, TD size, and interrupter fields. */
 | 
			
		||||
@@ -750,7 +728,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 		if (xhci->hci_version < 0x100) {
 | 
			
		||||
 			remainder = xhci_td_remainder(
 | 
			
		||||
 					urb->transfer_buffer_length -
 | 
			
		||||
@@ -3409,6 +3472,10 @@
 | 
			
		||||
@@ -3409,6 +3472,10 @@ int xhci_queue_bulk_tx(struct xhci_hcd *
 | 
			
		||||
 					trb_buff_len, total_packet_count, urb,
 | 
			
		||||
 					num_trbs - 1);
 | 
			
		||||
 		}
 | 
			
		||||
@@ -761,7 +739,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 		length_field = TRB_LEN(trb_buff_len) |
 | 
			
		||||
 			remainder |
 | 
			
		||||
 			TRB_INTR_TARGET(0);
 | 
			
		||||
@@ -3498,7 +3565,11 @@
 | 
			
		||||
@@ -3498,7 +3565,11 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
 | 
			
		||||
 		field |= 0x1;
 | 
			
		||||
 
 | 
			
		||||
 	/* xHCI 1.0 6.4.1.2.1: Transfer Type field */
 | 
			
		||||
@@ -773,7 +751,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 		if (urb->transfer_buffer_length > 0) {
 | 
			
		||||
 			if (setup->bRequestType & USB_DIR_IN)
 | 
			
		||||
 				field |= TRB_TX_TYPE(TRB_DATA_IN);
 | 
			
		||||
@@ -3522,7 +3593,12 @@
 | 
			
		||||
@@ -3522,7 +3593,12 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
 | 
			
		||||
 		field = TRB_TYPE(TRB_DATA);
 | 
			
		||||
 
 | 
			
		||||
 	length_field = TRB_LEN(urb->transfer_buffer_length) |
 | 
			
		||||
@@ -786,7 +764,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 		TRB_INTR_TARGET(0);
 | 
			
		||||
 	if (urb->transfer_buffer_length > 0) {
 | 
			
		||||
 		if (setup->bRequestType & USB_DIR_IN)
 | 
			
		||||
@@ -3533,7 +3609,7 @@
 | 
			
		||||
@@ -3533,7 +3609,7 @@ int xhci_queue_ctrl_tx(struct xhci_hcd *
 | 
			
		||||
 				length_field,
 | 
			
		||||
 				field | ep_ring->cycle_state);
 | 
			
		||||
 	}
 | 
			
		||||
@@ -795,7 +773,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 	/* Save the DMA address of the last TRB in the TD */
 | 
			
		||||
 	td->last_trb = ep_ring->enqueue;
 | 
			
		||||
 
 | 
			
		||||
@@ -3645,6 +3721,9 @@
 | 
			
		||||
@@ -3645,6 +3721,9 @@ static int xhci_queue_isoc_tx(struct xhc
 | 
			
		||||
 	u64 start_addr, addr;
 | 
			
		||||
 	int i, j;
 | 
			
		||||
 	bool more_trbs_coming;
 | 
			
		||||
@@ -805,7 +783,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 
 | 
			
		||||
 	ep_ring = xhci->devs[slot_id]->eps[ep_index].ring;
 | 
			
		||||
 
 | 
			
		||||
@@ -3658,6 +3737,21 @@
 | 
			
		||||
@@ -3658,6 +3737,21 @@ static int xhci_queue_isoc_tx(struct xhc
 | 
			
		||||
 	start_trb = &ep_ring->enqueue->generic;
 | 
			
		||||
 	start_cycle = ep_ring->cycle_state;
 | 
			
		||||
 
 | 
			
		||||
@@ -827,7 +805,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 	urb_priv = urb->hcpriv;
 | 
			
		||||
 	/* Queue the first TRB, even if it's zero-length */
 | 
			
		||||
 	for (i = 0; i < num_tds; i++) {
 | 
			
		||||
@@ -3729,9 +3823,13 @@
 | 
			
		||||
@@ -3729,9 +3823,13 @@ static int xhci_queue_isoc_tx(struct xhc
 | 
			
		||||
 			} else {
 | 
			
		||||
 				td->last_trb = ep_ring->enqueue;
 | 
			
		||||
 				field |= TRB_IOC;
 | 
			
		||||
@@ -841,7 +819,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 					/* Set BEI bit except for the last td */
 | 
			
		||||
 					if (i < num_tds - 1)
 | 
			
		||||
 						field |= TRB_BEI;
 | 
			
		||||
@@ -3746,6 +3844,7 @@
 | 
			
		||||
@@ -3746,6 +3844,7 @@ static int xhci_queue_isoc_tx(struct xhc
 | 
			
		||||
 				trb_buff_len = td_remain_len;
 | 
			
		||||
 
 | 
			
		||||
 			/* Set the TRB length, TD size, & interrupter fields. */
 | 
			
		||||
@@ -849,7 +827,7 @@ Index: linux-3.10.26/drivers/usb/host/xhci-ring.c
 | 
			
		||||
 			if (xhci->hci_version < 0x100) {
 | 
			
		||||
 				remainder = xhci_td_remainder(
 | 
			
		||||
 						td_len - running_total);
 | 
			
		||||
@@ -3755,6 +3854,10 @@
 | 
			
		||||
@@ -3755,6 +3854,10 @@ static int xhci_queue_isoc_tx(struct xhc
 | 
			
		||||
 						total_packet_count, urb,
 | 
			
		||||
 						(trbs_per_td - j - 1));
 | 
			
		||||
 			}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,6 @@
 | 
			
		||||
Index: linux-3.10.26/arch/mips/ralink/of.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/arch/mips/ralink/of.c	2014-01-12 11:49:40.292069849 +0100
 | 
			
		||||
+++ linux-3.10.26/arch/mips/ralink/of.c	2014-01-12 12:38:01.236138974 +0100
 | 
			
		||||
@@ -80,6 +80,16 @@
 | 
			
		||||
--- a/arch/mips/ralink/of.c
 | 
			
		||||
+++ b/arch/mips/ralink/of.c
 | 
			
		||||
@@ -80,6 +80,16 @@ void __init device_tree_init(void)
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 extern struct boot_param_header __image_dtb;
 | 
			
		||||
@@ -19,7 +17,7 @@ Index: linux-3.10.26/arch/mips/ralink/of.c
 | 
			
		||||
 
 | 
			
		||||
 void __init plat_mem_setup(void)
 | 
			
		||||
 {
 | 
			
		||||
@@ -90,8 +100,10 @@
 | 
			
		||||
@@ -90,8 +100,10 @@ void __init plat_mem_setup(void)
 | 
			
		||||
 	 * parsed resulting in our memory appearing
 | 
			
		||||
 	 */
 | 
			
		||||
 	__dt_setup_arch(&__image_dtb);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,8 +1,6 @@
 | 
			
		||||
Index: linux-3.10.26/drivers/net/ethernet/ralink/ralink_soc_eth.c
 | 
			
		||||
===================================================================
 | 
			
		||||
--- linux-3.10.26.orig/drivers/net/ethernet/ralink/ralink_soc_eth.c	2014-01-12 11:49:40.052069844 +0100
 | 
			
		||||
+++ linux-3.10.26/drivers/net/ethernet/ralink/ralink_soc_eth.c	2014-01-12 12:49:31.776155429 +0100
 | 
			
		||||
@@ -335,7 +335,7 @@
 | 
			
		||||
--- a/drivers/net/ethernet/ralink/ralink_soc_eth.c
 | 
			
		||||
+++ b/drivers/net/ethernet/ralink/ralink_soc_eth.c
 | 
			
		||||
@@ -335,7 +335,7 @@ static int fe_start_xmit(struct sk_buff
 | 
			
		||||
 	if (priv->soc->tso)
 | 
			
		||||
 		fe_start_tso(skb, dev, nr_frags, tx);
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +9,7 @@ Index: linux-3.10.26/drivers/net/ethernet/ralink/ralink_soc_eth.c
 | 
			
		||||
 		struct iphdr *iph = NULL;
 | 
			
		||||
 		struct tcphdr *th = NULL;
 | 
			
		||||
 		struct ipv6hdr *ip6h = NULL;
 | 
			
		||||
@@ -741,8 +741,7 @@
 | 
			
		||||
@@ -741,8 +741,7 @@ static int fe_probe(struct platform_devi
 | 
			
		||||
 		dev_info(&pdev->dev, "Enabling TSO\n");
 | 
			
		||||
 		netdev->features |= NETIF_F_SG | NETIF_F_TSO | NETIF_F_TSO6 | NETIF_F_IPV6_CSUM;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ BOARD:=rb532
 | 
			
		||||
BOARDNAME:=Mikrotik RouterBoard 532
 | 
			
		||||
FEATURES:=pci targz broken
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
DEFAULT_PACKAGES += wpad-mini kmod-madwifi kmod-input-rb532
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@ CPU_TYPE:=mpcore
 | 
			
		||||
CPU_SUBTYPE:=vfp
 | 
			
		||||
MAINTAINER:=Florian Fainelli <florian@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
DEVICE_TYPE:=developerboard
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -11,7 +11,7 @@ BOARD:=sparc
 | 
			
		||||
BOARDNAME:=Sun UltraSPARC
 | 
			
		||||
FEATURES+=fpu tgz ext4 squashfs broken
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
 | 
			
		||||
include $(INCLUDE_DIR)/target.mk
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@ DEFAULT_PACKAGES += \
 | 
			
		||||
			kmod-ledtrig-heartbeat kmod-ledtrig-gpio \
 | 
			
		||||
			kmod-ledtrig-netdev \
 | 
			
		||||
			kmod-cpu-msr hwclock wpad
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
CS5535_MASK:=0x0b000042
 | 
			
		||||
 | 
			
		||||
CPU_TYPE := geode
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
BOARDNAME:=Generic
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
define Target/Description
 | 
			
		||||
	Build firmware images for x86 based boards
 | 
			
		||||
 
 | 
			
		||||
@@ -2,4 +2,4 @@ BOARDNAME:=KVM Guest
 | 
			
		||||
FEATURES:=ext4 pci usb
 | 
			
		||||
DEFAULT_PACKAGES += kmod-virtio-balloon kmod-virtio-net kmod-virtio-random
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ BOARDNAME:=x86_64
 | 
			
		||||
FEATURES:=ext4 vdi vmdk targz
 | 
			
		||||
MAINTAINER:=Imre Kaloz <kaloz@openwrt.org>
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
KERNELNAME:=bzImage
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ BOARDNAME:=Ingenic XBurst
 | 
			
		||||
FEATURES:=targz ubifs audio
 | 
			
		||||
SUBTARGETS:=qi_lb60 n516 n526 id800wt
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION:=3.10.26
 | 
			
		||||
LINUX_VERSION:=3.10.28
 | 
			
		||||
 | 
			
		||||
DEVICE_TYPE=other
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user