On Sat, Apr 10, 2021 at 2:11 AM Ilias Apalodimas <ilias.apalodimas@xxxxxxxxxx> wrote: > > Hi Matteo, > > [...] > > +bool page_pool_return_skb_page(void *data); > > + > > struct page_pool *page_pool_create(const struct page_pool_params *params); > > > > #ifdef CONFIG_PAGE_POOL > > @@ -243,4 +247,13 @@ static inline void page_pool_ring_unlock(struct page_pool *pool) > > spin_unlock_bh(&pool->ring.producer_lock); > > } > > > > +/* Store mem_info on struct page and use it while recycling skb frags */ > > +static inline > > +void page_pool_store_mem_info(struct page *page, struct xdp_mem_info *mem) > > +{ > > + u32 *xmi = (u32 *)mem; > > + > > I just noticed this changed from the original patchset I was carrying. > On the original, I had a union containing a u32 member to explicitly avoid > this casting. Let's wait for comments on the rest of the series, but i'd like > to change that back in a v4. Aplogies, I completely missed this on the > previous postings ... > Hi, I had to change this because including net/xdp.h here caused a circular dependency. I think that the safest thing we can do is to use memcpy(), which will handle the alignments correctly, depending on the architecture. Cheers, -- per aspera ad upstream