diff options
author | David S. Miller <davem@davemloft.net> | 2010-02-26 02:22:42 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-02-26 02:22:42 -0500 |
commit | 04488734806948624dabc4514f96f14cd75b9a50 (patch) | |
tree | 74f3a3c10a7177a5f86398b83ad7bf0569fe8b89 /drivers/net/e1000 | |
parent | 54831a83bfe656c4c54e287c734c6b0ccaa3719b (diff) | |
parent | c4d49794ff2838038fd9756eae39c39a5a685833 (diff) |
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Diffstat (limited to 'drivers/net/e1000')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c index 319c2b5281e9..8be6faee43e6 100644 --- a/drivers/net/e1000/e1000_main.c +++ b/drivers/net/e1000/e1000_main.c | |||
@@ -4005,11 +4005,21 @@ check_page: | |||
4005 | } | 4005 | } |
4006 | } | 4006 | } |
4007 | 4007 | ||
4008 | if (!buffer_info->dma) | 4008 | if (!buffer_info->dma) { |
4009 | buffer_info->dma = pci_map_page(pdev, | 4009 | buffer_info->dma = pci_map_page(pdev, |
4010 | buffer_info->page, 0, | 4010 | buffer_info->page, 0, |
4011 | buffer_info->length, | 4011 | buffer_info->length, |
4012 | PCI_DMA_FROMDEVICE); | 4012 | PCI_DMA_FROMDEVICE); |
4013 | if (pci_dma_mapping_error(pdev, buffer_info->dma)) { | ||
4014 | put_page(buffer_info->page); | ||
4015 | dev_kfree_skb(skb); | ||
4016 | buffer_info->page = NULL; | ||
4017 | buffer_info->skb = NULL; | ||
4018 | buffer_info->dma = 0; | ||
4019 | adapter->alloc_rx_buff_failed++; | ||
4020 | break; /* while !buffer_info->skb */ | ||
4021 | } | ||
4022 | } | ||
4013 | 4023 | ||
4014 | rx_desc = E1000_RX_DESC(*rx_ring, i); | 4024 | rx_desc = E1000_RX_DESC(*rx_ring, i); |
4015 | rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); | 4025 | rx_desc->buffer_addr = cpu_to_le64(buffer_info->dma); |
@@ -4100,6 +4110,13 @@ map_skb: | |||
4100 | skb->data, | 4110 | skb->data, |
4101 | buffer_info->length, | 4111 | buffer_info->length, |
4102 | PCI_DMA_FROMDEVICE); | 4112 | PCI_DMA_FROMDEVICE); |
4113 | if (pci_dma_mapping_error(pdev, buffer_info->dma)) { | ||
4114 | dev_kfree_skb(skb); | ||
4115 | buffer_info->skb = NULL; | ||
4116 | buffer_info->dma = 0; | ||
4117 | adapter->alloc_rx_buff_failed++; | ||
4118 | break; /* while !buffer_info->skb */ | ||
4119 | } | ||
4103 | 4120 | ||
4104 | /* | 4121 | /* |
4105 | * XXX if it was allocated cleanly it will never map to a | 4122 | * XXX if it was allocated cleanly it will never map to a |