On 8/20/2024 2:56 PM, Tony Nguyen wrote: > From: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> > > When working on multi-buffer packet on arch that has PAGE_SIZE >= 8192, > truesize is calculated and stored in xdp_buff::frame_sz per each > processed Rx buffer. This means that frame_sz will contain the truesize > based on last received buffer, but commit 1dc1a7e7f410 ("ice: > Centrallize Rx buffer recycling") assumed this value will be constant > for each buffer, which breaks the page recycling scheme and mess up the > way we update the page::page_offset. > > To fix this, let us work on constant truesize when PAGE_SIZE >= 8192 > instead of basing this on size of a packet read from Rx descriptor. This > way we can simplify the code and avoid calculating truesize per each > received frame and on top of that when using > xdp_update_skb_shared_info(), current formula for truesize update will > be valid. > > This means ice_rx_frame_truesize() can be removed altogether. > Furthermore, first call to it within ice_clean_rx_irq() for 4k PAGE_SIZE > was redundant as xdp_buff::frame_sz is initialized via xdp_init_buff() > in ice_vsi_cfg_rxq(). This should have been removed at the point where > xdp_buff struct started to be a member of ice_rx_ring and it was no > longer a stack based variable. > > There are two fixes tags as my understanding is that the first one > exposed us to broken truesize and page_offset handling and then second > introduced broken skb_shared_info update in ice_{construct,build}_skb(). > > Reported-and-tested-by: Luiz Capitulino <luizcap@xxxxxxxxxx> > Closes: https://lore.kernel.org/netdev/8f9e2a5c-fd30-4206-9311-946a06d031bb@xxxxxxxxxx/ > Fixes: 1dc1a7e7f410 ("ice: Centrallize Rx buffer recycling") > Fixes: 2fba7dc5157b ("ice: Add support for XDP multi-buffer on Rx side") > Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> > Tested-by: Chandan Kumar Rout <chandanx.rout@xxxxxxxxx> (A Contingent Worker at Intel) > Signed-off-by: Tony Nguyen <anthony.l.nguyen@xxxxxxxxx> > --- Much simpler too! Reviewed-by: Jacob Keller <jacob.e.keller@xxxxxxxxx>