diff options
Diffstat (limited to 'drivers/net/b44.c')
| -rw-r--r-- | drivers/net/b44.c | 140 | 
1 files changed, 71 insertions, 69 deletions
diff --git a/drivers/net/b44.c b/drivers/net/b44.c index 59dce6aa086..c3bda5ce67c 100644 --- a/drivers/net/b44.c +++ b/drivers/net/b44.c @@ -148,9 +148,9 @@ static inline void b44_sync_dma_desc_for_device(struct ssb_device *sdev,  						unsigned long offset,  						enum dma_data_direction dir)  { -	dma_sync_single_range_for_device(sdev->dma_dev, dma_base, -					 offset & dma_desc_align_mask, -					 dma_desc_sync_size, dir); +	ssb_dma_sync_single_range_for_device(sdev, dma_base, +					     offset & dma_desc_align_mask, +					     dma_desc_sync_size, dir);  }  static inline void b44_sync_dma_desc_for_cpu(struct ssb_device *sdev, @@ -158,9 +158,9 @@ static inline void b44_sync_dma_desc_for_cpu(struct ssb_device *sdev,  					     unsigned long offset,  					     enum dma_data_direction dir)  { -	dma_sync_single_range_for_cpu(sdev->dma_dev, dma_base, -				      offset & dma_desc_align_mask, -				      dma_desc_sync_size, dir); +	ssb_dma_sync_single_range_for_cpu(sdev, dma_base, +					  offset & dma_desc_align_mask, +					  dma_desc_sync_size, dir);  }  static inline unsigned long br32(const struct b44 *bp, unsigned long reg) @@ -613,10 +613,10 @@ static void b44_tx(struct b44 *bp)  		BUG_ON(skb == NULL); -		dma_unmap_single(bp->sdev->dma_dev, -				 rp->mapping, -				 skb->len, -				 DMA_TO_DEVICE); +		ssb_dma_unmap_single(bp->sdev, +				     rp->mapping, +				     skb->len, +				     DMA_TO_DEVICE);  		rp->skb = NULL;  		dev_kfree_skb_irq(skb);  	} @@ -653,29 +653,29 @@ static int b44_alloc_rx_skb(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)  	if (skb == NULL)  		return -ENOMEM; -	mapping = dma_map_single(bp->sdev->dma_dev, skb->data, -				 RX_PKT_BUF_SZ, -				 DMA_FROM_DEVICE); +	mapping = ssb_dma_map_single(bp->sdev, skb->data, +				     RX_PKT_BUF_SZ, +				     DMA_FROM_DEVICE);  	/* Hardware bug work-around, the chip is unable to do PCI DMA  	   to/from anything above 1GB :-( */ -	if (dma_mapping_error(mapping) || +	if (ssb_dma_mapping_error(bp->sdev, mapping) ||  		mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) {  		/* Sigh... */ -		if (!dma_mapping_error(mapping)) -			dma_unmap_single(bp->sdev->dma_dev, mapping, -					RX_PKT_BUF_SZ, DMA_FROM_DEVICE); +		if (!ssb_dma_mapping_error(bp->sdev, mapping)) +			ssb_dma_unmap_single(bp->sdev, mapping, +					     RX_PKT_BUF_SZ, DMA_FROM_DEVICE);  		dev_kfree_skb_any(skb);  		skb = __netdev_alloc_skb(bp->dev, RX_PKT_BUF_SZ, GFP_ATOMIC|GFP_DMA);  		if (skb == NULL)  			return -ENOMEM; -		mapping = dma_map_single(bp->sdev->dma_dev, skb->data, -					 RX_PKT_BUF_SZ, -					 DMA_FROM_DEVICE); -		if (dma_mapping_error(mapping) || +		mapping = ssb_dma_map_single(bp->sdev, skb->data, +					     RX_PKT_BUF_SZ, +					     DMA_FROM_DEVICE); +		if (ssb_dma_mapping_error(bp->sdev, mapping) ||  			mapping + RX_PKT_BUF_SZ > DMA_30BIT_MASK) { -			if (!dma_mapping_error(mapping)) -				dma_unmap_single(bp->sdev->dma_dev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE); +			if (!ssb_dma_mapping_error(bp->sdev, mapping)) +				ssb_dma_unmap_single(bp->sdev, mapping, RX_PKT_BUF_SZ,DMA_FROM_DEVICE);  			dev_kfree_skb_any(skb);  			return -ENOMEM;  		} @@ -750,9 +750,9 @@ static void b44_recycle_rx(struct b44 *bp, int src_idx, u32 dest_idx_unmasked)  					     dest_idx * sizeof(dest_desc),  					     DMA_BIDIRECTIONAL); -	dma_sync_single_for_device(bp->sdev->dma_dev, le32_to_cpu(src_desc->addr), -				   RX_PKT_BUF_SZ, -				   DMA_FROM_DEVICE); +	ssb_dma_sync_single_for_device(bp->sdev, le32_to_cpu(src_desc->addr), +				       RX_PKT_BUF_SZ, +				       DMA_FROM_DEVICE);  }  static int b44_rx(struct b44 *bp, int budget) @@ -772,7 +772,7 @@ static int b44_rx(struct b44 *bp, int budget)  		struct rx_header *rh;  		u16 len; -		dma_sync_single_for_cpu(bp->sdev->dma_dev, map, +		ssb_dma_sync_single_for_cpu(bp->sdev, map,  					    RX_PKT_BUF_SZ,  					    DMA_FROM_DEVICE);  		rh = (struct rx_header *) skb->data; @@ -806,8 +806,8 @@ static int b44_rx(struct b44 *bp, int budget)  			skb_size = b44_alloc_rx_skb(bp, cons, bp->rx_prod);  			if (skb_size < 0)  				goto drop_it; -			dma_unmap_single(bp->sdev->dma_dev, map, -					 skb_size, DMA_FROM_DEVICE); +			ssb_dma_unmap_single(bp->sdev, map, +					     skb_size, DMA_FROM_DEVICE);  			/* Leave out rx_header */                  	skb_put(skb, len + RX_PKT_OFFSET);              	        skb_pull(skb, RX_PKT_OFFSET); @@ -966,25 +966,25 @@ static int b44_start_xmit(struct sk_buff *skb, struct net_device *dev)  		goto err_out;  	} -	mapping = dma_map_single(bp->sdev->dma_dev, skb->data, len, DMA_TO_DEVICE); -	if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { +	mapping = ssb_dma_map_single(bp->sdev, skb->data, len, DMA_TO_DEVICE); +	if (ssb_dma_mapping_error(bp->sdev, mapping) || mapping + len > DMA_30BIT_MASK) {  		struct sk_buff *bounce_skb;  		/* Chip can't handle DMA to/from >1GB, use bounce buffer */ -		if (!dma_mapping_error(mapping)) -			dma_unmap_single(bp->sdev->dma_dev, mapping, len, -					DMA_TO_DEVICE); +		if (!ssb_dma_mapping_error(bp->sdev, mapping)) +			ssb_dma_unmap_single(bp->sdev, mapping, len, +					     DMA_TO_DEVICE);  		bounce_skb = __dev_alloc_skb(len, GFP_ATOMIC | GFP_DMA);  		if (!bounce_skb)  			goto err_out; -		mapping = dma_map_single(bp->sdev->dma_dev, bounce_skb->data, -					 len, DMA_TO_DEVICE); -		if (dma_mapping_error(mapping) || mapping + len > DMA_30BIT_MASK) { -			if (!dma_mapping_error(mapping)) -				dma_unmap_single(bp->sdev->dma_dev, mapping, -					 len, DMA_TO_DEVICE); +		mapping = ssb_dma_map_single(bp->sdev, bounce_skb->data, +					     len, DMA_TO_DEVICE); +		if (ssb_dma_mapping_error(bp->sdev, mapping) || mapping + len > DMA_30BIT_MASK) { +			if (!ssb_dma_mapping_error(bp->sdev, mapping)) +				ssb_dma_unmap_single(bp->sdev, mapping, +						     len, DMA_TO_DEVICE);  			dev_kfree_skb_any(bounce_skb);  			goto err_out;  		} @@ -1082,8 +1082,8 @@ static void b44_free_rings(struct b44 *bp)  		if (rp->skb == NULL)  			continue; -		dma_unmap_single(bp->sdev->dma_dev, rp->mapping, RX_PKT_BUF_SZ, -					DMA_FROM_DEVICE); +		ssb_dma_unmap_single(bp->sdev, rp->mapping, RX_PKT_BUF_SZ, +				     DMA_FROM_DEVICE);  		dev_kfree_skb_any(rp->skb);  		rp->skb = NULL;  	} @@ -1094,8 +1094,8 @@ static void b44_free_rings(struct b44 *bp)  		if (rp->skb == NULL)  			continue; -		dma_unmap_single(bp->sdev->dma_dev, rp->mapping, rp->skb->len, -					DMA_TO_DEVICE); +		ssb_dma_unmap_single(bp->sdev, rp->mapping, rp->skb->len, +				     DMA_TO_DEVICE);  		dev_kfree_skb_any(rp->skb);  		rp->skb = NULL;  	} @@ -1117,14 +1117,14 @@ static void b44_init_rings(struct b44 *bp)  	memset(bp->tx_ring, 0, B44_TX_RING_BYTES);  	if (bp->flags & B44_FLAG_RX_RING_HACK) -		dma_sync_single_for_device(bp->sdev->dma_dev, bp->rx_ring_dma, -			                  DMA_TABLE_BYTES, -			                  DMA_BIDIRECTIONAL); +		ssb_dma_sync_single_for_device(bp->sdev, bp->rx_ring_dma, +					       DMA_TABLE_BYTES, +					       DMA_BIDIRECTIONAL);  	if (bp->flags & B44_FLAG_TX_RING_HACK) -		dma_sync_single_for_device(bp->sdev->dma_dev, bp->tx_ring_dma, -			                  DMA_TABLE_BYTES, -			                  DMA_TO_DEVICE); +		ssb_dma_sync_single_for_device(bp->sdev, bp->tx_ring_dma, +					       DMA_TABLE_BYTES, +					       DMA_TO_DEVICE);  	for (i = 0; i < bp->rx_pending; i++) {  		if (b44_alloc_rx_skb(bp, -1, i) < 0) @@ -1144,25 +1144,27 @@ static void b44_free_consistent(struct b44 *bp)  	bp->tx_buffers = NULL;  	if (bp->rx_ring) {  		if (bp->flags & B44_FLAG_RX_RING_HACK) { -			dma_unmap_single(bp->sdev->dma_dev, bp->rx_ring_dma, -					DMA_TABLE_BYTES, -					DMA_BIDIRECTIONAL); +			ssb_dma_unmap_single(bp->sdev, bp->rx_ring_dma, +					     DMA_TABLE_BYTES, +					     DMA_BIDIRECTIONAL);  			kfree(bp->rx_ring);  		} else -			dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES, -					    bp->rx_ring, bp->rx_ring_dma); +			ssb_dma_free_consistent(bp->sdev, DMA_TABLE_BYTES, +						bp->rx_ring, bp->rx_ring_dma, +						GFP_KERNEL);  		bp->rx_ring = NULL;  		bp->flags &= ~B44_FLAG_RX_RING_HACK;  	}  	if (bp->tx_ring) {  		if (bp->flags & B44_FLAG_TX_RING_HACK) { -			dma_unmap_single(bp->sdev->dma_dev, bp->tx_ring_dma, -					DMA_TABLE_BYTES, -					DMA_TO_DEVICE); +			ssb_dma_unmap_single(bp->sdev, bp->tx_ring_dma, +					     DMA_TABLE_BYTES, +					     DMA_TO_DEVICE);  			kfree(bp->tx_ring);  		} else -			dma_free_coherent(bp->sdev->dma_dev, DMA_TABLE_BYTES, -					    bp->tx_ring, bp->tx_ring_dma); +			ssb_dma_free_consistent(bp->sdev, DMA_TABLE_BYTES, +						bp->tx_ring, bp->tx_ring_dma, +						GFP_KERNEL);  		bp->tx_ring = NULL;  		bp->flags &= ~B44_FLAG_TX_RING_HACK;  	} @@ -1187,7 +1189,7 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)  		goto out_err;  	size = DMA_TABLE_BYTES; -	bp->rx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->rx_ring_dma, gfp); +	bp->rx_ring = ssb_dma_alloc_consistent(bp->sdev, size, &bp->rx_ring_dma, gfp);  	if (!bp->rx_ring) {  		/* Allocation may have failed due to pci_alloc_consistent  		   insisting on use of GFP_DMA, which is more restrictive @@ -1199,11 +1201,11 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)  		if (!rx_ring)  			goto out_err; -		rx_ring_dma = dma_map_single(bp->sdev->dma_dev, rx_ring, -			                    DMA_TABLE_BYTES, -			                    DMA_BIDIRECTIONAL); +		rx_ring_dma = ssb_dma_map_single(bp->sdev, rx_ring, +						 DMA_TABLE_BYTES, +						 DMA_BIDIRECTIONAL); -		if (dma_mapping_error(rx_ring_dma) || +		if (ssb_dma_mapping_error(bp->sdev, rx_ring_dma) ||  			rx_ring_dma + size > DMA_30BIT_MASK) {  			kfree(rx_ring);  			goto out_err; @@ -1214,9 +1216,9 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)  		bp->flags |= B44_FLAG_RX_RING_HACK;  	} -	bp->tx_ring = dma_alloc_coherent(bp->sdev->dma_dev, size, &bp->tx_ring_dma, gfp); +	bp->tx_ring = ssb_dma_alloc_consistent(bp->sdev, size, &bp->tx_ring_dma, gfp);  	if (!bp->tx_ring) { -		/* Allocation may have failed due to dma_alloc_coherent +		/* Allocation may have failed due to ssb_dma_alloc_consistent  		   insisting on use of GFP_DMA, which is more restrictive  		   than necessary...  */  		struct dma_desc *tx_ring; @@ -1226,11 +1228,11 @@ static int b44_alloc_consistent(struct b44 *bp, gfp_t gfp)  		if (!tx_ring)  			goto out_err; -		tx_ring_dma = dma_map_single(bp->sdev->dma_dev, tx_ring, +		tx_ring_dma = ssb_dma_map_single(bp->sdev, tx_ring,  			                    DMA_TABLE_BYTES,  			                    DMA_TO_DEVICE); -		if (dma_mapping_error(tx_ring_dma) || +		if (ssb_dma_mapping_error(bp->sdev, tx_ring_dma) ||  			tx_ring_dma + size > DMA_30BIT_MASK) {  			kfree(tx_ring);  			goto out_err;  | 
