Alexander Lobakin <aleksander.lobakin@xxxxxxxxx> writes: > Currently, page_pool_put_page_bulk() indeed takes an array of pointers > to the data, not pages, despite the name. As one side effect, when > you're freeing frags from &skb_shared_info, xdp_return_frame_bulk() > converts page pointers to virtual addresses and then > page_pool_put_page_bulk() converts them back. Moreover, data pointers > assume every frag is placed in the host memory, making this function > non-universal. > Make page_pool_put_page_bulk() handle array of netmems. Pass frag > netmems directly and use virt_to_netmem() when freeing xdpf->data, > so that the PP core will then get the compound netmem and take care > of the rest. > > Signed-off-by: Alexander Lobakin <aleksander.lobakin@xxxxxxxxx> Reviewed-by: Toke Høiland-Jørgensen <toke@xxxxxxxxxx>