Lines Matching refs:rx_buffer
1950 static bool ixgbe_can_reuse_rx_page(struct ixgbe_rx_buffer *rx_buffer) in ixgbe_can_reuse_rx_page() argument
1952 unsigned int pagecnt_bias = rx_buffer->pagecnt_bias; in ixgbe_can_reuse_rx_page()
1953 struct page *page = rx_buffer->page; in ixgbe_can_reuse_rx_page()
1971 if (rx_buffer->page_offset > IXGBE_LAST_OFFSET) in ixgbe_can_reuse_rx_page()
1981 rx_buffer->pagecnt_bias = USHRT_MAX; in ixgbe_can_reuse_rx_page()
2003 struct ixgbe_rx_buffer *rx_buffer, in ixgbe_add_rx_frag() argument
2014 skb_add_rx_frag(skb, skb_shinfo(skb)->nr_frags, rx_buffer->page, in ixgbe_add_rx_frag()
2015 rx_buffer->page_offset, size, truesize); in ixgbe_add_rx_frag()
2017 rx_buffer->page_offset ^= truesize; in ixgbe_add_rx_frag()
2019 rx_buffer->page_offset += truesize; in ixgbe_add_rx_frag()
2028 struct ixgbe_rx_buffer *rx_buffer; in ixgbe_get_rx_buffer() local
2030 rx_buffer = &rx_ring->rx_buffer_info[rx_ring->next_to_clean]; in ixgbe_get_rx_buffer()
2031 prefetchw(rx_buffer->page); in ixgbe_get_rx_buffer()
2032 *skb = rx_buffer->skb; in ixgbe_get_rx_buffer()
2048 rx_buffer->dma, in ixgbe_get_rx_buffer()
2049 rx_buffer->page_offset, in ixgbe_get_rx_buffer()
2053 rx_buffer->pagecnt_bias--; in ixgbe_get_rx_buffer()
2055 return rx_buffer; in ixgbe_get_rx_buffer()
2059 struct ixgbe_rx_buffer *rx_buffer, in ixgbe_put_rx_buffer() argument
2062 if (ixgbe_can_reuse_rx_page(rx_buffer)) { in ixgbe_put_rx_buffer()
2064 ixgbe_reuse_rx_page(rx_ring, rx_buffer); in ixgbe_put_rx_buffer()
2066 if (!IS_ERR(skb) && IXGBE_CB(skb)->dma == rx_buffer->dma) { in ixgbe_put_rx_buffer()
2071 dma_unmap_page_attrs(rx_ring->dev, rx_buffer->dma, in ixgbe_put_rx_buffer()
2076 __page_frag_cache_drain(rx_buffer->page, in ixgbe_put_rx_buffer()
2077 rx_buffer->pagecnt_bias); in ixgbe_put_rx_buffer()
2081 rx_buffer->page = NULL; in ixgbe_put_rx_buffer()
2082 rx_buffer->skb = NULL; in ixgbe_put_rx_buffer()
2086 struct ixgbe_rx_buffer *rx_buffer, in ixgbe_construct_skb() argument
2127 IXGBE_CB(skb)->dma = rx_buffer->dma; in ixgbe_construct_skb()
2129 skb_add_rx_frag(skb, 0, rx_buffer->page, in ixgbe_construct_skb()
2130 xdp->data - page_address(rx_buffer->page), in ixgbe_construct_skb()
2133 rx_buffer->page_offset ^= truesize; in ixgbe_construct_skb()
2135 rx_buffer->page_offset += truesize; in ixgbe_construct_skb()
2140 rx_buffer->pagecnt_bias++; in ixgbe_construct_skb()
2147 struct ixgbe_rx_buffer *rx_buffer, in ixgbe_build_skb() argument
2184 IXGBE_CB(skb)->dma = rx_buffer->dma; in ixgbe_build_skb()
2188 rx_buffer->page_offset ^= truesize; in ixgbe_build_skb()
2190 rx_buffer->page_offset += truesize; in ixgbe_build_skb()
2248 struct ixgbe_rx_buffer *rx_buffer, in ixgbe_rx_buffer_flip() argument
2254 rx_buffer->page_offset ^= truesize; in ixgbe_rx_buffer_flip()
2260 rx_buffer->page_offset += truesize; in ixgbe_rx_buffer_flip()
2295 struct ixgbe_rx_buffer *rx_buffer; in ixgbe_clean_rx_irq() local
2316 rx_buffer = ixgbe_get_rx_buffer(rx_ring, rx_desc, &skb, size); in ixgbe_clean_rx_irq()
2320 xdp.data = page_address(rx_buffer->page) + in ixgbe_clean_rx_irq()
2321 rx_buffer->page_offset; in ixgbe_clean_rx_irq()
2335 ixgbe_rx_buffer_flip(rx_ring, rx_buffer, size); in ixgbe_clean_rx_irq()
2337 rx_buffer->pagecnt_bias++; in ixgbe_clean_rx_irq()
2342 ixgbe_add_rx_frag(rx_ring, rx_buffer, skb, size); in ixgbe_clean_rx_irq()
2344 skb = ixgbe_build_skb(rx_ring, rx_buffer, in ixgbe_clean_rx_irq()
2347 skb = ixgbe_construct_skb(rx_ring, rx_buffer, in ixgbe_clean_rx_irq()
2354 rx_buffer->pagecnt_bias++; in ixgbe_clean_rx_irq()
2358 ixgbe_put_rx_buffer(rx_ring, rx_buffer, skb); in ixgbe_clean_rx_irq()
5274 struct ixgbe_rx_buffer *rx_buffer = &rx_ring->rx_buffer_info[i]; in ixgbe_clean_rx_ring() local
5283 if (rx_buffer->skb) { in ixgbe_clean_rx_ring()
5284 struct sk_buff *skb = rx_buffer->skb; in ixgbe_clean_rx_ring()
5298 rx_buffer->dma, in ixgbe_clean_rx_ring()
5299 rx_buffer->page_offset, in ixgbe_clean_rx_ring()
5304 dma_unmap_page_attrs(rx_ring->dev, rx_buffer->dma, in ixgbe_clean_rx_ring()
5308 __page_frag_cache_drain(rx_buffer->page, in ixgbe_clean_rx_ring()
5309 rx_buffer->pagecnt_bias); in ixgbe_clean_rx_ring()
5312 rx_buffer++; in ixgbe_clean_rx_ring()
5315 rx_buffer = rx_ring->rx_buffer_info; in ixgbe_clean_rx_ring()