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_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; | ||||
|  	} | ||||
|   | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens