Lines Matching refs:buf_info

115 static void *ionic_rx_buf_va(struct ionic_buf_info *buf_info)  in ionic_rx_buf_va()  argument
117 return page_address(buf_info->page) + buf_info->page_offset; in ionic_rx_buf_va()
120 static dma_addr_t ionic_rx_buf_pa(struct ionic_buf_info *buf_info) in ionic_rx_buf_pa() argument
122 return page_pool_get_dma_addr(buf_info->page) + buf_info->page_offset; in ionic_rx_buf_pa()
126 struct ionic_buf_info *buf_info, in __ionic_rx_put_buf() argument
129 if (!buf_info->page) in __ionic_rx_put_buf()
132 page_pool_put_full_page(q->page_pool, buf_info->page, recycle_direct); in __ionic_rx_put_buf()
133 buf_info->page = NULL; in __ionic_rx_put_buf()
134 buf_info->len = 0; in __ionic_rx_put_buf()
135 buf_info->page_offset = 0; in __ionic_rx_put_buf()
140 struct ionic_buf_info *buf_info) in ionic_rx_put_buf() argument
142 __ionic_rx_put_buf(q, buf_info, false); in ionic_rx_put_buf()
146 struct ionic_buf_info *buf_info) in ionic_rx_put_buf_direct() argument
148 __ionic_rx_put_buf(q, buf_info, true); in ionic_rx_put_buf_direct()
153 struct ionic_buf_info *buf_info, in ionic_rx_add_skb_frag() argument
159 buf_info->page, in ionic_rx_add_skb_frag()
160 buf_info->page_offset + headroom, in ionic_rx_add_skb_frag()
164 buf_info->page, buf_info->page_offset + headroom, in ionic_rx_add_skb_frag()
165 len, buf_info->len); in ionic_rx_add_skb_frag()
170 buf_info->page = NULL; in ionic_rx_add_skb_frag()
171 buf_info->len = 0; in ionic_rx_add_skb_frag()
172 buf_info->page_offset = 0; in ionic_rx_add_skb_frag()
182 struct ionic_buf_info *buf_info; in ionic_rx_build_skb() local
187 buf_info = &desc_info->bufs[0]; in ionic_rx_build_skb()
188 prefetchw(buf_info->page); in ionic_rx_build_skb()
205 if (unlikely(!buf_info->page)) in ionic_rx_build_skb()
207 ionic_rx_add_skb_frag(q, skb, buf_info, headroom, frag_len, synced); in ionic_rx_build_skb()
209 buf_info++; in ionic_rx_build_skb()
211 for (i = 0; i < num_sg_elems; i++, buf_info++) { in ionic_rx_build_skb()
212 if (unlikely(!buf_info->page)) in ionic_rx_build_skb()
214 frag_len = min_t(u16, len, buf_info->len); in ionic_rx_build_skb()
215 ionic_rx_add_skb_frag(q, skb, buf_info, 0, frag_len, synced); in ionic_rx_build_skb()
234 struct ionic_buf_info *buf_info; in ionic_rx_copybreak() local
239 buf_info = &desc_info->bufs[0]; in ionic_rx_copybreak()
252 buf_info->page, in ionic_rx_copybreak()
253 buf_info->page_offset + headroom, in ionic_rx_copybreak()
256 skb_copy_to_linear_data(skb, ionic_rx_buf_va(buf_info) + headroom, len); in ionic_rx_copybreak()
262 ionic_rx_put_buf_direct(q, buf_info); in ionic_rx_copybreak()
263 buf_info++; in ionic_rx_copybreak()
264 for (i = 0; i < num_sg_elems; i++, buf_info++) in ionic_rx_copybreak()
265 ionic_rx_put_buf_direct(q, buf_info); in ionic_rx_copybreak()
305 struct ionic_buf_info *buf_info; in ionic_xdp_post_frame() local
314 buf_info = desc_info->bufs; in ionic_xdp_post_frame()
328 buf_info->dma_addr = dma_addr; in ionic_xdp_post_frame()
329 buf_info->len = len; in ionic_xdp_post_frame()
330 buf_info->page = page; in ionic_xdp_post_frame()
331 buf_info->page_offset = off; in ionic_xdp_post_frame()
344 bi = &buf_info[1]; in ionic_xdp_post_frame()
378 0, (desc_info->nbufs - 1), buf_info->dma_addr); in ionic_xdp_post_frame()
455 struct ionic_buf_info *buf_info, in ionic_xdp_rx_unlink_bufs() argument
461 buf_info->page = NULL; in ionic_xdp_rx_unlink_bufs()
462 buf_info++; in ionic_xdp_rx_unlink_bufs()
470 struct ionic_buf_info *buf_info, in ionic_run_xdp() argument
485 xdp_prepare_buff(&xdp_buf, ionic_rx_buf_va(buf_info), in ionic_run_xdp()
487 page_pool_dma_sync_for_cpu(rxq->page_pool, buf_info->page, in ionic_run_xdp()
488 buf_info->page_offset + XDP_PACKET_HEADROOM, in ionic_run_xdp()
502 bi = buf_info; in ionic_run_xdp()
519 buf_info->page_offset, in ionic_run_xdp()
539 ionic_rx_put_buf_direct(rxq, buf_info); in ionic_run_xdp()
565 buf_info->page, in ionic_run_xdp()
566 buf_info->page_offset, in ionic_run_xdp()
573 ionic_xdp_rx_unlink_bufs(rxq, buf_info, nbufs); in ionic_run_xdp()
583 ionic_xdp_rx_unlink_bufs(rxq, buf_info, nbufs); in ionic_run_xdp()
595 ionic_rx_put_buf_direct(rxq, buf_info); in ionic_run_xdp()
769 struct ionic_buf_info *buf_info; in ionic_rx_fill() local
813 buf_info = &desc_info->bufs[0]; in ionic_rx_fill()
815 buf_info->len = first_buf_len; in ionic_rx_fill()
819 if (!buf_info->page) in ionic_rx_fill()
820 buf_info->page = page_pool_alloc(q->page_pool, in ionic_rx_fill()
821 &buf_info->page_offset, in ionic_rx_fill()
822 &buf_info->len, in ionic_rx_fill()
824 if (unlikely(!buf_info->page)) { in ionic_rx_fill()
825 buf_info->len = 0; in ionic_rx_fill()
829 desc->addr = cpu_to_le64(ionic_rx_buf_pa(buf_info) + headroom); in ionic_rx_fill()
832 buf_info++; in ionic_rx_fill()
841 if (unlikely(buf_info->page && buf_info->len < frag_len)) in ionic_rx_fill()
842 ionic_rx_put_buf_direct(q, buf_info); in ionic_rx_fill()
845 if (!buf_info->page) { in ionic_rx_fill()
846 buf_info->len = frag_len; in ionic_rx_fill()
847 buf_info->page = page_pool_alloc(q->page_pool, in ionic_rx_fill()
848 &buf_info->page_offset, in ionic_rx_fill()
849 &buf_info->len, in ionic_rx_fill()
851 if (unlikely(!buf_info->page)) { in ionic_rx_fill()
852 buf_info->len = 0; in ionic_rx_fill()
857 sg_elem->addr = cpu_to_le64(ionic_rx_buf_pa(buf_info)); in ionic_rx_fill()
860 buf_info++; in ionic_rx_fill()
1111 struct ionic_buf_info *buf_info = desc_info->bufs; in ionic_tx_map_skb() local
1121 buf_info->dma_addr = dma_addr; in ionic_tx_map_skb()
1122 buf_info->len = skb_headlen(skb); in ionic_tx_map_skb()
1123 buf_info++; in ionic_tx_map_skb()
1131 buf_info->dma_addr = dma_addr; in ionic_tx_map_skb()
1132 buf_info->len = skb_frag_size(frag); in ionic_tx_map_skb()
1133 buf_info++; in ionic_tx_map_skb()
1144 buf_info--; in ionic_tx_map_skb()
1145 dma_unmap_page(dev, buf_info->dma_addr, in ionic_tx_map_skb()
1146 buf_info->len, DMA_TO_DEVICE); in ionic_tx_map_skb()
1156 struct ionic_buf_info *buf_info = desc_info->bufs; in ionic_tx_desc_unmap_bufs() local
1163 dma_unmap_single(dev, buf_info->dma_addr, in ionic_tx_desc_unmap_bufs()
1164 buf_info->len, DMA_TO_DEVICE); in ionic_tx_desc_unmap_bufs()
1165 buf_info++; in ionic_tx_desc_unmap_bufs()
1166 for (i = 1; i < desc_info->nbufs; i++, buf_info++) in ionic_tx_desc_unmap_bufs()
1167 dma_unmap_page(dev, buf_info->dma_addr, in ionic_tx_desc_unmap_bufs()
1168 buf_info->len, DMA_TO_DEVICE); in ionic_tx_desc_unmap_bufs()
1426 struct ionic_buf_info *buf_info; in ionic_tx_tso() local
1485 buf_info = desc_info->bufs; in ionic_tx_tso()
1505 frag_addr = buf_info->dma_addr; in ionic_tx_tso()
1506 frag_rem = buf_info->len; in ionic_tx_tso()
1507 buf_info++; in ionic_tx_tso()
1552 struct ionic_buf_info *buf_info = desc_info->bufs; in ionic_tx_calc_csum() local
1567 buf_info->dma_addr); in ionic_tx_calc_csum()
1569 desc->len = cpu_to_le16(buf_info->len); in ionic_tx_calc_csum()
1591 struct ionic_buf_info *buf_info = desc_info->bufs; in ionic_tx_calc_no_csum() local
1606 buf_info->dma_addr); in ionic_tx_calc_no_csum()
1608 desc->len = cpu_to_le16(buf_info->len); in ionic_tx_calc_no_csum()
1626 struct ionic_buf_info *buf_info = &desc_info->bufs[1]; in ionic_tx_skb_frags() local
1632 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++, buf_info++, elem++) { in ionic_tx_skb_frags()
1633 elem->addr = cpu_to_le64(buf_info->dma_addr); in ionic_tx_skb_frags()
1634 elem->len = cpu_to_le16(buf_info->len); in ionic_tx_skb_frags()