Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
The conflicts were two cases of overlapping changes in batman-adv and the qed driver. Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
@@ -1281,8 +1281,9 @@ int dev_set_alias(struct net_device *dev, const char *alias, size_t len)
|
||||
if (!new_ifalias)
|
||||
return -ENOMEM;
|
||||
dev->ifalias = new_ifalias;
|
||||
memcpy(dev->ifalias, alias, len);
|
||||
dev->ifalias[len] = 0;
|
||||
|
||||
strlcpy(dev->ifalias, alias, len+1);
|
||||
return len;
|
||||
}
|
||||
|
||||
@@ -5026,6 +5027,19 @@ __sum16 __skb_gro_checksum_complete(struct sk_buff *skb)
|
||||
}
|
||||
EXPORT_SYMBOL(__skb_gro_checksum_complete);
|
||||
|
||||
static void net_rps_send_ipi(struct softnet_data *remsd)
|
||||
{
|
||||
#ifdef CONFIG_RPS
|
||||
while (remsd) {
|
||||
struct softnet_data *next = remsd->rps_ipi_next;
|
||||
|
||||
if (cpu_online(remsd->cpu))
|
||||
smp_call_function_single_async(remsd->cpu, &remsd->csd);
|
||||
remsd = next;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
* net_rps_action_and_irq_enable sends any pending IPI's for rps.
|
||||
* Note: called with local irq disabled, but exits with local irq enabled.
|
||||
@@ -5041,14 +5055,7 @@ static void net_rps_action_and_irq_enable(struct softnet_data *sd)
|
||||
local_irq_enable();
|
||||
|
||||
/* Send pending IPI's to kick RPS processing on remote cpus. */
|
||||
while (remsd) {
|
||||
struct softnet_data *next = remsd->rps_ipi_next;
|
||||
|
||||
if (cpu_online(remsd->cpu))
|
||||
smp_call_function_single_async(remsd->cpu,
|
||||
&remsd->csd);
|
||||
remsd = next;
|
||||
}
|
||||
net_rps_send_ipi(remsd);
|
||||
} else
|
||||
#endif
|
||||
local_irq_enable();
|
||||
@@ -7579,6 +7586,8 @@ out:
|
||||
err_uninit:
|
||||
if (dev->netdev_ops->ndo_uninit)
|
||||
dev->netdev_ops->ndo_uninit(dev);
|
||||
if (dev->priv_destructor)
|
||||
dev->priv_destructor(dev);
|
||||
goto out;
|
||||
}
|
||||
EXPORT_SYMBOL(register_netdevice);
|
||||
@@ -7786,8 +7795,10 @@ void netdev_run_todo(void)
|
||||
WARN_ON(rcu_access_pointer(dev->ip6_ptr));
|
||||
WARN_ON(dev->dn_ptr);
|
||||
|
||||
if (dev->destructor)
|
||||
dev->destructor(dev);
|
||||
if (dev->priv_destructor)
|
||||
dev->priv_destructor(dev);
|
||||
if (dev->needs_free_netdev)
|
||||
free_netdev(dev);
|
||||
|
||||
/* Report a network device has been unregistered */
|
||||
rtnl_lock();
|
||||
@@ -8270,7 +8281,7 @@ static int dev_cpu_dead(unsigned int oldcpu)
|
||||
struct sk_buff **list_skb;
|
||||
struct sk_buff *skb;
|
||||
unsigned int cpu;
|
||||
struct softnet_data *sd, *oldsd;
|
||||
struct softnet_data *sd, *oldsd, *remsd = NULL;
|
||||
|
||||
local_irq_disable();
|
||||
cpu = smp_processor_id();
|
||||
@@ -8311,6 +8322,13 @@ static int dev_cpu_dead(unsigned int oldcpu)
|
||||
raise_softirq_irqoff(NET_TX_SOFTIRQ);
|
||||
local_irq_enable();
|
||||
|
||||
#ifdef CONFIG_RPS
|
||||
remsd = oldsd->rps_ipi_list;
|
||||
oldsd->rps_ipi_list = NULL;
|
||||
#endif
|
||||
/* send out pending IPI's on offline CPU */
|
||||
net_rps_send_ipi(remsd);
|
||||
|
||||
/* Process offline CPU's input_pkt_queue */
|
||||
while ((skb = __skb_dequeue(&oldsd->process_queue))) {
|
||||
netif_rx_ni(skb);
|
||||
|
Reference in New Issue
Block a user