diff options
Diffstat (limited to 'net/core')
| -rw-r--r-- | net/core/dev.c | 4 | ||||
| -rw-r--r-- | net/core/dev_addr_lists.c | 3 | ||||
| -rw-r--r-- | net/core/net-sysfs.c | 20 | 
3 files changed, 25 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index bda6d004f9f..c0946cb2b35 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2818,8 +2818,10 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb,  		if (unlikely(tcpu != next_cpu) &&  		    (tcpu == RPS_NO_CPU || !cpu_online(tcpu) ||  		     ((int)(per_cpu(softnet_data, tcpu).input_queue_head - -		      rflow->last_qtail)) >= 0)) +		      rflow->last_qtail)) >= 0)) { +			tcpu = next_cpu;  			rflow = set_rps_cpu(dev, skb, rflow, next_cpu); +		}  		if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) {  			*rflowp = rflow; diff --git a/net/core/dev_addr_lists.c b/net/core/dev_addr_lists.c index 87cc17db2d5..b079c7bbc15 100644 --- a/net/core/dev_addr_lists.c +++ b/net/core/dev_addr_lists.c @@ -319,7 +319,8 @@ int dev_addr_del(struct net_device *dev, const unsigned char *addr,  	 */  	ha = list_first_entry(&dev->dev_addrs.list,  			      struct netdev_hw_addr, list); -	if (ha->addr == dev->dev_addr && ha->refcount == 1) +	if (!memcmp(ha->addr, addr, dev->addr_len) && +	    ha->type == addr_type && ha->refcount == 1)  		return -ENOENT;  	err = __hw_addr_del(&dev->dev_addrs, addr, dev->addr_len, diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index bcf02f608cb..017a8bacfb2 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -429,6 +429,17 @@ static struct attribute_group netstat_group = {  	.name  = "statistics",  	.attrs  = netstat_attrs,  }; + +#if IS_ENABLED(CONFIG_WIRELESS_EXT) || IS_ENABLED(CONFIG_CFG80211) +static struct attribute *wireless_attrs[] = { +	NULL +}; + +static struct attribute_group wireless_group = { +	.name = "wireless", +	.attrs = wireless_attrs, +}; +#endif  #endif /* CONFIG_SYSFS */  #ifdef CONFIG_RPS @@ -1409,6 +1420,15 @@ int netdev_register_kobject(struct net_device *net)  		groups++;  	*groups++ = &netstat_group; + +#if IS_ENABLED(CONFIG_WIRELESS_EXT) || IS_ENABLED(CONFIG_CFG80211) +	if (net->ieee80211_ptr) +		*groups++ = &wireless_group; +#if IS_ENABLED(CONFIG_WIRELESS_EXT) +	else if (net->wireless_handlers) +		*groups++ = &wireless_group; +#endif +#endif  #endif /* CONFIG_SYSFS */  	error = device_add(dev);  |