aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/e1000
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2010-02-26 02:22:42 -0500
committerDavid S. Miller <davem@davemloft.net>2010-02-26 02:22:42 -0500
commit04488734806948624dabc4514f96f14cd75b9a50 (patch)
tree74f3a3c10a7177a5f86398b83ad7bf0569fe8b89 /drivers/net/e1000
parent54831a83bfe656c4c54e287c734c6b0ccaa3719b (diff)
parentc4d49794ff2838038fd9756eae39c39a5a685833 (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.c19
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