greth.c (8decf868790b48a727d7e7ca164f2bcd3c1389c0) greth.c (9e903e085262ffbf1fc44a17ac06058aca03524a)
1/*
2 * Aeroflex Gaisler GRETH 10/100/1G Ethernet MAC.
3 *
4 * 2005-2010 (c) Aeroflex Gaisler AB
5 *
6 * This driver supports GRETH 10/100 and GRETH 10/100/1G Ethernet MACs
7 * available in the GRLIB VHDL IP core library.
8 *

--- 184 unchanged lines hidden (view full) ---

193 DMA_TO_DEVICE);
194
195 for (i = 0; i < nr_frags; i++) {
196 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
197 tx_bdp = greth->tx_bd_base + greth->tx_last;
198
199 dma_unmap_page(greth->dev,
200 greth_read_bd(&tx_bdp->addr),
1/*
2 * Aeroflex Gaisler GRETH 10/100/1G Ethernet MAC.
3 *
4 * 2005-2010 (c) Aeroflex Gaisler AB
5 *
6 * This driver supports GRETH 10/100 and GRETH 10/100/1G Ethernet MACs
7 * available in the GRLIB VHDL IP core library.
8 *

--- 184 unchanged lines hidden (view full) ---

193 DMA_TO_DEVICE);
194
195 for (i = 0; i < nr_frags; i++) {
196 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
197 tx_bdp = greth->tx_bd_base + greth->tx_last;
198
199 dma_unmap_page(greth->dev,
200 greth_read_bd(&tx_bdp->addr),
201 frag->size,
201 skb_frag_size(frag),
202 DMA_TO_DEVICE);
203
204 greth->tx_last = NEXT_TX(greth->tx_last);
205 }
206 greth->tx_free += nr_frags+1;
207 dev_kfree_skb(skb);
208 }
209

--- 302 unchanged lines hidden (view full) ---

512 for (i = 0; i < nr_frags; i++) {
513 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
514 greth->tx_skbuff[curr_tx] = NULL;
515 bdp = greth->tx_bd_base + curr_tx;
516
517 status = GRETH_BD_EN;
518 if (skb->ip_summed == CHECKSUM_PARTIAL)
519 status |= GRETH_TXBD_CSALL;
202 DMA_TO_DEVICE);
203
204 greth->tx_last = NEXT_TX(greth->tx_last);
205 }
206 greth->tx_free += nr_frags+1;
207 dev_kfree_skb(skb);
208 }
209

--- 302 unchanged lines hidden (view full) ---

512 for (i = 0; i < nr_frags; i++) {
513 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
514 greth->tx_skbuff[curr_tx] = NULL;
515 bdp = greth->tx_bd_base + curr_tx;
516
517 status = GRETH_BD_EN;
518 if (skb->ip_summed == CHECKSUM_PARTIAL)
519 status |= GRETH_TXBD_CSALL;
520 status |= frag->size & GRETH_BD_LEN;
520 status |= skb_frag_size(frag) & GRETH_BD_LEN;
521
522 /* Wrap around descriptor ring */
523 if (curr_tx == GRETH_TXBD_NUM_MASK)
524 status |= GRETH_BD_WR;
525
526 /* More fragments left */
527 if (i < nr_frags - 1)
528 status |= GRETH_TXBD_MORE;
529 else
530 status |= GRETH_BD_IE; /* enable IRQ on last fragment */
531
532 greth_write_bd(&bdp->stat, status);
533
521
522 /* Wrap around descriptor ring */
523 if (curr_tx == GRETH_TXBD_NUM_MASK)
524 status |= GRETH_BD_WR;
525
526 /* More fragments left */
527 if (i < nr_frags - 1)
528 status |= GRETH_TXBD_MORE;
529 else
530 status |= GRETH_BD_IE; /* enable IRQ on last fragment */
531
532 greth_write_bd(&bdp->stat, status);
533
534 dma_addr = skb_frag_dma_map(greth->dev, frag, 0, frag->size,
534 dma_addr = skb_frag_dma_map(greth->dev, frag, 0, skb_frag_size(frag),
535 DMA_TO_DEVICE);
536
537 if (unlikely(dma_mapping_error(greth->dev, dma_addr)))
538 goto frag_map_error;
539
540 greth_write_bd(&bdp->addr, dma_addr);
541
542 curr_tx = NEXT_TX(curr_tx);

--- 165 unchanged lines hidden (view full) ---

708 DMA_TO_DEVICE);
709
710 for (i = 0; i < nr_frags; i++) {
711 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
712 bdp = greth->tx_bd_base + greth->tx_last;
713
714 dma_unmap_page(greth->dev,
715 greth_read_bd(&bdp->addr),
535 DMA_TO_DEVICE);
536
537 if (unlikely(dma_mapping_error(greth->dev, dma_addr)))
538 goto frag_map_error;
539
540 greth_write_bd(&bdp->addr, dma_addr);
541
542 curr_tx = NEXT_TX(curr_tx);

--- 165 unchanged lines hidden (view full) ---

708 DMA_TO_DEVICE);
709
710 for (i = 0; i < nr_frags; i++) {
711 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
712 bdp = greth->tx_bd_base + greth->tx_last;
713
714 dma_unmap_page(greth->dev,
715 greth_read_bd(&bdp->addr),
716 frag->size,
716 skb_frag_size(frag),
717 DMA_TO_DEVICE);
718
719 greth->tx_last = NEXT_TX(greth->tx_last);
720 }
721 greth->tx_free += nr_frags+1;
722 dev_kfree_skb(skb);
723 }
724

--- 917 unchanged lines hidden ---
717 DMA_TO_DEVICE);
718
719 greth->tx_last = NEXT_TX(greth->tx_last);
720 }
721 greth->tx_free += nr_frags+1;
722 dev_kfree_skb(skb);
723 }
724

--- 917 unchanged lines hidden ---