Hi Jakub, On Tue, 4 Feb 2025 at 16:30, Jakub Kicinski <kuba@xxxxxxxxxx> wrote: > On Sun, 2 Feb 2025 17:26:04 +0900 Vincent Mailhol wrote: > > On 31/01/2025 at 22:46, Geert Uytterhoeven wrote: > > > The existing FIELD_{GET,PREP}() macros are limited to compile-time > > > constants. However, it is very common to prepare or extract bitfield > > > elements where the bitfield mask is not a compile-time constant. > > > > Why is it that the existing FIELD_{GET,PREP}() macros must be limited to > > compile time constants? > > Hard no, some high performance networking drivers use this on > the fastpath. We want to make sure that the compiler doesn't > do anything stupid, and decomposes the masks at build time. > > The macros work just fine for a *lot* of code: > > $ git grep -E 'FIELD_(PREP|GET)\(' | wc -l > 22407 Indeed. > BTW aren't u32_get_bits(), u32_replace_bits() etc. not what > you need in the first place? I think people don't know about > those, with all due respect the way they are coded up looks > like an IOCCC submission.. These support only compile-time constants, too. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds