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:
		| @@ -3,12 +3,12 @@ | |||||||
| LINUX_RELEASE?=1 | LINUX_RELEASE?=1 | ||||||
|  |  | ||||||
| LINUX_VERSION-3.18 = .23 | LINUX_VERSION-3.18 = .23 | ||||||
| LINUX_VERSION-4.1 = .13 | LINUX_VERSION-4.1 = .15 | ||||||
| LINUX_VERSION-4.3 = | LINUX_VERSION-4.3 = | ||||||
| LINUX_VERSION-4.4 = | LINUX_VERSION-4.4 = | ||||||
|  |  | ||||||
| LINUX_KERNEL_MD5SUM-3.18.23 = dc6d265ab38716be3676ac294b481ad8 | 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.3 = 58b35794eee3b6d52ce7be39357801e7 | ||||||
| LINUX_KERNEL_MD5SUM-4.4 = 9a78fa2eb6c68ca5a40ed5af08142599 | LINUX_KERNEL_MD5SUM-4.4 = 9a78fa2eb6c68ca5a40ed5af08142599 | ||||||
|  |  | ||||||
|   | |||||||
| @@ -214,7 +214,7 @@ | |||||||
|  #include <linux/uaccess.h> |  #include <linux/uaccess.h> | ||||||
|  #include <linux/ipv6.h> |  #include <linux/ipv6.h> | ||||||
|  #include <linux/icmpv6.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); |  	topt = (__be32 *)(t1 + 1); | ||||||
|   |   | ||||||
|  	if (tsecr) { |  	if (tsecr) { | ||||||
| @@ -241,7 +241,7 @@ | |||||||
|   */ |   */ | ||||||
| --- a/net/ipv6/datagram.c | --- a/net/ipv6/datagram.c | ||||||
| +++ b/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, |  				ipv6_iface_scope_id(&sin->sin6_addr, | ||||||
|  						    IP6CB(skb)->iif); |  						    IP6CB(skb)->iif); | ||||||
|  		} else { |  		} else { | ||||||
| @@ -250,7 +250,7 @@ | |||||||
|  					       &sin->sin6_addr); |  					       &sin->sin6_addr); | ||||||
|  			sin->sin6_scope_id = 0; |  			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) { |  			if (fl6->flowlabel&IPV6_FLOWINFO_MASK) { | ||||||
| @@ -659,7 +659,7 @@ | |||||||
|   |   | ||||||
|  #define	IP6_MF		0x0001 |  #define	IP6_MF		0x0001 | ||||||
|  #define	IP6_OFFSET	0xFFF8 |  #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 | ||||||
|  #endif |  #endif | ||||||
| @@ -670,7 +670,7 @@ | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static inline void ipv6_addr_set(struct in6_addr *addr,  |  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 *a1 = addr1->s6_addr32; | ||||||
|  	const __be32 *a2 = addr2->s6_addr32; |  	const __be32 *a2 = addr2->s6_addr32; | ||||||
|  	unsigned int pdw, pbi; |  	unsigned int pdw, pbi; | ||||||
| @@ -679,7 +679,7 @@ | |||||||
|   |   | ||||||
|  	/* check complete u32 in prefix */ |  	/* check complete u32 in prefix */ | ||||||
|  	pdw = prefixlen >> 5; |  	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 */ |  	/* check incomplete u32 in prefix */ | ||||||
|  	pbi = prefixlen & 0x1f; |  	pbi = prefixlen & 0x1f; | ||||||
| @@ -690,7 +690,7 @@ | |||||||
|  		return false; |  		return false; | ||||||
|   |   | ||||||
|  	return true; |  	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) |  static inline int __ipv6_addr_diff32(const void *token1, const void *token2, int addrlen) | ||||||
|  { |  { | ||||||
| @@ -706,7 +706,7 @@ | |||||||
|  		if (xb) |  		if (xb) | ||||||
|  			return i * 32 + 31 - __fls(ntohl(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, |  static inline void ip6_flow_hdr(struct ipv6hdr *hdr, unsigned int tclass, | ||||||
|  				__be32 flowlabel) |  				__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. |   * 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) |  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->shared_hcd->state = HC_STATE_RUNNING; | ||||||
|  	xhci->cmd_ring_state = CMD_RING_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, |  	xhci_dbg_trace(xhci, trace_xhci_dbg_init, | ||||||
|  			"Finished xhci_run for USB3 roothub"); |  			"Finished xhci_run for USB3 roothub"); | ||||||
|  	return 0; |  	return 0; | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/bcma-hcd.c | --- a/drivers/usb/host/bcma-hcd.c | ||||||
| +++ b/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; |  	usb_dev->core = dev; | ||||||
|   |   | ||||||
|  	if (dev->dev.of_node) |  	if (dev->dev.of_node) | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/drivers/mtd/bcm47xxpart.c | --- a/drivers/mtd/bcm47xxpart.c | ||||||
| +++ b/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 last_trx_part = -1; | ||||||
|  	int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; |  	int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, }; | ||||||
|  	int err; |  	int err; | ||||||
| @@ -8,7 +8,7 @@ | |||||||
|   |   | ||||||
|  	/* |  	/* | ||||||
|  	 * Some really old flashes (like AT45DB*) had smaller erasesize-s, but |  	 * 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) { |  		if (buf[0] == NVRAM_HEADER) { | ||||||
|  			bcm47xxpart_add_part(&parts[curr_part++], "nvram", |  			bcm47xxpart_add_part(&parts[curr_part++], "nvram", | ||||||
|  					     master->size - blocksize, 0); |  					     master->size - blocksize, 0); | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c | --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c | ||||||
| +++ b/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 */ |  #endif /* CONFIG_BCM63XX_CPU_6328 */ | ||||||
|   |   | ||||||
|  /* |  /* | ||||||
| @@ -2452,6 +2497,7 @@ | @@ -2452,6 +2497,7 @@ static const struct board_info __initcon | ||||||
|  	&board_A4001N1, |  	&board_A4001N1, | ||||||
|  	&board_dsl_274xb_f1, |  	&board_dsl_274xb_f1, | ||||||
|  	&board_FAST2704V2, |  	&board_FAST2704V2, | ||||||
| @@ -60,7 +60,7 @@ | |||||||
|  #endif |  #endif | ||||||
|  #ifdef CONFIG_BCM63XX_CPU_6338 |  #ifdef CONFIG_BCM63XX_CPU_6338 | ||||||
|  	&board_96338gw, |  	&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-5381u", .data = &board_AR5381u, }, | ||||||
|  	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, }, |  	{ .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, }, | ||||||
|  	{ .compatible = "d-link,dsl-274xb-f", .data = &board_dsl_274xb_f1, }, |  	{ .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 | --- a/net/packet/af_packet.c | ||||||
| +++ b/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) |  static bool ll_header_truncated(const struct net_device *dev, int len) | ||||||
|  { |  { | ||||||
|  	/* net device doesn't like empty head */ |  	/* 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 | --- a/drivers/net/usb/qmi_wwan.c | ||||||
| +++ b/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(0x05c6, 0x9245)},	/* Samsung Gobi 2000 Modem device (VL176) */ | ||||||
|  	{QMI_GOBI_DEVICE(0x03f0, 0x251d)},	/* HP Gobi 2000 Modem device (VP412) */ |  	{QMI_GOBI_DEVICE(0x03f0, 0x251d)},	/* HP Gobi 2000 Modem device (VP412) */ | ||||||
|  	{QMI_GOBI_DEVICE(0x05c6, 0x9215)},	/* Acer Gobi 2000 Modem device (VP413) */ |  	{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, 0x9265)},	/* Asus Gobi 2000 Modem device (VR305) */ | ||||||
|  	{QMI_GOBI_DEVICE(0x05c6, 0x9235)},	/* Top Global Gobi 2000 Modem device (VR306) */ |  	{QMI_GOBI_DEVICE(0x05c6, 0x9235)},	/* Top Global Gobi 2000 Modem device (VR306) */ | ||||||
|  	{QMI_GOBI_DEVICE(0x05c6, 0x9275)},	/* iRex Technologies Gobi 2000 Modem device (VR307) */ |  	{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); |  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 |  	/* Workaround to enable dynamic IDs.  This disables usbnet | ||||||
|  	 * blacklisting functionality.  Which, if required, can be |  	 * 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; |  		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 | --- a/drivers/mtd/bcm47xxpart.c | ||||||
| +++ b/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; |  	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, |  static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master, | ||||||
|  						  size_t offset) |  						  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 */ |  		/* TRX */ | ||||||
|  		if (buf[0x000 / 4] == TRX_MAGIC) { |  		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) { |  			if (BCM47XXPART_MAX_PARTS - curr_part < 4) { | ||||||
|  				pr_warn("Not enough partitions left to register trx, scanning stopped!\n"); |  				pr_warn("Not enough partitions left to register trx, scanning stopped!\n"); | ||||||
|  				break; |  				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; |  			i = 0; | ||||||
|  			/* We have LZMA loader if offset[2] points to sth */ |  			/* We have LZMA loader if offset[2] points to sth */ | ||||||
|  			if (trx->offset[2]) { |  			if (trx->offset[2]) { | ||||||
| @@ -82,7 +82,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> | |||||||
|  				i++; |  				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]) { |  			if (trx->offset[i]) { | ||||||
|  				const char *name; |  				const char *name; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> | |||||||
|  #define PACKET_FANOUT_LB		1 |  #define PACKET_FANOUT_LB		1 | ||||||
| --- a/net/packet/af_packet.c | --- a/net/packet/af_packet.c | ||||||
| +++ b/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 sock *sk; | ||||||
|  	struct sockaddr_pkt *spkt; |  	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 |  	 *	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; |  	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 |  	 *	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. |  	 *	so that this procedure is noop. | ||||||
|  	 */ |  	 */ | ||||||
|   |   | ||||||
| @@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> | |||||||
|  		goto out; |  		goto out; | ||||||
|   |   | ||||||
|  	if (!net_eq(dev_net(dev), sock_net(sk))) |  	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; |  	int skb_len = skb->len; | ||||||
|  	unsigned int snaplen, res; |  	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))) |  	if (!net_eq(dev_net(dev), sock_net(sk))) | ||||||
|  		goto drop; |  		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.h2)) != 32); | ||||||
|  	BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48); |  	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))) |  	if (!net_eq(dev_net(dev), sock_net(sk))) | ||||||
|  		goto drop; |  		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); |  	spin_lock_init(&po->bind_lock); | ||||||
|  	mutex_init(&po->pg_vec_lock); |  	mutex_init(&po->pg_vec_lock); | ||||||
|  	po->prot_hook.func = packet_rcv; |  	po->prot_hook.func = packet_rcv; | ||||||
| @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> | |||||||
|   |   | ||||||
|  	if (sock->type == SOCK_PACKET) |  	if (sock->type == SOCK_PACKET) | ||||||
|  		po->prot_hook.func = packet_rcv_spkt; |  		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; |  		po->xmit = val ? packet_direct_xmit : dev_queue_xmit; | ||||||
|  		return 0; |  		return 0; | ||||||
|  	} |  	} | ||||||
| @@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org> | |||||||
|  	default: |  	default: | ||||||
|  		return -ENOPROTOOPT; |  		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: |  	case PACKET_VNET_HDR: | ||||||
|  		val = po->has_vnet_hdr; |  		val = po->has_vnet_hdr; | ||||||
|  		break; |  		break; | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/net/netlink/af_netlink.c | --- a/net/netlink/af_netlink.c | ||||||
| +++ b/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) |  static struct sk_buff *netlink_trim(struct sk_buff *skb, gfp_t allocation) | ||||||
|  { |  { | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ | |||||||
|  { |  { | ||||||
| --- a/include/net/sch_generic.h | --- a/include/net/sch_generic.h | ||||||
| +++ b/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 noop_qdisc_ops; | ||||||
|  extern struct Qdisc_ops pfifo_fast_ops; |  extern struct Qdisc_ops pfifo_fast_ops; | ||||||
|  extern struct Qdisc_ops mq_qdisc_ops; |  extern struct Qdisc_ops mq_qdisc_ops; | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/net/sched/sch_api.c | --- a/net/sched/sch_api.c | ||||||
| +++ b/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; |  		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 | --- a/drivers/net/ethernet/Kconfig | ||||||
| +++ b/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" |  	tristate "Lantiq SoC ETOP driver" | ||||||
|  	depends on SOC_TYPE_XWAY |  	depends on SOC_TYPE_XWAY | ||||||
|  	---help--- |  	---help--- | ||||||
| @@ -33,7 +33,7 @@ Subject: [PATCH 25/36] NET: MIPS: lantiq: adds xrx200-net | |||||||
|  source "drivers/net/ethernet/mellanox/Kconfig" |  source "drivers/net/ethernet/mellanox/Kconfig" | ||||||
| --- a/drivers/net/ethernet/Makefile | --- a/drivers/net/ethernet/Makefile | ||||||
| +++ b/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_JME) += jme.o | ||||||
|  obj-$(CONFIG_KORINA) += korina.o |  obj-$(CONFIG_KORINA) += korina.o | ||||||
|  obj-$(CONFIG_LANTIQ_ETOP) += lantiq_etop.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 | --- a/arch/mips/lantiq/clk.c | ||||||
| +++ b/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) | +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_AUTHOR "Sarah Sharp" | ||||||
|  #define DRIVER_DESC "'eXtensible' Host Controller (xHC) Driver" |  #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"); |  			"// Set the interrupt modulation register"); | ||||||
|  	temp = readl(&xhci->ir_set->irq_control); |  	temp = readl(&xhci->ir_set->irq_control); | ||||||
|  	temp &= ~ER_IRQ_INTERVAL_MASK; |  	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); |  	writel(temp, &xhci->ir_set->irq_control); | ||||||
|   |   | ||||||
|  	/* Set the HCD state before we enable the irqs */ |  	/* 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); |  	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", |  	xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n", | ||||||
|  			(unsigned int) ep->desc.bEndpointAddress, |  			(unsigned int) ep->desc.bEndpointAddress, | ||||||
|  			udev->slot_id, |  			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; |  		return -ENOMEM; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens