Lines Matching refs:rdata
125 struct xgbe_ring_data *rdata; in xgbe_free_ring() local
131 if (ring->rdata) { in xgbe_free_ring()
133 rdata = XGBE_GET_DESC_DATA(ring, i); in xgbe_free_ring()
134 xgbe_unmap_rdata(pdata, rdata); in xgbe_free_ring()
137 kfree(ring->rdata); in xgbe_free_ring()
138 ring->rdata = NULL; in xgbe_free_ring()
206 ring->rdata = kcalloc(rdesc_count, sizeof(struct xgbe_ring_data), in xgbe_init_ring()
208 if (!ring->rdata) in xgbe_init_ring()
213 ring->rdesc, &ring->rdesc_dma, ring->rdata); in xgbe_init_ring()
325 struct xgbe_ring_data *rdata) in xgbe_map_rx_buffer() argument
344 xgbe_set_buffer_data(&rdata->rx.hdr, &ring->rx_hdr_pa, in xgbe_map_rx_buffer()
348 xgbe_set_buffer_data(&rdata->rx.buf, &ring->rx_buf_pa, in xgbe_map_rx_buffer()
359 struct xgbe_ring_data *rdata; in xgbe_wrapper_tx_descriptor_init() local
376 rdata = XGBE_GET_DESC_DATA(ring, j); in xgbe_wrapper_tx_descriptor_init()
378 rdata->rdesc = rdesc; in xgbe_wrapper_tx_descriptor_init()
379 rdata->rdesc_dma = rdesc_dma; in xgbe_wrapper_tx_descriptor_init()
401 struct xgbe_ring_data *rdata; in xgbe_wrapper_rx_descriptor_init() local
417 rdata = XGBE_GET_DESC_DATA(ring, j); in xgbe_wrapper_rx_descriptor_init()
419 rdata->rdesc = rdesc; in xgbe_wrapper_rx_descriptor_init()
420 rdata->rdesc_dma = rdesc_dma; in xgbe_wrapper_rx_descriptor_init()
422 if (xgbe_map_rx_buffer(pdata, ring, rdata)) in xgbe_wrapper_rx_descriptor_init()
439 struct xgbe_ring_data *rdata) in xgbe_unmap_rdata() argument
441 if (rdata->skb_dma) { in xgbe_unmap_rdata()
442 if (rdata->mapped_as_page) { in xgbe_unmap_rdata()
443 dma_unmap_page(pdata->dev, rdata->skb_dma, in xgbe_unmap_rdata()
444 rdata->skb_dma_len, DMA_TO_DEVICE); in xgbe_unmap_rdata()
446 dma_unmap_single(pdata->dev, rdata->skb_dma, in xgbe_unmap_rdata()
447 rdata->skb_dma_len, DMA_TO_DEVICE); in xgbe_unmap_rdata()
449 rdata->skb_dma = 0; in xgbe_unmap_rdata()
450 rdata->skb_dma_len = 0; in xgbe_unmap_rdata()
453 if (rdata->skb) { in xgbe_unmap_rdata()
454 dev_kfree_skb_any(rdata->skb); in xgbe_unmap_rdata()
455 rdata->skb = NULL; in xgbe_unmap_rdata()
458 if (rdata->rx.hdr.pa.pages) in xgbe_unmap_rdata()
459 put_page(rdata->rx.hdr.pa.pages); in xgbe_unmap_rdata()
461 if (rdata->rx.hdr.pa_unmap.pages) { in xgbe_unmap_rdata()
462 dma_unmap_page(pdata->dev, rdata->rx.hdr.pa_unmap.pages_dma, in xgbe_unmap_rdata()
463 rdata->rx.hdr.pa_unmap.pages_len, in xgbe_unmap_rdata()
465 put_page(rdata->rx.hdr.pa_unmap.pages); in xgbe_unmap_rdata()
468 if (rdata->rx.buf.pa.pages) in xgbe_unmap_rdata()
469 put_page(rdata->rx.buf.pa.pages); in xgbe_unmap_rdata()
471 if (rdata->rx.buf.pa_unmap.pages) { in xgbe_unmap_rdata()
472 dma_unmap_page(pdata->dev, rdata->rx.buf.pa_unmap.pages_dma, in xgbe_unmap_rdata()
473 rdata->rx.buf.pa_unmap.pages_len, in xgbe_unmap_rdata()
475 put_page(rdata->rx.buf.pa_unmap.pages); in xgbe_unmap_rdata()
478 memset(&rdata->tx, 0, sizeof(rdata->tx)); in xgbe_unmap_rdata()
479 memset(&rdata->rx, 0, sizeof(rdata->rx)); in xgbe_unmap_rdata()
481 rdata->mapped_as_page = 0; in xgbe_unmap_rdata()
483 if (rdata->state_saved) { in xgbe_unmap_rdata()
484 rdata->state_saved = 0; in xgbe_unmap_rdata()
485 rdata->state.skb = NULL; in xgbe_unmap_rdata()
486 rdata->state.len = 0; in xgbe_unmap_rdata()
487 rdata->state.error = 0; in xgbe_unmap_rdata()
495 struct xgbe_ring_data *rdata; in xgbe_map_tx_skb() local
522 rdata = XGBE_GET_DESC_DATA(ring, cur_index); in xgbe_map_tx_skb()
532 rdata->skb_dma = skb_dma; in xgbe_map_tx_skb()
533 rdata->skb_dma_len = packet->header_len; in xgbe_map_tx_skb()
543 rdata = XGBE_GET_DESC_DATA(ring, cur_index); in xgbe_map_tx_skb()
556 rdata->skb_dma = skb_dma; in xgbe_map_tx_skb()
557 rdata->skb_dma_len = len; in xgbe_map_tx_skb()
568 rdata = XGBE_GET_DESC_DATA(ring, cur_index); in xgbe_map_tx_skb()
589 rdata->skb_dma = skb_dma; in xgbe_map_tx_skb()
590 rdata->skb_dma_len = len; in xgbe_map_tx_skb()
591 rdata->mapped_as_page = 1; in xgbe_map_tx_skb()
602 rdata = XGBE_GET_DESC_DATA(ring, cur_index); in xgbe_map_tx_skb()
610 rdata = XGBE_GET_DESC_DATA(ring, cur_index - 1); in xgbe_map_tx_skb()
611 rdata->skb = skb; in xgbe_map_tx_skb()
622 rdata = XGBE_GET_DESC_DATA(ring, start_index++); in xgbe_map_tx_skb()
623 xgbe_unmap_rdata(pdata, rdata); in xgbe_map_tx_skb()