Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ed773b4a authored by Al Viro's avatar Al Viro Committed by Jeff Garzik
Browse files

r6040 endianness fixes



pci_unmap_single() on little-endian address

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent f1dd9c37
Loading
Loading
Loading
Loading
+6 −4
Original line number Original line Diff line number Diff line
@@ -239,7 +239,8 @@ static void r6040_free_txbufs(struct net_device *dev)


	for (i = 0; i < TX_DCNT; i++) {
	for (i = 0; i < TX_DCNT; i++) {
		if (lp->tx_insert_ptr->skb_ptr) {
		if (lp->tx_insert_ptr->skb_ptr) {
			pci_unmap_single(lp->pdev, lp->tx_insert_ptr->buf,
			pci_unmap_single(lp->pdev,
				le32_to_cpu(lp->tx_insert_ptr->buf),
				MAX_BUF_SIZE, PCI_DMA_TODEVICE);
				MAX_BUF_SIZE, PCI_DMA_TODEVICE);
			dev_kfree_skb(lp->tx_insert_ptr->skb_ptr);
			dev_kfree_skb(lp->tx_insert_ptr->skb_ptr);
			lp->rx_insert_ptr->skb_ptr = NULL;
			lp->rx_insert_ptr->skb_ptr = NULL;
@@ -255,7 +256,8 @@ static void r6040_free_rxbufs(struct net_device *dev)


	for (i = 0; i < RX_DCNT; i++) {
	for (i = 0; i < RX_DCNT; i++) {
		if (lp->rx_insert_ptr->skb_ptr) {
		if (lp->rx_insert_ptr->skb_ptr) {
			pci_unmap_single(lp->pdev, lp->rx_insert_ptr->buf,
			pci_unmap_single(lp->pdev,
				le32_to_cpu(lp->rx_insert_ptr->buf),
				MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
				MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
			dev_kfree_skb(lp->rx_insert_ptr->skb_ptr);
			dev_kfree_skb(lp->rx_insert_ptr->skb_ptr);
			lp->rx_insert_ptr->skb_ptr = NULL;
			lp->rx_insert_ptr->skb_ptr = NULL;
@@ -542,7 +544,7 @@ static int r6040_rx(struct net_device *dev, int limit)
			skb_ptr->dev = priv->dev;
			skb_ptr->dev = priv->dev;
			/* Do not count the CRC */
			/* Do not count the CRC */
			skb_put(skb_ptr, descptr->len - 4);
			skb_put(skb_ptr, descptr->len - 4);
			pci_unmap_single(priv->pdev, descptr->buf,
			pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
				MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
				MAX_BUF_SIZE, PCI_DMA_FROMDEVICE);
			skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev);
			skb_ptr->protocol = eth_type_trans(skb_ptr, priv->dev);
			/* Send to upper layer */
			/* Send to upper layer */
@@ -585,7 +587,7 @@ static void r6040_tx(struct net_device *dev)
		if (descptr->status & 0x8000)
		if (descptr->status & 0x8000)
			break; /* Not complete */
			break; /* Not complete */
		skb_ptr = descptr->skb_ptr;
		skb_ptr = descptr->skb_ptr;
		pci_unmap_single(priv->pdev, descptr->buf,
		pci_unmap_single(priv->pdev, le32_to_cpu(descptr->buf),
			skb_ptr->len, PCI_DMA_TODEVICE);
			skb_ptr->len, PCI_DMA_TODEVICE);
		/* Free buffer */
		/* Free buffer */
		dev_kfree_skb_irq(skb_ptr);
		dev_kfree_skb_irq(skb_ptr);