Lines Matching defs:pdata

21 static void xlgmac_unmap_desc_data(struct xlgmac_pdata *pdata,
26 dma_unmap_page(pdata->dev, desc_data->skb_dma,
29 dma_unmap_single(pdata->dev, desc_data->skb_dma,
45 dma_unmap_page(pdata->dev, desc_data->rx.hdr.pa_unmap.pages_dma,
55 dma_unmap_page(pdata->dev, desc_data->rx.buf.pa_unmap.pages_dma,
74 static void xlgmac_free_ring(struct xlgmac_pdata *pdata,
86 xlgmac_unmap_desc_data(pdata, desc_data);
94 dma_unmap_page(pdata->dev, ring->rx_hdr_pa.pages_dma,
105 dma_unmap_page(pdata->dev, ring->rx_buf_pa.pages_dma,
116 dma_free_coherent(pdata->dev,
125 static int xlgmac_init_ring(struct xlgmac_pdata *pdata,
134 ring->dma_desc_head = dma_alloc_coherent(pdata->dev,
149 netif_dbg(pdata, drv, pdata->netdev,
158 static void xlgmac_free_rings(struct xlgmac_pdata *pdata)
163 if (!pdata->channel_head)
166 channel = pdata->channel_head;
167 for (i = 0; i < pdata->channel_count; i++, channel++) {
168 xlgmac_free_ring(pdata, channel->tx_ring);
169 xlgmac_free_ring(pdata, channel->rx_ring);
173 static int xlgmac_alloc_rings(struct xlgmac_pdata *pdata)
179 channel = pdata->channel_head;
180 for (i = 0; i < pdata->channel_count; i++, channel++) {
181 netif_dbg(pdata, drv, pdata->netdev, "%s - Tx ring:\n",
184 ret = xlgmac_init_ring(pdata, channel->tx_ring,
185 pdata->tx_desc_count);
188 netdev_alert(pdata->netdev,
193 netif_dbg(pdata, drv, pdata->netdev, "%s - Rx ring:\n",
196 ret = xlgmac_init_ring(pdata, channel->rx_ring,
197 pdata->rx_desc_count);
199 netdev_alert(pdata->netdev,
208 xlgmac_free_rings(pdata);
213 static void xlgmac_free_channels(struct xlgmac_pdata *pdata)
215 if (!pdata->channel_head)
218 kfree(pdata->channel_head->tx_ring);
219 pdata->channel_head->tx_ring = NULL;
221 kfree(pdata->channel_head->rx_ring);
222 pdata->channel_head->rx_ring = NULL;
224 kfree(pdata->channel_head);
226 pdata->channel_head = NULL;
227 pdata->channel_count = 0;
230 static int xlgmac_alloc_channels(struct xlgmac_pdata *pdata)
237 channel_head = kcalloc(pdata->channel_count,
242 netif_dbg(pdata, drv, pdata->netdev,
245 tx_ring = kcalloc(pdata->tx_ring_count, sizeof(struct xlgmac_ring),
250 rx_ring = kcalloc(pdata->rx_ring_count, sizeof(struct xlgmac_ring),
255 for (i = 0, channel = channel_head; i < pdata->channel_count;
258 channel->pdata = pdata;
260 channel->dma_regs = pdata->mac_regs + DMA_CH_BASE +
263 if (pdata->per_channel_irq) {
265 ret = pdata->channel_irq[i];
267 netdev_err(pdata->netdev,
275 if (i < pdata->tx_ring_count)
278 if (i < pdata->rx_ring_count)
281 netif_dbg(pdata, drv, pdata->netdev,
287 pdata->channel_head = channel_head;
303 static void xlgmac_free_channels_and_rings(struct xlgmac_pdata *pdata)
305 xlgmac_free_rings(pdata);
307 xlgmac_free_channels(pdata);
310 static int xlgmac_alloc_channels_and_rings(struct xlgmac_pdata *pdata)
314 ret = xlgmac_alloc_channels(pdata);
318 ret = xlgmac_alloc_rings(pdata);
325 xlgmac_free_channels_and_rings(pdata);
330 static int xlgmac_alloc_pages(struct xlgmac_pdata *pdata,
350 pages_dma = dma_map_page(pdata->dev, pages, 0,
352 if (dma_mapping_error(pdata->dev, pages_dma)) {
389 static int xlgmac_map_rx_buffer(struct xlgmac_pdata *pdata,
396 ret = xlgmac_alloc_pages(pdata, &ring->rx_hdr_pa,
404 ret = xlgmac_alloc_pages(pdata, &ring->rx_buf_pa,
416 pdata->rx_buf_size);
421 static void xlgmac_tx_desc_init(struct xlgmac_pdata *pdata)
423 struct xlgmac_hw_ops *hw_ops = &pdata->hw_ops;
431 channel = pdata->channel_head;
432 for (i = 0; i < pdata->channel_count; i++, channel++) {
458 static void xlgmac_rx_desc_init(struct xlgmac_pdata *pdata)
460 struct xlgmac_hw_ops *hw_ops = &pdata->hw_ops;
468 channel = pdata->channel_head;
469 for (i = 0; i < pdata->channel_count; i++, channel++) {
483 if (xlgmac_map_rx_buffer(pdata, ring, desc_data))
500 struct xlgmac_pdata *pdata = channel->pdata;
534 skb_dma = dma_map_single(pdata->dev, skb->data,
536 if (dma_mapping_error(pdata->dev, skb_dma)) {
537 netdev_alert(pdata->netdev, "dma_map_single failed\n");
542 netif_dbg(pdata, tx_queued, pdata->netdev,
558 skb_dma = dma_map_single(pdata->dev, skb->data + offset, len,
560 if (dma_mapping_error(pdata->dev, skb_dma)) {
561 netdev_alert(pdata->netdev, "dma_map_single failed\n");
566 netif_dbg(pdata, tx_queued, pdata->netdev,
580 netif_dbg(pdata, tx_queued, pdata->netdev,
590 skb_dma = skb_frag_dma_map(pdata->dev, frag, offset,
592 if (dma_mapping_error(pdata->dev, skb_dma)) {
593 netdev_alert(pdata->netdev,
600 netif_dbg(pdata, tx_queued, pdata->netdev,
629 xlgmac_unmap_desc_data(pdata, desc_data);