Re: [PATCH 53/75] patch: Adapt struct pcpu_sw_netstats change to u64_stats_t
Hauke Mehrtens <[email protected]> Sun, 30 Jun 2024 22:20:04 +0200
| Newsgroups | org.kernel.vger.backports |
|---|---|
| Message-ID | <[email protected]> |
On 6/28/24 12:47, Johannes Berg wrote:
> On Fri, 2024-06-28 at 01:47 +0200, Hauke Mehrtens wrote:
>> ++#if LINUX_VERSION_IS_GEQ(6,0,0)
>> + u64_stats_inc(&stats64->rx_packets);
>> + u64_stats_add(&stats64->rx_bytes, skb->len);
>> ++#else
>> ++ stats64->rx_packets++;
>> ++ stats64->rx_bytes += skb->len;
>> ++#endif
>
> I suspect we _could_ do this with an auto-detect macro?
>
> #if ... /* < 5.5 */
> #define u64_stats_inc(v) (*v)++
> #define u64_stats_add(v, a) (*v)+=(a)
> #else
> #define u64_stats_inc(v) \
> do {
> if (__builtin_types_compatible(typeof(v), *u64_stats_t)
> u64_stats_inc(v);
> else
> (*v)++;
> } while(0)
>
>
> or so?
>
> But then it's only one driver here ...
>
> johannes
I think that should work because u64_stats_inc() and u64_stats_add() are
not used in other places for now. This patch is needed because of this
upstream change:
https://git.kernel.org/linus/9962acefbcb92736c268aafe5f52200948f60f3e
It changes the type from u64 to u64_stats_t. The functions are already
in the kernel for much longer. Even kernel 5.10 uses them on some net
counters. If we replace all u64_stats_inc() and u64_stats_add() usage
with the ++ and similar operations this could also affect other places
where we do not want to do this.
I would prefer to stay with this patch. The code in this area is also
not changing often.
Hauke