On Mon, 22 Jan 2024 23:16:02 +0100 Maciej Fijalkowski wrote: > > +static void __shrink_data(struct xdp_buff *xdp, struct xdp_mem_info *mem_info, > + skb_frag_t *frag, int shrink) > +{ > + if (mem_info->type == MEM_TYPE_XSK_BUFF_POOL) > + xsk_buff_get_tail(xdp)->data_end -= shrink; > + skb_frag_size_sub(frag, shrink); nit: this has just one caller, why not inline these 3 lines? > +} > + > +static bool shrink_data(struct xdp_buff *xdp, skb_frag_t *frag, int shrink) nit: prefix the function name, please > +{ > + struct xdp_mem_info *mem_info = &xdp->rxq->mem; > + > + if (skb_frag_size(frag) == shrink) { > + struct page *page = skb_frag_page(frag); > + struct xdp_buff *zc_frag = NULL; > + > + if (mem_info->type == MEM_TYPE_XSK_BUFF_POOL) { > + zc_frag = xsk_buff_get_tail(xdp); > + > + xsk_buff_del_tail(zc_frag); > + } > + > + __xdp_return(page_address(page), mem_info, false, zc_frag); > + return true; > + } > + __shrink_data(xdp, mem_info, frag, shrink); > + return false;