Lines Matching refs:rx_buf
384 if (!rx_ring->rx_buf) in ice_clean_rx_ring()
399 struct ice_rx_buf *rx_buf = &rx_ring->rx_buf[i]; in ice_clean_rx_ring() local
401 if (!rx_buf->page) in ice_clean_rx_ring()
407 dma_sync_single_range_for_cpu(dev, rx_buf->dma, in ice_clean_rx_ring()
408 rx_buf->page_offset, in ice_clean_rx_ring()
413 dma_unmap_page_attrs(dev, rx_buf->dma, ice_rx_pg_size(rx_ring), in ice_clean_rx_ring()
415 __page_frag_cache_drain(rx_buf->page, rx_buf->pagecnt_bias); in ice_clean_rx_ring()
417 rx_buf->page = NULL; in ice_clean_rx_ring()
418 rx_buf->page_offset = 0; in ice_clean_rx_ring()
425 memset(rx_ring->rx_buf, 0, array_size(rx_ring->count, sizeof(*rx_ring->rx_buf))); in ice_clean_rx_ring()
456 kfree(rx_ring->rx_buf); in ice_free_rx_ring()
457 rx_ring->rx_buf = NULL; in ice_free_rx_ring()
484 WARN_ON(rx_ring->rx_buf); in ice_setup_rx_ring()
485 rx_ring->rx_buf = in ice_setup_rx_ring()
486 kcalloc(rx_ring->count, sizeof(*rx_ring->rx_buf), GFP_KERNEL); in ice_setup_rx_ring()
487 if (!rx_ring->rx_buf) in ice_setup_rx_ring()
515 kfree(rx_ring->rx_buf); in ice_setup_rx_ring()
516 rx_ring->rx_buf = NULL; in ice_setup_rx_ring()
713 bi = &rx_ring->rx_buf[ntu]; in ice_alloc_rx_bufs()
736 bi = rx_ring->rx_buf; in ice_alloc_rx_bufs()
763 ice_rx_buf_adjust_pg_offset(struct ice_rx_buf *rx_buf, unsigned int size) in ice_rx_buf_adjust_pg_offset() argument
767 rx_buf->page_offset ^= size; in ice_rx_buf_adjust_pg_offset()
770 rx_buf->page_offset += size; in ice_rx_buf_adjust_pg_offset()
785 ice_can_reuse_rx_page(struct ice_rx_buf *rx_buf, int rx_buf_pgcnt) in ice_can_reuse_rx_page() argument
787 unsigned int pagecnt_bias = rx_buf->pagecnt_bias; in ice_can_reuse_rx_page()
788 struct page *page = rx_buf->page; in ice_can_reuse_rx_page()
801 if (rx_buf->page_offset > ICE_LAST_OFFSET) in ice_can_reuse_rx_page()
811 rx_buf->pagecnt_bias = USHRT_MAX; in ice_can_reuse_rx_page()
829 ice_add_rx_frag(struct ice_rx_ring *rx_ring, struct ice_rx_buf *rx_buf, in ice_add_rx_frag() argument
840 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_buf->page, in ice_add_rx_frag()
841 rx_buf->page_offset, size, truesize); in ice_add_rx_frag()
844 ice_rx_buf_adjust_pg_offset(rx_buf, truesize); in ice_add_rx_frag()
860 new_buf = &rx_ring->rx_buf[nta]; in ice_reuse_rx_page()
889 struct ice_rx_buf *rx_buf; in ice_get_rx_buf() local
891 rx_buf = &rx_ring->rx_buf[rx_ring->next_to_clean]; in ice_get_rx_buf()
894 page_count(rx_buf->page); in ice_get_rx_buf()
898 prefetchw(rx_buf->page); in ice_get_rx_buf()
901 return rx_buf; in ice_get_rx_buf()
903 dma_sync_single_range_for_cpu(rx_ring->dev, rx_buf->dma, in ice_get_rx_buf()
904 rx_buf->page_offset, size, in ice_get_rx_buf()
908 rx_buf->pagecnt_bias--; in ice_get_rx_buf()
910 return rx_buf; in ice_get_rx_buf()
923 ice_build_skb(struct ice_rx_ring *rx_ring, struct ice_rx_buf *rx_buf, in ice_build_skb() argument
959 ice_rx_buf_adjust_pg_offset(rx_buf, truesize); in ice_build_skb()
975 ice_construct_skb(struct ice_rx_ring *rx_ring, struct ice_rx_buf *rx_buf, in ice_construct_skb() argument
1009 skb_add_rx_frag(skb, 0, rx_buf->page, in ice_construct_skb()
1010 rx_buf->page_offset + headlen, size, truesize); in ice_construct_skb()
1012 ice_rx_buf_adjust_pg_offset(rx_buf, truesize); in ice_construct_skb()
1018 rx_buf->pagecnt_bias++; in ice_construct_skb()
1035 ice_put_rx_buf(struct ice_rx_ring *rx_ring, struct ice_rx_buf *rx_buf, in ice_put_rx_buf() argument
1044 if (!rx_buf) in ice_put_rx_buf()
1047 if (ice_can_reuse_rx_page(rx_buf, rx_buf_pgcnt)) { in ice_put_rx_buf()
1049 ice_reuse_rx_page(rx_ring, rx_buf); in ice_put_rx_buf()
1052 dma_unmap_page_attrs(rx_ring->dev, rx_buf->dma, in ice_put_rx_buf()
1055 __page_frag_cache_drain(rx_buf->page, rx_buf->pagecnt_bias); in ice_put_rx_buf()
1059 rx_buf->page = NULL; in ice_put_rx_buf()
1120 struct ice_rx_buf *rx_buf; in ice_clean_rx_irq() local
1162 rx_buf = ice_get_rx_buf(rx_ring, size, &rx_buf_pgcnt); in ice_clean_rx_irq()
1172 hard_start = page_address(rx_buf->page) + rx_buf->page_offset - in ice_clean_rx_irq()
1188 ice_rx_buf_adjust_pg_offset(rx_buf, xdp.frame_sz); in ice_clean_rx_irq()
1190 rx_buf->pagecnt_bias++; in ice_clean_rx_irq()
1196 ice_put_rx_buf(rx_ring, rx_buf, rx_buf_pgcnt); in ice_clean_rx_irq()
1200 ice_add_rx_frag(rx_ring, rx_buf, skb, size); in ice_clean_rx_irq()
1203 skb = ice_build_skb(rx_ring, rx_buf, &xdp); in ice_clean_rx_irq()
1205 skb = ice_construct_skb(rx_ring, rx_buf, &xdp); in ice_clean_rx_irq()
1210 if (rx_buf) in ice_clean_rx_irq()
1211 rx_buf->pagecnt_bias++; in ice_clean_rx_irq()
1215 ice_put_rx_buf(rx_ring, rx_buf, rx_buf_pgcnt); in ice_clean_rx_irq()