octeon_ep: fix tx dma unmap len values in SG
[linux-2.6-microblaze.git] / drivers / net / ethernet / marvell / octeon_ep / octep_main.c
index 4424de2..dbc518f 100644 (file)
@@ -734,13 +734,13 @@ static netdev_tx_t octep_start_xmit(struct sk_buff *skb,
 dma_map_sg_err:
        if (si > 0) {
                dma_unmap_single(iq->dev, sglist[0].dma_ptr[0],
-                                sglist[0].len[0], DMA_TO_DEVICE);
-               sglist[0].len[0] = 0;
+                                sglist[0].len[3], DMA_TO_DEVICE);
+               sglist[0].len[3] = 0;
        }
        while (si > 1) {
                dma_unmap_page(iq->dev, sglist[si >> 2].dma_ptr[si & 3],
-                              sglist[si >> 2].len[si & 3], DMA_TO_DEVICE);
-               sglist[si >> 2].len[si & 3] = 0;
+                              sglist[si >> 2].len[3 - (si & 3)], DMA_TO_DEVICE);
+               sglist[si >> 2].len[3 - (si & 3)] = 0;
                si--;
        }
        tx_buffer->gather = 0;