Skip to content

Commit

Permalink
net: restore call to netdev_queue_numa_node_write when resetting XPS
Browse files Browse the repository at this point in the history
[ Upstream commit f28c020fb488e1a8b87469812017044bef88aa2b ]

Before commit 80d1966 ("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: 80d1966 ("net: Refactor XPS for CPUs and Rx queues")
Signed-off-by: Sabrina Dubroca <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
  • Loading branch information
qsn authored and gregkh committed Dec 17, 2018
1 parent a275c66 commit b4b8a71
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions net/core/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -2173,17 +2173,19 @@ static void clean_xps_maps(struct net_device *dev, const unsigned long *mask,
active |= remove_xps_queue_cpu(dev, dev_maps, j, offset,
count);
if (!active) {
if (is_rxqs_map) {
if (is_rxqs_map)
RCU_INIT_POINTER(dev->xps_rxqs_map, NULL);
} else {
else
RCU_INIT_POINTER(dev->xps_cpus_map, NULL);
kfree_rcu(dev_maps, rcu);
}

for (i = offset + (count - 1); count--; i--)
netdev_queue_numa_node_write(
netdev_get_tx_queue(dev, i),
NUMA_NO_NODE);
if (!is_rxqs_map) {
for (i = offset + (count - 1); count--; i--) {
netdev_queue_numa_node_write(
netdev_get_tx_queue(dev, i),
NUMA_NO_NODE);
}
kfree_rcu(dev_maps, rcu);
}
}

Expand Down

0 comments on commit b4b8a71

Please sign in to comment.