Re: [PATCH 53/75] patch: Adapt struct pcpu_sw_netstats change to u64_stats_t

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux