kernel: bump 4.19 to 4.19.101
Refreshed all patches. Fixes: - CVE-2019-14896 - CVE-2019-14897 Remove upstreamed: - 023-0007-crypto-crypto4xx-Fix-wrong-ppc4xx_trng_probe-ppc4xx_.patch - 950-0202-staging-bcm2835-camera-fix-module-autoloading.patch - 001-4.22-01-MIPS-BCM63XX-drop-unused-and-broken-DSP-platform-dev.patch Compile-tested on: cns3xxx Runtime-tested on: cns3xxx Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
This commit is contained in:
		| @@ -7,10 +7,10 @@ ifdef CONFIG_TESTING_KERNEL | |||||||
| endif | endif | ||||||
|  |  | ||||||
| LINUX_VERSION-4.14 = .169 | LINUX_VERSION-4.14 = .169 | ||||||
| LINUX_VERSION-4.19 = .98 | LINUX_VERSION-4.19 = .101 | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-4.14.169 = d88ea97993c56b1fa0b0a05061bcde476c6be4fc3bb2de8bd97a8f8ff7278249 | LINUX_KERNEL_HASH-4.14.169 = d88ea97993c56b1fa0b0a05061bcde476c6be4fc3bb2de8bd97a8f8ff7278249 | ||||||
| LINUX_KERNEL_HASH-4.19.98 = 91feb13bc22d60d69596ab1d01dfecbec13ef70f00c89a483e0733af94dd2937 | LINUX_KERNEL_HASH-4.19.101 = be26156abdb38ac0576a34a235ef456bb8ca67fbbe56fc6649b8d069159f8bc4 | ||||||
|  |  | ||||||
| remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1)))) | ||||||
| sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1))))))) | ||||||
|   | |||||||
| @@ -1,39 +0,0 @@ | |||||||
| From 6e88098ca43a3d80ae86908f7badba683c8a0d84 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Corentin Labbe <clabbe@baylibre.com> |  | ||||||
| Date: Wed, 23 Jan 2019 11:24:18 +0000 |  | ||||||
| Subject: [PATCH 07/15] crypto: crypto4xx - Fix wrong |  | ||||||
|  ppc4xx_trng_probe()/ppc4xx_trng_remove() arguments |  | ||||||
|  |  | ||||||
| When building without CONFIG_HW_RANDOM_PPC4XX, I hit the following build failure: |  | ||||||
| drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_probe': |  | ||||||
| drivers/crypto/amcc/crypto4xx_core.c:1407:20: error: passing argument 1 of 'ppc4xx_trng_probe' from incompatible pointer type [-Werror=incompatible-pointer-types] |  | ||||||
| In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0: |  | ||||||
| drivers/crypto/amcc/crypto4xx_trng.h:28:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *' |  | ||||||
| drivers/crypto/amcc/crypto4xx_core.c: In function 'crypto4xx_remove': |  | ||||||
| drivers/crypto/amcc/crypto4xx_core.c:1434:21: error: passing argument 1 of 'ppc4xx_trng_remove' from incompatible pointer type [-Werror=incompatible-pointer-types] |  | ||||||
| In file included from drivers/crypto/amcc/crypto4xx_core.c:50:0: |  | ||||||
| drivers/crypto/amcc/crypto4xx_trng.h:30:20: note: expected 'struct crypto4xx_device *' but argument is of type 'struct crypto4xx_core_device *' |  | ||||||
|  |  | ||||||
| This patch fix the needed argument of ppc4xx_trng_probe()/ppc4xx_trng_remove() in that case. |  | ||||||
|  |  | ||||||
| Fixes: 5343e674f32f ("crypto4xx: integrate ppc4xx-rng into crypto4xx") |  | ||||||
| Signed-off-by: Corentin Labbe <clabbe@baylibre.com> |  | ||||||
| Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> |  | ||||||
| --- |  | ||||||
|  drivers/crypto/amcc/crypto4xx_trng.h | 4 ++-- |  | ||||||
|  1 file changed, 2 insertions(+), 2 deletions(-) |  | ||||||
|  |  | ||||||
| --- a/drivers/crypto/amcc/crypto4xx_trng.h |  | ||||||
| +++ b/drivers/crypto/amcc/crypto4xx_trng.h |  | ||||||
| @@ -26,9 +26,9 @@ void ppc4xx_trng_probe(struct crypto4xx_ |  | ||||||
|  void ppc4xx_trng_remove(struct crypto4xx_core_device *core_dev); |  | ||||||
|  #else |  | ||||||
|  static inline void ppc4xx_trng_probe( |  | ||||||
| -	struct crypto4xx_device *dev __maybe_unused) { } |  | ||||||
| +	struct crypto4xx_core_device *dev __maybe_unused) { } |  | ||||||
|  static inline void ppc4xx_trng_remove( |  | ||||||
| -	struct crypto4xx_device *dev __maybe_unused) { } |  | ||||||
| +	struct crypto4xx_core_device *dev __maybe_unused) { } |  | ||||||
|  #endif |  | ||||||
|   |  | ||||||
|  #endif |  | ||||||
| @@ -728,7 +728,7 @@ | |||||||
|  EXPORT_SYMBOL(xfrm_parse_spi); |  EXPORT_SYMBOL(xfrm_parse_spi); | ||||||
| --- a/net/ipv4/tcp_input.c | --- a/net/ipv4/tcp_input.c | ||||||
| +++ b/net/ipv4/tcp_input.c | +++ b/net/ipv4/tcp_input.c | ||||||
| @@ -3895,14 +3895,16 @@ static bool tcp_parse_aligned_timestamp( | @@ -3896,14 +3896,16 @@ static bool tcp_parse_aligned_timestamp( | ||||||
|  { |  { | ||||||
|  	const __be32 *ptr = (const __be32 *)(th + 1); |  	const __be32 *ptr = (const __be32 *)(th + 1); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com> | |||||||
|  |  | ||||||
| --- a/drivers/mtd/spi-nor/spi-nor.c | --- a/drivers/mtd/spi-nor/spi-nor.c | ||||||
| +++ b/drivers/mtd/spi-nor/spi-nor.c | +++ b/drivers/mtd/spi-nor/spi-nor.c | ||||||
| @@ -1297,6 +1297,18 @@ static const struct flash_info *spi_nor_ | @@ -1301,6 +1301,18 @@ static const struct flash_info *spi_nor_ | ||||||
|  	} |  	} | ||||||
|  	dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", |  	dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", | ||||||
|  		id[0], id[1], id[2]); |  		id[0], id[1], id[2]); | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/usb/lan78xx.c | --- a/drivers/net/usb/lan78xx.c | ||||||
| +++ b/drivers/net/usb/lan78xx.c | +++ b/drivers/net/usb/lan78xx.c | ||||||
| @@ -2476,6 +2476,11 @@ static int lan78xx_reset(struct lan78xx_ | @@ -2477,6 +2477,11 @@ static int lan78xx_reset(struct lan78xx_ | ||||||
|  	int ret = 0; |  	int ret = 0; | ||||||
|  	unsigned long timeout; |  	unsigned long timeout; | ||||||
|  	u8 sig; |  	u8 sig; | ||||||
| @@ -26,7 +26,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|   |   | ||||||
|  	ret = lan78xx_read_reg(dev, HW_CFG, &buf); |  	ret = lan78xx_read_reg(dev, HW_CFG, &buf); | ||||||
|  	buf |= HW_CFG_LRST_; |  	buf |= HW_CFG_LRST_; | ||||||
| @@ -2529,6 +2534,9 @@ static int lan78xx_reset(struct lan78xx_ | @@ -2530,6 +2535,9 @@ static int lan78xx_reset(struct lan78xx_ | ||||||
|   |   | ||||||
|  	ret = lan78xx_read_reg(dev, HW_CFG, &buf); |  	ret = lan78xx_read_reg(dev, HW_CFG, &buf); | ||||||
|  	buf |= HW_CFG_MEF_; |  	buf |= HW_CFG_MEF_; | ||||||
| @@ -36,7 +36,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  	ret = lan78xx_write_reg(dev, HW_CFG, buf); |  	ret = lan78xx_write_reg(dev, HW_CFG, buf); | ||||||
|   |   | ||||||
|  	ret = lan78xx_read_reg(dev, USB_CFG0, &buf); |  	ret = lan78xx_read_reg(dev, USB_CFG0, &buf); | ||||||
| @@ -2584,6 +2592,9 @@ static int lan78xx_reset(struct lan78xx_ | @@ -2585,6 +2593,9 @@ static int lan78xx_reset(struct lan78xx_ | ||||||
|  			buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_; |  			buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_; | ||||||
|  		} |  		} | ||||||
|  	} |  	} | ||||||
|   | |||||||
| @@ -2119,17 +2119,6 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
| +		       <&cpu3>, "clock-frequency:0"; | +		       <&cpu3>, "clock-frequency:0"; | ||||||
| +	}; | +	}; | ||||||
| +}; | +}; | ||||||
| --- a/arch/arm/boot/dts/bcm2835-rpi.dtsi |  | ||||||
| +++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi |  | ||||||
| @@ -32,7 +32,7 @@ |  | ||||||
|   |  | ||||||
|  		mailbox@7e00b840 { |  | ||||||
|  			compatible = "brcm,bcm2835-vchiq"; |  | ||||||
| -			reg = <0x7e00b840 0xf>; |  | ||||||
| +			reg = <0x7e00b840 0x3c>; |  | ||||||
|  			interrupts = <0 2>; |  | ||||||
|  		}; |  | ||||||
|  	}; |  | ||||||
| --- a/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | --- a/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | ||||||
| +++ b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | +++ b/arch/arm/boot/dts/bcm283x-rpi-lan7515.dtsi | ||||||
| @@ -21,7 +21,24 @@ | @@ -21,7 +21,24 @@ | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/usb/lan78xx.c | --- a/drivers/net/usb/lan78xx.c | ||||||
| +++ b/drivers/net/usb/lan78xx.c | +++ b/drivers/net/usb/lan78xx.c | ||||||
| @@ -2658,6 +2658,22 @@ static int lan78xx_open(struct net_devic | @@ -2659,6 +2659,22 @@ static int lan78xx_open(struct net_devic | ||||||
|   |   | ||||||
|  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully"); |  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully"); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -21,7 +21,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/usb/lan78xx.c | --- a/drivers/net/usb/lan78xx.c | ||||||
| +++ b/drivers/net/usb/lan78xx.c | +++ b/drivers/net/usb/lan78xx.c | ||||||
| @@ -439,6 +439,15 @@ static int msg_level = -1; | @@ -440,6 +440,15 @@ static int msg_level = -1; | ||||||
|  module_param(msg_level, int, 0); |  module_param(msg_level, int, 0); | ||||||
|  MODULE_PARM_DESC(msg_level, "Override default message level"); |  MODULE_PARM_DESC(msg_level, "Override default message level"); | ||||||
|   |   | ||||||
| @@ -37,7 +37,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org> | |||||||
|  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) |  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) | ||||||
|  { |  { | ||||||
|  	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL); |  	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL); | ||||||
| @@ -3009,8 +3018,14 @@ static int lan78xx_bind(struct lan78xx_n | @@ -3010,8 +3019,14 @@ static int lan78xx_bind(struct lan78xx_n | ||||||
|  	if (DEFAULT_RX_CSUM_ENABLE) |  	if (DEFAULT_RX_CSUM_ENABLE) | ||||||
|  		dev->net->features |= NETIF_F_RXCSUM; |  		dev->net->features |= NETIF_F_RXCSUM; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/usb/lan78xx.c | --- a/drivers/net/usb/lan78xx.c | ||||||
| +++ b/drivers/net/usb/lan78xx.c | +++ b/drivers/net/usb/lan78xx.c | ||||||
| @@ -2190,6 +2190,22 @@ static int lan78xx_phy_init(struct lan78 | @@ -2191,6 +2191,22 @@ static int lan78xx_phy_init(struct lan78 | ||||||
|  	mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control); |  	mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control); | ||||||
|  	phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv); |  	phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv); | ||||||
|   |   | ||||||
| @@ -39,7 +39,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  	if (phydev->mdio.dev.of_node) { |  	if (phydev->mdio.dev.of_node) { | ||||||
|  		u32 reg; |  		u32 reg; | ||||||
|  		int len; |  		int len; | ||||||
| @@ -2667,22 +2683,6 @@ static int lan78xx_open(struct net_devic | @@ -2668,22 +2684,6 @@ static int lan78xx_open(struct net_devic | ||||||
|   |   | ||||||
|  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully"); |  	netif_dbg(dev, ifup, dev->net, "phy initialised successfully"); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,24 +0,0 @@ | |||||||
| From 8b6e9f2a951b38becf5b8a1e99ba1993f7751aac Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Stefan Wahren <stefan.wahren@i2se.com> |  | ||||||
| Date: Sat, 20 Oct 2018 19:26:18 +0200 |  | ||||||
| Subject: [PATCH] staging: bcm2835-camera: fix module autoloading |  | ||||||
|  |  | ||||||
| In order to make the module bcm2835-camera load automatically, we need to |  | ||||||
| add a module alias. |  | ||||||
|  |  | ||||||
| Fixes: 4bebb0312ea9 ("staging/bcm2835-camera: Set ourselves up as a platform driver.") |  | ||||||
| Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> |  | ||||||
| --- |  | ||||||
|  drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c | 1 + |  | ||||||
|  1 file changed, 1 insertion(+) |  | ||||||
|  |  | ||||||
| --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c |  | ||||||
| +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c |  | ||||||
| @@ -47,6 +47,7 @@ MODULE_DESCRIPTION("Broadcom 2835 MMAL v |  | ||||||
|  MODULE_AUTHOR("Vincent Sanders"); |  | ||||||
|  MODULE_LICENSE("GPL"); |  | ||||||
|  MODULE_VERSION(BM2835_MMAL_VERSION); |  | ||||||
| +MODULE_ALIAS("platform:bcm2835-camera"); |  | ||||||
|   |  | ||||||
|  int bcm2835_v4l2_debug; |  | ||||||
|  module_param_named(debug, bcm2835_v4l2_debug, int, 0644); |  | ||||||
| @@ -26,7 +26,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> | |||||||
|  int bcm2835_v4l2_debug; |  int bcm2835_v4l2_debug; | ||||||
|  module_param_named(debug, bcm2835_v4l2_debug, int, 0644); |  module_param_named(debug, bcm2835_v4l2_debug, int, 0644); | ||||||
|  MODULE_PARM_DESC(bcm2835_v4l2_debug, "Debug level 0-2"); |  MODULE_PARM_DESC(bcm2835_v4l2_debug, "Debug level 0-2"); | ||||||
| @@ -1980,3 +1974,9 @@ static struct platform_driver bcm2835_ca | @@ -1989,3 +1983,9 @@ static struct platform_driver bcm2835_ca | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|  module_platform_driver(bcm2835_camera_driver) |  module_platform_driver(bcm2835_camera_driver) | ||||||
|   | |||||||
| @@ -98,7 +98,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> | |||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
|   |   | ||||||
| @@ -1880,21 +1891,29 @@ static int bcm2835_mmal_probe(struct pla | @@ -1886,21 +1897,29 @@ static int bcm2835_mmal_probe(struct pla | ||||||
|  		snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name), |  		snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name), | ||||||
|  			 "%s", BM2835_MMAL_MODULE_NAME); |  			 "%s", BM2835_MMAL_MODULE_NAME); | ||||||
|  		ret = v4l2_device_register(NULL, &dev->v4l2_dev); |  		ret = v4l2_device_register(NULL, &dev->v4l2_dev); | ||||||
| @@ -132,7 +132,7 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> | |||||||
|  		/* initialize queue */ |  		/* initialize queue */ | ||||||
|  		q = &dev->capture.vb_vidq; |  		q = &dev->capture.vb_vidq; | ||||||
|  		memset(q, 0, sizeof(*q)); |  		memset(q, 0, sizeof(*q)); | ||||||
| @@ -1912,16 +1931,19 @@ static int bcm2835_mmal_probe(struct pla | @@ -1918,16 +1937,19 @@ static int bcm2835_mmal_probe(struct pla | ||||||
|   |   | ||||||
|  		/* initialise video devices */ |  		/* initialise video devices */ | ||||||
|  		ret = bm2835_mmal_init_device(dev, &dev->vdev); |  		ret = bm2835_mmal_init_device(dev, &dev->vdev); | ||||||
| @@ -155,12 +155,12 @@ Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> | |||||||
|  			goto unreg_dev; |  			goto unreg_dev; | ||||||
|  		} |  		} | ||||||
|   |   | ||||||
| @@ -1945,8 +1967,6 @@ cleanup_gdev: | @@ -1951,8 +1973,6 @@ cleanup_gdev: | ||||||
|  		bcm2835_cleanup_instance(gdev[i]); |  		bcm2835_cleanup_instance(gdev[i]); | ||||||
|  		gdev[i] = NULL; |  		gdev[i] = NULL; | ||||||
|  	} |  	} | ||||||
| -	pr_info("%s: error %d while loading driver\n", | -	pr_info("%s: error %d while loading driver\n", | ||||||
| -		BM2835_MMAL_MODULE_NAME, ret); | -		BM2835_MMAL_MODULE_NAME, ret); | ||||||
|   |   | ||||||
|  	return ret; |  cleanup_mmal: | ||||||
|  } |  	vchiq_mmal_finalise(instance); | ||||||
|   | |||||||
| @@ -1,41 +0,0 @@ | |||||||
| From b0ebcf556b543b0b509ad071584ca6b41076a2da Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Stefan Wahren <stefan.wahren@i2se.com> |  | ||||||
| Date: Mon, 22 Oct 2018 11:09:18 +0200 |  | ||||||
| Subject: [PATCH] staging: bcm2835: Don't probe if no camera is |  | ||||||
|  detected |  | ||||||
|  |  | ||||||
| It is a waste of resources to load the camera driver in case there isn't |  | ||||||
| a camera actually connected to the Raspberry Pi. This solution also |  | ||||||
| avoids a NULL ptr dereference of mmal instance on driver unload. |  | ||||||
|  |  | ||||||
| Fixes: 7b3ad5abf027 ("staging: Import the BCM2835 MMAL-based V4L2 camera driver.") |  | ||||||
| Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com> |  | ||||||
| --- |  | ||||||
|  .../vc04_services/bcm2835-camera/bcm2835-camera.c        | 9 +++++++++ |  | ||||||
|  1 file changed, 9 insertions(+) |  | ||||||
|  |  | ||||||
| --- a/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c |  | ||||||
| +++ b/drivers/staging/vc04_services/bcm2835-camera/bcm2835-camera.c |  | ||||||
| @@ -1860,6 +1860,12 @@ static int bcm2835_mmal_probe(struct pla |  | ||||||
|  	num_cameras = get_num_cameras(instance, |  | ||||||
|  				      resolutions, |  | ||||||
|  				      MAX_BCM2835_CAMERAS); |  | ||||||
| + |  | ||||||
| +	if (num_cameras < 1) { |  | ||||||
| +		ret = -ENODEV; |  | ||||||
| +		goto cleanup_mmal; |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
|  	if (num_cameras > MAX_BCM2835_CAMERAS) |  | ||||||
|  		num_cameras = MAX_BCM2835_CAMERAS; |  | ||||||
|   |  | ||||||
| @@ -1968,6 +1974,9 @@ cleanup_gdev: |  | ||||||
|  		gdev[i] = NULL; |  | ||||||
|  	} |  | ||||||
|   |  | ||||||
| +cleanup_mmal: |  | ||||||
| +	vchiq_mmal_finalise(instance); |  | ||||||
| + |  | ||||||
|  	return ret; |  | ||||||
|  } |  | ||||||
|   |  | ||||||
| @@ -16,7 +16,7 @@ See: https://github.com/raspberrypi/linux/issues/2447 | |||||||
|  |  | ||||||
| --- a/drivers/net/usb/lan78xx.c | --- a/drivers/net/usb/lan78xx.c | ||||||
| +++ b/drivers/net/usb/lan78xx.c | +++ b/drivers/net/usb/lan78xx.c | ||||||
| @@ -448,6 +448,11 @@ static bool enable_tso; | @@ -449,6 +449,11 @@ static bool enable_tso; | ||||||
|  module_param(enable_tso, bool, 0644); |  module_param(enable_tso, bool, 0644); | ||||||
|  MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload"); |  MODULE_PARM_DESC(enable_tso, "Enables TCP segmentation offload"); | ||||||
|   |   | ||||||
| @@ -28,7 +28,7 @@ See: https://github.com/raspberrypi/linux/issues/2447 | |||||||
|  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) |  static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) | ||||||
|  { |  { | ||||||
|  	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL); |  	u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL); | ||||||
| @@ -3823,7 +3828,12 @@ static int lan78xx_probe(struct usb_inte | @@ -3838,7 +3843,12 @@ static int lan78xx_probe(struct usb_inte | ||||||
|  	dev->pipe_intr = usb_rcvintpipe(dev->udev, |  	dev->pipe_intr = usb_rcvintpipe(dev->udev, | ||||||
|  					dev->ep_intr->desc.bEndpointAddress & |  					dev->ep_intr->desc.bEndpointAddress & | ||||||
|  					USB_ENDPOINT_NUMBER_MASK); |  					USB_ENDPOINT_NUMBER_MASK); | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/usb/lan78xx.c | --- a/drivers/net/usb/lan78xx.c | ||||||
| +++ b/drivers/net/usb/lan78xx.c | +++ b/drivers/net/usb/lan78xx.c | ||||||
| @@ -2195,7 +2195,7 @@ static int lan78xx_phy_init(struct lan78 | @@ -2196,7 +2196,7 @@ static int lan78xx_phy_init(struct lan78 | ||||||
|  	mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control); |  	mii_adv = (u32)mii_advertise_flowctrl(dev->fc_request_control); | ||||||
|  	phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv); |  	phydev->advertising |= mii_adv_to_ethtool_adv_t(mii_adv); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ in both dwc_otg and in ipv6 processing. | |||||||
|  |  | ||||||
| --- a/drivers/net/usb/lan78xx.c | --- a/drivers/net/usb/lan78xx.c | ||||||
| +++ b/drivers/net/usb/lan78xx.c | +++ b/drivers/net/usb/lan78xx.c | ||||||
| @@ -3256,7 +3256,7 @@ static int rx_submit(struct lan78xx_net | @@ -3257,7 +3257,7 @@ static int rx_submit(struct lan78xx_net | ||||||
|  	size_t size = dev->rx_urb_size; |  	size_t size = dev->rx_urb_size; | ||||||
|  	int ret = 0; |  	int ret = 0; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|  #define USB_VENDOR_ID_BELKIN		0x050d |  #define USB_VENDOR_ID_BELKIN		0x050d | ||||||
|  #define USB_DEVICE_ID_FLIP_KVM		0x3201 |  #define USB_DEVICE_ID_FLIP_KVM		0x3201 | ||||||
|   |   | ||||||
| @@ -1193,6 +1196,9 @@ | @@ -1196,6 +1199,9 @@ | ||||||
|  #define USB_VENDOR_ID_XAT	0x2505 |  #define USB_VENDOR_ID_XAT	0x2505 | ||||||
|  #define USB_DEVICE_ID_XAT_CSR	0x0220 |  #define USB_DEVICE_ID_XAT_CSR	0x0220 | ||||||
|   |   | ||||||
| @@ -58,6 +58,6 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|  	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, |  	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, | ||||||
|  	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, |  	{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, | ||||||
| +	{ HID_USB_DEVICE(USB_VENDOR_ID_XENTA, USB_DEVICE_ID_AIRMOUSE_MX3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, | +	{ HID_USB_DEVICE(USB_VENDOR_ID_XENTA, USB_DEVICE_ID_AIRMOUSE_MX3), HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE }, | ||||||
|  |  	{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT }, | ||||||
|   |   | ||||||
|  	{ 0 } |  	{ 0 } | ||||||
|  }; |  | ||||||
|   | |||||||
| @@ -78,7 +78,7 @@ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | |||||||
|  } |  } | ||||||
| --- a/drivers/opp/core.c | --- a/drivers/opp/core.c | ||||||
| +++ b/drivers/opp/core.c | +++ b/drivers/opp/core.c | ||||||
| @@ -881,11 +881,9 @@ void _opp_free(struct dev_pm_opp *opp) | @@ -884,11 +884,9 @@ void _opp_free(struct dev_pm_opp *opp) | ||||||
|  	kfree(opp); |  	kfree(opp); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -92,7 +92,7 @@ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | |||||||
|  	/* |  	/* | ||||||
|  	 * Notify the changes in the availability of the operable |  	 * Notify the changes in the availability of the operable | ||||||
|  	 * frequency/voltage list. |  	 * frequency/voltage list. | ||||||
| @@ -894,7 +892,22 @@ static void _opp_kref_release(struct kre | @@ -897,7 +895,22 @@ static void _opp_kref_release(struct kre | ||||||
|  	opp_debug_remove_one(opp); |  	opp_debug_remove_one(opp); | ||||||
|  	list_del(&opp->node); |  	list_del(&opp->node); | ||||||
|  	kfree(opp); |  	kfree(opp); | ||||||
| @@ -115,7 +115,7 @@ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | |||||||
|  	mutex_unlock(&opp_table->lock); |  	mutex_unlock(&opp_table->lock); | ||||||
|  	dev_pm_opp_put_opp_table(opp_table); |  	dev_pm_opp_put_opp_table(opp_table); | ||||||
|  } |  } | ||||||
| @@ -906,10 +919,16 @@ void dev_pm_opp_get(struct dev_pm_opp *o | @@ -909,10 +922,16 @@ void dev_pm_opp_get(struct dev_pm_opp *o | ||||||
|   |   | ||||||
|  void dev_pm_opp_put(struct dev_pm_opp *opp) |  void dev_pm_opp_put(struct dev_pm_opp *opp) | ||||||
|  { |  { | ||||||
| @@ -133,7 +133,7 @@ Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> | |||||||
|  /** |  /** | ||||||
|   * dev_pm_opp_remove()  - Remove an OPP from OPP table |   * dev_pm_opp_remove()  - Remove an OPP from OPP table | ||||||
|   * @dev:	device for which we do this operation |   * @dev:	device for which we do this operation | ||||||
| @@ -949,6 +968,40 @@ void dev_pm_opp_remove(struct device *de | @@ -952,6 +971,40 @@ void dev_pm_opp_remove(struct device *de | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(dev_pm_opp_remove); |  EXPORT_SYMBOL_GPL(dev_pm_opp_remove); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ Subject: [PATCH 210/210] b44: register adm switch | |||||||
|   |   | ||||||
|  #include <linux/uaccess.h> |  #include <linux/uaccess.h> | ||||||
|  #include <asm/io.h> |  #include <asm/io.h> | ||||||
| @@ -2246,6 +2248,69 @@ static void b44_adjust_link(struct net_d | @@ -2249,6 +2251,69 @@ static void b44_adjust_link(struct net_d | ||||||
|  	} |  	} | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -89,7 +89,7 @@ Subject: [PATCH 210/210] b44: register adm switch | |||||||
|  static int b44_register_phy_one(struct b44 *bp) |  static int b44_register_phy_one(struct b44 *bp) | ||||||
|  { |  { | ||||||
|  	struct mii_bus *mii_bus; |  	struct mii_bus *mii_bus; | ||||||
| @@ -2281,6 +2346,9 @@ static int b44_register_phy_one(struct b | @@ -2284,6 +2349,9 @@ static int b44_register_phy_one(struct b | ||||||
|  	if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) && |  	if (!mdiobus_is_registered_device(bp->mii_bus, bp->phy_addr) && | ||||||
|  	    (sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) { |  	    (sprom->boardflags_lo & (B44_BOARDFLAG_ROBO | B44_BOARDFLAG_ADM))) { | ||||||
|   |   | ||||||
| @@ -99,7 +99,7 @@ Subject: [PATCH 210/210] b44: register adm switch | |||||||
|  		dev_info(sdev->dev, |  		dev_info(sdev->dev, | ||||||
|  			 "could not find PHY at %i, use fixed one\n", |  			 "could not find PHY at %i, use fixed one\n", | ||||||
|  			 bp->phy_addr); |  			 bp->phy_addr); | ||||||
| @@ -2475,6 +2543,7 @@ static void b44_remove_one(struct ssb_de | @@ -2478,6 +2546,7 @@ static void b44_remove_one(struct ssb_de | ||||||
|  	unregister_netdev(dev); |  	unregister_netdev(dev); | ||||||
|  	if (bp->flags & B44_FLAG_EXTERNAL_PHY) |  	if (bp->flags & B44_FLAG_EXTERNAL_PHY) | ||||||
|  		b44_unregister_phy_one(bp); |  		b44_unregister_phy_one(bp); | ||||||
|   | |||||||
| @@ -43,7 +43,7 @@ | |||||||
|   |   | ||||||
|  	if (bp->flags & B44_FLAG_EXTERNAL_PHY) |  	if (bp->flags & B44_FLAG_EXTERNAL_PHY) | ||||||
|  		return 0; |  		return 0; | ||||||
| @@ -2176,6 +2201,8 @@ static int b44_get_invariants(struct b44 | @@ -2179,6 +2204,8 @@ static int b44_get_invariants(struct b44 | ||||||
|  	 * valid PHY address. */ |  	 * valid PHY address. */ | ||||||
|  	bp->phy_addr &= 0x1F; |  	bp->phy_addr &= 0x1F; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ Signed-off-by: Mathias Adam <m.adam--openwrt@adamis.de> | |||||||
|  |  | ||||||
| --- a/drivers/watchdog/Kconfig | --- a/drivers/watchdog/Kconfig | ||||||
| +++ b/drivers/watchdog/Kconfig | +++ b/drivers/watchdog/Kconfig | ||||||
| @@ -1497,6 +1497,15 @@ config WDT_MTX1 | @@ -1498,6 +1498,15 @@ config WDT_MTX1 | ||||||
|  	  Hardware driver for the MTX-1 boards. This is a watchdog timer that |  	  Hardware driver for the MTX-1 boards. This is a watchdog timer that | ||||||
|  	  will reboot the machine after a 100 seconds timer expired. |  	  will reboot the machine after a 100 seconds timer expired. | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,203 +0,0 @@ | |||||||
| From 51559154375fff4a94bbbc249fdd9248a80827b3 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| Date: Tue, 18 Dec 2018 10:19:02 +0100 |  | ||||||
| Subject: [PATCH] MIPS: BCM63XX: drop unused and broken DSP platform device |  | ||||||
|  |  | ||||||
| Trying to register the DSP platform device results in a null pointer |  | ||||||
| access: |  | ||||||
|  |  | ||||||
| [    0.124184] CPU 0 Unable to handle kernel paging request at virtual address 00000000, epc == 804e305c, ra == 804e6f20 |  | ||||||
| [    0.135208] Oops[#1]: |  | ||||||
| [    0.137514] CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.87 |  | ||||||
| ... |  | ||||||
| [    0.197117] epc   : 804e305c bcm63xx_dsp_register+0x80/0xa4 |  | ||||||
| [    0.202838] ra    : 804e6f20 board_register_devices+0x258/0x390 |  | ||||||
| ... |  | ||||||
|  |  | ||||||
| This happens because it tries to copy the passed platform data over the |  | ||||||
| platform_device's unpopulated platform_data. |  | ||||||
|  |  | ||||||
| Since this code has been broken since its submission, no driver was ever |  | ||||||
| submitted for it, and apparently nobody was using it, just remove it |  | ||||||
| instead of trying to fix it. |  | ||||||
|  |  | ||||||
| Fixes: e7300d04bd08 ("MIPS: BCM63xx: Add support for the Broadcom BCM63xx family of SOCs.") |  | ||||||
| Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> |  | ||||||
| --- |  | ||||||
|  arch/mips/bcm63xx/Makefile                         |  6 +-- |  | ||||||
|  arch/mips/bcm63xx/boards/board_bcm963xx.c          | 20 -------- |  | ||||||
|  arch/mips/bcm63xx/dev-dsp.c                        | 56 ---------------------- |  | ||||||
|  .../include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h     | 14 ------ |  | ||||||
|  .../mips/include/asm/mach-bcm63xx/board_bcm963xx.h |  5 -- |  | ||||||
|  5 files changed, 3 insertions(+), 98 deletions(-) |  | ||||||
|  delete mode 100644 arch/mips/bcm63xx/dev-dsp.c |  | ||||||
|  delete mode 100644 arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h |  | ||||||
|  |  | ||||||
| --- a/arch/mips/bcm63xx/Makefile |  | ||||||
| +++ b/arch/mips/bcm63xx/Makefile |  | ||||||
| @@ -1,8 +1,8 @@ |  | ||||||
|  # SPDX-License-Identifier: GPL-2.0 |  | ||||||
|  obj-y		+= clk.o cpu.o cs.o gpio.o irq.o nvram.o prom.o reset.o \ |  | ||||||
| -		   setup.o timer.o dev-dsp.o dev-enet.o dev-flash.o \ |  | ||||||
| -		   dev-pcmcia.o dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o \ |  | ||||||
| -		   dev-wdt.o dev-usb-usbd.o |  | ||||||
| +		   setup.o timer.o dev-enet.o dev-flash.o dev-pcmcia.o \ |  | ||||||
| +		   dev-rng.o dev-spi.o dev-hsspi.o dev-uart.o dev-wdt.o \ |  | ||||||
| +		   dev-usb-usbd.o |  | ||||||
|  obj-$(CONFIG_EARLY_PRINTK)	+= early_printk.o |  | ||||||
|   |  | ||||||
|  obj-y		+= boards/ |  | ||||||
| --- a/arch/mips/bcm63xx/boards/board_bcm963xx.c |  | ||||||
| +++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c |  | ||||||
| @@ -23,7 +23,6 @@ |  | ||||||
|  #include <bcm63xx_nvram.h> |  | ||||||
|  #include <bcm63xx_dev_pci.h> |  | ||||||
|  #include <bcm63xx_dev_enet.h> |  | ||||||
| -#include <bcm63xx_dev_dsp.h> |  | ||||||
|  #include <bcm63xx_dev_flash.h> |  | ||||||
|  #include <bcm63xx_dev_hsspi.h> |  | ||||||
|  #include <bcm63xx_dev_pcmcia.h> |  | ||||||
| @@ -289,14 +288,6 @@ static struct board_info __initdata boar |  | ||||||
|  	.has_pccard			= 1, |  | ||||||
|  	.has_ehci0			= 1, |  | ||||||
|   |  | ||||||
| -	.has_dsp			= 1, |  | ||||||
| -	.dsp = { |  | ||||||
| -		.gpio_rst		= 6, |  | ||||||
| -		.gpio_int		= 34, |  | ||||||
| -		.cs			= 2, |  | ||||||
| -		.ext_irq		= 2, |  | ||||||
| -	}, |  | ||||||
| - |  | ||||||
|  	.leds = { |  | ||||||
|  		{ |  | ||||||
|  			.name		= "adsl-fail", |  | ||||||
| @@ -401,14 +392,6 @@ static struct board_info __initdata boar |  | ||||||
|   |  | ||||||
|  	.has_ohci0 = 1, |  | ||||||
|   |  | ||||||
| -	.has_dsp			= 1, |  | ||||||
| -	.dsp = { |  | ||||||
| -		.gpio_rst		= 6, |  | ||||||
| -		.gpio_int		= 34, |  | ||||||
| -		.ext_irq		= 2, |  | ||||||
| -		.cs			= 2, |  | ||||||
| -	}, |  | ||||||
| - |  | ||||||
|  	.leds = { |  | ||||||
|  		{ |  | ||||||
|  			.name		= "adsl-fail", |  | ||||||
| @@ -898,9 +881,6 @@ int __init board_register_devices(void) |  | ||||||
|  	if (board.has_usbd) |  | ||||||
|  		bcm63xx_usbd_register(&board.usbd); |  | ||||||
|   |  | ||||||
| -	if (board.has_dsp) |  | ||||||
| -		bcm63xx_dsp_register(&board.dsp); |  | ||||||
| - |  | ||||||
|  	/* Generate MAC address for WLAN and register our SPROM, |  | ||||||
|  	 * do this after registering enet devices |  | ||||||
|  	 */ |  | ||||||
| --- a/arch/mips/bcm63xx/dev-dsp.c |  | ||||||
| +++ /dev/null |  | ||||||
| @@ -1,56 +0,0 @@ |  | ||||||
| -/* |  | ||||||
| - * Broadcom BCM63xx VoIP DSP registration |  | ||||||
| - * |  | ||||||
| - * This file is subject to the terms and conditions of the GNU General Public |  | ||||||
| - * License.  See the file "COPYING" in the main directory of this archive |  | ||||||
| - * for more details. |  | ||||||
| - * |  | ||||||
| - * Copyright (C) 2009 Florian Fainelli <florian@openwrt.org> |  | ||||||
| - */ |  | ||||||
| - |  | ||||||
| -#include <linux/init.h> |  | ||||||
| -#include <linux/kernel.h> |  | ||||||
| -#include <linux/platform_device.h> |  | ||||||
| - |  | ||||||
| -#include <bcm63xx_cpu.h> |  | ||||||
| -#include <bcm63xx_dev_dsp.h> |  | ||||||
| -#include <bcm63xx_regs.h> |  | ||||||
| -#include <bcm63xx_io.h> |  | ||||||
| - |  | ||||||
| -static struct resource voip_dsp_resources[] = { |  | ||||||
| -	{ |  | ||||||
| -		.start		= -1, /* filled at runtime */ |  | ||||||
| -		.end		= -1, /* filled at runtime */ |  | ||||||
| -		.flags		= IORESOURCE_MEM, |  | ||||||
| -	}, |  | ||||||
| -	{ |  | ||||||
| -		.start		= -1, /* filled at runtime */ |  | ||||||
| -		.flags		= IORESOURCE_IRQ, |  | ||||||
| -	}, |  | ||||||
| -}; |  | ||||||
| - |  | ||||||
| -static struct platform_device bcm63xx_voip_dsp_device = { |  | ||||||
| -	.name		= "bcm63xx-voip-dsp", |  | ||||||
| -	.id		= -1, |  | ||||||
| -	.num_resources	= ARRAY_SIZE(voip_dsp_resources), |  | ||||||
| -	.resource	= voip_dsp_resources, |  | ||||||
| -}; |  | ||||||
| - |  | ||||||
| -int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd) |  | ||||||
| -{ |  | ||||||
| -	struct bcm63xx_dsp_platform_data *dpd; |  | ||||||
| -	u32 val; |  | ||||||
| - |  | ||||||
| -	/* Get the memory window */ |  | ||||||
| -	val = bcm_mpi_readl(MPI_CSBASE_REG(pd->cs - 1)); |  | ||||||
| -	val &= MPI_CSBASE_BASE_MASK; |  | ||||||
| -	voip_dsp_resources[0].start = val; |  | ||||||
| -	voip_dsp_resources[0].end = val + 0xFFFFFFF; |  | ||||||
| -	voip_dsp_resources[1].start = pd->ext_irq; |  | ||||||
| - |  | ||||||
| -	/* copy given platform data */ |  | ||||||
| -	dpd = bcm63xx_voip_dsp_device.dev.platform_data; |  | ||||||
| -	memcpy(dpd, pd, sizeof (*pd)); |  | ||||||
| - |  | ||||||
| -	return platform_device_register(&bcm63xx_voip_dsp_device); |  | ||||||
| -} |  | ||||||
| --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_dsp.h |  | ||||||
| +++ /dev/null |  | ||||||
| @@ -1,14 +0,0 @@ |  | ||||||
| -/* SPDX-License-Identifier: GPL-2.0 */ |  | ||||||
| -#ifndef __BCM63XX_DSP_H |  | ||||||
| -#define __BCM63XX_DSP_H |  | ||||||
| - |  | ||||||
| -struct bcm63xx_dsp_platform_data { |  | ||||||
| -	unsigned gpio_rst; |  | ||||||
| -	unsigned gpio_int; |  | ||||||
| -	unsigned cs; |  | ||||||
| -	unsigned ext_irq; |  | ||||||
| -}; |  | ||||||
| - |  | ||||||
| -int __init bcm63xx_dsp_register(const struct bcm63xx_dsp_platform_data *pd); |  | ||||||
| - |  | ||||||
| -#endif /* __BCM63XX_DSP_H */ |  | ||||||
| --- a/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h |  | ||||||
| +++ b/arch/mips/include/asm/mach-bcm63xx/board_bcm963xx.h |  | ||||||
| @@ -7,7 +7,6 @@ |  | ||||||
|  #include <linux/leds.h> |  | ||||||
|  #include <bcm63xx_dev_enet.h> |  | ||||||
|  #include <bcm63xx_dev_usb_usbd.h> |  | ||||||
| -#include <bcm63xx_dev_dsp.h> |  | ||||||
|   |  | ||||||
|  /* |  | ||||||
|   * flash mapping |  | ||||||
| @@ -31,7 +30,6 @@ struct board_info { |  | ||||||
|  	unsigned int	has_ohci0:1; |  | ||||||
|  	unsigned int	has_ehci0:1; |  | ||||||
|  	unsigned int	has_usbd:1; |  | ||||||
| -	unsigned int	has_dsp:1; |  | ||||||
|  	unsigned int	has_uart0:1; |  | ||||||
|  	unsigned int	has_uart1:1; |  | ||||||
|   |  | ||||||
| @@ -43,9 +41,6 @@ struct board_info { |  | ||||||
|  	/* USB config */ |  | ||||||
|  	struct bcm63xx_usbd_platform_data usbd; |  | ||||||
|   |  | ||||||
| -	/* DSP config */ |  | ||||||
| -	struct bcm63xx_dsp_platform_data dsp; |  | ||||||
| - |  | ||||||
|  	/* GPIO LEDs */ |  | ||||||
|  	struct gpio_led leds[5]; |  | ||||||
|   |  | ||||||
| @@ -10,7 +10,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/net/netfilter/nf_flow_table_core.c | --- a/net/netfilter/nf_flow_table_core.c | ||||||
| +++ b/net/netfilter/nf_flow_table_core.c | +++ b/net/netfilter/nf_flow_table_core.c | ||||||
| @@ -532,5 +532,35 @@ void nf_flow_table_free(struct nf_flowta | @@ -535,5 +535,35 @@ void nf_flow_table_free(struct nf_flowta | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(nf_flow_table_free); |  EXPORT_SYMBOL_GPL(nf_flow_table_free); | ||||||
|   |   | ||||||
| @@ -48,7 +48,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  MODULE_AUTHOR("Pablo Neira Ayuso <pablo@netfilter.org>"); |  MODULE_AUTHOR("Pablo Neira Ayuso <pablo@netfilter.org>"); | ||||||
| --- a/net/netfilter/nft_flow_offload.c | --- a/net/netfilter/nft_flow_offload.c | ||||||
| +++ b/net/netfilter/nft_flow_offload.c | +++ b/net/netfilter/nft_flow_offload.c | ||||||
| @@ -217,47 +217,14 @@ static struct nft_expr_type nft_flow_off | @@ -216,47 +216,14 @@ static struct nft_expr_type nft_flow_off | ||||||
|  	.owner		= THIS_MODULE, |  	.owner		= THIS_MODULE, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/phy/phy_device.c | --- a/drivers/net/phy/phy_device.c | ||||||
| +++ b/drivers/net/phy/phy_device.c | +++ b/drivers/net/phy/phy_device.c | ||||||
| @@ -1776,6 +1776,19 @@ int phy_set_max_speed(struct phy_device | @@ -1777,6 +1777,19 @@ int phy_set_max_speed(struct phy_device | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(phy_set_max_speed); |  EXPORT_SYMBOL(phy_set_max_speed); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/drivers/net/phy/phy_device.c | --- a/drivers/net/phy/phy_device.c | ||||||
| +++ b/drivers/net/phy/phy_device.c | +++ b/drivers/net/phy/phy_device.c | ||||||
| @@ -1789,6 +1789,36 @@ void phy_support_asym_pause(struct phy_d | @@ -1790,6 +1790,36 @@ void phy_support_asym_pause(struct phy_d | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(phy_support_asym_pause); |  EXPORT_SYMBOL(phy_support_asym_pause); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -29,7 +29,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  |  | ||||||
| --- a/drivers/net/phy/phy_device.c | --- a/drivers/net/phy/phy_device.c | ||||||
| +++ b/drivers/net/phy/phy_device.c | +++ b/drivers/net/phy/phy_device.c | ||||||
| @@ -885,8 +885,6 @@ int phy_init_hw(struct phy_device *phyde | @@ -886,8 +886,6 @@ int phy_init_hw(struct phy_device *phyde | ||||||
|   |   | ||||||
|  	if (phydev->drv->soft_reset) |  	if (phydev->drv->soft_reset) | ||||||
|  		ret = phydev->drv->soft_reset(phydev); |  		ret = phydev->drv->soft_reset(phydev); | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  #include <linux/mdio.h> |  #include <linux/mdio.h> | ||||||
|  #include <linux/io.h> |  #include <linux/io.h> | ||||||
|  #include <linux/uaccess.h> |  #include <linux/uaccess.h> | ||||||
| @@ -943,6 +944,65 @@ void phy_attached_print(struct phy_devic | @@ -944,6 +945,65 @@ void phy_attached_print(struct phy_devic | ||||||
|  EXPORT_SYMBOL(phy_attached_print); |  EXPORT_SYMBOL(phy_attached_print); | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
| @@ -120,7 +120,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|   * phy_attach_direct - attach a network device to a given PHY device pointer |   * phy_attach_direct - attach a network device to a given PHY device pointer | ||||||
|   * @dev: network device to attach |   * @dev: network device to attach | ||||||
|   * @phydev: Pointer to phy_device to attach |   * @phydev: Pointer to phy_device to attach | ||||||
| @@ -1015,6 +1075,9 @@ int phy_attach_direct(struct net_device | @@ -1016,6 +1076,9 @@ int phy_attach_direct(struct net_device | ||||||
|  	phydev->attached_dev = dev; |  	phydev->attached_dev = dev; | ||||||
|  	dev->phydev = phydev; |  	dev->phydev = phydev; | ||||||
|   |   | ||||||
| @@ -130,7 +130,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  	/* Some Ethernet drivers try to connect to a PHY device before |  	/* Some Ethernet drivers try to connect to a PHY device before | ||||||
|  	 * calling register_netdevice() -> netdev_register_kobject() and |  	 * calling register_netdevice() -> netdev_register_kobject() and | ||||||
|  	 * does the dev->dev.kobj initialization. Here we only check for |  	 * does the dev->dev.kobj initialization. Here we only check for | ||||||
| @@ -1949,6 +2012,9 @@ static int phy_remove(struct device *dev | @@ -1950,6 +2013,9 @@ static int phy_remove(struct device *dev | ||||||
|  	phydev->state = PHY_DOWN; |  	phydev->state = PHY_DOWN; | ||||||
|  	mutex_unlock(&phydev->lock); |  	mutex_unlock(&phydev->lock); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  |  | ||||||
| --- a/drivers/net/phy/phy_device.c | --- a/drivers/net/phy/phy_device.c | ||||||
| +++ b/drivers/net/phy/phy_device.c | +++ b/drivers/net/phy/phy_device.c | ||||||
| @@ -334,7 +334,7 @@ static int phy_bus_match(struct device * | @@ -335,7 +335,7 @@ static int phy_bus_match(struct device * | ||||||
|   |   | ||||||
|  	if (phydev->is_c45) { |  	if (phydev->is_c45) { | ||||||
|  		for (i = 1; i < num_ids; i++) { |  		for (i = 1; i < num_ids; i++) { | ||||||
| @@ -46,7 +46,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk> | |||||||
|  				continue; |  				continue; | ||||||
|   |   | ||||||
|  			if ((phydrv->phy_id & phydrv->phy_id_mask) == |  			if ((phydrv->phy_id & phydrv->phy_id_mask) == | ||||||
| @@ -622,10 +622,13 @@ static int get_phy_id(struct mii_bus *bu | @@ -623,10 +623,13 @@ static int get_phy_id(struct mii_bus *bu | ||||||
|   */ |   */ | ||||||
|  struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45) |  struct phy_device *get_phy_device(struct mii_bus *bus, int addr, bool is_c45) | ||||||
|  { |  { | ||||||
|   | |||||||
| @@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  |  | ||||||
| --- a/include/net/sch_generic.h | --- a/include/net/sch_generic.h | ||||||
| +++ b/include/net/sch_generic.h | +++ b/include/net/sch_generic.h | ||||||
| @@ -486,12 +486,13 @@ extern struct Qdisc_ops noop_qdisc_ops; | @@ -487,12 +487,13 @@ 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; | ||||||
|  extern struct Qdisc_ops noqueue_qdisc_ops; |  extern struct Qdisc_ops noqueue_qdisc_ops; | ||||||
| @@ -44,7 +44,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	  device, it has to decide which ones to send first, which ones to |  	  device, it has to decide which ones to send first, which ones to | ||||||
| --- a/net/sched/sch_api.c | --- a/net/sched/sch_api.c | ||||||
| +++ b/net/sched/sch_api.c | +++ b/net/sched/sch_api.c | ||||||
| @@ -2160,7 +2160,7 @@ static int __init pktsched_init(void) | @@ -2162,7 +2162,7 @@ static int __init pktsched_init(void) | ||||||
|  		return err; |  		return err; | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ | |||||||
|   |   | ||||||
| --- a/drivers/net/phy/phy_device.c | --- a/drivers/net/phy/phy_device.c | ||||||
| +++ b/drivers/net/phy/phy_device.c | +++ b/drivers/net/phy/phy_device.c | ||||||
| @@ -1576,6 +1576,9 @@ int genphy_update_link(struct phy_device | @@ -1577,6 +1577,9 @@ int genphy_update_link(struct phy_device | ||||||
|  { |  { | ||||||
|  	int status; |  	int status; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  #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 | ||||||
| @@ -1790,6 +1790,7 @@ static int packet_rcv_spkt(struct sk_buf | @@ -1796,6 +1796,7 @@ static int packet_rcv_spkt(struct sk_buf | ||||||
|  { |  { | ||||||
|  	struct sock *sk; |  	struct sock *sk; | ||||||
|  	struct sockaddr_pkt *spkt; |  	struct sockaddr_pkt *spkt; | ||||||
| @@ -38,7 +38,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|   |   | ||||||
|  	/* |  	/* | ||||||
|  	 *	When we registered the protocol we saved the socket in the data |  	 *	When we registered the protocol we saved the socket in the data | ||||||
| @@ -1797,6 +1798,7 @@ static int packet_rcv_spkt(struct sk_buf | @@ -1803,6 +1804,7 @@ static int packet_rcv_spkt(struct sk_buf | ||||||
|  	 */ |  	 */ | ||||||
|   |   | ||||||
|  	sk = pt->af_packet_priv; |  	sk = pt->af_packet_priv; | ||||||
| @@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|   |   | ||||||
|  	/* |  	/* | ||||||
|  	 *	Yank back the headers [hope the device set this |  	 *	Yank back the headers [hope the device set this | ||||||
| @@ -1809,7 +1811,7 @@ static int packet_rcv_spkt(struct sk_buf | @@ -1815,7 +1817,7 @@ static int packet_rcv_spkt(struct sk_buf | ||||||
|  	 *	so that this procedure is noop. |  	 *	so that this procedure is noop. | ||||||
|  	 */ |  	 */ | ||||||
|   |   | ||||||
| @@ -55,7 +55,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  		goto out; |  		goto out; | ||||||
|   |   | ||||||
|  	if (!net_eq(dev_net(dev), sock_net(sk))) |  	if (!net_eq(dev_net(dev), sock_net(sk))) | ||||||
| @@ -2037,12 +2039,12 @@ static int packet_rcv(struct sk_buff *sk | @@ -2043,12 +2045,12 @@ static int packet_rcv(struct sk_buff *sk | ||||||
|  	unsigned int snaplen, res; |  	unsigned int snaplen, res; | ||||||
|  	bool is_drop_n_account = false; |  	bool is_drop_n_account = false; | ||||||
|   |   | ||||||
| @@ -71,7 +71,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	if (!net_eq(dev_net(dev), sock_net(sk))) |  	if (!net_eq(dev_net(dev), sock_net(sk))) | ||||||
|  		goto drop; |  		goto drop; | ||||||
|   |   | ||||||
| @@ -2168,12 +2170,12 @@ static int tpacket_rcv(struct sk_buff *s | @@ -2174,12 +2176,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); | ||||||
|   |   | ||||||
| @@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	if (!net_eq(dev_net(dev), sock_net(sk))) |  	if (!net_eq(dev_net(dev), sock_net(sk))) | ||||||
|  		goto drop; |  		goto drop; | ||||||
|   |   | ||||||
| @@ -3259,6 +3261,7 @@ static int packet_create(struct net *net | @@ -3265,6 +3267,7 @@ static int packet_create(struct net *net | ||||||
|  	mutex_init(&po->pg_vec_lock); |  	mutex_init(&po->pg_vec_lock); | ||||||
|  	po->rollover = NULL; |  	po->rollover = NULL; | ||||||
|  	po->prot_hook.func = packet_rcv; |  	po->prot_hook.func = packet_rcv; | ||||||
| @@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|   |   | ||||||
|  	if (sock->type == SOCK_PACKET) |  	if (sock->type == SOCK_PACKET) | ||||||
|  		po->prot_hook.func = packet_rcv_spkt; |  		po->prot_hook.func = packet_rcv_spkt; | ||||||
| @@ -3870,6 +3873,16 @@ packet_setsockopt(struct socket *sock, i | @@ -3885,6 +3888,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; | ||||||
|  	} |  	} | ||||||
| @@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	default: |  	default: | ||||||
|  		return -ENOPROTOOPT; |  		return -ENOPROTOOPT; | ||||||
|  	} |  	} | ||||||
| @@ -3922,6 +3935,13 @@ static int packet_getsockopt(struct sock | @@ -3937,6 +3950,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; | ||||||
|   | |||||||
| @@ -237,7 +237,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	INIT_DEFERRABLE_WORK(&flowtable->gc_work, nf_flow_offload_work_gc); |  	INIT_DEFERRABLE_WORK(&flowtable->gc_work, nf_flow_offload_work_gc); | ||||||
|   |   | ||||||
|  	err = rhashtable_init(&flowtable->rhashtable, |  	err = rhashtable_init(&flowtable->rhashtable, | ||||||
| @@ -535,6 +580,8 @@ static void nf_flow_table_iterate_cleanu | @@ -538,6 +583,8 @@ static void nf_flow_table_iterate_cleanu | ||||||
|  { |  { | ||||||
|  	nf_flow_table_iterate(flowtable, nf_flow_table_do_cleanup, dev); |  	nf_flow_table_iterate(flowtable, nf_flow_table_do_cleanup, dev); | ||||||
|  	flush_delayed_work(&flowtable->gc_work); |  	flush_delayed_work(&flowtable->gc_work); | ||||||
| @@ -246,7 +246,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  void nf_flow_table_cleanup(struct net *net, struct net_device *dev) |  void nf_flow_table_cleanup(struct net *net, struct net_device *dev) | ||||||
| @@ -548,6 +595,26 @@ void nf_flow_table_cleanup(struct net *n | @@ -551,6 +598,26 @@ void nf_flow_table_cleanup(struct net *n | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(nf_flow_table_cleanup); |  EXPORT_SYMBOL_GPL(nf_flow_table_cleanup); | ||||||
|   |   | ||||||
| @@ -273,7 +273,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  void nf_flow_table_free(struct nf_flowtable *flow_table) |  void nf_flow_table_free(struct nf_flowtable *flow_table) | ||||||
|  { |  { | ||||||
|  	mutex_lock(&flowtable_lock); |  	mutex_lock(&flowtable_lock); | ||||||
| @@ -557,9 +624,58 @@ void nf_flow_table_free(struct nf_flowta | @@ -560,9 +627,58 @@ void nf_flow_table_free(struct nf_flowta | ||||||
|  	nf_flow_table_iterate(flow_table, nf_flow_table_do_cleanup, NULL); |  	nf_flow_table_iterate(flow_table, nf_flow_table_do_cleanup, NULL); | ||||||
|  	WARN_ON(!nf_flow_offload_gc_step(flow_table)); |  	WARN_ON(!nf_flow_offload_gc_step(flow_table)); | ||||||
|  	rhashtable_destroy(&flow_table->rhashtable); |  	rhashtable_destroy(&flow_table->rhashtable); | ||||||
| @@ -506,7 +506,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
| +MODULE_ALIAS("nf-flow-table-hw"); | +MODULE_ALIAS("nf-flow-table-hw"); | ||||||
| --- a/net/netfilter/nf_tables_api.c | --- a/net/netfilter/nf_tables_api.c | ||||||
| +++ b/net/netfilter/nf_tables_api.c | +++ b/net/netfilter/nf_tables_api.c | ||||||
| @@ -5490,6 +5490,13 @@ static int nf_tables_flowtable_parse_hoo | @@ -5503,6 +5503,13 @@ static int nf_tables_flowtable_parse_hoo | ||||||
|  	if (err < 0) |  	if (err < 0) | ||||||
|  		return err; |  		return err; | ||||||
|   |   | ||||||
| @@ -520,7 +520,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL); |  	ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL); | ||||||
|  	if (!ops) |  	if (!ops) | ||||||
|  		return -ENOMEM; |  		return -ENOMEM; | ||||||
| @@ -5621,10 +5628,19 @@ static int nf_tables_newflowtable(struct | @@ -5634,10 +5641,19 @@ static int nf_tables_newflowtable(struct | ||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	flowtable->data.type = type; |  	flowtable->data.type = type; | ||||||
| @@ -540,7 +540,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK], |  	err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK], | ||||||
|  					     flowtable); |  					     flowtable); | ||||||
|  	if (err < 0) |  	if (err < 0) | ||||||
| @@ -5750,7 +5766,8 @@ static int nf_tables_fill_flowtable_info | @@ -5763,7 +5779,8 @@ static int nf_tables_fill_flowtable_info | ||||||
|  	    nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) || |  	    nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) || | ||||||
|  	    nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) || |  	    nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) || | ||||||
|  	    nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle), |  	    nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle), | ||||||
| @@ -552,7 +552,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  	nest = nla_nest_start(skb, NFTA_FLOWTABLE_HOOK); |  	nest = nla_nest_start(skb, NFTA_FLOWTABLE_HOOK); | ||||||
| --- a/net/netfilter/nft_flow_offload.c | --- a/net/netfilter/nft_flow_offload.c | ||||||
| +++ b/net/netfilter/nft_flow_offload.c | +++ b/net/netfilter/nft_flow_offload.c | ||||||
| @@ -127,6 +127,9 @@ static void nft_flow_offload_eval(const | @@ -126,6 +126,9 @@ static void nft_flow_offload_eval(const | ||||||
|  	if (ret < 0) |  	if (ret < 0) | ||||||
|  		goto err_flow_add; |  		goto err_flow_add; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -350,7 +350,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | |||||||
|  	memcpy(p->name, u->name, sizeof(u->name)); |  	memcpy(p->name, u->name, sizeof(u->name)); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -1926,6 +2088,15 @@ static int ip6_tnl_validate(struct nlatt | @@ -1924,6 +2086,15 @@ static int ip6_tnl_validate(struct nlatt | ||||||
|  	return 0; |  	return 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -366,7 +366,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | |||||||
|  static void ip6_tnl_netlink_parms(struct nlattr *data[], |  static void ip6_tnl_netlink_parms(struct nlattr *data[], | ||||||
|  				  struct __ip6_tnl_parm *parms) |  				  struct __ip6_tnl_parm *parms) | ||||||
|  { |  { | ||||||
| @@ -1963,6 +2134,46 @@ static void ip6_tnl_netlink_parms(struct | @@ -1961,6 +2132,46 @@ static void ip6_tnl_netlink_parms(struct | ||||||
|   |   | ||||||
|  	if (data[IFLA_IPTUN_FWMARK]) |  	if (data[IFLA_IPTUN_FWMARK]) | ||||||
|  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]); |  		parms->fwmark = nla_get_u32(data[IFLA_IPTUN_FWMARK]); | ||||||
| @@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[], |  static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[], | ||||||
| @@ -2078,6 +2289,12 @@ static void ip6_tnl_dellink(struct net_d | @@ -2076,6 +2287,12 @@ static void ip6_tnl_dellink(struct net_d | ||||||
|   |   | ||||||
|  static size_t ip6_tnl_get_size(const struct net_device *dev) |  static size_t ip6_tnl_get_size(const struct net_device *dev) | ||||||
|  { |  { | ||||||
| @@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | |||||||
|  	return |  	return | ||||||
|  		/* IFLA_IPTUN_LINK */ |  		/* IFLA_IPTUN_LINK */ | ||||||
|  		nla_total_size(4) + |  		nla_total_size(4) + | ||||||
| @@ -2107,6 +2324,24 @@ static size_t ip6_tnl_get_size(const str | @@ -2105,6 +2322,24 @@ static size_t ip6_tnl_get_size(const str | ||||||
|  		nla_total_size(0) + |  		nla_total_size(0) + | ||||||
|  		/* IFLA_IPTUN_FWMARK */ |  		/* IFLA_IPTUN_FWMARK */ | ||||||
|  		nla_total_size(4) + |  		nla_total_size(4) + | ||||||
| @@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | |||||||
|  		0; |  		0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -2114,6 +2349,9 @@ static int ip6_tnl_fill_info(struct sk_b | @@ -2112,6 +2347,9 @@ static int ip6_tnl_fill_info(struct sk_b | ||||||
|  { |  { | ||||||
|  	struct ip6_tnl *tunnel = netdev_priv(dev); |  	struct ip6_tnl *tunnel = netdev_priv(dev); | ||||||
|  	struct __ip6_tnl_parm *parm = &tunnel->parms; |  	struct __ip6_tnl_parm *parm = &tunnel->parms; | ||||||
| @@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | |||||||
|   |   | ||||||
|  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || |  	if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) || | ||||||
|  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) || |  	    nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) || | ||||||
| @@ -2123,9 +2361,27 @@ static int ip6_tnl_fill_info(struct sk_b | @@ -2121,9 +2359,27 @@ static int ip6_tnl_fill_info(struct sk_b | ||||||
|  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || |  	    nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) || | ||||||
|  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || |  	    nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) || | ||||||
|  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) || |  	    nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) || | ||||||
| @@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org> | |||||||
|  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) || |  	if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) || | ||||||
|  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) || |  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) || | ||||||
|  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) || |  	    nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) || | ||||||
| @@ -2165,6 +2421,7 @@ static const struct nla_policy ip6_tnl_p | @@ -2163,6 +2419,7 @@ static const struct nla_policy ip6_tnl_p | ||||||
|  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 }, |  	[IFLA_IPTUN_ENCAP_DPORT]	= { .type = NLA_U16 }, | ||||||
|  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG }, |  	[IFLA_IPTUN_COLLECT_METADATA]	= { .type = NLA_FLAG }, | ||||||
|  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 }, |  	[IFLA_IPTUN_FWMARK]		= { .type = NLA_U32 }, | ||||||
|   | |||||||
| @@ -32,7 +32,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	__u16			tc_index;	/* traffic control index */ |  	__u16			tc_index;	/* traffic control index */ | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -5483,6 +5483,9 @@ static enum gro_result dev_gro_receive(s | @@ -5454,6 +5454,9 @@ static enum gro_result dev_gro_receive(s | ||||||
|  	int same_flow; |  	int same_flow; | ||||||
|  	int grow; |  	int grow; | ||||||
|   |   | ||||||
| @@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	if (netif_elide_gro(skb->dev)) |  	if (netif_elide_gro(skb->dev)) | ||||||
|  		goto normal; |  		goto normal; | ||||||
|   |   | ||||||
| @@ -7141,6 +7144,48 @@ static void __netdev_adjacent_dev_unlink | @@ -7112,6 +7115,48 @@ static void __netdev_adjacent_dev_unlink | ||||||
|  					   &upper_dev->adj_list.lower); |  					   &upper_dev->adj_list.lower); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  static int __netdev_upper_dev_link(struct net_device *dev, |  static int __netdev_upper_dev_link(struct net_device *dev, | ||||||
|  				   struct net_device *upper_dev, bool master, |  				   struct net_device *upper_dev, bool master, | ||||||
|  				   void *upper_priv, void *upper_info, |  				   void *upper_priv, void *upper_info, | ||||||
| @@ -7191,6 +7236,7 @@ static int __netdev_upper_dev_link(struc | @@ -7162,6 +7207,7 @@ static int __netdev_upper_dev_link(struc | ||||||
|  	if (ret) |  	if (ret) | ||||||
|  		return ret; |  		return ret; | ||||||
|   |   | ||||||
| @@ -99,7 +99,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, |  	ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, | ||||||
|  					    &changeupper_info.info); |  					    &changeupper_info.info); | ||||||
|  	ret = notifier_to_errno(ret); |  	ret = notifier_to_errno(ret); | ||||||
| @@ -7283,6 +7329,7 @@ void netdev_upper_dev_unlink(struct net_ | @@ -7254,6 +7300,7 @@ void netdev_upper_dev_unlink(struct net_ | ||||||
|   |   | ||||||
|  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); |  	__netdev_adjacent_dev_unlink_neighbour(dev, upper_dev); | ||||||
|   |   | ||||||
| @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, |  	call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, | ||||||
|  				      &changeupper_info.info); |  				      &changeupper_info.info); | ||||||
|   |   | ||||||
| @@ -7913,6 +7960,7 @@ int dev_set_mac_address(struct net_devic | @@ -7893,6 +7940,7 @@ int dev_set_mac_address(struct net_devic | ||||||
|  	if (err) |  	if (err) | ||||||
|  		return err; |  		return err; | ||||||
|  	dev->addr_assign_type = NET_ADDR_SET; |  	dev->addr_assign_type = NET_ADDR_SET; | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/phy/phy_device.c | --- a/drivers/net/phy/phy_device.c | ||||||
| +++ b/drivers/net/phy/phy_device.c | +++ b/drivers/net/phy/phy_device.c | ||||||
| @@ -1200,6 +1200,9 @@ void phy_detach(struct phy_device *phyde | @@ -1201,6 +1201,9 @@ void phy_detach(struct phy_device *phyde | ||||||
|  	struct module *ndev_owner = dev->dev.parent->driver->owner; |  	struct module *ndev_owner = dev->dev.parent->driver->owner; | ||||||
|  	struct mii_bus *bus; |  	struct mii_bus *bus; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|  	{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, |  	{ "mx25u25635f", INFO(0xc22539, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_4B_OPCODES) }, | ||||||
|  	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, |  	{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, | ||||||
|  	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, |  	{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ | SPI_NOR_4B_OPCODES) }, | ||||||
| @@ -1276,11 +1277,12 @@ static const struct flash_info spi_nor_i | @@ -1280,11 +1281,12 @@ static const struct flash_info spi_nor_i | ||||||
|  	{ }, |  	{ }, | ||||||
|  }; |  }; | ||||||
|   |   | ||||||
| @@ -23,7 +23,7 @@ | |||||||
|   |   | ||||||
|  	tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN); |  	tmp = nor->read_reg(nor, SPINOR_OP_RDID, id, SPI_NOR_MAX_ID_LEN); | ||||||
|  	if (tmp < 0) { |  	if (tmp < 0) { | ||||||
| @@ -1291,10 +1293,16 @@ static const struct flash_info *spi_nor_ | @@ -1295,10 +1297,16 @@ static const struct flash_info *spi_nor_ | ||||||
|  	for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) { |  	for (tmp = 0; tmp < ARRAY_SIZE(spi_nor_ids) - 1; tmp++) { | ||||||
|  		info = &spi_nor_ids[tmp]; |  		info = &spi_nor_ids[tmp]; | ||||||
|  		if (info->id_len) { |  		if (info->id_len) { | ||||||
| @@ -42,7 +42,7 @@ | |||||||
|  	dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", |  	dev_err(nor->dev, "unrecognized JEDEC id bytes: %02x, %02x, %02x\n", | ||||||
|  		id[0], id[1], id[2]); |  		id[0], id[1], id[2]); | ||||||
|  	return ERR_PTR(-ENODEV); |  	return ERR_PTR(-ENODEV); | ||||||
| @@ -2828,7 +2836,7 @@ int spi_nor_scan(struct spi_nor *nor, co | @@ -2832,7 +2840,7 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||||
|  		info = spi_nor_match_id(name); |  		info = spi_nor_match_id(name); | ||||||
|  	/* Try to auto-detect if chip name wasn't specified or not found */ |  	/* Try to auto-detect if chip name wasn't specified or not found */ | ||||||
|  	if (!info) |  	if (!info) | ||||||
| @@ -51,7 +51,7 @@ | |||||||
|  	if (IS_ERR_OR_NULL(info)) |  	if (IS_ERR_OR_NULL(info)) | ||||||
|  		return -ENOENT; |  		return -ENOENT; | ||||||
|   |   | ||||||
| @@ -2839,7 +2847,7 @@ int spi_nor_scan(struct spi_nor *nor, co | @@ -2843,7 +2851,7 @@ int spi_nor_scan(struct spi_nor *nor, co | ||||||
|  	if (name && info->id_len) { |  	if (name && info->id_len) { | ||||||
|  		const struct flash_info *jinfo; |  		const struct flash_info *jinfo; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -39,7 +39,7 @@ Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com> | |||||||
|  |  | ||||||
| --- a/drivers/opp/core.c | --- a/drivers/opp/core.c | ||||||
| +++ b/drivers/opp/core.c | +++ b/drivers/opp/core.c | ||||||
| @@ -1623,6 +1623,75 @@ put_table: | @@ -1629,6 +1629,75 @@ put_table: | ||||||
|  } |  } | ||||||
|   |   | ||||||
|  /** |  /** | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org> | |||||||
|  |  | ||||||
| --- a/drivers/opp/core.c | --- a/drivers/opp/core.c | ||||||
| +++ b/drivers/opp/core.c | +++ b/drivers/opp/core.c | ||||||
| @@ -1663,6 +1663,7 @@ int dev_pm_opp_adjust_voltage(struct dev | @@ -1669,6 +1669,7 @@ int dev_pm_opp_adjust_voltage(struct dev | ||||||
|  	struct opp_table *opp_table; |  	struct opp_table *opp_table; | ||||||
|  	struct dev_pm_opp *tmp_opp, *opp = ERR_PTR(-ENODEV); |  	struct dev_pm_opp *tmp_opp, *opp = ERR_PTR(-ENODEV); | ||||||
|  	int r = 0; |  	int r = 0; | ||||||
| @@ -25,7 +25,7 @@ Signed-off-by: Georgi Djakov <georgi.djakov@linaro.org> | |||||||
|   |   | ||||||
|  	/* Find the opp_table */ |  	/* Find the opp_table */ | ||||||
|  	opp_table = _find_opp_table(dev); |  	opp_table = _find_opp_table(dev); | ||||||
| @@ -1692,8 +1693,17 @@ int dev_pm_opp_adjust_voltage(struct dev | @@ -1698,8 +1699,17 @@ int dev_pm_opp_adjust_voltage(struct dev | ||||||
|  		goto adjust_unlock; |  		goto adjust_unlock; | ||||||
|   |   | ||||||
|  	opp->supplies->u_volt = u_volt; |  	opp->supplies->u_volt = u_volt; | ||||||
|   | |||||||
| @@ -1,7 +1,6 @@ | |||||||
| diff -urN a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c | --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c | ||||||
| --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c	2019-12-23 11:42:02.728620670 +0800 | +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c | ||||||
| +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c	2019-12-23 11:42:48.747289058 +0800 | @@ -999,11 +999,6 @@ static int mtk_poll_rx(struct napi_struc | ||||||
| @@ -999,11 +999,6 @@ |  | ||||||
|  		if (!(trxd.rxd2 & RX_DMA_DONE)) |  		if (!(trxd.rxd2 & RX_DMA_DONE)) | ||||||
|  			break; |  			break; | ||||||
|   |   | ||||||
| @@ -13,7 +12,7 @@ diff -urN a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/m | |||||||
|  		mac = (trxd.rxd4 >> RX_DMA_FPORT_SHIFT) & |  		mac = (trxd.rxd4 >> RX_DMA_FPORT_SHIFT) & | ||||||
|  			RX_DMA_FPORT_MASK; |  			RX_DMA_FPORT_MASK; | ||||||
|  		/* From QDMA(5). This is a external interface case of HWNAT. |  		/* From QDMA(5). This is a external interface case of HWNAT. | ||||||
| @@ -1017,7 +1012,7 @@ | @@ -1017,7 +1012,7 @@ static int mtk_poll_rx(struct napi_struc | ||||||
|  			mac = 0; |  			mac = 0; | ||||||
|  		else |  		else | ||||||
|  			mac--; |  			mac--; | ||||||
| @@ -22,7 +21,7 @@ diff -urN a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/m | |||||||
|  		if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT || |  		if (unlikely(mac < 0 || mac >= MTK_MAC_COUNT || | ||||||
|  			     !eth->netdev[mac])) |  			     !eth->netdev[mac])) | ||||||
|  			goto release_desc; |  			goto release_desc; | ||||||
| @@ -2030,10 +2025,6 @@ | @@ -2030,10 +2025,6 @@ static int mtk_hw_init(struct mtk_eth *e | ||||||
|  	/* Disable RX VLan Offloading */ |  	/* Disable RX VLan Offloading */ | ||||||
|  	mtk_w32(eth, 0, MTK_CDMP_EG_CTRL); |  	mtk_w32(eth, 0, MTK_CDMP_EG_CTRL); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,6 +1,5 @@ | |||||||
| diff -urN a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | --- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | ||||||
| --- a/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts	2019-12-17 14:43:47.273940258 +0800 | +++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts | ||||||
| +++ b/arch/arm/boot/dts/mt7623n-bananapi-bpi-r2.dts	2019-12-17 14:44:20.300945884 +0800 |  | ||||||
| @@ -19,6 +19,7 @@ | @@ -19,6 +19,7 @@ | ||||||
|   |   | ||||||
|  	chosen { |  	chosen { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Koen Vandeputte
					Koen Vandeputte