From: Jakub Kicinski <kuba@xxxxxxxxxx> Date: Thu, 19 Dec 2024 19:50:58 -0800 > On Wed, 18 Dec 2024 18:44:34 +0100 Alexander Lobakin wrote: >> + ret = (typeof(ret)){ >> + /* Same logic as in xp_raw_get_dma() */ >> + .dma = (pool->dma_pages[addr >> PAGE_SHIFT] & >> + ~XSK_NEXT_PG_CONTIG_MASK) + (addr & ~PAGE_MASK), >> + }; > > This is quite ugly IMHO What exactly: that the logic is copied or how that code (>> & ~ + & ~) looks like? If the former, I already thought of making a couple internal defs to avoid copying. If the latter, I also thought of this, just wanted to be clear that it's the same as in xp_raw_get_dma(). But it can be refactored to look more fancy anyway. Or the compound return looks ugly? Or the struct initialization? Thanks, Olek