> From: Alexander H Duyck <alexander.duyck@xxxxxxxxx> > Sent: Tuesday, December 13, 2022 9:28 PM > > This approach seems kind of convoluted to me. Basically you are trying > to clean the ring without cleaning the ring in the cases where you > encounter a non EOP descriptor. > > Why not just replace the skb pointer with an xdp_buff in the ring? Then > you just build an xdp_buff w/ frags and then convert it after after > i40e_is_non_eop? You should then still be able to use all the same page > counting tricks and the pages would just be dropped into the shared > info of an xdp_buff instead of an skb and function the same assuming > you have all the logic in place to clean them up correctly. We have another approach similar to what you have suggested which sort of is a bit cleaner but not free of a burden of getting the rx_buffer struct back again for all of the packet frags post i40e_run_xdp() for recycling. We will examine if that turns out to be better.