Messages in this thread Patch in this message | | | Date | Thu, 15 Feb 2024 07:24:59 -0800 | From | Jakub Kicinski <> | Subject | Re: [PATCH net-next] net: sysfs: Do not create sysfs for non BQL device |
| |
On Thu, 15 Feb 2024 03:27:27 -0800 Breno Leitao wrote: > Creation of sysfs entries is expensive, mainly for workloads that > constantly creates netdev and netns often. > > Do not create BQL sysfs entries for devices that don't need, > basically those that do not have a real queue, i.e, devices that has > NETIF_F_LLTX and IFF_NO_QUEUE, such as `lo` interface. > > This will remove the /sys/class/net/eth0/queues/tx-X/byte_queue_limits/ > directory for these devices. > > In the example below, eth0 has the `byte_queue_limits` directory but not > `lo`. > > # ls /sys/class/net/lo/queues/tx-0/ > traffic_class tx_maxrate tx_timeout xps_cpus xps_rxqs > > # ls /sys/class/net/eth0/queues/tx-0/byte_queue_limits/ > hold_time inflight limit limit_max limit_min
I'm tempted to also get rid of the #ifdefs while at it.
> +static bool netdev_uses_bql(struct net_device *dev) > +{ > + if (dev->features & NETIF_F_LLTX || > + dev->priv_flags & IFF_NO_QUEUE) > + return false; > + > + return true;
make this return IS_ENABLED(CONFIG_BQL);
And throw in something like:
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index a09d507c5b03..119075dff0ee 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -1454,6 +1454,9 @@ static const struct attribute_group dql_group = { .name = "byte_queue_limits", .attrs = dql_attrs, }; +#else +/* Fake declaration, all the code using it should be dead */ +extern const struct attribute_group dql_group; #endif /* CONFIG_BQL */ #ifdef CONFIG_XPS You should then be able to remove the #ifdef CONFIG_BQL around the uses of netdev_uses_bql(), compiler will realize it always returns false and eliminate the code making use of &dql_group.
| |