Skip to content

Commit

Permalink
net-sysfs: make xps_cpus_show and xps_rxqs_show consistent
Browse files Browse the repository at this point in the history
Make the implementations of xps_cpus_show and xps_rxqs_show to converge,
as the two share the same logic but diverted over time. This should not
modify their behaviour but will help future changes and improve
maintenance.

Signed-off-by: Antoine Tenart <atenart@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Antoine Tenart authored and David S. Miller committed Mar 18, 2021
1 parent d9a063d commit 73f5e52
Showing 1 changed file with 18 additions and 15 deletions.
33 changes: 18 additions & 15 deletions net/core/net-sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -1364,7 +1364,7 @@ static const struct attribute_group dql_group = {
static ssize_t xps_cpus_show(struct netdev_queue *queue,
char *buf)
{
int cpu, len, ret, num_tc = 1, tc = 0;
int j, len, ret, num_tc = 1, tc = 0;
struct net_device *dev = queue->dev;
struct xps_dev_maps *dev_maps;
unsigned long *mask;
Expand Down Expand Up @@ -1404,23 +1404,26 @@ static ssize_t xps_cpus_show(struct netdev_queue *queue,

rcu_read_lock();
dev_maps = rcu_dereference(dev->xps_cpus_map);
if (dev_maps) {
for_each_possible_cpu(cpu) {
int i, tci = cpu * num_tc + tc;
struct xps_map *map;

map = rcu_dereference(dev_maps->attr_map[tci]);
if (!map)
continue;

for (i = map->len; i--;) {
if (map->queues[i] == index) {
set_bit(cpu, mask);
break;
}
if (!dev_maps)
goto out_no_maps;

for (j = -1; j = netif_attrmask_next(j, NULL, nr_cpu_ids),
j < nr_cpu_ids;) {
int i, tci = j * num_tc + tc;
struct xps_map *map;

map = rcu_dereference(dev_maps->attr_map[tci]);
if (!map)
continue;

for (i = map->len; i--;) {
if (map->queues[i] == index) {
set_bit(j, mask);
break;
}
}
}
out_no_maps:
rcu_read_unlock();

rtnl_unlock();
Expand Down

0 comments on commit 73f5e52

Please sign in to comment.