Commit f28c020f authored by Sabrina Dubroca's avatar Sabrina Dubroca Committed by David S. Miller

net: restore call to netdev_queue_numa_node_write when resetting XPS

Before commit 80d19669 ("net: Refactor XPS for CPUs and Rx queues"),
netif_reset_xps_queues() did netdev_queue_numa_node_write() for all the
queues being reset. Now, this is only done when the "active" variable in
clean_xps_maps() is false, ie when on all the CPUs, there's no active
XPS mapping left.

Fixes: 80d19669 ("net: Refactor XPS for CPUs and Rx queues")
Signed-off-by: default avatarSabrina Dubroca <sd@queasysnail.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent d7f7e001
...@@ -2187,17 +2187,19 @@ static void clean_xps_maps(struct net_device *dev, const unsigned long *mask, ...@@ -2187,17 +2187,19 @@ static void clean_xps_maps(struct net_device *dev, const unsigned long *mask,
active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, active |= remove_xps_queue_cpu(dev, dev_maps, j, offset,
count); count);
if (!active) { if (!active) {
if (is_rxqs_map) { if (is_rxqs_map)
RCU_INIT_POINTER(dev->xps_rxqs_map, NULL); RCU_INIT_POINTER(dev->xps_rxqs_map, NULL);
} else { else
RCU_INIT_POINTER(dev->xps_cpus_map, NULL); RCU_INIT_POINTER(dev->xps_cpus_map, NULL);
kfree_rcu(dev_maps, rcu);
}
for (i = offset + (count - 1); count--; i--) if (!is_rxqs_map) {
for (i = offset + (count - 1); count--; i--) {
netdev_queue_numa_node_write( netdev_queue_numa_node_write(
netdev_get_tx_queue(dev, i), netdev_get_tx_queue(dev, i),
NUMA_NO_NODE); NUMA_NO_NODE);
} }
kfree_rcu(dev_maps, rcu);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment