Lines Matching refs:rx_buf

76 ef4_rx_buf_next(struct ef4_rx_queue *rx_queue, struct ef4_rx_buffer *rx_buf)  in ef4_rx_buf_next()  argument
78 if (unlikely(rx_buf == ef4_rx_buffer(rx_queue, rx_queue->ptr_mask))) in ef4_rx_buf_next()
81 return rx_buf + 1; in ef4_rx_buf_next()
85 struct ef4_rx_buffer *rx_buf, in ef4_sync_rx_buffer() argument
88 dma_sync_single_for_cpu(&efx->pci_dev->dev, rx_buf->dma_addr, len, in ef4_sync_rx_buffer()
153 struct ef4_rx_buffer *rx_buf; in ef4_init_rx_buffers() local
190 rx_buf = ef4_rx_buffer(rx_queue, index); in ef4_init_rx_buffers()
191 rx_buf->dma_addr = dma_addr + efx->rx_ip_align; in ef4_init_rx_buffers()
192 rx_buf->page = page; in ef4_init_rx_buffers()
193 rx_buf->page_offset = page_offset + efx->rx_ip_align; in ef4_init_rx_buffers()
194 rx_buf->len = efx->rx_dma_len; in ef4_init_rx_buffers()
195 rx_buf->flags = 0; in ef4_init_rx_buffers()
202 rx_buf->flags = EF4_RX_BUF_LAST_IN_PAGE; in ef4_init_rx_buffers()
212 struct ef4_rx_buffer *rx_buf) in ef4_unmap_rx_buffer() argument
214 struct page *page = rx_buf->page; in ef4_unmap_rx_buffer()
226 struct ef4_rx_buffer *rx_buf, in ef4_free_rx_buffers() argument
230 if (rx_buf->page) { in ef4_free_rx_buffers()
231 put_page(rx_buf->page); in ef4_free_rx_buffers()
232 rx_buf->page = NULL; in ef4_free_rx_buffers()
234 rx_buf = ef4_rx_buf_next(rx_queue, rx_buf); in ef4_free_rx_buffers()
243 struct ef4_rx_buffer *rx_buf) in ef4_recycle_rx_page() argument
245 struct page *page = rx_buf->page; in ef4_recycle_rx_page()
251 if (!(rx_buf->flags & EF4_RX_BUF_LAST_IN_PAGE)) in ef4_recycle_rx_page()
270 ef4_unmap_rx_buffer(efx, rx_buf); in ef4_recycle_rx_page()
271 put_page(rx_buf->page); in ef4_recycle_rx_page()
275 struct ef4_rx_buffer *rx_buf) in ef4_fini_rx_buffer() argument
278 if (rx_buf->page) in ef4_fini_rx_buffer()
279 put_page(rx_buf->page); in ef4_fini_rx_buffer()
282 if (rx_buf->flags & EF4_RX_BUF_LAST_IN_PAGE) { in ef4_fini_rx_buffer()
283 ef4_unmap_rx_buffer(rx_queue->efx, rx_buf); in ef4_fini_rx_buffer()
284 ef4_free_rx_buffers(rx_queue, rx_buf, 1); in ef4_fini_rx_buffer()
286 rx_buf->page = NULL; in ef4_fini_rx_buffer()
291 struct ef4_rx_buffer *rx_buf, in ef4_recycle_rx_pages() argument
297 ef4_recycle_rx_page(channel, rx_buf); in ef4_recycle_rx_pages()
298 rx_buf = ef4_rx_buf_next(rx_queue, rx_buf); in ef4_recycle_rx_pages()
303 struct ef4_rx_buffer *rx_buf, in ef4_discard_rx_packet() argument
308 ef4_recycle_rx_pages(channel, rx_buf, n_frags); in ef4_discard_rx_packet()
310 ef4_free_rx_buffers(rx_queue, rx_buf, n_frags); in ef4_discard_rx_packet()
388 struct ef4_rx_buffer *rx_buf, in ef4_rx_packet__check_len() argument
392 unsigned max_len = rx_buf->len - efx->type->rx_buffer_padding; in ef4_rx_packet__check_len()
400 rx_buf->flags |= EF4_RX_PKT_DISCARD; in ef4_rx_packet__check_len()
402 if ((len > rx_buf->len) && EF4_WORKAROUND_8071(efx)) { in ef4_rx_packet__check_len()
425 ef4_rx_packet_gro(struct ef4_channel *channel, struct ef4_rx_buffer *rx_buf, in ef4_rx_packet_gro() argument
437 ef4_free_rx_buffers(rx_queue, rx_buf, n_frags); in ef4_rx_packet_gro()
444 skb->ip_summed = ((rx_buf->flags & EF4_RX_PKT_CSUMMED) ? in ef4_rx_packet_gro()
449 rx_buf->page, rx_buf->page_offset, in ef4_rx_packet_gro()
450 rx_buf->len); in ef4_rx_packet_gro()
451 rx_buf->page = NULL; in ef4_rx_packet_gro()
452 skb->len += rx_buf->len; in ef4_rx_packet_gro()
456 rx_buf = ef4_rx_buf_next(&channel->rx_queue, rx_buf); in ef4_rx_packet_gro()
469 struct ef4_rx_buffer *rx_buf, in ef4_rx_mk_skb() argument
485 EF4_BUG_ON_PARANOID(rx_buf->len < hdr_len); in ef4_rx_mk_skb()
493 if (rx_buf->len > hdr_len) { in ef4_rx_mk_skb()
494 rx_buf->page_offset += hdr_len; in ef4_rx_mk_skb()
495 rx_buf->len -= hdr_len; in ef4_rx_mk_skb()
499 rx_buf->page, rx_buf->page_offset, in ef4_rx_mk_skb()
500 rx_buf->len); in ef4_rx_mk_skb()
501 rx_buf->page = NULL; in ef4_rx_mk_skb()
502 skb->len += rx_buf->len; in ef4_rx_mk_skb()
503 skb->data_len += rx_buf->len; in ef4_rx_mk_skb()
507 rx_buf = ef4_rx_buf_next(&channel->rx_queue, rx_buf); in ef4_rx_mk_skb()
510 __free_pages(rx_buf->page, efx->rx_buffer_order); in ef4_rx_mk_skb()
511 rx_buf->page = NULL; in ef4_rx_mk_skb()
530 struct ef4_rx_buffer *rx_buf; in ef4_rx_packet() local
534 rx_buf = ef4_rx_buffer(rx_queue, index); in ef4_rx_packet()
535 rx_buf->flags |= flags; in ef4_rx_packet()
540 ef4_rx_packet__check_len(rx_queue, rx_buf, len); in ef4_rx_packet()
548 WARN_ON(!(len == 0 && rx_buf->flags & EF4_RX_PKT_DISCARD)); in ef4_rx_packet()
549 rx_buf->flags |= EF4_RX_PKT_DISCARD; in ef4_rx_packet()
556 (rx_buf->flags & EF4_RX_PKT_CSUMMED) ? " [SUMMED]" : "", in ef4_rx_packet()
557 (rx_buf->flags & EF4_RX_PKT_DISCARD) ? " [DISCARD]" : ""); in ef4_rx_packet()
562 if (unlikely(rx_buf->flags & EF4_RX_PKT_DISCARD)) { in ef4_rx_packet()
564 ef4_discard_rx_packet(channel, rx_buf, n_frags); in ef4_rx_packet()
569 rx_buf->len = len; in ef4_rx_packet()
574 ef4_sync_rx_buffer(efx, rx_buf, rx_buf->len); in ef4_rx_packet()
579 prefetch(ef4_rx_buf_va(rx_buf)); in ef4_rx_packet()
581 rx_buf->page_offset += efx->rx_prefix_size; in ef4_rx_packet()
582 rx_buf->len -= efx->rx_prefix_size; in ef4_rx_packet()
591 rx_buf = ef4_rx_buf_next(rx_queue, rx_buf); in ef4_rx_packet()
594 ef4_sync_rx_buffer(efx, rx_buf, efx->rx_dma_len); in ef4_rx_packet()
596 rx_buf->len = len - (n_frags - 1) * efx->rx_dma_len; in ef4_rx_packet()
597 ef4_sync_rx_buffer(efx, rx_buf, rx_buf->len); in ef4_rx_packet()
601 rx_buf = ef4_rx_buffer(rx_queue, index); in ef4_rx_packet()
602 ef4_recycle_rx_pages(channel, rx_buf, n_frags); in ef4_rx_packet()
613 struct ef4_rx_buffer *rx_buf, in ef4_rx_deliver() argument
617 u16 hdr_len = min_t(u16, rx_buf->len, EF4_SKB_HEADERS); in ef4_rx_deliver()
619 skb = ef4_rx_mk_skb(channel, rx_buf, n_frags, eh, hdr_len); in ef4_rx_deliver()
624 ef4_free_rx_buffers(rx_queue, rx_buf, n_frags); in ef4_rx_deliver()
631 if (likely(rx_buf->flags & EF4_RX_PKT_CSUMMED)) in ef4_rx_deliver()
646 struct ef4_rx_buffer *rx_buf = in __ef4_rx_packet() local
648 u8 *eh = ef4_rx_buf_va(rx_buf); in __ef4_rx_packet()
653 if (rx_buf->flags & EF4_RX_PKT_PREFIX_LEN) in __ef4_rx_packet()
654 rx_buf->len = le16_to_cpup((__le16 *) in __ef4_rx_packet()
663 ef4_loopback_rx_packet(efx, eh, rx_buf->len); in __ef4_rx_packet()
665 ef4_free_rx_buffers(rx_queue, rx_buf, in __ef4_rx_packet()
671 rx_buf->flags &= ~EF4_RX_PKT_CSUMMED; in __ef4_rx_packet()
673 if ((rx_buf->flags & EF4_RX_PKT_TCP) && !channel->type->receive_skb) in __ef4_rx_packet()
674 ef4_rx_packet_gro(channel, rx_buf, channel->rx_pkt_n_frags, eh); in __ef4_rx_packet()
676 ef4_rx_deliver(channel, eh, rx_buf, channel->rx_pkt_n_frags); in __ef4_rx_packet()
779 struct ef4_rx_buffer *rx_buf; in ef4_fini_rx_queue() local
791 rx_buf = ef4_rx_buffer(rx_queue, index); in ef4_fini_rx_queue()
792 ef4_fini_rx_buffer(rx_queue, rx_buf); in ef4_fini_rx_queue()