Lines Matching full:rx_desc
157 static __le32 wx_test_staterr(union wx_rx_desc *rx_desc, in wx_test_staterr() argument
160 return rx_desc->wb.upper.status_error & cpu_to_le32(stat_err_bits); in wx_test_staterr()
181 union wx_rx_desc *rx_desc, in wx_get_rx_buffer() argument
189 size = le16_to_cpu(rx_desc->wb.upper.length); in wx_get_rx_buffer()
204 if (!wx_test_staterr(rx_desc, WX_RXD_STAT_EOP)) { in wx_get_rx_buffer()
238 union wx_rx_desc *rx_desc) in wx_build_skb() argument
240 unsigned int size = le16_to_cpu(rx_desc->wb.upper.length); in wx_build_skb()
278 if (!wx_test_staterr(rx_desc, WX_RXD_STAT_EOP)) in wx_build_skb()
332 union wx_rx_desc *rx_desc; in wx_alloc_rx_buffers() local
339 rx_desc = WX_RX_DESC(rx_ring, i); in wx_alloc_rx_buffers()
353 rx_desc->read.pkt_addr = in wx_alloc_rx_buffers()
356 rx_desc++; in wx_alloc_rx_buffers()
360 rx_desc = WX_RX_DESC(rx_ring, 0); in wx_alloc_rx_buffers()
366 rx_desc->wb.upper.status_error = 0; in wx_alloc_rx_buffers()
399 * @rx_desc: Rx descriptor for current buffer
408 union wx_rx_desc *rx_desc, in wx_is_non_eop() argument
420 if (likely(wx_test_staterr(rx_desc, WX_RXD_STAT_EOP))) in wx_is_non_eop()
458 * @rx_desc: pointer to the EOP Rx descriptor
474 union wx_rx_desc *rx_desc, in wx_cleanup_headers() argument
481 unlikely(wx_test_staterr(rx_desc, WX_RXD_ERR_RXE) && in wx_cleanup_headers()
499 union wx_rx_desc *rx_desc, in wx_rx_hash() argument
507 rss_type = le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.pkt_info) & in wx_rx_hash()
513 skb_set_hash(skb, le32_to_cpu(rx_desc->wb.lower.hi_dword.rss), in wx_rx_hash()
521 * @rx_desc: current Rx descriptor being processed
525 union wx_rx_desc *rx_desc, in wx_rx_checksum() argument
528 struct wx_dec_ptype dptype = wx_decode_ptype(WX_RXD_PKTTYPE(rx_desc)); in wx_rx_checksum()
536 if ((wx_test_staterr(rx_desc, WX_RXD_STAT_IPCS) && in wx_rx_checksum()
537 wx_test_staterr(rx_desc, WX_RXD_ERR_IPE)) || in wx_rx_checksum()
538 (wx_test_staterr(rx_desc, WX_RXD_STAT_OUTERIPCS) && in wx_rx_checksum()
539 wx_test_staterr(rx_desc, WX_RXD_ERR_OUTERIPER))) { in wx_rx_checksum()
545 if (!wx_test_staterr(rx_desc, WX_RXD_STAT_L4CS)) in wx_rx_checksum()
549 if (dptype.prot != WX_DEC_PTYPE_PROT_SCTP && WX_RXD_IPV6EX(rx_desc)) in wx_rx_checksum()
553 if (wx_test_staterr(rx_desc, WX_RXD_ERR_TCPE)) { in wx_rx_checksum()
570 static void wx_rx_vlan(struct wx_ring *ring, union wx_rx_desc *rx_desc, in wx_rx_vlan() argument
578 wx_test_staterr(rx_desc, WX_RXD_STAT_VP)) { in wx_rx_vlan()
579 idx = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.pkt_info) & in wx_rx_vlan()
583 le16_to_cpu(rx_desc->wb.upper.vlan)); in wx_rx_vlan()
590 * @rx_desc: pointer to the EOP Rx descriptor
598 union wx_rx_desc *rx_desc, in wx_process_skb_fields() argument
601 wx_rx_hash(rx_ring, rx_desc, skb); in wx_process_skb_fields()
602 wx_rx_checksum(rx_ring, rx_desc, skb); in wx_process_skb_fields()
603 wx_rx_vlan(rx_ring, rx_desc, skb); in wx_process_skb_fields()
630 union wx_rx_desc *rx_desc; in wx_clean_rx_irq() local
640 rx_desc = WX_RX_DESC(rx_ring, rx_ring->next_to_clean); in wx_clean_rx_irq()
641 if (!wx_test_staterr(rx_desc, WX_RXD_STAT_DD)) in wx_clean_rx_irq()
645 * any other fields out of the rx_desc until we know the in wx_clean_rx_irq()
650 rx_buffer = wx_get_rx_buffer(rx_ring, rx_desc, &skb, &rx_buffer_pgcnt); in wx_clean_rx_irq()
653 skb = wx_build_skb(rx_ring, rx_buffer, rx_desc); in wx_clean_rx_irq()
664 if (wx_is_non_eop(rx_ring, rx_desc, skb)) in wx_clean_rx_irq()
668 if (wx_cleanup_headers(rx_ring, rx_desc, skb)) in wx_clean_rx_irq()
675 wx_process_skb_fields(rx_ring, rx_desc, skb); in wx_clean_rx_irq()