mirror of
https://github.com/coolsnowwolf/lede.git
synced 2025-04-16 04:13:31 +00:00
kernel: bump to 4.9.164 and 4.14.107
This commit is contained in:
parent
aa9c3a6874
commit
8c6dff711b
@ -3,13 +3,13 @@
|
||||
LINUX_RELEASE?=1
|
||||
|
||||
LINUX_VERSION-3.18 = .136
|
||||
LINUX_VERSION-4.9 = .163
|
||||
LINUX_VERSION-4.14 = .106
|
||||
LINUX_VERSION-4.9 = .164
|
||||
LINUX_VERSION-4.14 = .107
|
||||
LINUX_VERSION-4.19 = .25
|
||||
|
||||
LINUX_KERNEL_HASH-3.18.136 = 48c8775013d23229462134f911bbb14c7935096fcccfb19ce28ecd5f7154f35c
|
||||
LINUX_KERNEL_HASH-4.9.163 = c27cf9962c17b91275ab9e74b43c1269f726f79e7a85421be7c5c73d267eef91
|
||||
LINUX_KERNEL_HASH-4.14.106 = a0e2af6add699d86cf15e1ee31ad408aa28dbab82f4462450eba51f90e7d2760
|
||||
LINUX_KERNEL_HASH-4.9.164 = adf598758d3a5390100ea754ccd64668ccd5eebb3507d78e3588d13f3e73f8e7
|
||||
LINUX_KERNEL_HASH-4.14.107 = e48d0f01468e399d03e443527fe7fa277d0bc46df4a66fad97df47ee1f9b4ef4
|
||||
LINUX_KERNEL_HASH-4.19.25 = 7ec71d90d6e96e6f741676d157ac06f30c75be4eaf1649143a3c8b7d4f919731
|
||||
|
||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||
|
@ -497,7 +497,7 @@
|
||||
#define IGMP_HOST_MEMBERSHIP_REPORT 0x12 /* Ditto */
|
||||
--- a/net/core/flow_dissector.c
|
||||
+++ b/net/core/flow_dissector.c
|
||||
@@ -108,7 +108,7 @@ __be32 __skb_flow_get_ports(const struct
|
||||
@@ -109,7 +109,7 @@ __be32 __skb_flow_get_ports(const struct
|
||||
ports = __skb_header_pointer(skb, thoff + poff,
|
||||
sizeof(_ports), data, hlen, &_ports);
|
||||
if (ports)
|
||||
@ -841,7 +841,7 @@
|
||||
*sum = csum_fold(csum_partial(diff, sizeof(diff),
|
||||
--- a/drivers/net/vxlan.c
|
||||
+++ b/drivers/net/vxlan.c
|
||||
@@ -1857,15 +1857,15 @@ static int vxlan_build_skb(struct sk_buf
|
||||
@@ -1868,15 +1868,15 @@ static int vxlan_build_skb(struct sk_buf
|
||||
return err;
|
||||
|
||||
vxh = __skb_push(skb, sizeof(*vxh));
|
||||
|
@ -26,7 +26,7 @@
|
||||
#endif /* __MDIO_BOARD_INFO_H */
|
||||
--- a/drivers/net/phy/mdio_bus.c
|
||||
+++ b/drivers/net/phy/mdio_bus.c
|
||||
@@ -456,6 +456,17 @@ void mdiobus_free(struct mii_bus *bus)
|
||||
@@ -455,6 +455,17 @@ void mdiobus_free(struct mii_bus *bus)
|
||||
}
|
||||
EXPORT_SYMBOL(mdiobus_free);
|
||||
|
||||
@ -44,7 +44,7 @@
|
||||
/**
|
||||
* mdiobus_scan - scan a bus for MDIO devices.
|
||||
* @bus: mii_bus to scan
|
||||
@@ -471,6 +482,7 @@ EXPORT_SYMBOL(mdiobus_free);
|
||||
@@ -470,6 +481,7 @@ EXPORT_SYMBOL(mdiobus_free);
|
||||
struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr)
|
||||
{
|
||||
struct phy_device *phydev;
|
||||
@ -52,7 +52,7 @@
|
||||
int err;
|
||||
|
||||
phydev = get_phy_device(bus, addr, false);
|
||||
@@ -483,6 +495,12 @@ struct phy_device *mdiobus_scan(struct m
|
||||
@@ -482,6 +494,12 @@ struct phy_device *mdiobus_scan(struct m
|
||||
*/
|
||||
of_mdiobus_link_mdiodev(bus, &phydev->mdio);
|
||||
|
||||
|
@ -486,7 +486,7 @@
|
||||
#define IGMP_HOST_MEMBERSHIP_REPORT 0x12 /* Ditto */
|
||||
--- a/net/core/flow_dissector.c
|
||||
+++ b/net/core/flow_dissector.c
|
||||
@@ -108,7 +108,7 @@ __be32 __skb_flow_get_ports(const struct
|
||||
@@ -109,7 +109,7 @@ __be32 __skb_flow_get_ports(const struct
|
||||
ports = __skb_header_pointer(skb, thoff + poff,
|
||||
sizeof(_ports), data, hlen, &_ports);
|
||||
if (ports)
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/phy/mdio_bus.c
|
||||
+++ b/drivers/net/phy/mdio_bus.c
|
||||
@@ -494,6 +494,55 @@ struct phy_device *mdiobus_scan(struct m
|
||||
@@ -493,6 +493,55 @@ struct phy_device *mdiobus_scan(struct m
|
||||
EXPORT_SYMBOL(mdiobus_scan);
|
||||
|
||||
/**
|
||||
@ -75,7 +75,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
* mdiobus_read_nested - Nested version of the mdiobus_read function
|
||||
* @bus: the mii_bus struct
|
||||
* @addr: the phy address
|
||||
@@ -513,11 +562,9 @@ int mdiobus_read_nested(struct mii_bus *
|
||||
@@ -512,11 +561,9 @@ int mdiobus_read_nested(struct mii_bus *
|
||||
BUG_ON(in_interrupt());
|
||||
|
||||
mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED);
|
||||
@ -88,7 +88,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return retval;
|
||||
}
|
||||
EXPORT_SYMBOL(mdiobus_read_nested);
|
||||
@@ -539,11 +586,9 @@ int mdiobus_read(struct mii_bus *bus, in
|
||||
@@ -538,11 +585,9 @@ int mdiobus_read(struct mii_bus *bus, in
|
||||
BUG_ON(in_interrupt());
|
||||
|
||||
mutex_lock(&bus->mdio_lock);
|
||||
@ -101,7 +101,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return retval;
|
||||
}
|
||||
EXPORT_SYMBOL(mdiobus_read);
|
||||
@@ -569,11 +614,9 @@ int mdiobus_write_nested(struct mii_bus
|
||||
@@ -568,11 +613,9 @@ int mdiobus_write_nested(struct mii_bus
|
||||
BUG_ON(in_interrupt());
|
||||
|
||||
mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED);
|
||||
@ -114,7 +114,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL(mdiobus_write_nested);
|
||||
@@ -596,11 +639,9 @@ int mdiobus_write(struct mii_bus *bus, i
|
||||
@@ -595,11 +638,9 @@ int mdiobus_write(struct mii_bus *bus, i
|
||||
BUG_ON(in_interrupt());
|
||||
|
||||
mutex_lock(&bus->mdio_lock);
|
||||
|
@ -10,7 +10,7 @@ Signed-off-by: Dave Stevenson <dave.stevenson@raspberrypi.org>
|
||||
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -2765,6 +2765,13 @@ S: Maintained
|
||||
@@ -2766,6 +2766,13 @@ S: Maintained
|
||||
N: bcm2835
|
||||
F: drivers/staging/vc04_services
|
||||
|
||||
|
@ -0,0 +1,34 @@
|
||||
From cdb8faa00e3fcdd0ad10add743516d616dc7d38e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
|
||||
Date: Mon, 11 Mar 2019 22:08:22 +0100
|
||||
Subject: [PATCH] mips: bcm47xx: Enable USB power on Netgear WNDR3400v2
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Eric has reported on OpenWrt's bug tracking system[1], that he's not
|
||||
able to use USB devices on his WNDR3400v2 device after the boot, until
|
||||
he turns on GPIO #21 manually through sysfs.
|
||||
|
||||
1. https://bugs.openwrt.org/index.php?do=details&task_id=2170
|
||||
|
||||
Cc: Rafał Miłecki <zajec5@gmail.com>
|
||||
Cc: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reported-by: Eric Bohlman <ericbohlman@gmail.com>
|
||||
Tested-by: Eric Bohlman <ericbohlman@gmail.com>
|
||||
Signed-off-by: Petr Štetiar <ynezz@true.cz>
|
||||
Signed-off-by: Paul Burton <paul.burton@mips.com>
|
||||
---
|
||||
arch/mips/bcm47xx/workarounds.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/arch/mips/bcm47xx/workarounds.c
|
||||
+++ b/arch/mips/bcm47xx/workarounds.c
|
||||
@@ -24,6 +24,7 @@ void __init bcm47xx_workarounds(void)
|
||||
case BCM47XX_BOARD_NETGEAR_WNR3500L:
|
||||
bcm47xx_workarounds_enable_usb_power(12);
|
||||
break;
|
||||
+ case BCM47XX_BOARD_NETGEAR_WNDR3400V2:
|
||||
case BCM47XX_BOARD_NETGEAR_WNDR3400_V3:
|
||||
bcm47xx_workarounds_enable_usb_power(21);
|
||||
break;
|
@ -0,0 +1,39 @@
|
||||
From cdb8faa00e3fcdd0ad10add743516d616dc7d38e Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
|
||||
Date: Mon, 11 Mar 2019 22:08:22 +0100
|
||||
Subject: [PATCH] mips: bcm47xx: Enable USB power on Netgear WNDR3400v2
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Eric has reported on OpenWrt's bug tracking system[1], that he's not
|
||||
able to use USB devices on his WNDR3400v2 device after the boot, until
|
||||
he turns on GPIO #21 manually through sysfs.
|
||||
|
||||
1. https://bugs.openwrt.org/index.php?do=details&task_id=2170
|
||||
|
||||
Cc: Rafał Miłecki <zajec5@gmail.com>
|
||||
Cc: Hauke Mehrtens <hauke@hauke-m.de>
|
||||
Reported-by: Eric Bohlman <ericbohlman@gmail.com>
|
||||
Tested-by: Eric Bohlman <ericbohlman@gmail.com>
|
||||
Signed-off-by: Petr Štetiar <ynezz@true.cz>
|
||||
Signed-off-by: Paul Burton <paul.burton@mips.com>
|
||||
---
|
||||
arch/mips/bcm47xx/workarounds.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
diff --git a/arch/mips/bcm47xx/workarounds.c b/arch/mips/bcm47xx/workarounds.c
|
||||
index 46eddbe..0ab95dd 100644
|
||||
--- a/arch/mips/bcm47xx/workarounds.c
|
||||
+++ b/arch/mips/bcm47xx/workarounds.c
|
||||
@@ -24,6 +24,7 @@ void __init bcm47xx_workarounds(void)
|
||||
case BCM47XX_BOARD_NETGEAR_WNR3500L:
|
||||
bcm47xx_workarounds_enable_usb_power(12);
|
||||
break;
|
||||
+ case BCM47XX_BOARD_NETGEAR_WNDR3400V2:
|
||||
case BCM47XX_BOARD_NETGEAR_WNDR3400_V3:
|
||||
bcm47xx_workarounds_enable_usb_power(21);
|
||||
break;
|
||||
--
|
||||
1.9.1
|
||||
|
@ -87,7 +87,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
if (NULL == bus || NULL == bus->name ||
|
||||
NULL == bus->read || NULL == bus->write)
|
||||
@@ -330,6 +334,35 @@ int __mdiobus_register(struct mii_bus *b
|
||||
@@ -329,6 +333,35 @@ int __mdiobus_register(struct mii_bus *b
|
||||
if (bus->reset)
|
||||
bus->reset(bus);
|
||||
|
||||
@ -123,7 +123,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
for (i = 0; i < PHY_MAX_ADDR; i++) {
|
||||
if ((bus->phy_mask & (1 << i)) == 0) {
|
||||
struct phy_device *phydev;
|
||||
@@ -355,6 +388,13 @@ error:
|
||||
@@ -354,6 +387,13 @@ error:
|
||||
mdiodev->device_remove(mdiodev);
|
||||
mdiodev->device_free(mdiodev);
|
||||
}
|
||||
@ -137,7 +137,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
device_del(&bus->dev);
|
||||
return err;
|
||||
}
|
||||
@@ -376,6 +416,13 @@ void mdiobus_unregister(struct mii_bus *
|
||||
@@ -375,6 +415,13 @@ void mdiobus_unregister(struct mii_bus *
|
||||
mdiodev->device_remove(mdiodev);
|
||||
mdiodev->device_free(mdiodev);
|
||||
}
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
|
||||
--- a/drivers/net/phy/mdio_bus.c
|
||||
+++ b/drivers/net/phy/mdio_bus.c
|
||||
@@ -331,9 +331,6 @@ int __mdiobus_register(struct mii_bus *b
|
||||
@@ -330,9 +330,6 @@ int __mdiobus_register(struct mii_bus *b
|
||||
|
||||
mutex_init(&bus->mdio_lock);
|
||||
|
||||
@ -31,7 +31,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
/* de-assert bus level PHY GPIO resets */
|
||||
if (bus->num_reset_gpios > 0) {
|
||||
bus->reset_gpiod = devm_kcalloc(&bus->dev,
|
||||
@@ -363,6 +360,9 @@ int __mdiobus_register(struct mii_bus *b
|
||||
@@ -362,6 +359,9 @@ int __mdiobus_register(struct mii_bus *b
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,94 @@
|
||||
From 72ff51d8dd262d1fef25baedc2ac35116435be47 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
|
||||
Date: Wed, 6 Mar 2019 17:54:03 +0100
|
||||
Subject: [PATCH] serial: ar933x_uart: Fix build failure with disabled console
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Andrey has reported on OpenWrt's bug tracking system[1], that he
|
||||
currently can't use ar93xx_uart as pure serial UART without console
|
||||
(CONFIG_SERIAL_8250_CONSOLE and CONFIG_SERIAL_AR933X_CONSOLE undefined),
|
||||
because compilation ends with following error:
|
||||
|
||||
ar933x_uart.c: In function 'ar933x_uart_console_write':
|
||||
ar933x_uart.c:550:14: error: 'struct uart_port' has no
|
||||
member named 'sysrq'
|
||||
|
||||
So this patch moves all the code related to console handling behind
|
||||
series of CONFIG_SERIAL_AR933X_CONSOLE ifdefs.
|
||||
|
||||
1. https://bugs.openwrt.org/index.php?do=details&task_id=2152
|
||||
|
||||
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Cc: Jiri Slaby <jslaby@suse.com>
|
||||
Cc: Andrey Batyiev <batyiev@gmail.com>
|
||||
Reported-by: Andrey Batyiev <batyiev@gmail.com>
|
||||
Tested-by: Andrey Batyiev <batyiev@gmail.com>
|
||||
Signed-off-by: Petr Štetiar <ynezz@true.cz>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/tty/serial/ar933x_uart.c | 24 ++++++++----------------
|
||||
1 file changed, 8 insertions(+), 16 deletions(-)
|
||||
|
||||
--- a/drivers/tty/serial/ar933x_uart.c
|
||||
+++ b/drivers/tty/serial/ar933x_uart.c
|
||||
@@ -52,11 +52,6 @@ struct ar933x_uart_port {
|
||||
struct clk *clk;
|
||||
};
|
||||
|
||||
-static inline bool ar933x_uart_console_enabled(void)
|
||||
-{
|
||||
- return IS_ENABLED(CONFIG_SERIAL_AR933X_CONSOLE);
|
||||
-}
|
||||
-
|
||||
static inline unsigned int ar933x_uart_read(struct ar933x_uart_port *up,
|
||||
int offset)
|
||||
{
|
||||
@@ -511,6 +506,7 @@ static const struct uart_ops ar933x_uart
|
||||
.verify_port = ar933x_uart_verify_port,
|
||||
};
|
||||
|
||||
+#ifdef CONFIG_SERIAL_AR933X_CONSOLE
|
||||
static struct ar933x_uart_port *
|
||||
ar933x_console_ports[CONFIG_SERIAL_AR933X_NR_UARTS];
|
||||
|
||||
@@ -607,14 +603,7 @@ static struct console ar933x_uart_consol
|
||||
.index = -1,
|
||||
.data = &ar933x_uart_driver,
|
||||
};
|
||||
-
|
||||
-static void ar933x_uart_add_console_port(struct ar933x_uart_port *up)
|
||||
-{
|
||||
- if (!ar933x_uart_console_enabled())
|
||||
- return;
|
||||
-
|
||||
- ar933x_console_ports[up->port.line] = up;
|
||||
-}
|
||||
+#endif /* CONFIG_SERIAL_AR933X_CONSOLE */
|
||||
|
||||
static struct uart_driver ar933x_uart_driver = {
|
||||
.owner = THIS_MODULE,
|
||||
@@ -703,7 +692,9 @@ static int ar933x_uart_probe(struct plat
|
||||
baud = ar933x_uart_get_baud(port->uartclk, 0, AR933X_UART_MAX_STEP);
|
||||
up->max_baud = min_t(unsigned int, baud, AR933X_UART_MAX_BAUD);
|
||||
|
||||
- ar933x_uart_add_console_port(up);
|
||||
+#ifdef CONFIG_SERIAL_AR933X_CONSOLE
|
||||
+ ar933x_console_ports[up->port.line] = up;
|
||||
+#endif
|
||||
|
||||
ret = uart_add_one_port(&ar933x_uart_driver, &up->port);
|
||||
if (ret)
|
||||
@@ -752,8 +743,9 @@ static int __init ar933x_uart_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
- if (ar933x_uart_console_enabled())
|
||||
- ar933x_uart_driver.cons = &ar933x_uart_console;
|
||||
+#ifdef CONFIG_SERIAL_AR933X_CONSOLE
|
||||
+ ar933x_uart_driver.cons = &ar933x_uart_console;
|
||||
+#endif
|
||||
|
||||
ret = uart_register_driver(&ar933x_uart_driver);
|
||||
if (ret)
|
@ -0,0 +1,199 @@
|
||||
From 5a1c18b761ddb299a06746948b9ec2814b04fa92 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Wed, 2 Jan 2019 00:00:01 +0100
|
||||
Subject: [PATCH] bcma: keep a direct pointer to the struct device
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Accessing struct device is pretty useful/common so having a direct
|
||||
pointer:
|
||||
1) Simplifies some code
|
||||
2) Makes bcma_bus_get_host_dev() unneeded
|
||||
3) Allows further improvements like using dev_* printing helpers
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/bcma/bcma_private.h | 1 -
|
||||
drivers/bcma/driver_gpio.c | 2 +-
|
||||
drivers/bcma/host_pci.c | 2 ++
|
||||
drivers/bcma/host_soc.c | 4 ++--
|
||||
drivers/bcma/main.c | 45 +++++++++----------------------------
|
||||
include/linux/bcma/bcma.h | 11 +++------
|
||||
6 files changed, 18 insertions(+), 47 deletions(-)
|
||||
|
||||
--- a/drivers/bcma/bcma_private.h
|
||||
+++ b/drivers/bcma/bcma_private.h
|
||||
@@ -33,7 +33,6 @@ int __init bcma_bus_early_register(struc
|
||||
int bcma_bus_suspend(struct bcma_bus *bus);
|
||||
int bcma_bus_resume(struct bcma_bus *bus);
|
||||
#endif
|
||||
-struct device *bcma_bus_get_host_dev(struct bcma_bus *bus);
|
||||
|
||||
/* scan.c */
|
||||
void bcma_detect_chip(struct bcma_bus *bus);
|
||||
--- a/drivers/bcma/driver_gpio.c
|
||||
+++ b/drivers/bcma/driver_gpio.c
|
||||
@@ -183,7 +183,7 @@ int bcma_gpio_init(struct bcma_drv_cc *c
|
||||
chip->direction_input = bcma_gpio_direction_input;
|
||||
chip->direction_output = bcma_gpio_direction_output;
|
||||
chip->owner = THIS_MODULE;
|
||||
- chip->parent = bcma_bus_get_host_dev(bus);
|
||||
+ chip->parent = bus->dev;
|
||||
#if IS_BUILTIN(CONFIG_OF)
|
||||
chip->of_node = cc->core->dev.of_node;
|
||||
#endif
|
||||
--- a/drivers/bcma/host_pci.c
|
||||
+++ b/drivers/bcma/host_pci.c
|
||||
@@ -196,6 +196,8 @@ static int bcma_host_pci_probe(struct pc
|
||||
goto err_pci_release_regions;
|
||||
}
|
||||
|
||||
+ bus->dev = &dev->dev;
|
||||
+
|
||||
/* Map MMIO */
|
||||
err = -ENOMEM;
|
||||
bus->mmio = pci_iomap(dev, 0, ~0UL);
|
||||
--- a/drivers/bcma/host_soc.c
|
||||
+++ b/drivers/bcma/host_soc.c
|
||||
@@ -179,7 +179,6 @@ int __init bcma_host_soc_register(struct
|
||||
/* Host specific */
|
||||
bus->hosttype = BCMA_HOSTTYPE_SOC;
|
||||
bus->ops = &bcma_host_soc_ops;
|
||||
- bus->host_pdev = NULL;
|
||||
|
||||
/* Initialize struct, detect chip */
|
||||
bcma_init_bus(bus);
|
||||
@@ -213,6 +212,8 @@ static int bcma_host_soc_probe(struct pl
|
||||
if (!bus)
|
||||
return -ENOMEM;
|
||||
|
||||
+ bus->dev = dev;
|
||||
+
|
||||
/* Map MMIO */
|
||||
bus->mmio = of_iomap(np, 0);
|
||||
if (!bus->mmio)
|
||||
@@ -221,7 +222,6 @@ static int bcma_host_soc_probe(struct pl
|
||||
/* Host specific */
|
||||
bus->hosttype = BCMA_HOSTTYPE_SOC;
|
||||
bus->ops = &bcma_host_soc_ops;
|
||||
- bus->host_pdev = pdev;
|
||||
|
||||
/* Initialize struct, detect chip */
|
||||
bcma_init_bus(bus);
|
||||
--- a/drivers/bcma/main.c
|
||||
+++ b/drivers/bcma/main.c
|
||||
@@ -223,8 +223,8 @@ unsigned int bcma_core_irq(struct bcma_d
|
||||
mips_irq = bcma_core_mips_irq(core);
|
||||
return mips_irq <= 4 ? mips_irq + 2 : 0;
|
||||
}
|
||||
- if (bus->host_pdev)
|
||||
- return bcma_of_get_irq(&bus->host_pdev->dev, core, num);
|
||||
+ if (bus->dev)
|
||||
+ return bcma_of_get_irq(bus->dev, core, num);
|
||||
return 0;
|
||||
case BCMA_HOSTTYPE_SDIO:
|
||||
return 0;
|
||||
@@ -239,18 +239,18 @@ void bcma_prepare_core(struct bcma_bus *
|
||||
core->dev.release = bcma_release_core_dev;
|
||||
core->dev.bus = &bcma_bus_type;
|
||||
dev_set_name(&core->dev, "bcma%d:%d", bus->num, core->core_index);
|
||||
- core->dev.parent = bcma_bus_get_host_dev(bus);
|
||||
- if (core->dev.parent)
|
||||
- bcma_of_fill_device(core->dev.parent, core);
|
||||
+ core->dev.parent = bus->dev;
|
||||
+ if (bus->dev)
|
||||
+ bcma_of_fill_device(bus->dev, core);
|
||||
|
||||
switch (bus->hosttype) {
|
||||
case BCMA_HOSTTYPE_PCI:
|
||||
- core->dma_dev = &bus->host_pci->dev;
|
||||
+ core->dma_dev = bus->dev;
|
||||
core->irq = bus->host_pci->irq;
|
||||
break;
|
||||
case BCMA_HOSTTYPE_SOC:
|
||||
- if (IS_ENABLED(CONFIG_OF) && bus->host_pdev) {
|
||||
- core->dma_dev = &bus->host_pdev->dev;
|
||||
+ if (IS_ENABLED(CONFIG_OF) && bus->dev) {
|
||||
+ core->dma_dev = bus->dev;
|
||||
} else {
|
||||
core->dev.dma_mask = &core->dev.coherent_dma_mask;
|
||||
core->dma_dev = &core->dev;
|
||||
@@ -261,28 +261,6 @@ void bcma_prepare_core(struct bcma_bus *
|
||||
}
|
||||
}
|
||||
|
||||
-struct device *bcma_bus_get_host_dev(struct bcma_bus *bus)
|
||||
-{
|
||||
- switch (bus->hosttype) {
|
||||
- case BCMA_HOSTTYPE_PCI:
|
||||
- if (bus->host_pci)
|
||||
- return &bus->host_pci->dev;
|
||||
- else
|
||||
- return NULL;
|
||||
- case BCMA_HOSTTYPE_SOC:
|
||||
- if (bus->host_pdev)
|
||||
- return &bus->host_pdev->dev;
|
||||
- else
|
||||
- return NULL;
|
||||
- case BCMA_HOSTTYPE_SDIO:
|
||||
- if (bus->host_sdio)
|
||||
- return &bus->host_sdio->dev;
|
||||
- else
|
||||
- return NULL;
|
||||
- }
|
||||
- return NULL;
|
||||
-}
|
||||
-
|
||||
void bcma_init_bus(struct bcma_bus *bus)
|
||||
{
|
||||
mutex_lock(&bcma_buses_mutex);
|
||||
@@ -402,7 +380,6 @@ int bcma_bus_register(struct bcma_bus *b
|
||||
{
|
||||
int err;
|
||||
struct bcma_device *core;
|
||||
- struct device *dev;
|
||||
|
||||
/* Scan for devices (cores) */
|
||||
err = bcma_bus_scan(bus);
|
||||
@@ -425,10 +402,8 @@ int bcma_bus_register(struct bcma_bus *b
|
||||
bcma_core_pci_early_init(&bus->drv_pci[0]);
|
||||
}
|
||||
|
||||
- dev = bcma_bus_get_host_dev(bus);
|
||||
- if (dev) {
|
||||
- of_platform_default_populate(dev->of_node, NULL, dev);
|
||||
- }
|
||||
+ if (bus->dev)
|
||||
+ of_platform_default_populate(bus->dev->of_node, NULL, bus->dev);
|
||||
|
||||
/* Cores providing flash access go before SPROM init */
|
||||
list_for_each_entry(core, &bus->cores, list) {
|
||||
--- a/include/linux/bcma/bcma.h
|
||||
+++ b/include/linux/bcma/bcma.h
|
||||
@@ -332,6 +332,8 @@ extern int bcma_arch_register_fallback_s
|
||||
struct ssb_sprom *out));
|
||||
|
||||
struct bcma_bus {
|
||||
+ struct device *dev;
|
||||
+
|
||||
/* The MMIO area. */
|
||||
void __iomem *mmio;
|
||||
|
||||
@@ -339,14 +341,7 @@ struct bcma_bus {
|
||||
|
||||
enum bcma_hosttype hosttype;
|
||||
bool host_is_pcie2; /* Used for BCMA_HOSTTYPE_PCI only */
|
||||
- union {
|
||||
- /* Pointer to the PCI bus (only for BCMA_HOSTTYPE_PCI) */
|
||||
- struct pci_dev *host_pci;
|
||||
- /* Pointer to the SDIO device (only for BCMA_HOSTTYPE_SDIO) */
|
||||
- struct sdio_func *host_sdio;
|
||||
- /* Pointer to platform device (only for BCMA_HOSTTYPE_SOC) */
|
||||
- struct platform_device *host_pdev;
|
||||
- };
|
||||
+ struct pci_dev *host_pci; /* PCI bus pointer (BCMA_HOSTTYPE_PCI only) */
|
||||
|
||||
struct bcma_chipinfo chipinfo;
|
||||
|
@ -0,0 +1,36 @@
|
||||
From 777bc4801a6868fcbff09ffb6e30f023e7c5ed38 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Wed, 2 Jan 2019 00:00:02 +0100
|
||||
Subject: [PATCH] bcma: use dev_* printing functions
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
It provides more meaningful messages.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/bcma/bcma_private.h | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
--- a/drivers/bcma/bcma_private.h
|
||||
+++ b/drivers/bcma/bcma_private.h
|
||||
@@ -10,13 +10,13 @@
|
||||
#include <linux/delay.h>
|
||||
|
||||
#define bcma_err(bus, fmt, ...) \
|
||||
- pr_err("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
+ dev_err((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
#define bcma_warn(bus, fmt, ...) \
|
||||
- pr_warn("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
+ dev_warn((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
#define bcma_info(bus, fmt, ...) \
|
||||
- pr_info("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
+ dev_info((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
#define bcma_debug(bus, fmt, ...) \
|
||||
- pr_debug("bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
+ dev_dbg((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
|
||||
|
||||
struct bcma_bus;
|
||||
|
@ -37,7 +37,7 @@ Reviewed-by: John Gilmore <gnu@toad.com>
|
||||
|
||||
-#define IN_EXPERIMENTAL(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
|
||||
-#define IN_BADCLASS(a) IN_EXPERIMENTAL((a))
|
||||
+#define IN_BADCLASS(a) ((((long int) (a) ) == 0xffffffff)
|
||||
+#define IN_BADCLASS(a) (((long int) (a) ) == (long int)0xffffffff)
|
||||
+#define IN_EXPERIMENTAL(a) IN_BADCLASS((a))
|
||||
+
|
||||
+#define IN_CLASSE(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
|
||||
|
@ -0,0 +1,36 @@
|
||||
From: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Date: Thu, 21 Dec 2017 10:17:38 +0100
|
||||
Subject: [PATCH] batman-adv: Let packet.h include its headers directly
|
||||
|
||||
The headers used by packet.h should also be included by it directly. main.h
|
||||
is currently dealing with it in batman-adv, but this will no longer work
|
||||
when this header is moved to include/uapi/linux/.
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
--- a/net/batman-adv/main.h
|
||||
+++ b/net/batman-adv/main.h
|
||||
@@ -184,10 +184,8 @@ enum batadv_uev_type {
|
||||
|
||||
/* Kernel headers */
|
||||
|
||||
-#include <linux/bitops.h> /* for packet.h */
|
||||
#include <linux/compiler.h>
|
||||
#include <linux/etherdevice.h>
|
||||
-#include <linux/if_ether.h> /* for packet.h */
|
||||
#include <linux/if_vlan.h>
|
||||
#include <linux/jiffies.h>
|
||||
#include <linux/percpu.h>
|
||||
--- a/net/batman-adv/packet.h
|
||||
+++ b/net/batman-adv/packet.h
|
||||
@@ -19,6 +19,8 @@
|
||||
#define _NET_BATMAN_ADV_PACKET_H_
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
+#include <linux/bitops.h>
|
||||
+#include <linux/if_ether.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define batadv_tp_is_error(n) ((u8)(n) > 127 ? 1 : 0)
|
@ -0,0 +1,72 @@
|
||||
From: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Date: Thu, 21 Dec 2017 10:17:39 +0100
|
||||
Subject: [PATCH] batman-adv: Remove usage of BIT(x) in packet.h
|
||||
|
||||
The BIT(x) macro is no longer available for uapi headers because it is
|
||||
defined outside of it (linux/bitops.h). The use of it must therefore be
|
||||
avoided and replaced by an appropriate other representation.
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
--- a/net/batman-adv/packet.h
|
||||
+++ b/net/batman-adv/packet.h
|
||||
@@ -19,7 +19,6 @@
|
||||
#define _NET_BATMAN_ADV_PACKET_H_
|
||||
|
||||
#include <asm/byteorder.h>
|
||||
-#include <linux/bitops.h>
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
@@ -85,9 +84,9 @@ enum batadv_subtype {
|
||||
* one hop neighbor on the interface where it was originally received.
|
||||
*/
|
||||
enum batadv_iv_flags {
|
||||
- BATADV_NOT_BEST_NEXT_HOP = BIT(0),
|
||||
- BATADV_PRIMARIES_FIRST_HOP = BIT(1),
|
||||
- BATADV_DIRECTLINK = BIT(2),
|
||||
+ BATADV_NOT_BEST_NEXT_HOP = 1UL << 0,
|
||||
+ BATADV_PRIMARIES_FIRST_HOP = 1UL << 1,
|
||||
+ BATADV_DIRECTLINK = 1UL << 2,
|
||||
};
|
||||
|
||||
/* ICMP message types */
|
||||
@@ -108,9 +107,9 @@ enum batadv_icmp_packettype {
|
||||
* @BATADV_MCAST_WANT_ALL_IPV6: we want all IPv6 multicast packets
|
||||
*/
|
||||
enum batadv_mcast_flags {
|
||||
- BATADV_MCAST_WANT_ALL_UNSNOOPABLES = BIT(0),
|
||||
- BATADV_MCAST_WANT_ALL_IPV4 = BIT(1),
|
||||
- BATADV_MCAST_WANT_ALL_IPV6 = BIT(2),
|
||||
+ BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0,
|
||||
+ BATADV_MCAST_WANT_ALL_IPV4 = 1UL << 1,
|
||||
+ BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2,
|
||||
};
|
||||
|
||||
/* tt data subtypes */
|
||||
@@ -124,10 +123,10 @@ enum batadv_mcast_flags {
|
||||
* @BATADV_TT_FULL_TABLE: contains full table to replace existing table
|
||||
*/
|
||||
enum batadv_tt_data_flags {
|
||||
- BATADV_TT_OGM_DIFF = BIT(0),
|
||||
- BATADV_TT_REQUEST = BIT(1),
|
||||
- BATADV_TT_RESPONSE = BIT(2),
|
||||
- BATADV_TT_FULL_TABLE = BIT(4),
|
||||
+ BATADV_TT_OGM_DIFF = 1UL << 0,
|
||||
+ BATADV_TT_REQUEST = 1UL << 1,
|
||||
+ BATADV_TT_RESPONSE = 1UL << 2,
|
||||
+ BATADV_TT_FULL_TABLE = 1UL << 4,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -135,7 +134,7 @@ enum batadv_tt_data_flags {
|
||||
* @BATADV_VLAN_HAS_TAG: whether the field contains a valid vlan tag or not
|
||||
*/
|
||||
enum batadv_vlan_flags {
|
||||
- BATADV_VLAN_HAS_TAG = BIT(15),
|
||||
+ BATADV_VLAN_HAS_TAG = 1UL << 15,
|
||||
};
|
||||
|
||||
/* claim frame types for the bridge loop avoidance */
|
@ -0,0 +1,386 @@
|
||||
From: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Date: Thu, 21 Dec 2017 10:17:40 +0100
|
||||
Subject: [PATCH] batman-adv: Remove kernel fixed width types in packet.h
|
||||
|
||||
The uapi headers use the __u8/__u16/... version of the fixed width types
|
||||
instead of u8/u16/... The use of the latter must be avoided before
|
||||
packet.h is copied to include/uapi/linux/.
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
--- a/net/batman-adv/packet.h
|
||||
+++ b/net/batman-adv/packet.h
|
||||
@@ -22,7 +22,7 @@
|
||||
#include <linux/if_ether.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
-#define batadv_tp_is_error(n) ((u8)(n) > 127 ? 1 : 0)
|
||||
+#define batadv_tp_is_error(n) ((__u8)(n) > 127 ? 1 : 0)
|
||||
|
||||
/**
|
||||
* enum batadv_packettype - types for batman-adv encapsulated packets
|
||||
@@ -169,8 +169,8 @@ enum batadv_tvlv_type {
|
||||
* transport the claim type and the group id
|
||||
*/
|
||||
struct batadv_bla_claim_dst {
|
||||
- u8 magic[3]; /* FF:43:05 */
|
||||
- u8 type; /* bla_claimframe */
|
||||
+ __u8 magic[3]; /* FF:43:05 */
|
||||
+ __u8 type; /* bla_claimframe */
|
||||
__be16 group; /* group id */
|
||||
};
|
||||
|
||||
@@ -190,15 +190,15 @@ struct batadv_bla_claim_dst {
|
||||
* @tvlv_len: length of tvlv data following the ogm header
|
||||
*/
|
||||
struct batadv_ogm_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 ttl;
|
||||
- u8 flags;
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 ttl;
|
||||
+ __u8 flags;
|
||||
__be32 seqno;
|
||||
- u8 orig[ETH_ALEN];
|
||||
- u8 prev_sender[ETH_ALEN];
|
||||
- u8 reserved;
|
||||
- u8 tq;
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
+ __u8 prev_sender[ETH_ALEN];
|
||||
+ __u8 reserved;
|
||||
+ __u8 tq;
|
||||
__be16 tvlv_len;
|
||||
/* __packed is not needed as the struct size is divisible by 4,
|
||||
* and the largest data type in this struct has a size of 4.
|
||||
@@ -219,12 +219,12 @@ struct batadv_ogm_packet {
|
||||
* @throughput: the currently flooded path throughput
|
||||
*/
|
||||
struct batadv_ogm2_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 ttl;
|
||||
- u8 flags;
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 ttl;
|
||||
+ __u8 flags;
|
||||
__be32 seqno;
|
||||
- u8 orig[ETH_ALEN];
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
__be16 tvlv_len;
|
||||
__be32 throughput;
|
||||
/* __packed is not needed as the struct size is divisible by 4,
|
||||
@@ -243,9 +243,9 @@ struct batadv_ogm2_packet {
|
||||
* @elp_interval: currently used ELP sending interval in ms
|
||||
*/
|
||||
struct batadv_elp_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 orig[ETH_ALEN];
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
__be32 seqno;
|
||||
__be32 elp_interval;
|
||||
};
|
||||
@@ -268,14 +268,14 @@ struct batadv_elp_packet {
|
||||
* members are padded the same way as they are in real packets.
|
||||
*/
|
||||
struct batadv_icmp_header {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 ttl;
|
||||
- u8 msg_type; /* see ICMP message types above */
|
||||
- u8 dst[ETH_ALEN];
|
||||
- u8 orig[ETH_ALEN];
|
||||
- u8 uid;
|
||||
- u8 align[3];
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 ttl;
|
||||
+ __u8 msg_type; /* see ICMP message types above */
|
||||
+ __u8 dst[ETH_ALEN];
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
+ __u8 uid;
|
||||
+ __u8 align[3];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -291,14 +291,14 @@ struct batadv_icmp_header {
|
||||
* @seqno: ICMP sequence number
|
||||
*/
|
||||
struct batadv_icmp_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 ttl;
|
||||
- u8 msg_type; /* see ICMP message types above */
|
||||
- u8 dst[ETH_ALEN];
|
||||
- u8 orig[ETH_ALEN];
|
||||
- u8 uid;
|
||||
- u8 reserved;
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 ttl;
|
||||
+ __u8 msg_type; /* see ICMP message types above */
|
||||
+ __u8 dst[ETH_ALEN];
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
+ __u8 uid;
|
||||
+ __u8 reserved;
|
||||
__be16 seqno;
|
||||
};
|
||||
|
||||
@@ -320,15 +320,15 @@ struct batadv_icmp_packet {
|
||||
* store it using network order
|
||||
*/
|
||||
struct batadv_icmp_tp_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 ttl;
|
||||
- u8 msg_type; /* see ICMP message types above */
|
||||
- u8 dst[ETH_ALEN];
|
||||
- u8 orig[ETH_ALEN];
|
||||
- u8 uid;
|
||||
- u8 subtype;
|
||||
- u8 session[2];
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 ttl;
|
||||
+ __u8 msg_type; /* see ICMP message types above */
|
||||
+ __u8 dst[ETH_ALEN];
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
+ __u8 uid;
|
||||
+ __u8 subtype;
|
||||
+ __u8 session[2];
|
||||
__be32 seqno;
|
||||
__be32 timestamp;
|
||||
};
|
||||
@@ -359,16 +359,16 @@ enum batadv_icmp_tp_subtype {
|
||||
* @rr: route record array
|
||||
*/
|
||||
struct batadv_icmp_packet_rr {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 ttl;
|
||||
- u8 msg_type; /* see ICMP message types above */
|
||||
- u8 dst[ETH_ALEN];
|
||||
- u8 orig[ETH_ALEN];
|
||||
- u8 uid;
|
||||
- u8 rr_cur;
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 ttl;
|
||||
+ __u8 msg_type; /* see ICMP message types above */
|
||||
+ __u8 dst[ETH_ALEN];
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
+ __u8 uid;
|
||||
+ __u8 rr_cur;
|
||||
__be16 seqno;
|
||||
- u8 rr[BATADV_RR_LEN][ETH_ALEN];
|
||||
+ __u8 rr[BATADV_RR_LEN][ETH_ALEN];
|
||||
};
|
||||
|
||||
#define BATADV_ICMP_MAX_PACKET_SIZE sizeof(struct batadv_icmp_packet_rr)
|
||||
@@ -394,11 +394,11 @@ struct batadv_icmp_packet_rr {
|
||||
* @dest: originator destination of the unicast packet
|
||||
*/
|
||||
struct batadv_unicast_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version;
|
||||
- u8 ttl;
|
||||
- u8 ttvn; /* destination translation table version number */
|
||||
- u8 dest[ETH_ALEN];
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version;
|
||||
+ __u8 ttl;
|
||||
+ __u8 ttvn; /* destination translation table version number */
|
||||
+ __u8 dest[ETH_ALEN];
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
@@ -413,9 +413,9 @@ struct batadv_unicast_packet {
|
||||
*/
|
||||
struct batadv_unicast_4addr_packet {
|
||||
struct batadv_unicast_packet u;
|
||||
- u8 src[ETH_ALEN];
|
||||
- u8 subtype;
|
||||
- u8 reserved;
|
||||
+ __u8 src[ETH_ALEN];
|
||||
+ __u8 subtype;
|
||||
+ __u8 reserved;
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
@@ -435,22 +435,22 @@ struct batadv_unicast_4addr_packet {
|
||||
* @total_size: size of the merged packet
|
||||
*/
|
||||
struct batadv_frag_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version; /* batman version field */
|
||||
- u8 ttl;
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version; /* batman version field */
|
||||
+ __u8 ttl;
|
||||
#if defined(__BIG_ENDIAN_BITFIELD)
|
||||
- u8 no:4;
|
||||
- u8 priority:3;
|
||||
- u8 reserved:1;
|
||||
+ __u8 no:4;
|
||||
+ __u8 priority:3;
|
||||
+ __u8 reserved:1;
|
||||
#elif defined(__LITTLE_ENDIAN_BITFIELD)
|
||||
- u8 reserved:1;
|
||||
- u8 priority:3;
|
||||
- u8 no:4;
|
||||
+ __u8 reserved:1;
|
||||
+ __u8 priority:3;
|
||||
+ __u8 no:4;
|
||||
#else
|
||||
#error "unknown bitfield endianness"
|
||||
#endif
|
||||
- u8 dest[ETH_ALEN];
|
||||
- u8 orig[ETH_ALEN];
|
||||
+ __u8 dest[ETH_ALEN];
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
__be16 seqno;
|
||||
__be16 total_size;
|
||||
};
|
||||
@@ -465,12 +465,12 @@ struct batadv_frag_packet {
|
||||
* @orig: originator of the broadcast packet
|
||||
*/
|
||||
struct batadv_bcast_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version; /* batman version field */
|
||||
- u8 ttl;
|
||||
- u8 reserved;
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version; /* batman version field */
|
||||
+ __u8 ttl;
|
||||
+ __u8 reserved;
|
||||
__be32 seqno;
|
||||
- u8 orig[ETH_ALEN];
|
||||
+ __u8 orig[ETH_ALEN];
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
@@ -494,19 +494,19 @@ struct batadv_bcast_packet {
|
||||
* @coded_len: length of network coded part of the payload
|
||||
*/
|
||||
struct batadv_coded_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version; /* batman version field */
|
||||
- u8 ttl;
|
||||
- u8 first_ttvn;
|
||||
- /* u8 first_dest[ETH_ALEN]; - saved in mac header destination */
|
||||
- u8 first_source[ETH_ALEN];
|
||||
- u8 first_orig_dest[ETH_ALEN];
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version; /* batman version field */
|
||||
+ __u8 ttl;
|
||||
+ __u8 first_ttvn;
|
||||
+ /* __u8 first_dest[ETH_ALEN]; - saved in mac header destination */
|
||||
+ __u8 first_source[ETH_ALEN];
|
||||
+ __u8 first_orig_dest[ETH_ALEN];
|
||||
__be32 first_crc;
|
||||
- u8 second_ttl;
|
||||
- u8 second_ttvn;
|
||||
- u8 second_dest[ETH_ALEN];
|
||||
- u8 second_source[ETH_ALEN];
|
||||
- u8 second_orig_dest[ETH_ALEN];
|
||||
+ __u8 second_ttl;
|
||||
+ __u8 second_ttvn;
|
||||
+ __u8 second_dest[ETH_ALEN];
|
||||
+ __u8 second_source[ETH_ALEN];
|
||||
+ __u8 second_orig_dest[ETH_ALEN];
|
||||
__be32 second_crc;
|
||||
__be16 coded_len;
|
||||
};
|
||||
@@ -525,14 +525,14 @@ struct batadv_coded_packet {
|
||||
* @align: 2 bytes to align the header to a 4 byte boundary
|
||||
*/
|
||||
struct batadv_unicast_tvlv_packet {
|
||||
- u8 packet_type;
|
||||
- u8 version; /* batman version field */
|
||||
- u8 ttl;
|
||||
- u8 reserved;
|
||||
- u8 dst[ETH_ALEN];
|
||||
- u8 src[ETH_ALEN];
|
||||
+ __u8 packet_type;
|
||||
+ __u8 version; /* batman version field */
|
||||
+ __u8 ttl;
|
||||
+ __u8 reserved;
|
||||
+ __u8 dst[ETH_ALEN];
|
||||
+ __u8 src[ETH_ALEN];
|
||||
__be16 tvlv_len;
|
||||
- u16 align;
|
||||
+ __u16 align;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -542,8 +542,8 @@ struct batadv_unicast_tvlv_packet {
|
||||
* @len: tvlv container length
|
||||
*/
|
||||
struct batadv_tvlv_hdr {
|
||||
- u8 type;
|
||||
- u8 version;
|
||||
+ __u8 type;
|
||||
+ __u8 version;
|
||||
__be16 len;
|
||||
};
|
||||
|
||||
@@ -566,8 +566,8 @@ struct batadv_tvlv_gateway_data {
|
||||
* one batadv_tvlv_tt_vlan_data object per announced vlan
|
||||
*/
|
||||
struct batadv_tvlv_tt_data {
|
||||
- u8 flags;
|
||||
- u8 ttvn;
|
||||
+ __u8 flags;
|
||||
+ __u8 ttvn;
|
||||
__be16 num_vlan;
|
||||
};
|
||||
|
||||
@@ -581,7 +581,7 @@ struct batadv_tvlv_tt_data {
|
||||
struct batadv_tvlv_tt_vlan_data {
|
||||
__be32 crc;
|
||||
__be16 vid;
|
||||
- u16 reserved;
|
||||
+ __u16 reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -593,9 +593,9 @@ struct batadv_tvlv_tt_vlan_data {
|
||||
* @vid: VLAN identifier
|
||||
*/
|
||||
struct batadv_tvlv_tt_change {
|
||||
- u8 flags;
|
||||
- u8 reserved[3];
|
||||
- u8 addr[ETH_ALEN];
|
||||
+ __u8 flags;
|
||||
+ __u8 reserved[3];
|
||||
+ __u8 addr[ETH_ALEN];
|
||||
__be16 vid;
|
||||
};
|
||||
|
||||
@@ -605,7 +605,7 @@ struct batadv_tvlv_tt_change {
|
||||
* @vid: VLAN identifier
|
||||
*/
|
||||
struct batadv_tvlv_roam_adv {
|
||||
- u8 client[ETH_ALEN];
|
||||
+ __u8 client[ETH_ALEN];
|
||||
__be16 vid;
|
||||
};
|
||||
|
||||
@@ -615,8 +615,8 @@ struct batadv_tvlv_roam_adv {
|
||||
* @reserved: reserved field
|
||||
*/
|
||||
struct batadv_tvlv_mcast_data {
|
||||
- u8 flags;
|
||||
- u8 reserved[3];
|
||||
+ __u8 flags;
|
||||
+ __u8 reserved[3];
|
||||
};
|
||||
|
||||
#endif /* _NET_BATMAN_ADV_PACKET_H_ */
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,108 @@
|
||||
From: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Date: Thu, 21 Dec 2017 10:17:42 +0100
|
||||
Subject: [PATCH] flow_dissector: Parse batman-adv unicast headers
|
||||
|
||||
The batman-adv unicast packets contain a full layer 2 frame in encapsulated
|
||||
form. The flow dissector must therefore be able to parse the batman-adv
|
||||
unicast header to reach the layer 2+3 information.
|
||||
|
||||
+--------------------+
|
||||
| ip(v6)hdr |
|
||||
+--------------------+
|
||||
| inner ethhdr |
|
||||
+--------------------+
|
||||
| batadv unicast hdr |
|
||||
+--------------------+
|
||||
| outer ethhdr |
|
||||
+--------------------+
|
||||
|
||||
The obtained information from the upper layer can then be used by RPS to
|
||||
schedule the processing on separate cores. This allows better distribution
|
||||
of multiple flows from the same neighbor to different cores.
|
||||
|
||||
Signed-off-by: Sven Eckelmann <sven.eckelmann@openmesh.com>
|
||||
Reviewed-by: Jiri Pirko <jiri@mellanox.com>
|
||||
Acked-by: Willem de Bruijn <willemb@google.com>
|
||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||||
---
|
||||
|
||||
--- a/net/core/flow_dissector.c
|
||||
+++ b/net/core/flow_dissector.c
|
||||
@@ -22,6 +22,7 @@
|
||||
#include <linux/tcp.h>
|
||||
#include <net/flow_dissector.h>
|
||||
#include <scsi/fc/fc_fcoe.h>
|
||||
+#include <uapi/linux/batadv_packet.h>
|
||||
|
||||
static void dissector_set_key(struct flow_dissector *flow_dissector,
|
||||
enum flow_dissector_key_id key_id)
|
||||
@@ -338,6 +339,57 @@ __skb_flow_dissect_gre(const struct sk_b
|
||||
return FLOW_DISSECT_RET_PROTO_AGAIN;
|
||||
}
|
||||
|
||||
+/**
|
||||
+ * __skb_flow_dissect_batadv() - dissect batman-adv header
|
||||
+ * @skb: sk_buff to with the batman-adv header
|
||||
+ * @key_control: flow dissectors control key
|
||||
+ * @data: raw buffer pointer to the packet, if NULL use skb->data
|
||||
+ * @p_proto: pointer used to update the protocol to process next
|
||||
+ * @p_nhoff: pointer used to update inner network header offset
|
||||
+ * @hlen: packet header length
|
||||
+ * @flags: any combination of FLOW_DISSECTOR_F_*
|
||||
+ *
|
||||
+ * ETH_P_BATMAN packets are tried to be dissected. Only
|
||||
+ * &struct batadv_unicast packets are actually processed because they contain an
|
||||
+ * inner ethernet header and are usually followed by actual network header. This
|
||||
+ * allows the flow dissector to continue processing the packet.
|
||||
+ *
|
||||
+ * Return: FLOW_DISSECT_RET_PROTO_AGAIN when &struct batadv_unicast was found,
|
||||
+ * FLOW_DISSECT_RET_OUT_GOOD when dissector should stop after encapsulation,
|
||||
+ * otherwise FLOW_DISSECT_RET_OUT_BAD
|
||||
+ */
|
||||
+static enum flow_dissect_ret
|
||||
+__skb_flow_dissect_batadv(const struct sk_buff *skb,
|
||||
+ struct flow_dissector_key_control *key_control,
|
||||
+ void *data, __be16 *p_proto, int *p_nhoff, int hlen,
|
||||
+ unsigned int flags)
|
||||
+{
|
||||
+ struct {
|
||||
+ struct batadv_unicast_packet batadv_unicast;
|
||||
+ struct ethhdr eth;
|
||||
+ } *hdr, _hdr;
|
||||
+
|
||||
+ hdr = __skb_header_pointer(skb, *p_nhoff, sizeof(_hdr), data, hlen,
|
||||
+ &_hdr);
|
||||
+ if (!hdr)
|
||||
+ return FLOW_DISSECT_RET_OUT_BAD;
|
||||
+
|
||||
+ if (hdr->batadv_unicast.version != BATADV_COMPAT_VERSION)
|
||||
+ return FLOW_DISSECT_RET_OUT_BAD;
|
||||
+
|
||||
+ if (hdr->batadv_unicast.packet_type != BATADV_UNICAST)
|
||||
+ return FLOW_DISSECT_RET_OUT_BAD;
|
||||
+
|
||||
+ *p_proto = hdr->eth.h_proto;
|
||||
+ *p_nhoff += sizeof(*hdr);
|
||||
+
|
||||
+ key_control->flags |= FLOW_DIS_ENCAPSULATION;
|
||||
+ if (flags & FLOW_DISSECTOR_F_STOP_AT_ENCAP)
|
||||
+ return FLOW_DISSECT_RET_OUT_GOOD;
|
||||
+
|
||||
+ return FLOW_DISSECT_RET_PROTO_AGAIN;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
__skb_flow_dissect_tcp(const struct sk_buff *skb,
|
||||
struct flow_dissector *flow_dissector,
|
||||
@@ -717,6 +769,11 @@ proto_again:
|
||||
nhoff, hlen);
|
||||
break;
|
||||
|
||||
+ case htons(ETH_P_BATMAN):
|
||||
+ fdret = __skb_flow_dissect_batadv(skb, key_control, data,
|
||||
+ &proto, &nhoff, hlen, flags);
|
||||
+ break;
|
||||
+
|
||||
default:
|
||||
fdret = FLOW_DISSECT_RET_OUT_BAD;
|
||||
break;
|
@ -0,0 +1,69 @@
|
||||
From dd7590a3ab3f0804ed5e930295e2caa5979e3958 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
||||
Date: Thu, 28 Feb 2019 22:57:33 +0100
|
||||
Subject: [PATCH] leds: trigger: netdev: fix refcnt leak on interface rename
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Renaming a netdev-trigger-tracked interface was resulting in an
|
||||
unbalanced dev_hold().
|
||||
|
||||
Example:
|
||||
> iw phy phy0 interface add foo type __ap
|
||||
> echo netdev > trigger
|
||||
> echo foo > device_name
|
||||
> ip link set foo name bar
|
||||
> iw dev bar del
|
||||
[ 237.355366] unregister_netdevice: waiting for bar to become free. Usage count = 1
|
||||
[ 247.435362] unregister_netdevice: waiting for bar to become free. Usage count = 1
|
||||
[ 257.545366] unregister_netdevice: waiting for bar to become free. Usage count = 1
|
||||
|
||||
Above problem was caused by trigger checking a dev->name which obviously
|
||||
changes after renaming an interface. It meant missing all further events
|
||||
including the NETDEV_UNREGISTER which is required for calling dev_put().
|
||||
|
||||
This change fixes that by:
|
||||
1) Comparing device struct *address* for notification-filtering purposes
|
||||
2) Dropping unneeded NETDEV_CHANGENAME code (no behavior change)
|
||||
|
||||
Fixes: 06f502f57d0d ("leds: trigger: Introduce a NETDEV trigger")
|
||||
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
||||
Acked-by: Pavel Machek <pavel@ucw.cz>
|
||||
Signed-off-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
|
||||
---
|
||||
drivers/leds/trigger/ledtrig-netdev.c | 13 +++++--------
|
||||
1 file changed, 5 insertions(+), 8 deletions(-)
|
||||
|
||||
--- a/drivers/leds/trigger/ledtrig-netdev.c
|
||||
+++ b/drivers/leds/trigger/ledtrig-netdev.c
|
||||
@@ -299,11 +299,11 @@ static int netdev_trig_notify(struct not
|
||||
notifier);
|
||||
|
||||
if (evt != NETDEV_UP && evt != NETDEV_DOWN && evt != NETDEV_CHANGE
|
||||
- && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER
|
||||
- && evt != NETDEV_CHANGENAME)
|
||||
+ && evt != NETDEV_REGISTER && evt != NETDEV_UNREGISTER)
|
||||
return NOTIFY_DONE;
|
||||
|
||||
- if (strcmp(dev->name, trigger_data->device_name))
|
||||
+ if (!(dev == trigger_data->net_dev ||
|
||||
+ (evt == NETDEV_REGISTER && !strcmp(dev->name, trigger_data->device_name))))
|
||||
return NOTIFY_DONE;
|
||||
|
||||
cancel_delayed_work_sync(&trigger_data->work);
|
||||
@@ -318,12 +318,9 @@ static int netdev_trig_notify(struct not
|
||||
dev_hold(dev);
|
||||
trigger_data->net_dev = dev;
|
||||
break;
|
||||
- case NETDEV_CHANGENAME:
|
||||
case NETDEV_UNREGISTER:
|
||||
- if (trigger_data->net_dev) {
|
||||
- dev_put(trigger_data->net_dev);
|
||||
- trigger_data->net_dev = NULL;
|
||||
- }
|
||||
+ dev_put(trigger_data->net_dev);
|
||||
+ trigger_data->net_dev = NULL;
|
||||
break;
|
||||
case NETDEV_UP:
|
||||
case NETDEV_CHANGE:
|
@ -9,7 +9,7 @@
|
||||
/**
|
||||
* mdiobus_alloc_size - allocate a mii_bus structure
|
||||
* @size: extra amount of memory to allocate for private storage.
|
||||
@@ -401,6 +403,17 @@ void mdiobus_free(struct mii_bus *bus)
|
||||
@@ -400,6 +402,17 @@ void mdiobus_free(struct mii_bus *bus)
|
||||
}
|
||||
EXPORT_SYMBOL(mdiobus_free);
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
/**
|
||||
* mdiobus_scan - scan a bus for MDIO devices.
|
||||
* @bus: mii_bus to scan
|
||||
@@ -416,6 +429,7 @@ EXPORT_SYMBOL(mdiobus_free);
|
||||
@@ -415,6 +428,7 @@ EXPORT_SYMBOL(mdiobus_free);
|
||||
struct phy_device *mdiobus_scan(struct mii_bus *bus, int addr)
|
||||
{
|
||||
struct phy_device *phydev;
|
||||
@ -35,7 +35,7 @@
|
||||
int err;
|
||||
|
||||
phydev = get_phy_device(bus, addr, false);
|
||||
@@ -428,6 +442,12 @@ struct phy_device *mdiobus_scan(struct m
|
||||
@@ -427,6 +441,12 @@ struct phy_device *mdiobus_scan(struct m
|
||||
*/
|
||||
of_mdiobus_link_mdiodev(bus, &phydev->mdio);
|
||||
|
||||
|
@ -74,7 +74,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
} else if (has_acpi_companion(dma_dev)) {
|
||||
--- a/drivers/net/bonding/bond_main.c
|
||||
+++ b/drivers/net/bonding/bond_main.c
|
||||
@@ -1337,7 +1337,8 @@ void bond_lower_state_changed(struct sla
|
||||
@@ -1330,7 +1330,8 @@ void bond_lower_state_changed(struct sla
|
||||
}
|
||||
|
||||
/* enslave device <slave> to bond device <master> */
|
||||
@ -84,7 +84,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
{
|
||||
struct bonding *bond = netdev_priv(bond_dev);
|
||||
const struct net_device_ops *slave_ops = slave_dev->netdev_ops;
|
||||
@@ -3509,7 +3510,7 @@ static int bond_do_ioctl(struct net_devi
|
||||
@@ -3502,7 +3503,7 @@ static int bond_do_ioctl(struct net_devi
|
||||
switch (cmd) {
|
||||
case BOND_ENSLAVE_OLD:
|
||||
case SIOCBONDENSLAVE:
|
||||
|
@ -103,7 +103,7 @@ Signed-off-by: Biwen Li <biwen.li@nxp.com>
|
||||
+ $ keyctl load secure kmk-master "load 'cat secure_key.blob'" @u
|
||||
--- a/MAINTAINERS
|
||||
+++ b/MAINTAINERS
|
||||
@@ -7645,6 +7645,18 @@ F: include/keys/trusted-type.h
|
||||
@@ -7646,6 +7646,18 @@ F: include/keys/trusted-type.h
|
||||
F: security/keys/trusted.c
|
||||
F: security/keys/trusted.h
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user