diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/mv643xx_eth.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/mv643xx_eth.c b/drivers/net/mv643xx_eth.c index 1405a170bb43..af67af55efe7 100644 --- a/drivers/net/mv643xx_eth.c +++ b/drivers/net/mv643xx_eth.c | |||
@@ -656,6 +656,7 @@ static int rxq_refill(struct rx_queue *rxq, int budget) | |||
656 | struct sk_buff *skb; | 656 | struct sk_buff *skb; |
657 | int rx; | 657 | int rx; |
658 | struct rx_desc *rx_desc; | 658 | struct rx_desc *rx_desc; |
659 | int size; | ||
659 | 660 | ||
660 | skb = __skb_dequeue(&mp->rx_recycle); | 661 | skb = __skb_dequeue(&mp->rx_recycle); |
661 | if (skb == NULL) | 662 | if (skb == NULL) |
@@ -678,10 +679,11 @@ static int rxq_refill(struct rx_queue *rxq, int budget) | |||
678 | 679 | ||
679 | rx_desc = rxq->rx_desc_area + rx; | 680 | rx_desc = rxq->rx_desc_area + rx; |
680 | 681 | ||
682 | size = skb->end - skb->data; | ||
681 | rx_desc->buf_ptr = dma_map_single(mp->dev->dev.parent, | 683 | rx_desc->buf_ptr = dma_map_single(mp->dev->dev.parent, |
682 | skb->data, mp->skb_size, | 684 | skb->data, size, |
683 | DMA_FROM_DEVICE); | 685 | DMA_FROM_DEVICE); |
684 | rx_desc->buf_size = mp->skb_size; | 686 | rx_desc->buf_size = size; |
685 | rxq->rx_skb[rx] = skb; | 687 | rxq->rx_skb[rx] = skb; |
686 | wmb(); | 688 | wmb(); |
687 | rx_desc->cmd_sts = BUFFER_OWNED_BY_DMA | RX_ENABLE_INTERRUPT; | 689 | rx_desc->cmd_sts = BUFFER_OWNED_BY_DMA | RX_ENABLE_INTERRUPT; |