On Wed, 20 Aug 2025 16:47:37 +0200 Florian Westphal <fw@xxxxxxxxx> wrote: > From: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx> > > The struct nft_pipapo_scratch is allocated, then aligned to the required > alignment and difference (in bytes) is then saved in align_off. The > aligned pointer is used later. > While this works, it gets complicated with all the extra checks if > all member before map are larger than the required alignment. > > Instead of saving the aligned pointer, just save the returned pointer > and align the map pointer in nft_pipapo_lookup() before using it. The > alignment later on shouldn't be that expensive. The cost of doing the alignment later was the very reason why I added this whole dance in the first place though. Did you check packet matching rates before and after this? -- Stefano