kernel: bump 5.10 to 5.10.24
Straightforward refresh of patches using update_kernel. Run tested: x86_64 (apu2) Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
This commit is contained in:
		| @@ -7,10 +7,10 @@ ifdef CONFIG_TESTING_KERNEL | |||||||
| endif | endif | ||||||
|  |  | ||||||
| LINUX_VERSION-5.4 = .106 | LINUX_VERSION-5.4 = .106 | ||||||
| LINUX_VERSION-5.10 = .23 | LINUX_VERSION-5.10 = .24 | ||||||
|  |  | ||||||
| LINUX_KERNEL_HASH-5.4.106 = cc873b2c39c1823d4bc4f6cde527943c8cfd28ae94cb517804b0f9679359c8db | LINUX_KERNEL_HASH-5.4.106 = cc873b2c39c1823d4bc4f6cde527943c8cfd28ae94cb517804b0f9679359c8db | ||||||
| LINUX_KERNEL_HASH-5.10.23 = f6e21c03ec6ff85b26d77c59fdab81e64707792a57593643307df192749edb6a | LINUX_KERNEL_HASH-5.10.24 = c6dcd04e5893c5d68b637188f904528e91f28d790cd49cf8a7fb817423bd763f | ||||||
|  |  | ||||||
| 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))))))) | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ produce a noisy warning. | |||||||
|  |  | ||||||
| --- a/drivers/usb/host/xhci-pci.c | --- a/drivers/usb/host/xhci-pci.c | ||||||
| +++ b/drivers/usb/host/xhci-pci.c | +++ b/drivers/usb/host/xhci-pci.c | ||||||
| @@ -260,6 +260,7 @@ static void xhci_pci_quirks(struct devic | @@ -261,6 +261,7 @@ static void xhci_pci_quirks(struct devic | ||||||
|  	    pdev->device == 0x0015) { |  	    pdev->device == 0x0015) { | ||||||
|  		xhci->quirks |= XHCI_RESET_ON_RESUME; |  		xhci->quirks |= XHCI_RESET_ON_RESUME; | ||||||
|  		xhci->quirks |= XHCI_ZERO_64B_REGS; |  		xhci->quirks |= XHCI_ZERO_64B_REGS; | ||||||
| @@ -43,7 +43,7 @@ produce a noisy warning. | |||||||
|  		hcd->msi_enabled = 1; |  		hcd->msi_enabled = 1; | ||||||
| --- a/drivers/usb/host/xhci.h | --- a/drivers/usb/host/xhci.h | ||||||
| +++ b/drivers/usb/host/xhci.h | +++ b/drivers/usb/host/xhci.h | ||||||
| @@ -1886,6 +1886,7 @@ struct xhci_hcd { | @@ -1887,6 +1887,7 @@ struct xhci_hcd { | ||||||
|  	struct xhci_hub		usb2_rhub; |  	struct xhci_hub		usb2_rhub; | ||||||
|  	struct xhci_hub		usb3_rhub; |  	struct xhci_hub		usb3_rhub; | ||||||
|  	/* support xHCI 1.0 spec USB2 hardware LPM */ |  	/* support xHCI 1.0 spec USB2 hardware LPM */ | ||||||
|   | |||||||
| @@ -141,7 +141,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  { |  { | ||||||
| --- a/include/linux/gpio/consumer.h | --- a/include/linux/gpio/consumer.h | ||||||
| +++ b/include/linux/gpio/consumer.h | +++ b/include/linux/gpio/consumer.h | ||||||
| @@ -713,6 +713,7 @@ static inline void devm_acpi_dev_remove_ | @@ -715,6 +715,7 @@ static inline void devm_acpi_dev_remove_ | ||||||
|   |   | ||||||
|  #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS) |  #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS) | ||||||
|   |   | ||||||
| @@ -149,7 +149,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  int gpiod_export(struct gpio_desc *desc, bool direction_may_change); |  int gpiod_export(struct gpio_desc *desc, bool direction_may_change); | ||||||
|  int gpiod_export_link(struct device *dev, const char *name, |  int gpiod_export_link(struct device *dev, const char *name, | ||||||
|  		      struct gpio_desc *desc); |  		      struct gpio_desc *desc); | ||||||
| @@ -720,6 +721,13 @@ void gpiod_unexport(struct gpio_desc *de | @@ -722,6 +723,13 @@ void gpiod_unexport(struct gpio_desc *de | ||||||
|   |   | ||||||
|  #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */ |  #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */ | ||||||
|   |   | ||||||
|   | |||||||
| @@ -116,7 +116,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> | |||||||
|  } |  } | ||||||
| --- a/drivers/gpio/gpiolib.c | --- a/drivers/gpio/gpiolib.c | ||||||
| +++ b/drivers/gpio/gpiolib.c | +++ b/drivers/gpio/gpiolib.c | ||||||
| @@ -1886,7 +1886,8 @@ int gpiochip_add_pingroup_range(struct g | @@ -1890,7 +1890,8 @@ int gpiochip_add_pingroup_range(struct g | ||||||
|   |   | ||||||
|  	list_add_tail(&pin_range->node, &gdev->pin_ranges); |  	list_add_tail(&pin_range->node, &gdev->pin_ranges); | ||||||
|   |   | ||||||
| @@ -126,7 +126,7 @@ Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com> | |||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range); |  EXPORT_SYMBOL_GPL(gpiochip_add_pingroup_range); | ||||||
|   |   | ||||||
| @@ -1943,7 +1944,7 @@ int gpiochip_add_pin_range(struct gpio_c | @@ -1947,7 +1948,7 @@ int gpiochip_add_pin_range(struct gpio_c | ||||||
|   |   | ||||||
|  	list_add_tail(&pin_range->node, &gdev->pin_ranges); |  	list_add_tail(&pin_range->node, &gdev->pin_ranges); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,104 +0,0 @@ | |||||||
| From a3b0b6479700a5b0af2c631cb2ec0fb7a0d978f2 Mon Sep 17 00:00:00 2001 |  | ||||||
| From: Vladimir Oltean <vladimir.oltean@nxp.com> |  | ||||||
| Date: Sun, 1 Nov 2020 21:16:09 +0200 |  | ||||||
| Subject: [PATCH] net: dsa: implement a central TX reallocation procedure |  | ||||||
|  |  | ||||||
| At the moment, taggers are left with the task of ensuring that the skb |  | ||||||
| headers are writable (which they aren't, if the frames were cloned for |  | ||||||
| TX timestamping, for flooding by the bridge, etc), and that there is |  | ||||||
| enough space in the skb data area for the DSA tag to be pushed. |  | ||||||
|  |  | ||||||
| Moreover, the life of tail taggers is even harder, because they need to |  | ||||||
| ensure that short frames have enough padding, a problem that normal |  | ||||||
| taggers don't have. |  | ||||||
|  |  | ||||||
| The principle of the DSA framework is that everything except for the |  | ||||||
| most intimate hardware specifics (like in this case, the actual packing |  | ||||||
| of the DSA tag bits) should be done inside the core, to avoid having |  | ||||||
| code paths that are very rarely tested. |  | ||||||
|  |  | ||||||
| So provide a TX reallocation procedure that should cover the known needs |  | ||||||
| of DSA today. |  | ||||||
|  |  | ||||||
| Note that this patch also gives the network stack a good hint about the |  | ||||||
| headroom/tailroom it's going to need. Up till now it wasn't doing that. |  | ||||||
| So the reallocation procedure should really be there only for the |  | ||||||
| exceptional cases, and for cloned packets which need to be unshared. |  | ||||||
|  |  | ||||||
| Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> |  | ||||||
| Tested-by: Christian Eggers <ceggers@arri.de> # For tail taggers only |  | ||||||
| Tested-by: Kurt Kanzenbach <kurt@linutronix.de> |  | ||||||
| Reviewed-by: Florian Fainelli <f.fainelli@gmail.com> |  | ||||||
| Signed-off-by: Jakub Kicinski <kuba@kernel.org> |  | ||||||
| --- |  | ||||||
|  net/dsa/slave.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ |  | ||||||
|  1 file changed, 45 insertions(+) |  | ||||||
|  |  | ||||||
| --- a/net/dsa/slave.c |  | ||||||
| +++ b/net/dsa/slave.c |  | ||||||
| @@ -548,6 +548,30 @@ netdev_tx_t dsa_enqueue_skb(struct sk_bu |  | ||||||
|  } |  | ||||||
|  EXPORT_SYMBOL_GPL(dsa_enqueue_skb); |  | ||||||
|   |  | ||||||
| +static int dsa_realloc_skb(struct sk_buff *skb, struct net_device *dev) |  | ||||||
| +{ |  | ||||||
| +	int needed_headroom = dev->needed_headroom; |  | ||||||
| +	int needed_tailroom = dev->needed_tailroom; |  | ||||||
| + |  | ||||||
| +	/* For tail taggers, we need to pad short frames ourselves, to ensure |  | ||||||
| +	 * that the tail tag does not fail at its role of being at the end of |  | ||||||
| +	 * the packet, once the master interface pads the frame. Account for |  | ||||||
| +	 * that pad length here, and pad later. |  | ||||||
| +	 */ |  | ||||||
| +	if (unlikely(needed_tailroom && skb->len < ETH_ZLEN)) |  | ||||||
| +		needed_tailroom += ETH_ZLEN - skb->len; |  | ||||||
| +	/* skb_headroom() returns unsigned int... */ |  | ||||||
| +	needed_headroom = max_t(int, needed_headroom - skb_headroom(skb), 0); |  | ||||||
| +	needed_tailroom = max_t(int, needed_tailroom - skb_tailroom(skb), 0); |  | ||||||
| + |  | ||||||
| +	if (likely(!needed_headroom && !needed_tailroom && !skb_cloned(skb))) |  | ||||||
| +		/* No reallocation needed, yay! */ |  | ||||||
| +		return 0; |  | ||||||
| + |  | ||||||
| +	return pskb_expand_head(skb, needed_headroom, needed_tailroom, |  | ||||||
| +				GFP_ATOMIC); |  | ||||||
| +} |  | ||||||
| + |  | ||||||
|  static netdev_tx_t dsa_slave_xmit(struct sk_buff *skb, struct net_device *dev) |  | ||||||
|  { |  | ||||||
|  	struct dsa_slave_priv *p = netdev_priv(dev); |  | ||||||
| @@ -567,6 +591,17 @@ static netdev_tx_t dsa_slave_xmit(struct |  | ||||||
|  	 */ |  | ||||||
|  	dsa_skb_tx_timestamp(p, skb); |  | ||||||
|   |  | ||||||
| +	if (dsa_realloc_skb(skb, dev)) { |  | ||||||
| +		dev_kfree_skb_any(skb); |  | ||||||
| +		return NETDEV_TX_OK; |  | ||||||
| +	} |  | ||||||
| + |  | ||||||
| +	/* needed_tailroom should still be 'warm' in the cache line from |  | ||||||
| +	 * dsa_realloc_skb(), which has also ensured that padding is safe. |  | ||||||
| +	 */ |  | ||||||
| +	if (dev->needed_tailroom) |  | ||||||
| +		eth_skb_pad(skb); |  | ||||||
| + |  | ||||||
|  	/* Transmit function may have to reallocate the original SKB, |  | ||||||
|  	 * in which case it must have freed it. Only free it here on error. |  | ||||||
|  	 */ |  | ||||||
| @@ -1825,6 +1860,16 @@ int dsa_slave_create(struct dsa_port *po |  | ||||||
|  	slave_dev->netdev_ops = &dsa_slave_netdev_ops; |  | ||||||
|  	if (ds->ops->port_max_mtu) |  | ||||||
|  		slave_dev->max_mtu = ds->ops->port_max_mtu(ds, port->index); |  | ||||||
| +	if (cpu_dp->tag_ops->tail_tag) |  | ||||||
| +		slave_dev->needed_tailroom = cpu_dp->tag_ops->overhead; |  | ||||||
| +	else |  | ||||||
| +		slave_dev->needed_headroom = cpu_dp->tag_ops->overhead; |  | ||||||
| +	/* Try to save one extra realloc later in the TX path (in the master) |  | ||||||
| +	 * by also inheriting the master's needed headroom and tailroom. |  | ||||||
| +	 * The 8021q driver also does this. |  | ||||||
| +	 */ |  | ||||||
| +	slave_dev->needed_headroom += master->needed_headroom; |  | ||||||
| +	slave_dev->needed_tailroom += master->needed_tailroom; |  | ||||||
|  	SET_NETDEV_DEVTYPE(slave_dev, &dsa_type); |  | ||||||
|   |  | ||||||
|  	netdev_for_each_tx_queue(slave_dev, dsa_slave_set_lockdep_class_one, |  | ||||||
| @@ -80,7 +80,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  #define BRCM_TAG_LEN	4 |  #define BRCM_TAG_LEN	4 | ||||||
|   |   | ||||||
|  /* Tag is constructed and desconstructed using byte by byte access |  /* Tag is constructed and desconstructed using byte by byte access | ||||||
| @@ -197,6 +214,87 @@ DSA_TAG_DRIVER(brcm_netdev_ops); | @@ -194,6 +211,87 @@ DSA_TAG_DRIVER(brcm_netdev_ops); | ||||||
|  MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM); |  MODULE_ALIAS_DSA_TAG_DRIVER(DSA_TAG_PROTO_BRCM); | ||||||
|  #endif |  #endif | ||||||
|   |   | ||||||
| @@ -168,7 +168,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND) |  #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM_PREPEND) | ||||||
|  static struct sk_buff *brcm_tag_xmit_prepend(struct sk_buff *skb, |  static struct sk_buff *brcm_tag_xmit_prepend(struct sk_buff *skb, | ||||||
|  					     struct net_device *dev) |  					     struct net_device *dev) | ||||||
| @@ -229,6 +327,9 @@ static struct dsa_tag_driver *dsa_tag_dr | @@ -226,6 +324,9 @@ static struct dsa_tag_driver *dsa_tag_dr | ||||||
|  #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM) |  #if IS_ENABLED(CONFIG_NET_DSA_TAG_BRCM) | ||||||
|  	&DSA_TAG_DRIVER_NAME(brcm_netdev_ops), |  	&DSA_TAG_DRIVER_NAME(brcm_netdev_ops), | ||||||
|  #endif |  #endif | ||||||
|   | |||||||
| @@ -25,7 +25,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  |  | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2030,7 +2030,9 @@ static void dsa_slave_switchdev_event_wo | @@ -2075,7 +2075,9 @@ static void dsa_slave_switchdev_event_wo | ||||||
|   |   | ||||||
|  		err = dsa_port_fdb_add(dp, fdb_info->addr, fdb_info->vid); |  		err = dsa_port_fdb_add(dp, fdb_info->addr, fdb_info->vid); | ||||||
|  		if (err) { |  		if (err) { | ||||||
| @@ -36,7 +36,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  			break; |  			break; | ||||||
|  		} |  		} | ||||||
|  		fdb_info->offloaded = true; |  		fdb_info->offloaded = true; | ||||||
| @@ -2045,9 +2047,11 @@ static void dsa_slave_switchdev_event_wo | @@ -2090,9 +2092,11 @@ static void dsa_slave_switchdev_event_wo | ||||||
|   |   | ||||||
|  		err = dsa_port_fdb_del(dp, fdb_info->addr, fdb_info->vid); |  		err = dsa_port_fdb_del(dp, fdb_info->addr, fdb_info->vid); | ||||||
|  		if (err) { |  		if (err) { | ||||||
|   | |||||||
| @@ -54,7 +54,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  	struct sk_buff *	(*xmit)(struct sk_buff *skb, |  	struct sk_buff *	(*xmit)(struct sk_buff *skb, | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2005,76 +2005,66 @@ static int dsa_slave_netdevice_event(str | @@ -2050,76 +2050,66 @@ static int dsa_slave_netdevice_event(str | ||||||
|  	return NOTIFY_DONE; |  	return NOTIFY_DONE; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -167,7 +167,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  } |  } | ||||||
|   |   | ||||||
|  /* Called under rcu_read_lock() */ |  /* Called under rcu_read_lock() */ | ||||||
| @@ -2082,7 +2072,9 @@ static int dsa_slave_switchdev_event(str | @@ -2127,7 +2117,9 @@ static int dsa_slave_switchdev_event(str | ||||||
|  				     unsigned long event, void *ptr) |  				     unsigned long event, void *ptr) | ||||||
|  { |  { | ||||||
|  	struct net_device *dev = switchdev_notifier_info_to_dev(ptr); |  	struct net_device *dev = switchdev_notifier_info_to_dev(ptr); | ||||||
| @@ -177,7 +177,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  	int err; |  	int err; | ||||||
|   |   | ||||||
|  	if (event == SWITCHDEV_PORT_ATTR_SET) { |  	if (event == SWITCHDEV_PORT_ATTR_SET) { | ||||||
| @@ -2095,20 +2087,32 @@ static int dsa_slave_switchdev_event(str | @@ -2140,20 +2132,32 @@ static int dsa_slave_switchdev_event(str | ||||||
|  	if (!dsa_slave_dev_check(dev)) |  	if (!dsa_slave_dev_check(dev)) | ||||||
|  		return NOTIFY_DONE; |  		return NOTIFY_DONE; | ||||||
|   |   | ||||||
| @@ -213,7 +213,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  		dev_hold(dev); |  		dev_hold(dev); | ||||||
|  		break; |  		break; | ||||||
|  	default: |  	default: | ||||||
| @@ -2118,10 +2122,6 @@ static int dsa_slave_switchdev_event(str | @@ -2163,10 +2167,6 @@ static int dsa_slave_switchdev_event(str | ||||||
|   |   | ||||||
|  	dsa_schedule_work(&switchdev_work->work); |  	dsa_schedule_work(&switchdev_work->work); | ||||||
|  	return NOTIFY_OK; |  	return NOTIFY_OK; | ||||||
|   | |||||||
| @@ -20,7 +20,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  |  | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2077,31 +2077,29 @@ static int dsa_slave_switchdev_event(str | @@ -2122,31 +2122,29 @@ static int dsa_slave_switchdev_event(str | ||||||
|  	struct dsa_port *dp; |  	struct dsa_port *dp; | ||||||
|  	int err; |  	int err; | ||||||
|   |   | ||||||
| @@ -68,7 +68,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  		fdb_info = ptr; |  		fdb_info = ptr; | ||||||
|   |   | ||||||
|  		if (!fdb_info->added_by_user) { |  		if (!fdb_info->added_by_user) { | ||||||
| @@ -2114,13 +2112,12 @@ static int dsa_slave_switchdev_event(str | @@ -2159,13 +2157,12 @@ static int dsa_slave_switchdev_event(str | ||||||
|  		switchdev_work->vid = fdb_info->vid; |  		switchdev_work->vid = fdb_info->vid; | ||||||
|   |   | ||||||
|  		dev_hold(dev); |  		dev_hold(dev); | ||||||
|   | |||||||
| @@ -30,7 +30,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  |  | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2090,6 +2090,9 @@ static int dsa_slave_switchdev_event(str | @@ -2135,6 +2135,9 @@ static int dsa_slave_switchdev_event(str | ||||||
|   |   | ||||||
|  		dp = dsa_slave_to_port(dev); |  		dp = dsa_slave_to_port(dev); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -170,7 +170,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  	 */ |  	 */ | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2067,6 +2067,28 @@ static void dsa_slave_switchdev_event_wo | @@ -2112,6 +2112,28 @@ static void dsa_slave_switchdev_event_wo | ||||||
|  		dev_put(dp->slave); |  		dev_put(dp->slave); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -199,7 +199,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  /* Called under rcu_read_lock() */ |  /* Called under rcu_read_lock() */ | ||||||
|  static int dsa_slave_switchdev_event(struct notifier_block *unused, |  static int dsa_slave_switchdev_event(struct notifier_block *unused, | ||||||
|  				     unsigned long event, void *ptr) |  				     unsigned long event, void *ptr) | ||||||
| @@ -2085,10 +2107,37 @@ static int dsa_slave_switchdev_event(str | @@ -2130,10 +2152,37 @@ static int dsa_slave_switchdev_event(str | ||||||
|  		return notifier_from_errno(err); |  		return notifier_from_errno(err); | ||||||
|  	case SWITCHDEV_FDB_ADD_TO_DEVICE: |  	case SWITCHDEV_FDB_ADD_TO_DEVICE: | ||||||
|  	case SWITCHDEV_FDB_DEL_TO_DEVICE: |  	case SWITCHDEV_FDB_DEL_TO_DEVICE: | ||||||
| @@ -240,7 +240,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|   |   | ||||||
|  		if (!dp->ds->ops->port_fdb_add || !dp->ds->ops->port_fdb_del) |  		if (!dp->ds->ops->port_fdb_add || !dp->ds->ops->port_fdb_del) | ||||||
|  			return NOTIFY_DONE; |  			return NOTIFY_DONE; | ||||||
| @@ -2103,18 +2152,13 @@ static int dsa_slave_switchdev_event(str | @@ -2148,18 +2197,13 @@ static int dsa_slave_switchdev_event(str | ||||||
|  		switchdev_work->port = dp->index; |  		switchdev_work->port = dp->index; | ||||||
|  		switchdev_work->event = event; |  		switchdev_work->event = event; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de> | |||||||
|  |  | ||||||
| --- a/mm/page_alloc.c | --- a/mm/page_alloc.c | ||||||
| +++ b/mm/page_alloc.c | +++ b/mm/page_alloc.c | ||||||
| @@ -6951,7 +6951,7 @@ static void __ref alloc_node_mem_map(str | @@ -7026,7 +7026,7 @@ static void __ref alloc_node_mem_map(str | ||||||
|  	if (pgdat == NODE_DATA(0)) { |  	if (pgdat == NODE_DATA(0)) { | ||||||
|  		mem_map = NODE_DATA(0)->node_mem_map; |  		mem_map = NODE_DATA(0)->node_mem_map; | ||||||
|  		if (page_to_pfn(mem_map) != pgdat->node_start_pfn) |  		if (page_to_pfn(mem_map) != pgdat->node_start_pfn) | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ Add .ndo_fill_forward_path for dsa slave port devices | |||||||
|   |   | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -1582,6 +1582,21 @@ static struct devlink_port *dsa_slave_ge | @@ -1617,6 +1617,21 @@ static struct devlink_port *dsa_slave_ge | ||||||
|  	return dp->ds->devlink ? &dp->devlink_port : NULL; |  	return dp->ds->devlink ? &dp->devlink_port : NULL; | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -50,7 +50,7 @@ Add .ndo_fill_forward_path for dsa slave port devices | |||||||
|  static const struct net_device_ops dsa_slave_netdev_ops = { |  static const struct net_device_ops dsa_slave_netdev_ops = { | ||||||
|  	.ndo_open	 	= dsa_slave_open, |  	.ndo_open	 	= dsa_slave_open, | ||||||
|  	.ndo_stop		= dsa_slave_close, |  	.ndo_stop		= dsa_slave_close, | ||||||
| @@ -1607,6 +1622,7 @@ static const struct net_device_ops dsa_s | @@ -1642,6 +1657,7 @@ static const struct net_device_ops dsa_s | ||||||
|  	.ndo_vlan_rx_kill_vid	= dsa_slave_vlan_rx_kill_vid, |  	.ndo_vlan_rx_kill_vid	= dsa_slave_vlan_rx_kill_vid, | ||||||
|  	.ndo_get_devlink_port	= dsa_slave_get_devlink_port, |  	.ndo_get_devlink_port	= dsa_slave_get_devlink_port, | ||||||
|  	.ndo_change_mtu		= dsa_slave_change_mtu, |  	.ndo_change_mtu		= dsa_slave_change_mtu, | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> | |||||||
|  |  | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -1202,14 +1202,32 @@ static int dsa_slave_setup_tc_block(stru | @@ -1237,14 +1237,32 @@ static int dsa_slave_setup_tc_block(stru | ||||||
|  	} |  	} | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -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 | ||||||
| @@ -1644,6 +1644,9 @@ void phy_detach(struct phy_device *phyde | @@ -1642,6 +1642,9 @@ void phy_detach(struct phy_device *phyde | ||||||
|  	struct module *ndev_owner = NULL; |  	struct module *ndev_owner = NULL; | ||||||
|  	struct mii_bus *bus; |  	struct mii_bus *bus; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> | |||||||
|  |  | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2144,10 +2144,12 @@ static int dsa_slave_switchdev_event(str | @@ -2189,10 +2189,12 @@ static int dsa_slave_switchdev_event(str | ||||||
|  		fdb_info = ptr; |  		fdb_info = ptr; | ||||||
|   |   | ||||||
|  		if (dsa_slave_dev_check(dev)) { |  		if (dsa_slave_dev_check(dev)) { | ||||||
|   | |||||||
| @@ -15,7 +15,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> | |||||||
|  |  | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2158,7 +2158,11 @@ static int dsa_slave_switchdev_event(str | @@ -2203,7 +2203,11 @@ static int dsa_slave_switchdev_event(str | ||||||
|  			struct net_device *br_dev; |  			struct net_device *br_dev; | ||||||
|  			struct dsa_slave_priv *p; |  			struct dsa_slave_priv *p; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -28,7 +28,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> | |||||||
|  |  | ||||||
| --- a/net/dsa/slave.c | --- a/net/dsa/slave.c | ||||||
| +++ b/net/dsa/slave.c | +++ b/net/dsa/slave.c | ||||||
| @@ -2151,9 +2151,12 @@ static int dsa_slave_switchdev_event(str | @@ -2196,9 +2196,12 @@ static int dsa_slave_switchdev_event(str | ||||||
|  			else if (!fdb_info->added_by_user) |  			else if (!fdb_info->added_by_user) | ||||||
|  				return NOTIFY_OK; |  				return NOTIFY_OK; | ||||||
|  		} else { |  		} else { | ||||||
| @@ -44,7 +44,7 @@ Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> | |||||||
|  			 */ |  			 */ | ||||||
|  			struct net_device *br_dev; |  			struct net_device *br_dev; | ||||||
|  			struct dsa_slave_priv *p; |  			struct dsa_slave_priv *p; | ||||||
| @@ -2175,7 +2178,8 @@ static int dsa_slave_switchdev_event(str | @@ -2220,7 +2223,8 @@ static int dsa_slave_switchdev_event(str | ||||||
|   |   | ||||||
|  			dp = p->dp->cpu_dp; |  			dp = p->dp->cpu_dp; | ||||||
|   |   | ||||||
|   | |||||||
| @@ -33,7 +33,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c | |||||||
|  	phy_led_trigger_change_speed(phydev); |  	phy_led_trigger_change_speed(phydev); | ||||||
|  } |  } | ||||||
|   |   | ||||||
| @@ -616,7 +616,7 @@ int phy_start_cable_test(struct phy_devi | @@ -618,7 +618,7 @@ int phy_start_cable_test(struct phy_devi | ||||||
|  		goto out; |  		goto out; | ||||||
|   |   | ||||||
|  	/* Mark the carrier down until the test is complete */ |  	/* Mark the carrier down until the test is complete */ | ||||||
| @@ -42,7 +42,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c | |||||||
|   |   | ||||||
|  	netif_testing_on(dev); |  	netif_testing_on(dev); | ||||||
|  	err = phydev->drv->cable_test_start(phydev); |  	err = phydev->drv->cable_test_start(phydev); | ||||||
| @@ -687,7 +687,7 @@ int phy_start_cable_test_tdr(struct phy_ | @@ -689,7 +689,7 @@ int phy_start_cable_test_tdr(struct phy_ | ||||||
|  		goto out; |  		goto out; | ||||||
|   |   | ||||||
|  	/* Mark the carrier down until the test is complete */ |  	/* Mark the carrier down until the test is complete */ | ||||||
| @@ -51,7 +51,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c | |||||||
|   |   | ||||||
|  	netif_testing_on(dev); |  	netif_testing_on(dev); | ||||||
|  	err = phydev->drv->cable_test_tdr_start(phydev, config); |  	err = phydev->drv->cable_test_tdr_start(phydev, config); | ||||||
| @@ -758,7 +758,7 @@ static int phy_check_link_status(struct | @@ -760,7 +760,7 @@ static int phy_check_link_status(struct | ||||||
|  		phy_link_up(phydev); |  		phy_link_up(phydev); | ||||||
|  	} else if (!phydev->link && phydev->state != PHY_NOLINK) { |  	} else if (!phydev->link && phydev->state != PHY_NOLINK) { | ||||||
|  		phydev->state = PHY_NOLINK; |  		phydev->state = PHY_NOLINK; | ||||||
| @@ -60,7 +60,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
| @@ -1162,7 +1162,7 @@ void phy_state_machine(struct work_struc | @@ -1164,7 +1164,7 @@ void phy_state_machine(struct work_struc | ||||||
|  	case PHY_HALTED: |  	case PHY_HALTED: | ||||||
|  		if (phydev->link) { |  		if (phydev->link) { | ||||||
|  			phydev->link = 0; |  			phydev->link = 0; | ||||||
| @@ -71,7 +71,7 @@ still required by target/linux/ramips/files/drivers/net/ethernet/ralink/mdio.c | |||||||
|  		break; |  		break; | ||||||
| --- 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 | ||||||
| @@ -937,14 +937,16 @@ struct phy_device *phy_find_first(struct | @@ -935,14 +935,16 @@ struct phy_device *phy_find_first(struct | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(phy_find_first); |  EXPORT_SYMBOL(phy_find_first); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  |  | ||||||
| --- a/drivers/net/phy/phy.c | --- a/drivers/net/phy/phy.c | ||||||
| +++ b/drivers/net/phy/phy.c | +++ b/drivers/net/phy/phy.c | ||||||
| @@ -758,7 +758,10 @@ static int phy_check_link_status(struct | @@ -760,7 +760,10 @@ static int phy_check_link_status(struct | ||||||
|  		phy_link_up(phydev); |  		phy_link_up(phydev); | ||||||
|  	} else if (!phydev->link && phydev->state != PHY_NOLINK) { |  	} else if (!phydev->link && phydev->state != PHY_NOLINK) { | ||||||
|  		phydev->state = PHY_NOLINK; |  		phydev->state = PHY_NOLINK; | ||||||
| @@ -23,7 +23,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	return 0; |  	return 0; | ||||||
| @@ -1162,7 +1165,10 @@ void phy_state_machine(struct work_struc | @@ -1164,7 +1167,10 @@ void phy_state_machine(struct work_struc | ||||||
|  	case PHY_HALTED: |  	case PHY_HALTED: | ||||||
|  		if (phydev->link) { |  		if (phydev->link) { | ||||||
|  			phydev->link = 0; |  			phydev->link = 0; | ||||||
|   | |||||||
| @@ -141,7 +141,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  { |  { | ||||||
| --- a/include/linux/gpio/consumer.h | --- a/include/linux/gpio/consumer.h | ||||||
| +++ b/include/linux/gpio/consumer.h | +++ b/include/linux/gpio/consumer.h | ||||||
| @@ -713,6 +713,7 @@ static inline void devm_acpi_dev_remove_ | @@ -715,6 +715,7 @@ static inline void devm_acpi_dev_remove_ | ||||||
|   |   | ||||||
|  #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS) |  #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS) | ||||||
|   |   | ||||||
| @@ -149,7 +149,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org> | |||||||
|  int gpiod_export(struct gpio_desc *desc, bool direction_may_change); |  int gpiod_export(struct gpio_desc *desc, bool direction_may_change); | ||||||
|  int gpiod_export_link(struct device *dev, const char *name, |  int gpiod_export_link(struct device *dev, const char *name, | ||||||
|  		      struct gpio_desc *desc); |  		      struct gpio_desc *desc); | ||||||
| @@ -720,6 +721,13 @@ void gpiod_unexport(struct gpio_desc *de | @@ -722,6 +723,13 @@ void gpiod_unexport(struct gpio_desc *de | ||||||
|   |   | ||||||
|  #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */ |  #else  /* CONFIG_GPIOLIB && CONFIG_GPIO_SYSFS */ | ||||||
|   |   | ||||||
|   | |||||||
| @@ -1,6 +1,6 @@ | |||||||
| --- a/arch/x86/kernel/reboot.c | --- a/arch/x86/kernel/reboot.c | ||||||
| +++ b/arch/x86/kernel/reboot.c | +++ b/arch/x86/kernel/reboot.c | ||||||
| @@ -477,6 +477,16 @@ static const struct dmi_system_id reboot | @@ -486,6 +486,16 @@ static const struct dmi_system_id reboot | ||||||
|  		}, |  		}, | ||||||
|  	}, |  	}, | ||||||
|   |   | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Kevin Darbyshire-Bryant
					Kevin Darbyshire-Bryant