summaryrefslogtreecommitdiff
path: root/drivers/net/ethernet/sgi/ioc3-eth.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/sgi/ioc3-eth.c')
-rw-r--r--drivers/net/ethernet/sgi/ioc3-eth.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/ethernet/sgi/ioc3-eth.c b/drivers/net/ethernet/sgi/ioc3-eth.c
index 39731069d99e..009f37105eaf 100644
--- a/drivers/net/ethernet/sgi/ioc3-eth.c
+++ b/drivers/net/ethernet/sgi/ioc3-eth.c
@@ -967,11 +967,12 @@ static void ioc3eth_remove(struct platform_device *pdev)
struct net_device *dev = platform_get_drvdata(pdev);
struct ioc3_private *ip = netdev_priv(dev);
+ unregister_netdev(dev);
+ timer_delete_sync(&ip->ioc3_timer);
+
dma_free_coherent(ip->dma_dev, RX_RING_SIZE, ip->rxr, ip->rxr_dma);
dma_free_coherent(ip->dma_dev, TX_RING_SIZE + SZ_16K - 1, ip->tx_ring, ip->txr_dma);
- unregister_netdev(dev);
- timer_delete_sync(&ip->ioc3_timer);
free_netdev(dev);
}
@@ -1061,9 +1062,9 @@ static netdev_tx_t ioc3_start_xmit(struct sk_buff *skb, struct net_device *dev)
d1 = dma_map_single(ip->dma_dev, skb->data, s1, DMA_TO_DEVICE);
if (dma_mapping_error(ip->dma_dev, d1))
goto drop_packet;
- d2 = dma_map_single(ip->dma_dev, (void *)b2, s1, DMA_TO_DEVICE);
+ d2 = dma_map_single(ip->dma_dev, (void *)b2, s2, DMA_TO_DEVICE);
if (dma_mapping_error(ip->dma_dev, d2)) {
- dma_unmap_single(ip->dma_dev, d1, len, DMA_TO_DEVICE);
+ dma_unmap_single(ip->dma_dev, d1, s1, DMA_TO_DEVICE);
goto drop_packet;
}
desc->p1 = cpu_to_be64(ioc3_map(d1, PCI64_ATTR_PREF));