Lines Matching defs:rxdes

51 	struct ftgmac100_rxdes rxdes[RX_QUEUE_ENTRIES];
81 struct ftgmac100_rxdes *rxdes, gfp_t gfp);
152 offsetof(struct ftgmac100_descs, rxdes));
202 static bool ftgmac100_rxdes_first_segment(struct ftgmac100_rxdes *rxdes)
204 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_FRS);
207 static bool ftgmac100_rxdes_last_segment(struct ftgmac100_rxdes *rxdes)
209 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_LRS);
212 static bool ftgmac100_rxdes_packet_ready(struct ftgmac100_rxdes *rxdes)
214 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_RXPKT_RDY);
217 static void ftgmac100_rxdes_set_dma_own(struct ftgmac100_rxdes *rxdes)
220 rxdes->rxdes0 &= cpu_to_le32(FTGMAC100_RXDES0_EDORR);
223 static bool ftgmac100_rxdes_rx_error(struct ftgmac100_rxdes *rxdes)
225 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_RX_ERR);
228 static bool ftgmac100_rxdes_crc_error(struct ftgmac100_rxdes *rxdes)
230 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_CRC_ERR);
233 static bool ftgmac100_rxdes_frame_too_long(struct ftgmac100_rxdes *rxdes)
235 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_FTL);
238 static bool ftgmac100_rxdes_runt(struct ftgmac100_rxdes *rxdes)
240 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_RUNT);
243 static bool ftgmac100_rxdes_odd_nibble(struct ftgmac100_rxdes *rxdes)
245 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_RX_ODD_NB);
248 static unsigned int ftgmac100_rxdes_data_length(struct ftgmac100_rxdes *rxdes)
250 return le32_to_cpu(rxdes->rxdes0) & FTGMAC100_RXDES0_VDBC;
253 static bool ftgmac100_rxdes_multicast(struct ftgmac100_rxdes *rxdes)
255 return rxdes->rxdes0 & cpu_to_le32(FTGMAC100_RXDES0_MULTICAST);
258 static void ftgmac100_rxdes_set_end_of_ring(struct ftgmac100_rxdes *rxdes)
260 rxdes->rxdes0 |= cpu_to_le32(FTGMAC100_RXDES0_EDORR);
263 static void ftgmac100_rxdes_set_dma_addr(struct ftgmac100_rxdes *rxdes,
266 rxdes->rxdes3 = cpu_to_le32(addr);
269 static dma_addr_t ftgmac100_rxdes_get_dma_addr(struct ftgmac100_rxdes *rxdes)
271 return le32_to_cpu(rxdes->rxdes3);
274 static bool ftgmac100_rxdes_is_tcp(struct ftgmac100_rxdes *rxdes)
276 return (rxdes->rxdes1 & cpu_to_le32(FTGMAC100_RXDES1_PROT_MASK)) ==
280 static bool ftgmac100_rxdes_is_udp(struct ftgmac100_rxdes *rxdes)
282 return (rxdes->rxdes1 & cpu_to_le32(FTGMAC100_RXDES1_PROT_MASK)) ==
286 static bool ftgmac100_rxdes_tcpcs_err(struct ftgmac100_rxdes *rxdes)
288 return rxdes->rxdes1 & cpu_to_le32(FTGMAC100_RXDES1_TCP_CHKSUM_ERR);
291 static bool ftgmac100_rxdes_udpcs_err(struct ftgmac100_rxdes *rxdes)
293 return rxdes->rxdes1 & cpu_to_le32(FTGMAC100_RXDES1_UDP_CHKSUM_ERR);
296 static bool ftgmac100_rxdes_ipcs_err(struct ftgmac100_rxdes *rxdes)
298 return rxdes->rxdes1 & cpu_to_le32(FTGMAC100_RXDES1_IP_CHKSUM_ERR);
305 static void ftgmac100_rxdes_set_page(struct ftgmac100_rxdes *rxdes, struct page *page)
307 rxdes->rxdes2 = (unsigned int)page;
310 static struct page *ftgmac100_rxdes_get_page(struct ftgmac100_rxdes *rxdes)
312 return (struct page *)rxdes->rxdes2;
330 return &priv->descs->rxdes[priv->rx_pointer];
336 struct ftgmac100_rxdes *rxdes = ftgmac100_current_rxdes(priv);
338 while (ftgmac100_rxdes_packet_ready(rxdes)) {
339 if (ftgmac100_rxdes_first_segment(rxdes))
340 return rxdes;
342 ftgmac100_rxdes_set_dma_own(rxdes);
344 rxdes = ftgmac100_current_rxdes(priv);
351 struct ftgmac100_rxdes *rxdes)
356 if (unlikely(ftgmac100_rxdes_rx_error(rxdes))) {
364 if (unlikely(ftgmac100_rxdes_crc_error(rxdes))) {
370 } else if (unlikely(ftgmac100_rxdes_ipcs_err(rxdes))) {
377 if (unlikely(ftgmac100_rxdes_frame_too_long(rxdes))) {
383 } else if (unlikely(ftgmac100_rxdes_runt(rxdes))) {
389 } else if (unlikely(ftgmac100_rxdes_odd_nibble(rxdes))) {
403 struct ftgmac100_rxdes *rxdes = ftgmac100_current_rxdes(priv);
407 netdev_dbg(netdev, "drop packet %p\n", rxdes);
410 if (ftgmac100_rxdes_last_segment(rxdes))
413 ftgmac100_rxdes_set_dma_own(rxdes);
415 rxdes = ftgmac100_current_rxdes(priv);
416 } while (!done && ftgmac100_rxdes_packet_ready(rxdes));
424 struct ftgmac100_rxdes *rxdes;
428 rxdes = ftgmac100_rx_locate_first_segment(priv);
429 if (!rxdes)
432 if (unlikely(ftgmac100_rx_packet_error(priv, rxdes))) {
447 if (unlikely(ftgmac100_rxdes_multicast(rxdes)))
455 if ((ftgmac100_rxdes_is_tcp(rxdes) && !ftgmac100_rxdes_tcpcs_err(rxdes)) ||
456 (ftgmac100_rxdes_is_udp(rxdes) && !ftgmac100_rxdes_udpcs_err(rxdes)))
460 dma_addr_t map = ftgmac100_rxdes_get_dma_addr(rxdes);
461 struct page *page = ftgmac100_rxdes_get_page(rxdes);
466 size = ftgmac100_rxdes_data_length(rxdes);
473 if (ftgmac100_rxdes_last_segment(rxdes))
476 ftgmac100_alloc_rx_page(priv, rxdes, GFP_ATOMIC);
479 rxdes = ftgmac100_current_rxdes(priv);
713 struct ftgmac100_rxdes *rxdes, gfp_t gfp)
734 ftgmac100_rxdes_set_page(rxdes, page);
735 ftgmac100_rxdes_set_dma_addr(rxdes, map);
736 ftgmac100_rxdes_set_dma_own(rxdes);
745 struct ftgmac100_rxdes *rxdes = &priv->descs->rxdes[i];
746 struct page *page = ftgmac100_rxdes_get_page(rxdes);
747 dma_addr_t map = ftgmac100_rxdes_get_dma_addr(rxdes);
785 ftgmac100_rxdes_set_end_of_ring(&priv->descs->rxdes[RX_QUEUE_ENTRIES - 1]);
788 struct ftgmac100_rxdes *rxdes = &priv->descs->rxdes[i];
790 if (ftgmac100_alloc_rx_page(priv, rxdes, GFP_KERNEL))