mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	kernel/4.1: update to version 4.1.15
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de> SVN-Revision: 48223
This commit is contained in:
		
							parent
							
								
									ba3a749f9b
								
							
						
					
					
						commit
						93b50ade93
					
				@ -3,12 +3,12 @@
 | 
			
		||||
LINUX_RELEASE?=1
 | 
			
		||||
 | 
			
		||||
LINUX_VERSION-3.18 = .23
 | 
			
		||||
LINUX_VERSION-4.1 = .13
 | 
			
		||||
LINUX_VERSION-4.1 = .15
 | 
			
		||||
LINUX_VERSION-4.3 =
 | 
			
		||||
LINUX_VERSION-4.4 =
 | 
			
		||||
 | 
			
		||||
LINUX_KERNEL_MD5SUM-3.18.23 = dc6d265ab38716be3676ac294b481ad8
 | 
			
		||||
LINUX_KERNEL_MD5SUM-4.1.13 = af9dd5d8f71185a64a8eccface15fc00
 | 
			
		||||
LINUX_KERNEL_MD5SUM-4.1.15 = b227333912b161c96ff3e30f5041e1c0
 | 
			
		||||
LINUX_KERNEL_MD5SUM-4.3 = 58b35794eee3b6d52ce7be39357801e7
 | 
			
		||||
LINUX_KERNEL_MD5SUM-4.4 = 9a78fa2eb6c68ca5a40ed5af08142599
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -214,7 +214,7 @@
 | 
			
		||||
 #include <linux/uaccess.h>
 | 
			
		||||
 #include <linux/ipv6.h>
 | 
			
		||||
 #include <linux/icmpv6.h>
 | 
			
		||||
@@ -772,10 +773,10 @@ static void tcp_v6_send_response(struct
 | 
			
		||||
@@ -775,10 +776,10 @@ static void tcp_v6_send_response(struct
 | 
			
		||||
 	topt = (__be32 *)(t1 + 1);
 | 
			
		||||
 
 | 
			
		||||
 	if (tsecr) {
 | 
			
		||||
@ -241,7 +241,7 @@
 | 
			
		||||
  */
 | 
			
		||||
--- a/net/ipv6/datagram.c
 | 
			
		||||
+++ b/net/ipv6/datagram.c
 | 
			
		||||
@@ -424,7 +424,7 @@ int ipv6_recv_error(struct sock *sk, str
 | 
			
		||||
@@ -426,7 +426,7 @@ int ipv6_recv_error(struct sock *sk, str
 | 
			
		||||
 				ipv6_iface_scope_id(&sin->sin6_addr,
 | 
			
		||||
 						    IP6CB(skb)->iif);
 | 
			
		||||
 		} else {
 | 
			
		||||
@ -250,7 +250,7 @@
 | 
			
		||||
 					       &sin->sin6_addr);
 | 
			
		||||
 			sin->sin6_scope_id = 0;
 | 
			
		||||
 		}
 | 
			
		||||
@@ -761,12 +761,12 @@ int ip6_datagram_send_ctl(struct net *ne
 | 
			
		||||
@@ -763,12 +763,12 @@ int ip6_datagram_send_ctl(struct net *ne
 | 
			
		||||
 			}
 | 
			
		||||
 
 | 
			
		||||
 			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) {
 | 
			
		||||
@ -659,7 +659,7 @@
 | 
			
		||||
 
 | 
			
		||||
 #define	IP6_MF		0x0001
 | 
			
		||||
 #define	IP6_OFFSET	0xFFF8
 | 
			
		||||
@@ -396,8 +396,8 @@ static inline void __ipv6_addr_set_half(
 | 
			
		||||
@@ -415,8 +415,8 @@ static inline void __ipv6_addr_set_half(
 | 
			
		||||
 	}
 | 
			
		||||
 #endif
 | 
			
		||||
 #endif
 | 
			
		||||
@ -670,7 +670,7 @@
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
 static inline void ipv6_addr_set(struct in6_addr *addr, 
 | 
			
		||||
@@ -456,6 +456,8 @@ static inline bool ipv6_prefix_equal(con
 | 
			
		||||
@@ -475,6 +475,8 @@ static inline bool ipv6_prefix_equal(con
 | 
			
		||||
 	const __be32 *a1 = addr1->s6_addr32;
 | 
			
		||||
 	const __be32 *a2 = addr2->s6_addr32;
 | 
			
		||||
 	unsigned int pdw, pbi;
 | 
			
		||||
@ -679,7 +679,7 @@
 | 
			
		||||
 
 | 
			
		||||
 	/* check complete u32 in prefix */
 | 
			
		||||
 	pdw = prefixlen >> 5;
 | 
			
		||||
@@ -464,7 +466,9 @@ static inline bool ipv6_prefix_equal(con
 | 
			
		||||
@@ -483,7 +485,9 @@ static inline bool ipv6_prefix_equal(con
 | 
			
		||||
 
 | 
			
		||||
 	/* check incomplete u32 in prefix */
 | 
			
		||||
 	pbi = prefixlen & 0x1f;
 | 
			
		||||
@ -690,7 +690,7 @@
 | 
			
		||||
 		return false;
 | 
			
		||||
 
 | 
			
		||||
 	return true;
 | 
			
		||||
@@ -607,13 +611,13 @@ static inline void ipv6_addr_set_v4mappe
 | 
			
		||||
@@ -627,13 +631,13 @@ static inline void ipv6_addr_set_v4mappe
 | 
			
		||||
  */
 | 
			
		||||
 static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen)
 | 
			
		||||
 {
 | 
			
		||||
@ -706,7 +706,7 @@
 | 
			
		||||
 		if (xb)
 | 
			
		||||
 			return i * 32 + 31 - __fls(ntohl(xb));
 | 
			
		||||
 	}
 | 
			
		||||
@@ -739,17 +743,18 @@ static inline __be32 ip6_make_flowlabel(
 | 
			
		||||
@@ -759,17 +763,18 @@ static inline __be32 ip6_make_flowlabel(
 | 
			
		||||
 static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass,
 | 
			
		||||
 				__be32 flowlabel)
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
@ -74,7 +74,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 | 
			
		||||
 /*
 | 
			
		||||
  * Set the run bit and wait for the host to be running.
 | 
			
		||||
  */
 | 
			
		||||
@@ -557,10 +590,25 @@ int xhci_init(struct usb_hcd *hcd)
 | 
			
		||||
@@ -567,10 +600,25 @@ int xhci_init(struct usb_hcd *hcd)
 | 
			
		||||
 
 | 
			
		||||
 static int xhci_run_finished(struct xhci_hcd *xhci)
 | 
			
		||||
 {
 | 
			
		||||
@ -103,7 +103,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
 | 
			
		||||
 	xhci->shared_hcd->state = HC_STATE_RUNNING;
 | 
			
		||||
 	xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
 | 
			
		||||
 
 | 
			
		||||
@@ -570,6 +618,9 @@ static int xhci_run_finished(struct xhci
 | 
			
		||||
@@ -580,6 +628,9 @@ static int xhci_run_finished(struct xhci
 | 
			
		||||
 	xhci_dbg_trace(xhci, trace_xhci_dbg_init,
 | 
			
		||||
 			"Finished xhci_run for USB3 roothub");
 | 
			
		||||
 	return 0;
 | 
			
		||||
 | 
			
		||||
@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/usb/host/bcma-hcd.c
 | 
			
		||||
+++ b/drivers/usb/host/bcma-hcd.c
 | 
			
		||||
@@ -568,8 +568,7 @@ static int bcma_hcd_probe(struct bcma_device *dev)
 | 
			
		||||
@@ -568,8 +568,7 @@ static int bcma_hcd_probe(struct bcma_de
 | 
			
		||||
 	usb_dev->core = dev;
 | 
			
		||||
 
 | 
			
		||||
 	if (dev->dev.of_node)
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/drivers/mtd/bcm47xxpart.c
 | 
			
		||||
+++ b/drivers/mtd/bcm47xxpart.c
 | 
			
		||||
@@ -100,6 +100,7 @@ static int bcm47xxpart_parse(struct mtd_
 | 
			
		||||
@@ -127,6 +127,7 @@ static int bcm47xxpart_parse(struct mtd_
 | 
			
		||||
 	int last_trx_part = -1;
 | 
			
		||||
 	int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
 | 
			
		||||
 	int err;
 | 
			
		||||
@ -8,7 +8,7 @@
 | 
			
		||||
 
 | 
			
		||||
 	/*
 | 
			
		||||
 	 * Some really old flashes (like AT45DB*) had smaller erasesize-s, but
 | 
			
		||||
@@ -306,12 +307,23 @@ static int bcm47xxpart_parse(struct mtd_
 | 
			
		||||
@@ -334,12 +335,23 @@ static int bcm47xxpart_parse(struct mtd_
 | 
			
		||||
 		if (buf[0] == NVRAM_HEADER) {
 | 
			
		||||
 			bcm47xxpart_add_part(&parts[curr_part++], "nvram",
 | 
			
		||||
 					     master->size - blocksize, 0);
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
 | 
			
		||||
+++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
 | 
			
		||||
@@ -641,6 +641,51 @@
 | 
			
		||||
@@ -641,6 +641,51 @@ static struct board_info __initdata boar
 | 
			
		||||
 		},
 | 
			
		||||
 	},
 | 
			
		||||
 };
 | 
			
		||||
@ -52,7 +52,7 @@
 | 
			
		||||
 #endif /* CONFIG_BCM63XX_CPU_6328 */
 | 
			
		||||
 
 | 
			
		||||
 /*
 | 
			
		||||
@@ -2452,6 +2497,7 @@
 | 
			
		||||
@@ -2452,6 +2497,7 @@ static const struct board_info __initcon
 | 
			
		||||
 	&board_A4001N1,
 | 
			
		||||
 	&board_dsl_274xb_f1,
 | 
			
		||||
 	&board_FAST2704V2,
 | 
			
		||||
@ -60,7 +60,7 @@
 | 
			
		||||
 #endif
 | 
			
		||||
 #ifdef CONFIG_BCM63XX_CPU_6338
 | 
			
		||||
 	&board_96338gw,
 | 
			
		||||
@@ -2550,6 +2596,7 @@
 | 
			
		||||
@@ -2550,6 +2596,7 @@ static struct of_device_id const bcm963x
 | 
			
		||||
 	{ .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },
 | 
			
		||||
 	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
 | 
			
		||||
 	{ .compatible = "d-link,dsl-274xb-f", .data = &board_dsl_274xb_f1, },
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
 | 
			
		||||
 | 
			
		||||
--- a/net/packet/af_packet.c
 | 
			
		||||
+++ b/net/packet/af_packet.c
 | 
			
		||||
@@ -2106,7 +2106,7 @@ static void tpacket_destruct_skb(struct
 | 
			
		||||
@@ -2112,7 +2112,7 @@ static void tpacket_destruct_skb(struct
 | 
			
		||||
 static bool ll_header_truncated(const struct net_device *dev, int len)
 | 
			
		||||
 {
 | 
			
		||||
 	/* net device doesn't like empty head */
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
@@ -224,7 +224,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)
 | 
			
		||||
@ -1,114 +0,0 @@
 | 
			
		||||
From 128524b9db3e4f4245226852bee771bd03db75be Mon Sep 17 00:00:00 2001
 | 
			
		||||
From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
 | 
			
		||||
Date: Tue, 3 Nov 2015 11:01:42 +0100
 | 
			
		||||
Subject: [PATCH 1/2] USB: qcserial: Add support for Quectel EC20 Mini PCIe
 | 
			
		||||
 module
 | 
			
		||||
MIME-Version: 1.0
 | 
			
		||||
Content-Type: text/plain; charset=UTF-8
 | 
			
		||||
Content-Transfer-Encoding: 8bit
 | 
			
		||||
 | 
			
		||||
It seems like this device has same vendor and product IDs as G2K
 | 
			
		||||
devices, but it has different number of interfaces(4 vs 5) and also
 | 
			
		||||
different interface layout which makes it currently unusable:
 | 
			
		||||
 | 
			
		||||
	usbcore: registered new interface driver qcserial
 | 
			
		||||
	usbserial: USB Serial support registered for Qualcomm USB modem
 | 
			
		||||
	usb 2-1.2: unknown number of interfaces: 5
 | 
			
		||||
 | 
			
		||||
lsusb output:
 | 
			
		||||
 | 
			
		||||
	Bus 002 Device 003: ID 05c6:9215 Qualcomm, Inc. Acer Gobi 2000 Wireless
 | 
			
		||||
	Device Descriptor:
 | 
			
		||||
	  bLength                18
 | 
			
		||||
	  bDescriptorType         1
 | 
			
		||||
	  bcdUSB               2.00
 | 
			
		||||
	  bDeviceClass            0 (Defined at Interface level)
 | 
			
		||||
	  bDeviceSubClass         0
 | 
			
		||||
	  bDeviceProtocol         0
 | 
			
		||||
	  bMaxPacketSize0        64
 | 
			
		||||
	  idVendor           0x05c6 Qualcomm, Inc.
 | 
			
		||||
	  idProduct          0x9215 Acer Gobi 2000 Wireless Modem
 | 
			
		||||
	  bcdDevice            2.32
 | 
			
		||||
	  iManufacturer           1 Quectel
 | 
			
		||||
	  iProduct                2 Quectel LTE Module
 | 
			
		||||
	  iSerial                 0
 | 
			
		||||
	  bNumConfigurations      1
 | 
			
		||||
	  Configuration Descriptor:
 | 
			
		||||
	    bLength                 9
 | 
			
		||||
	    bDescriptorType         2
 | 
			
		||||
	    wTotalLength          209
 | 
			
		||||
	    bNumInterfaces          5
 | 
			
		||||
	    bConfigurationValue     1
 | 
			
		||||
	    iConfiguration          0
 | 
			
		||||
	    bmAttributes         0xa0
 | 
			
		||||
	      (Bus Powered)
 | 
			
		||||
	      Remote Wakeup
 | 
			
		||||
	    MaxPower              500mA
 | 
			
		||||
 | 
			
		||||
Signed-off-by: Petr Štetiar <ynezz@true.cz>
 | 
			
		||||
---
 | 
			
		||||
 drivers/usb/serial/qcserial.c |   39 +++++++++++++++++++++++++++++++++++++++
 | 
			
		||||
 1 file changed, 39 insertions(+)
 | 
			
		||||
 | 
			
		||||
--- a/drivers/usb/serial/qcserial.c
 | 
			
		||||
+++ b/drivers/usb/serial/qcserial.c
 | 
			
		||||
@@ -22,6 +22,8 @@
 | 
			
		||||
 #define DRIVER_AUTHOR "Qualcomm Inc"
 | 
			
		||||
 #define DRIVER_DESC "Qualcomm USB Serial driver"
 | 
			
		||||
 
 | 
			
		||||
+#define QUECTEL_EC20_IDPRODUCT 0x9215
 | 
			
		||||
+
 | 
			
		||||
 /* standard device layouts supported by this driver */
 | 
			
		||||
 enum qcserial_layouts {
 | 
			
		||||
 	QCSERIAL_G2K = 0,	/* Gobi 2000 */
 | 
			
		||||
@@ -169,6 +171,38 @@ static const struct usb_device_id id_tab
 | 
			
		||||
 };
 | 
			
		||||
 MODULE_DEVICE_TABLE(usb, id_table);
 | 
			
		||||
 
 | 
			
		||||
+static int handle_quectel_ec20(struct device *dev, int ifnum)
 | 
			
		||||
+{
 | 
			
		||||
+	int altsetting = 0;
 | 
			
		||||
+
 | 
			
		||||
+	/*
 | 
			
		||||
+	 * Quectel EC20 Mini PCIe LTE module layout:
 | 
			
		||||
+	 * 0: DM/DIAG (use libqcdm from ModemManager for communication)
 | 
			
		||||
+	 * 1: NMEA
 | 
			
		||||
+	 * 2: AT-capable modem port
 | 
			
		||||
+	 * 3: Modem interface
 | 
			
		||||
+	 * 4: NDIS
 | 
			
		||||
+	 */
 | 
			
		||||
+	switch (ifnum) {
 | 
			
		||||
+	case 0:
 | 
			
		||||
+		dev_dbg(dev, "Quectel EC20 DM/DIAG interface found\n");
 | 
			
		||||
+		break;
 | 
			
		||||
+	case 1:
 | 
			
		||||
+		dev_dbg(dev, "Quectel EC20 NMEA GPS interface found\n");
 | 
			
		||||
+		break;
 | 
			
		||||
+	case 2:
 | 
			
		||||
+	case 3:
 | 
			
		||||
+		dev_dbg(dev, "Quectel EC20 Modem port found\n");
 | 
			
		||||
+		break;
 | 
			
		||||
+	case 4:
 | 
			
		||||
+		/* Don't claim the QMI/net interface */
 | 
			
		||||
+		altsetting = -1;
 | 
			
		||||
+		break;
 | 
			
		||||
+	}
 | 
			
		||||
+
 | 
			
		||||
+	return altsetting;
 | 
			
		||||
+}
 | 
			
		||||
+
 | 
			
		||||
 static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
 | 
			
		||||
 {
 | 
			
		||||
 	struct usb_host_interface *intf = serial->interface->cur_altsetting;
 | 
			
		||||
@@ -237,6 +271,11 @@ static int qcprobe(struct usb_serial *se
 | 
			
		||||
 			altsetting = -1;
 | 
			
		||||
 		break;
 | 
			
		||||
 	case QCSERIAL_G2K:
 | 
			
		||||
+		if (nintf == 5 && id->idProduct == QUECTEL_EC20_IDPRODUCT) {
 | 
			
		||||
+			altsetting = handle_quectel_ec20(dev, ifnum);
 | 
			
		||||
+			goto done;
 | 
			
		||||
+		}
 | 
			
		||||
+
 | 
			
		||||
 		/*
 | 
			
		||||
 		 * Gobi 2K+ USB layout:
 | 
			
		||||
 		 * 0: QMI/net
 | 
			
		||||
@ -48,7 +48,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/usb/qmi_wwan.c
 | 
			
		||||
+++ b/drivers/net/usb/qmi_wwan.c
 | 
			
		||||
@@ -815,6 +815,7 @@ static const struct usb_device_id produc
 | 
			
		||||
@@ -820,6 +820,7 @@ static const struct usb_device_id produc
 | 
			
		||||
 	{QMI_GOBI_DEVICE(0x05c6, 0x9245)},	/* Samsung Gobi 2000 Modem device (VL176) */
 | 
			
		||||
 	{QMI_GOBI_DEVICE(0x03f0, 0x251d)},	/* HP Gobi 2000 Modem device (VP412) */
 | 
			
		||||
 	{QMI_GOBI_DEVICE(0x05c6, 0x9215)},	/* Acer Gobi 2000 Modem device (VP413) */
 | 
			
		||||
@ -56,7 +56,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
 | 
			
		||||
 	{QMI_GOBI_DEVICE(0x05c6, 0x9265)},	/* Asus Gobi 2000 Modem device (VR305) */
 | 
			
		||||
 	{QMI_GOBI_DEVICE(0x05c6, 0x9235)},	/* Top Global Gobi 2000 Modem device (VR306) */
 | 
			
		||||
 	{QMI_GOBI_DEVICE(0x05c6, 0x9275)},	/* iRex Technologies Gobi 2000 Modem device (VR307) */
 | 
			
		||||
@@ -846,10 +847,24 @@ static const struct usb_device_id produc
 | 
			
		||||
@@ -851,10 +852,24 @@ static const struct usb_device_id produc
 | 
			
		||||
 };
 | 
			
		||||
 MODULE_DEVICE_TABLE(usb, products);
 | 
			
		||||
 
 | 
			
		||||
@ -81,7 +81,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
 | 
			
		||||
 
 | 
			
		||||
 	/* Workaround to enable dynamic IDs.  This disables usbnet
 | 
			
		||||
 	 * blacklisting functionality.  Which, if required, can be
 | 
			
		||||
@@ -861,6 +876,12 @@ static int qmi_wwan_probe(struct usb_int
 | 
			
		||||
@@ -866,6 +881,12 @@ static int qmi_wwan_probe(struct usb_int
 | 
			
		||||
 		id->driver_info = (unsigned long)&qmi_wwan_info;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
			
		||||
 | 
			
		||||
--- a/drivers/mtd/bcm47xxpart.c
 | 
			
		||||
+++ b/drivers/mtd/bcm47xxpart.c
 | 
			
		||||
@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct mtd_partition *part, const char *name,
 | 
			
		||||
@@ -61,6 +61,34 @@ static void bcm47xxpart_add_part(struct
 | 
			
		||||
 	part->mask_flags = mask_flags;
 | 
			
		||||
 }
 | 
			
		||||
 
 | 
			
		||||
@ -48,7 +48,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
			
		||||
 static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master,
 | 
			
		||||
 						  size_t offset)
 | 
			
		||||
 {
 | 
			
		||||
@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_info *master,
 | 
			
		||||
@@ -182,6 +210,8 @@ static int bcm47xxpart_parse(struct mtd_
 | 
			
		||||
 
 | 
			
		||||
 		/* TRX */
 | 
			
		||||
 		if (buf[0x000 / 4] == TRX_MAGIC) {
 | 
			
		||||
@ -57,7 +57,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
			
		||||
 			if (BCM47XXPART_MAX_PARTS - curr_part < 4) {
 | 
			
		||||
 				pr_warn("Not enough partitions left to register trx, scanning stopped!\n");
 | 
			
		||||
 				break;
 | 
			
		||||
@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_info *master,
 | 
			
		||||
@@ -196,18 +226,18 @@ static int bcm47xxpart_parse(struct mtd_
 | 
			
		||||
 			i = 0;
 | 
			
		||||
 			/* We have LZMA loader if offset[2] points to sth */
 | 
			
		||||
 			if (trx->offset[2]) {
 | 
			
		||||
@ -82,7 +82,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
 | 
			
		||||
 				i++;
 | 
			
		||||
 			}
 | 
			
		||||
 
 | 
			
		||||
@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
 | 
			
		||||
@@ -219,11 +249,11 @@ static int bcm47xxpart_parse(struct mtd_
 | 
			
		||||
 			if (trx->offset[i]) {
 | 
			
		||||
 				const char *name;
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
@@ -1533,6 +1533,7 @@ static int packet_rcv_spkt(struct sk_buf
 | 
			
		||||
@@ -1547,6 +1547,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
 | 
			
		||||
@@ -1540,6 +1541,7 @@ static int packet_rcv_spkt(struct sk_buf
 | 
			
		||||
@@ -1554,6 +1555,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
 | 
			
		||||
@@ -1552,7 +1554,7 @@ static int packet_rcv_spkt(struct sk_buf
 | 
			
		||||
@@ -1566,7 +1568,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)))
 | 
			
		||||
@@ -1759,12 +1761,12 @@ static int packet_rcv(struct sk_buff *sk
 | 
			
		||||
@@ -1765,12 +1767,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;
 | 
			
		||||
 
 | 
			
		||||
@@ -1884,12 +1886,12 @@ static int tpacket_rcv(struct sk_buff *s
 | 
			
		||||
@@ -1890,12 +1892,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;
 | 
			
		||||
 
 | 
			
		||||
@@ -2851,6 +2853,7 @@ static int packet_create(struct net *net
 | 
			
		||||
@@ -2871,6 +2873,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;
 | 
			
		||||
@@ -3456,6 +3459,16 @@ packet_setsockopt(struct socket *sock, i
 | 
			
		||||
@@ -3476,6 +3479,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;
 | 
			
		||||
 	}
 | 
			
		||||
@@ -3507,6 +3520,13 @@ static int packet_getsockopt(struct sock
 | 
			
		||||
@@ -3527,6 +3540,13 @@ static int packet_getsockopt(struct sock
 | 
			
		||||
 	case PACKET_VNET_HDR:
 | 
			
		||||
 		val = po->has_vnet_hdr;
 | 
			
		||||
 		break;
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/net/netlink/af_netlink.c
 | 
			
		||||
+++ b/net/netlink/af_netlink.c
 | 
			
		||||
@@ -1775,27 +1775,7 @@ void netlink_detachskb(struct sock *sk,
 | 
			
		||||
@@ -1776,27 +1776,7 @@ void netlink_detachskb(struct sock *sk,
 | 
			
		||||
 
 | 
			
		||||
 static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation)
 | 
			
		||||
 {
 | 
			
		||||
 | 
			
		||||
@ -32,7 +32,7 @@
 | 
			
		||||
 {
 | 
			
		||||
--- a/include/net/sch_generic.h
 | 
			
		||||
+++ b/include/net/sch_generic.h
 | 
			
		||||
@@ -340,6 +340,7 @@ extern struct Qdisc noop_qdisc;
 | 
			
		||||
@@ -343,6 +343,7 @@ extern struct Qdisc noop_qdisc;
 | 
			
		||||
 extern struct Qdisc_ops noop_qdisc_ops;
 | 
			
		||||
 extern struct Qdisc_ops pfifo_fast_ops;
 | 
			
		||||
 extern struct Qdisc_ops mq_qdisc_ops;
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
--- a/net/sched/sch_api.c
 | 
			
		||||
+++ b/net/sched/sch_api.c
 | 
			
		||||
@@ -1951,7 +1951,7 @@ static int __init pktsched_init(void)
 | 
			
		||||
@@ -1960,7 +1960,7 @@ static int __init pktsched_init(void)
 | 
			
		||||
 		return err;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
@@ -224,7 +224,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)
 | 
			
		||||
@ -16,7 +16,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 | 
			
		||||
 | 
			
		||||
--- a/drivers/net/ethernet/Kconfig
 | 
			
		||||
+++ b/drivers/net/ethernet/Kconfig
 | 
			
		||||
@@ -101,7 +101,13 @@
 | 
			
		||||
@@ -101,7 +101,13 @@ config LANTIQ_ETOP
 | 
			
		||||
 	tristate "Lantiq SoC ETOP driver"
 | 
			
		||||
 	depends on SOC_TYPE_XWAY
 | 
			
		||||
 	---help---
 | 
			
		||||
@ -33,7 +33,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net
 | 
			
		||||
 source "drivers/net/ethernet/mellanox/Kconfig"
 | 
			
		||||
--- a/drivers/net/ethernet/Makefile
 | 
			
		||||
+++ b/drivers/net/ethernet/Makefile
 | 
			
		||||
@@ -43,6 +43,7 @@
 | 
			
		||||
@@ -43,6 +43,7 @@ obj-$(CONFIG_IP1000) += icplus/
 | 
			
		||||
 obj-$(CONFIG_JME) += jme.o
 | 
			
		||||
 obj-$(CONFIG_KORINA) += korina.o
 | 
			
		||||
 obj-$(CONFIG_LANTIQ_ETOP) += lantiq_etop.o
 | 
			
		||||
 | 
			
		||||
@ -17,9 +17,9 @@ Cc: <stable@vger.kernel.org> # 4.1+
 | 
			
		||||
 | 
			
		||||
--- a/arch/mips/lantiq/clk.c
 | 
			
		||||
+++ b/arch/mips/lantiq/clk.c
 | 
			
		||||
@@ -99,6 +99,23 @@ int clk_set_rate(struct clk *clk, unsign
 | 
			
		||||
@@ -116,6 +116,23 @@ long clk_round_rate(struct clk *clk, uns
 | 
			
		||||
 }
 | 
			
		||||
 EXPORT_SYMBOL(clk_set_rate);
 | 
			
		||||
 EXPORT_SYMBOL(clk_round_rate);
 | 
			
		||||
 
 | 
			
		||||
+long clk_round_rate(struct clk *clk, unsigned long rate)
 | 
			
		||||
+{
 | 
			
		||||
 | 
			
		||||
@ -784,7 +784,7 @@ Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
 | 
			
		||||
 
 | 
			
		||||
 #define DRIVER_AUTHOR "Sarah Sharp"
 | 
			
		||||
 #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver"
 | 
			
		||||
@@ -624,7 +625,11 @@ int xhci_run(struct usb_hcd *hcd)
 | 
			
		||||
@@ -634,7 +635,11 @@ int xhci_run(struct usb_hcd *hcd)
 | 
			
		||||
 			"// Set the interrupt modulation register");
 | 
			
		||||
 	temp = readl(&xhci->ir_set->irq_control);
 | 
			
		||||
 	temp &= ~ER_IRQ_INTERVAL_MASK;
 | 
			
		||||
@ -797,7 +797,7 @@ Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
 | 
			
		||||
 	writel(temp, &xhci->ir_set->irq_control);
 | 
			
		||||
 
 | 
			
		||||
 	/* Set the HCD state before we enable the irqs */
 | 
			
		||||
@@ -1698,6 +1703,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
 | 
			
		||||
@@ -1708,6 +1713,9 @@ int xhci_drop_endpoint(struct usb_hcd *h
 | 
			
		||||
 
 | 
			
		||||
 	xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
 | 
			
		||||
 
 | 
			
		||||
@ -807,7 +807,7 @@ Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
 | 
			
		||||
 	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,
 | 
			
		||||
@@ -1793,6 +1801,12 @@ int xhci_add_endpoint(struct usb_hcd *hc
 | 
			
		||||
@@ -1803,6 +1811,12 @@ int xhci_add_endpoint(struct usb_hcd *hc
 | 
			
		||||
 		return -ENOMEM;
 | 
			
		||||
 	}
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user