- frag_size = skb_frag_size(frag);
- offset = frag->page_offset;
- page = skb_frag_page(frag);
-
- while (frag_size > 0) {
- frag_map_size = min(frag_size, TX_DMA_BUF_LEN);
- if (!(k & 0x1)) {
- fe_set_txd(&txd, &ring->tx_dma[j]);
- memset(&txd, 0, sizeof(txd));
- txd.txd4 = def_txd4;
- j = NEXT_TX_DESP_IDX(j);
- tx_buf = &ring->tx_buf[j];
- }
-
- if (fe_tx_dma_map_page(&dev->dev, tx_buf, &txd, k++,
- page, offset, frag_map_size))
- goto err_dma;
-
- frag_size -= frag_map_size;
- offset += frag_map_size;
- }
+ if (fe_tx_dma_map_page(ring, &st, skb_frag_page(frag),
+ frag->page_offset, skb_frag_size(frag)))
+ goto err_dma;