diff options
Diffstat (limited to 'drivers/net/r8169.c')
| -rw-r--r-- | drivers/net/r8169.c | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c index a0da4a17b025..992db2fa136e 100644 --- a/drivers/net/r8169.c +++ b/drivers/net/r8169.c | |||
| @@ -1212,7 +1212,8 @@ static void rtl8169_update_counters(struct net_device *dev) | |||
| 1212 | if ((RTL_R8(ChipCmd) & CmdRxEnb) == 0) | 1212 | if ((RTL_R8(ChipCmd) & CmdRxEnb) == 0) |
| 1213 | return; | 1213 | return; |
| 1214 | 1214 | ||
| 1215 | counters = pci_alloc_consistent(tp->pci_dev, sizeof(*counters), &paddr); | 1215 | counters = dma_alloc_coherent(&tp->pci_dev->dev, sizeof(*counters), |
| 1216 | &paddr, GFP_KERNEL); | ||
| 1216 | if (!counters) | 1217 | if (!counters) |
| 1217 | return; | 1218 | return; |
| 1218 | 1219 | ||
| @@ -1233,7 +1234,8 @@ static void rtl8169_update_counters(struct net_device *dev) | |||
| 1233 | RTL_W32(CounterAddrLow, 0); | 1234 | RTL_W32(CounterAddrLow, 0); |
| 1234 | RTL_W32(CounterAddrHigh, 0); | 1235 | RTL_W32(CounterAddrHigh, 0); |
| 1235 | 1236 | ||
| 1236 | pci_free_consistent(tp->pci_dev, sizeof(*counters), counters, paddr); | 1237 | dma_free_coherent(&tp->pci_dev->dev, sizeof(*counters), counters, |
| 1238 | paddr); | ||
| 1237 | } | 1239 | } |
| 1238 | 1240 | ||
| 1239 | static void rtl8169_get_ethtool_stats(struct net_device *dev, | 1241 | static void rtl8169_get_ethtool_stats(struct net_device *dev, |
| @@ -3292,15 +3294,15 @@ static int rtl8169_open(struct net_device *dev) | |||
| 3292 | 3294 | ||
| 3293 | /* | 3295 | /* |
| 3294 | * Rx and Tx desscriptors needs 256 bytes alignment. | 3296 | * Rx and Tx desscriptors needs 256 bytes alignment. |
| 3295 | * pci_alloc_consistent provides more. | 3297 | * dma_alloc_coherent provides more. |
| 3296 | */ | 3298 | */ |
| 3297 | tp->TxDescArray = pci_alloc_consistent(pdev, R8169_TX_RING_BYTES, | 3299 | tp->TxDescArray = dma_alloc_coherent(&pdev->dev, R8169_TX_RING_BYTES, |
| 3298 | &tp->TxPhyAddr); | 3300 | &tp->TxPhyAddr, GFP_KERNEL); |
| 3299 | if (!tp->TxDescArray) | 3301 | if (!tp->TxDescArray) |
| 3300 | goto err_pm_runtime_put; | 3302 | goto err_pm_runtime_put; |
| 3301 | 3303 | ||
| 3302 | tp->RxDescArray = pci_alloc_consistent(pdev, R8169_RX_RING_BYTES, | 3304 | tp->RxDescArray = dma_alloc_coherent(&pdev->dev, R8169_RX_RING_BYTES, |
| 3303 | &tp->RxPhyAddr); | 3305 | &tp->RxPhyAddr, GFP_KERNEL); |
| 3304 | if (!tp->RxDescArray) | 3306 | if (!tp->RxDescArray) |
| 3305 | goto err_free_tx_0; | 3307 | goto err_free_tx_0; |
| 3306 | 3308 | ||
| @@ -3334,12 +3336,12 @@ out: | |||
| 3334 | err_release_ring_2: | 3336 | err_release_ring_2: |
| 3335 | rtl8169_rx_clear(tp); | 3337 | rtl8169_rx_clear(tp); |
| 3336 | err_free_rx_1: | 3338 | err_free_rx_1: |
| 3337 | pci_free_consistent(pdev, R8169_RX_RING_BYTES, tp->RxDescArray, | 3339 | dma_free_coherent(&pdev->dev, R8169_RX_RING_BYTES, tp->RxDescArray, |
| 3338 | tp->RxPhyAddr); | 3340 | tp->RxPhyAddr); |
| 3339 | tp->RxDescArray = NULL; | 3341 | tp->RxDescArray = NULL; |
| 3340 | err_free_tx_0: | 3342 | err_free_tx_0: |
| 3341 | pci_free_consistent(pdev, R8169_TX_RING_BYTES, tp->TxDescArray, | 3343 | dma_free_coherent(&pdev->dev, R8169_TX_RING_BYTES, tp->TxDescArray, |
| 3342 | tp->TxPhyAddr); | 3344 | tp->TxPhyAddr); |
| 3343 | tp->TxDescArray = NULL; | 3345 | tp->TxDescArray = NULL; |
| 3344 | err_pm_runtime_put: | 3346 | err_pm_runtime_put: |
| 3345 | pm_runtime_put_noidle(&pdev->dev); | 3347 | pm_runtime_put_noidle(&pdev->dev); |
| @@ -3975,7 +3977,7 @@ static void rtl8169_free_rx_skb(struct rtl8169_private *tp, | |||
| 3975 | { | 3977 | { |
| 3976 | struct pci_dev *pdev = tp->pci_dev; | 3978 | struct pci_dev *pdev = tp->pci_dev; |
| 3977 | 3979 | ||
| 3978 | pci_unmap_single(pdev, le64_to_cpu(desc->addr), tp->rx_buf_sz, | 3980 | dma_unmap_single(&pdev->dev, le64_to_cpu(desc->addr), tp->rx_buf_sz, |
| 3979 | PCI_DMA_FROMDEVICE); | 3981 | PCI_DMA_FROMDEVICE); |
| 3980 | dev_kfree_skb(*sk_buff); | 3982 | dev_kfree_skb(*sk_buff); |
| 3981 | *sk_buff = NULL; | 3983 | *sk_buff = NULL; |
| @@ -4000,7 +4002,7 @@ static inline void rtl8169_map_to_asic(struct RxDesc *desc, dma_addr_t mapping, | |||
| 4000 | static struct sk_buff *rtl8169_alloc_rx_skb(struct pci_dev *pdev, | 4002 | static struct sk_buff *rtl8169_alloc_rx_skb(struct pci_dev *pdev, |
| 4001 | struct net_device *dev, | 4003 | struct net_device *dev, |
| 4002 | struct RxDesc *desc, int rx_buf_sz, | 4004 | struct RxDesc *desc, int rx_buf_sz, |
| 4003 | unsigned int align) | 4005 | unsigned int align, gfp_t gfp) |
| 4004 | { | 4006 | { |
| 4005 | struct sk_buff *skb; | 4007 | struct sk_buff *skb; |
| 4006 | dma_addr_t mapping; | 4008 | dma_addr_t mapping; |
| @@ -4008,13 +4010,13 @@ static struct sk_buff *rtl8169_alloc_rx_skb(struct pci_dev *pdev, | |||
| 4008 | 4010 | ||
| 4009 | pad = align ? align : NET_IP_ALIGN; | 4011 | pad = align ? align : NET_IP_ALIGN; |
| 4010 | 4012 | ||
| 4011 | skb = netdev_alloc_skb(dev, rx_buf_sz + pad); | 4013 | skb = __netdev_alloc_skb(dev, rx_buf_sz + pad, gfp); |
| 4012 | if (!skb) | 4014 | if (!skb) |
| 4013 | goto err_out; | 4015 | goto err_out; |
| 4014 | 4016 | ||
| 4015 | skb_reserve(skb, align ? ((pad - 1) & (unsigned long)skb->data) : pad); | 4017 | skb_reserve(skb, align ? ((pad - 1) & (unsigned long)skb->data) : pad); |
| 4016 | 4018 | ||
| 4017 | mapping = pci_map_single(pdev, skb->data, rx_buf_sz, | 4019 | mapping = dma_map_single(&pdev->dev, skb->data, rx_buf_sz, |
| 4018 | PCI_DMA_FROMDEVICE); | 4020 | PCI_DMA_FROMDEVICE); |
| 4019 | 4021 | ||
| 4020 | rtl8169_map_to_asic(desc, mapping, rx_buf_sz); | 4022 | rtl8169_map_to_asic(desc, mapping, rx_buf_sz); |
| @@ -4039,7 +4041,7 @@ static void rtl8169_rx_clear(struct rtl8169_private *tp) | |||
| 4039 | } | 4041 | } |
| 4040 | 4042 | ||
| 4041 | static u32 rtl8169_rx_fill(struct rtl8169_private *tp, struct net_device *dev, | 4043 | static u32 rtl8169_rx_fill(struct rtl8169_private *tp, struct net_device *dev, |
| 4042 | u32 start, u32 end) | 4044 | u32 start, u32 end, gfp_t gfp) |
| 4043 | { | 4045 | { |
| 4044 | u32 cur; | 4046 | u32 cur; |
| 4045 | 4047 | ||
| @@ -4054,7 +4056,7 @@ static u32 rtl8169_rx_fill(struct rtl8169_private *tp, struct net_device *dev, | |||
| 4054 | 4056 | ||
| 4055 | skb = rtl8169_alloc_rx_skb(tp->pci_dev, dev, | 4057 | skb = rtl8169_alloc_rx_skb(tp->pci_dev, dev, |
| 4056 | tp->RxDescArray + i, | 4058 | tp->RxDescArray + i, |
| 4057 | tp->rx_buf_sz, tp->align); | 4059 | tp->rx_buf_sz, tp->align, gfp); |
| 4058 | if (!skb) | 4060 | if (!skb) |
| 4059 | break; | 4061 | break; |
| 4060 | 4062 | ||
| @@ -4082,7 +4084,7 @@ static int rtl8169_init_ring(struct net_device *dev) | |||
| 4082 | memset(tp->tx_skb, 0x0, NUM_TX_DESC * sizeof(struct ring_info)); | 4084 | memset(tp->tx_skb, 0x0, NUM_TX_DESC * sizeof(struct ring_info)); |
| 4083 | memset(tp->Rx_skbuff, 0x0, NUM_RX_DESC * sizeof(struct sk_buff *)); | 4085 | memset(tp->Rx_skbuff, 0x0, NUM_RX_DESC * sizeof(struct sk_buff *)); |
| 4084 | 4086 | ||
| 4085 | if (rtl8169_rx_fill(tp, dev, 0, NUM_RX_DESC) != NUM_RX_DESC) | 4087 | if (rtl8169_rx_fill(tp, dev, 0, NUM_RX_DESC, GFP_KERNEL) != NUM_RX_DESC) |
| 4086 | goto err_out; | 4088 | goto err_out; |
| 4087 | 4089 | ||
| 4088 | rtl8169_mark_as_last_descriptor(tp->RxDescArray + NUM_RX_DESC - 1); | 4090 | rtl8169_mark_as_last_descriptor(tp->RxDescArray + NUM_RX_DESC - 1); |
| @@ -4099,7 +4101,8 @@ static void rtl8169_unmap_tx_skb(struct pci_dev *pdev, struct ring_info *tx_skb, | |||
| 4099 | { | 4101 | { |
| 4100 | unsigned int len = tx_skb->len; | 4102 | unsigned int len = tx_skb->len; |
| 4101 | 4103 | ||
| 4102 | pci_unmap_single(pdev, le64_to_cpu(desc->addr), len, PCI_DMA_TODEVICE); | 4104 | dma_unmap_single(&pdev->dev, le64_to_cpu(desc->addr), len, |
| 4105 | PCI_DMA_TODEVICE); | ||
| 4103 | desc->opts1 = 0x00; | 4106 | desc->opts1 = 0x00; |
| 4104 | desc->opts2 = 0x00; | 4107 | desc->opts2 = 0x00; |
| 4105 | desc->addr = 0x00; | 4108 | desc->addr = 0x00; |
| @@ -4243,7 +4246,8 @@ static int rtl8169_xmit_frags(struct rtl8169_private *tp, struct sk_buff *skb, | |||
| 4243 | txd = tp->TxDescArray + entry; | 4246 | txd = tp->TxDescArray + entry; |
| 4244 | len = frag->size; | 4247 | len = frag->size; |
| 4245 | addr = ((void *) page_address(frag->page)) + frag->page_offset; | 4248 | addr = ((void *) page_address(frag->page)) + frag->page_offset; |
| 4246 | mapping = pci_map_single(tp->pci_dev, addr, len, PCI_DMA_TODEVICE); | 4249 | mapping = dma_map_single(&tp->pci_dev->dev, addr, len, |
| 4250 | PCI_DMA_TODEVICE); | ||
| 4247 | 4251 | ||
| 4248 | /* anti gcc 2.95.3 bugware (sic) */ | 4252 | /* anti gcc 2.95.3 bugware (sic) */ |
| 4249 | status = opts1 | len | (RingEnd * !((entry + 1) % NUM_TX_DESC)); | 4253 | status = opts1 | len | (RingEnd * !((entry + 1) % NUM_TX_DESC)); |
| @@ -4313,7 +4317,8 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb, | |||
| 4313 | tp->tx_skb[entry].skb = skb; | 4317 | tp->tx_skb[entry].skb = skb; |
| 4314 | } | 4318 | } |
| 4315 | 4319 | ||
| 4316 | mapping = pci_map_single(tp->pci_dev, skb->data, len, PCI_DMA_TODEVICE); | 4320 | mapping = dma_map_single(&tp->pci_dev->dev, skb->data, len, |
| 4321 | PCI_DMA_TODEVICE); | ||
| 4317 | 4322 | ||
| 4318 | tp->tx_skb[entry].len = len; | 4323 | tp->tx_skb[entry].len = len; |
| 4319 | txd->addr = cpu_to_le64(mapping); | 4324 | txd->addr = cpu_to_le64(mapping); |
| @@ -4477,8 +4482,8 @@ static inline bool rtl8169_try_rx_copy(struct sk_buff **sk_buff, | |||
| 4477 | if (!skb) | 4482 | if (!skb) |
| 4478 | goto out; | 4483 | goto out; |
| 4479 | 4484 | ||
| 4480 | pci_dma_sync_single_for_cpu(tp->pci_dev, addr, pkt_size, | 4485 | dma_sync_single_for_cpu(&tp->pci_dev->dev, addr, pkt_size, |
| 4481 | PCI_DMA_FROMDEVICE); | 4486 | PCI_DMA_FROMDEVICE); |
| 4482 | skb_copy_from_linear_data(*sk_buff, skb->data, pkt_size); | 4487 | skb_copy_from_linear_data(*sk_buff, skb->data, pkt_size); |
| 4483 | *sk_buff = skb; | 4488 | *sk_buff = skb; |
| 4484 | done = true; | 4489 | done = true; |
| @@ -4549,11 +4554,11 @@ static int rtl8169_rx_interrupt(struct net_device *dev, | |||
| 4549 | rtl8169_rx_csum(skb, desc); | 4554 | rtl8169_rx_csum(skb, desc); |
| 4550 | 4555 | ||
| 4551 | if (rtl8169_try_rx_copy(&skb, tp, pkt_size, addr)) { | 4556 | if (rtl8169_try_rx_copy(&skb, tp, pkt_size, addr)) { |
| 4552 | pci_dma_sync_single_for_device(pdev, addr, | 4557 | dma_sync_single_for_device(&pdev->dev, addr, |
| 4553 | pkt_size, PCI_DMA_FROMDEVICE); | 4558 | pkt_size, PCI_DMA_FROMDEVICE); |
| 4554 | rtl8169_mark_to_asic(desc, tp->rx_buf_sz); | 4559 | rtl8169_mark_to_asic(desc, tp->rx_buf_sz); |
| 4555 | } else { | 4560 | } else { |
| 4556 | pci_unmap_single(pdev, addr, tp->rx_buf_sz, | 4561 | dma_unmap_single(&pdev->dev, addr, tp->rx_buf_sz, |
| 4557 | PCI_DMA_FROMDEVICE); | 4562 | PCI_DMA_FROMDEVICE); |
| 4558 | tp->Rx_skbuff[entry] = NULL; | 4563 | tp->Rx_skbuff[entry] = NULL; |
| 4559 | } | 4564 | } |
| @@ -4583,7 +4588,7 @@ static int rtl8169_rx_interrupt(struct net_device *dev, | |||
| 4583 | count = cur_rx - tp->cur_rx; | 4588 | count = cur_rx - tp->cur_rx; |
| 4584 | tp->cur_rx = cur_rx; | 4589 | tp->cur_rx = cur_rx; |
| 4585 | 4590 | ||
| 4586 | delta = rtl8169_rx_fill(tp, dev, tp->dirty_rx, tp->cur_rx); | 4591 | delta = rtl8169_rx_fill(tp, dev, tp->dirty_rx, tp->cur_rx, GFP_ATOMIC); |
| 4587 | if (!delta && count) | 4592 | if (!delta && count) |
| 4588 | netif_info(tp, intr, dev, "no Rx buffer allocated\n"); | 4593 | netif_info(tp, intr, dev, "no Rx buffer allocated\n"); |
| 4589 | tp->dirty_rx += delta; | 4594 | tp->dirty_rx += delta; |
| @@ -4769,10 +4774,10 @@ static int rtl8169_close(struct net_device *dev) | |||
| 4769 | 4774 | ||
| 4770 | free_irq(dev->irq, dev); | 4775 | free_irq(dev->irq, dev); |
| 4771 | 4776 | ||
| 4772 | pci_free_consistent(pdev, R8169_RX_RING_BYTES, tp->RxDescArray, | 4777 | dma_free_coherent(&pdev->dev, R8169_RX_RING_BYTES, tp->RxDescArray, |
| 4773 | tp->RxPhyAddr); | 4778 | tp->RxPhyAddr); |
| 4774 | pci_free_consistent(pdev, R8169_TX_RING_BYTES, tp->TxDescArray, | 4779 | dma_free_coherent(&pdev->dev, R8169_TX_RING_BYTES, tp->TxDescArray, |
| 4775 | tp->TxPhyAddr); | 4780 | tp->TxPhyAddr); |
| 4776 | tp->TxDescArray = NULL; | 4781 | tp->TxDescArray = NULL; |
| 4777 | tp->RxDescArray = NULL; | 4782 | tp->RxDescArray = NULL; |
| 4778 | 4783 | ||
