kernel: bump 5.10 to 5.10.181
All patches automatically rebased. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
		| @@ -1,2 +1,2 @@ | |||||||
| LINUX_VERSION-5.10 = .180 | LINUX_VERSION-5.10 = .181 | ||||||
| LINUX_KERNEL_HASH-5.10.180 = da839a4bf1f6c964b9bde593bd58928f106f53690ff677e226bc50cf368b0c29 | LINUX_KERNEL_HASH-5.10.181 = ace6ceb73f5f2504bc1bcb9b8cd5b55d6ff8e90a81ee244ad2315fdd671ba4e7 | ||||||
|   | |||||||
| @@ -27,7 +27,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.org> | |||||||
|  	/* Disable rate control for now */ |  	/* Disable rate control for now */ | ||||||
|  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val, |  	bcmgenet_tdma_ring_writel(priv, index, flow_period_val, | ||||||
|  				  TDMA_FLOW_PERIOD); |  				  TDMA_FLOW_PERIOD); | ||||||
| @@ -4081,9 +4081,12 @@ static int bcmgenet_probe(struct platfor | @@ -4082,9 +4082,12 @@ static int bcmgenet_probe(struct platfor | ||||||
|  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); |  	netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); | ||||||
|   |   | ||||||
|  	/* Set default coalescing parameters */ |  	/* Set default coalescing parameters */ | ||||||
|   | |||||||
| @@ -70,7 +70,7 @@ Signed-off-by: Jonathan Bell <jonathan@raspberrypi.org> | |||||||
|   * @dev: the device whose endpoint is being disabled |   * @dev: the device whose endpoint is being disabled | ||||||
| --- a/include/linux/usb.h | --- a/include/linux/usb.h | ||||||
| +++ b/include/linux/usb.h | +++ b/include/linux/usb.h | ||||||
| @@ -1843,6 +1843,8 @@ extern int usb_clear_halt(struct usb_dev | @@ -1848,6 +1848,8 @@ extern int usb_clear_halt(struct usb_dev | ||||||
|  extern int usb_reset_configuration(struct usb_device *dev); |  extern int usb_reset_configuration(struct usb_device *dev); | ||||||
|  extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); |  extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); | ||||||
|  extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr); |  extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr); | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ Signed-off-by: Phil Elwell <phil@raspberrypi.com> | |||||||
|   |   | ||||||
|  	/* Reinitialize TDMA and RDMA and SW housekeeping */ |  	/* Reinitialize TDMA and RDMA and SW housekeeping */ | ||||||
|  	ret = bcmgenet_init_dma(priv); |  	ret = bcmgenet_init_dma(priv); | ||||||
| @@ -4210,7 +4218,7 @@ static int bcmgenet_resume(struct device | @@ -4211,7 +4219,7 @@ static int bcmgenet_resume(struct device | ||||||
|  			bcmgenet_hfb_create_rxnfc_filter(priv, rule); |  			bcmgenet_hfb_create_rxnfc_filter(priv, rule); | ||||||
|   |   | ||||||
|  	/* Disable RX/TX DMA and flush TX queues */ |  	/* Disable RX/TX DMA and flush TX queues */ | ||||||
|   | |||||||
| @@ -18,7 +18,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  |  | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -6813,15 +6813,10 @@ void __netif_napi_del(struct napi_struct | @@ -6815,15 +6815,10 @@ void __netif_napi_del(struct napi_struct | ||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(__netif_napi_del); |  EXPORT_SYMBOL(__netif_napi_del); | ||||||
|   |   | ||||||
| @@ -35,7 +35,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	weight = n->weight; |  	weight = n->weight; | ||||||
|   |   | ||||||
|  	/* This NAPI_STATE_SCHED test is for avoiding a race |  	/* This NAPI_STATE_SCHED test is for avoiding a race | ||||||
| @@ -6841,7 +6836,7 @@ static int napi_poll(struct napi_struct | @@ -6843,7 +6838,7 @@ static int napi_poll(struct napi_struct | ||||||
|  			    n->poll, work, weight); |  			    n->poll, work, weight); | ||||||
|   |   | ||||||
|  	if (likely(work < weight)) |  	if (likely(work < weight)) | ||||||
| @@ -44,7 +44,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   |   | ||||||
|  	/* Drivers must not modify the NAPI state if they |  	/* Drivers must not modify the NAPI state if they | ||||||
|  	 * consume the entire weight.  In such cases this code |  	 * consume the entire weight.  In such cases this code | ||||||
| @@ -6850,7 +6845,7 @@ static int napi_poll(struct napi_struct | @@ -6852,7 +6847,7 @@ static int napi_poll(struct napi_struct | ||||||
|  	 */ |  	 */ | ||||||
|  	if (unlikely(napi_disable_pending(n))) { |  	if (unlikely(napi_disable_pending(n))) { | ||||||
|  		napi_complete(n); |  		napi_complete(n); | ||||||
| @@ -53,7 +53,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	} |  	} | ||||||
|   |   | ||||||
|  	if (n->gro_bitmask) { |  	if (n->gro_bitmask) { | ||||||
| @@ -6868,12 +6863,29 @@ static int napi_poll(struct napi_struct | @@ -6870,12 +6865,29 @@ static int napi_poll(struct napi_struct | ||||||
|  	if (unlikely(!list_empty(&n->poll_list))) { |  	if (unlikely(!list_empty(&n->poll_list))) { | ||||||
|  		pr_warn_once("%s: Budget exhausted after napi rescheduled\n", |  		pr_warn_once("%s: Budget exhausted after napi rescheduled\n", | ||||||
|  			     n->dev ? n->dev->name : "backlog"); |  			     n->dev ? n->dev->name : "backlog"); | ||||||
|   | |||||||
| @@ -131,7 +131,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack) |  static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack) | ||||||
|  { |  { | ||||||
|  	const struct net_device_ops *ops = dev->netdev_ops; |  	const struct net_device_ops *ops = dev->netdev_ops; | ||||||
| @@ -4274,6 +4296,21 @@ int gro_normal_batch __read_mostly = 8; | @@ -4276,6 +4298,21 @@ int gro_normal_batch __read_mostly = 8; | ||||||
|  static inline void ____napi_schedule(struct softnet_data *sd, |  static inline void ____napi_schedule(struct softnet_data *sd, | ||||||
|  				     struct napi_struct *napi) |  				     struct napi_struct *napi) | ||||||
|  { |  { | ||||||
| @@ -153,7 +153,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  	list_add_tail(&napi->poll_list, &sd->poll_list); |  	list_add_tail(&napi->poll_list, &sd->poll_list); | ||||||
|  	__raise_softirq_irqoff(NET_RX_SOFTIRQ); |  	__raise_softirq_irqoff(NET_RX_SOFTIRQ); | ||||||
|  } |  } | ||||||
| @@ -6766,6 +6803,12 @@ void netif_napi_add(struct net_device *d | @@ -6768,6 +6805,12 @@ void netif_napi_add(struct net_device *d | ||||||
|  	set_bit(NAPI_STATE_NPSVC, &napi->state); |  	set_bit(NAPI_STATE_NPSVC, &napi->state); | ||||||
|  	list_add_rcu(&napi->dev_list, &dev->napi_list); |  	list_add_rcu(&napi->dev_list, &dev->napi_list); | ||||||
|  	napi_hash_add(napi); |  	napi_hash_add(napi); | ||||||
| @@ -166,7 +166,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(netif_napi_add); |  EXPORT_SYMBOL(netif_napi_add); | ||||||
|   |   | ||||||
| @@ -6782,9 +6825,28 @@ void napi_disable(struct napi_struct *n) | @@ -6784,9 +6827,28 @@ void napi_disable(struct napi_struct *n) | ||||||
|  	hrtimer_cancel(&n->timer); |  	hrtimer_cancel(&n->timer); | ||||||
|   |   | ||||||
|  	clear_bit(NAPI_STATE_DISABLE, &n->state); |  	clear_bit(NAPI_STATE_DISABLE, &n->state); | ||||||
| @@ -195,7 +195,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  static void flush_gro_hash(struct napi_struct *napi) |  static void flush_gro_hash(struct napi_struct *napi) | ||||||
|  { |  { | ||||||
|  	int i; |  	int i; | ||||||
| @@ -6810,6 +6872,11 @@ void __netif_napi_del(struct napi_struct | @@ -6812,6 +6874,11 @@ void __netif_napi_del(struct napi_struct | ||||||
|   |   | ||||||
|  	flush_gro_hash(napi); |  	flush_gro_hash(napi); | ||||||
|  	napi->gro_bitmask = 0; |  	napi->gro_bitmask = 0; | ||||||
| @@ -207,7 +207,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  } |  } | ||||||
|  EXPORT_SYMBOL(__netif_napi_del); |  EXPORT_SYMBOL(__netif_napi_del); | ||||||
|   |   | ||||||
| @@ -6891,6 +6958,51 @@ static int napi_poll(struct napi_struct | @@ -6893,6 +6960,51 @@ static int napi_poll(struct napi_struct | ||||||
|  	return work; |  	return work; | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|   *	@n: NAPI context |   *	@n: NAPI context | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -4300,8 +4300,9 @@ static inline void ____napi_schedule(str | @@ -4302,8 +4302,9 @@ static inline void ____napi_schedule(str | ||||||
|   |   | ||||||
|  	if (test_bit(NAPI_STATE_THREADED, &napi->state)) { |  	if (test_bit(NAPI_STATE_THREADED, &napi->state)) { | ||||||
|  		/* Paired with smp_mb__before_atomic() in |  		/* Paired with smp_mb__before_atomic() in | ||||||
| @@ -69,7 +69,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net> | |||||||
|  		 * wake_up_process() when it's not NULL. |  		 * wake_up_process() when it's not NULL. | ||||||
|  		 */ |  		 */ | ||||||
|  		thread = READ_ONCE(napi->thread); |  		thread = READ_ONCE(napi->thread); | ||||||
| @@ -6776,6 +6777,49 @@ static void init_gro_hash(struct napi_st | @@ -6778,6 +6779,49 @@ static void init_gro_hash(struct napi_st | ||||||
|  	napi->gro_bitmask = 0; |  	napi->gro_bitmask = 0; | ||||||
|  } |  } | ||||||
|   |   | ||||||
|   | |||||||
| @@ -45,7 +45,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> | |||||||
|  enum gro_result { |  enum gro_result { | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -4307,6 +4307,8 @@ static inline void ____napi_schedule(str | @@ -4309,6 +4309,8 @@ static inline void ____napi_schedule(str | ||||||
|  		 */ |  		 */ | ||||||
|  		thread = READ_ONCE(napi->thread); |  		thread = READ_ONCE(napi->thread); | ||||||
|  		if (thread) { |  		if (thread) { | ||||||
| @@ -54,7 +54,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> | |||||||
|  			wake_up_process(thread); |  			wake_up_process(thread); | ||||||
|  			return; |  			return; | ||||||
|  		} |  		} | ||||||
| @@ -6568,7 +6570,8 @@ bool napi_complete_done(struct napi_stru | @@ -6570,7 +6572,8 @@ bool napi_complete_done(struct napi_stru | ||||||
|   |   | ||||||
|  		WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED)); |  		WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED)); | ||||||
|   |   | ||||||
| @@ -64,7 +64,7 @@ Cc: Hannes Frederic Sowa <hannes@stressinduktion.org> | |||||||
|   |   | ||||||
|  		/* If STATE_MISSED was set, leave STATE_SCHED set, |  		/* If STATE_MISSED was set, leave STATE_SCHED set, | ||||||
|  		 * because we will call napi->poll() one more time. |  		 * because we will call napi->poll() one more time. | ||||||
| @@ -7004,16 +7007,25 @@ static int napi_poll(struct napi_struct | @@ -7006,16 +7009,25 @@ static int napi_poll(struct napi_struct | ||||||
|   |   | ||||||
|  static int napi_thread_wait(struct napi_struct *napi) |  static int napi_thread_wait(struct napi_struct *napi) | ||||||
|  { |  { | ||||||
|   | |||||||
| @@ -34,7 +34,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  |  | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -7011,7 +7011,7 @@ static int napi_thread_wait(struct napi_ | @@ -7013,7 +7013,7 @@ static int napi_thread_wait(struct napi_ | ||||||
|   |   | ||||||
|  	set_current_state(TASK_INTERRUPTIBLE); |  	set_current_state(TASK_INTERRUPTIBLE); | ||||||
|   |   | ||||||
| @@ -43,7 +43,7 @@ Signed-off-by: Jakub Kicinski <kuba@kernel.org> | |||||||
|  		/* Testing SCHED_THREADED bit here to make sure the current |  		/* Testing SCHED_THREADED bit here to make sure the current | ||||||
|  		 * kthread owns this napi and could poll on this napi. |  		 * kthread owns this napi and could poll on this napi. | ||||||
|  		 * Testing SCHED bit is not enough because SCHED bit might be |  		 * Testing SCHED bit is not enough because SCHED bit might be | ||||||
| @@ -7029,6 +7029,7 @@ static int napi_thread_wait(struct napi_ | @@ -7031,6 +7031,7 @@ static int napi_thread_wait(struct napi_ | ||||||
|  		set_current_state(TASK_INTERRUPTIBLE); |  		set_current_state(TASK_INTERRUPTIBLE); | ||||||
|  	} |  	} | ||||||
|  	__set_current_state(TASK_RUNNING); |  	__set_current_state(TASK_RUNNING); | ||||||
|   | |||||||
| @@ -105,7 +105,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name> | |||||||
|  	help |  	help | ||||||
| --- a/net/core/dev.c | --- a/net/core/dev.c | ||||||
| +++ b/net/core/dev.c | +++ b/net/core/dev.c | ||||||
| @@ -3656,6 +3656,11 @@ static int xmit_one(struct sk_buff *skb, | @@ -3658,6 +3658,11 @@ static int xmit_one(struct sk_buff *skb, | ||||||
|  	if (dev_nit_active(dev)) |  	if (dev_nit_active(dev)) | ||||||
|  		dev_queue_xmit_nit(skb, dev); |  		dev_queue_xmit_nit(skb, dev); | ||||||
|   |   | ||||||
|   | |||||||
| @@ -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))) | ||||||
| @@ -2090,12 +2092,12 @@ static int packet_rcv(struct sk_buff *sk | @@ -2088,12 +2090,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; | ||||||
|   |   | ||||||
| @@ -2221,12 +2223,12 @@ static int tpacket_rcv(struct sk_buff *s | @@ -2219,12 +2221,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; | ||||||
|   |   | ||||||
| @@ -3342,6 +3344,7 @@ static int packet_create(struct net *net | @@ -3340,6 +3342,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; | ||||||
| @@ -3982,6 +3985,16 @@ packet_setsockopt(struct socket *sock, i | @@ -3980,6 +3983,16 @@ packet_setsockopt(struct socket *sock, i | ||||||
|  		WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit); |  		WRITE_ONCE(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; | ||||||
|  	} |  	} | ||||||
| @@ -4038,6 +4051,13 @@ static int packet_getsockopt(struct sock | @@ -4036,6 +4049,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; | ||||||
|   | |||||||
| @@ -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 | ||||||
| @@ -6069,6 +6069,9 @@ static enum gro_result dev_gro_receive(s | @@ -6071,6 +6071,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; | ||||||
|   |   | ||||||
| @@ -8047,6 +8050,48 @@ static void __netdev_adjacent_dev_unlink | @@ -8049,6 +8052,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, | ||||||
| @@ -8098,6 +8143,7 @@ static int __netdev_upper_dev_link(struc | @@ -8100,6 +8145,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); | ||||||
| @@ -8194,6 +8240,7 @@ static void __netdev_upper_dev_unlink(st | @@ -8196,6 +8242,7 @@ static void __netdev_upper_dev_unlink(st | ||||||
|   |   | ||||||
|  	__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); | ||||||
|   |   | ||||||
| @@ -8980,6 +9027,7 @@ int dev_set_mac_address(struct net_devic | @@ -8982,6 +9029,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; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Hauke Mehrtens
					Hauke Mehrtens