aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000.h8
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_ethtool.c7
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_main.c35
3 files changed, 27 insertions, 23 deletions
diff --git a/drivers/net/ethernet/intel/e1000/e1000.h b/drivers/net/ethernet/intel/e1000/e1000.h
index 10a0f221b183..81efe3358350 100644
--- a/drivers/net/ethernet/intel/e1000/e1000.h
+++ b/drivers/net/ethernet/intel/e1000/e1000.h
@@ -160,6 +160,12 @@ struct e1000_buffer {
160 u16 mapped_as_page; 160 u16 mapped_as_page;
161}; 161};
162 162
163struct e1000_rx_buffer {
164 struct sk_buff *skb;
165 dma_addr_t dma;
166 struct page *page;
167};
168
163struct e1000_tx_ring { 169struct e1000_tx_ring {
164 /* pointer to the descriptor ring memory */ 170 /* pointer to the descriptor ring memory */
165 void *desc; 171 void *desc;
@@ -195,7 +201,7 @@ struct e1000_rx_ring {
195 /* next descriptor to check for DD status bit */ 201 /* next descriptor to check for DD status bit */
196 unsigned int next_to_clean; 202 unsigned int next_to_clean;
197 /* array of buffer information structs */ 203 /* array of buffer information structs */
198 struct e1000_buffer *buffer_info; 204 struct e1000_rx_buffer *buffer_info;
199 struct sk_buff *rx_skb_top; 205 struct sk_buff *rx_skb_top;
200 206
201 /* cpu for rx queue */ 207 /* cpu for rx queue */
diff --git a/drivers/net/ethernet/intel/e1000/e1000_ethtool.c b/drivers/net/ethernet/intel/e1000/e1000_ethtool.c
index 9b50272824a1..5ebc2407595b 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_ethtool.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_ethtool.c
@@ -968,7 +968,7 @@ static void e1000_free_desc_rings(struct e1000_adapter *adapter)
968 if (rxdr->buffer_info[i].dma) 968 if (rxdr->buffer_info[i].dma)
969 dma_unmap_single(&pdev->dev, 969 dma_unmap_single(&pdev->dev,
970 rxdr->buffer_info[i].dma, 970 rxdr->buffer_info[i].dma,
971 rxdr->buffer_info[i].length, 971 E1000_RXBUFFER_2048,
972 DMA_FROM_DEVICE); 972 DMA_FROM_DEVICE);
973 if (rxdr->buffer_info[i].skb) 973 if (rxdr->buffer_info[i].skb)
974 dev_kfree_skb(rxdr->buffer_info[i].skb); 974 dev_kfree_skb(rxdr->buffer_info[i].skb);
@@ -1065,7 +1065,7 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
1065 if (!rxdr->count) 1065 if (!rxdr->count)
1066 rxdr->count = E1000_DEFAULT_RXD; 1066 rxdr->count = E1000_DEFAULT_RXD;
1067 1067
1068 rxdr->buffer_info = kcalloc(rxdr->count, sizeof(struct e1000_buffer), 1068 rxdr->buffer_info = kcalloc(rxdr->count, sizeof(struct e1000_rx_buffer),
1069 GFP_KERNEL); 1069 GFP_KERNEL);
1070 if (!rxdr->buffer_info) { 1070 if (!rxdr->buffer_info) {
1071 ret_val = 5; 1071 ret_val = 5;
@@ -1104,7 +1104,6 @@ static int e1000_setup_desc_rings(struct e1000_adapter *adapter)
1104 } 1104 }
1105 skb_reserve(skb, NET_IP_ALIGN); 1105 skb_reserve(skb, NET_IP_ALIGN);
1106 rxdr->buffer_info[i].skb = skb; 1106 rxdr->buffer_info[i].skb = skb;
1107 rxdr->buffer_info[i].length = E1000_RXBUFFER_2048;
1108 rxdr->buffer_info[i].dma = 1107 rxdr->buffer_info[i].dma =
1109 dma_map_single(&pdev->dev, skb->data, 1108 dma_map_single(&pdev->dev, skb->data,
1110 E1000_RXBUFFER_2048, DMA_FROM_DEVICE); 1109 E1000_RXBUFFER_2048, DMA_FROM_DEVICE);
@@ -1440,7 +1439,7 @@ static int e1000_run_loopback_test(struct e1000_adapter *adapter)
1440 do { /* receive the sent packets */ 1439 do { /* receive the sent packets */
1441 dma_sync_single_for_cpu(&pdev->dev, 1440 dma_sync_single_for_cpu(&pdev->dev,
1442 rxdr->buffer_info[l].dma, 1441 rxdr->buffer_info[l].dma,
1443 rxdr->buffer_info[l].length, 1442 E1000_RXBUFFER_2048,
1444 DMA_FROM_DEVICE); 1443 DMA_FROM_DEVICE);
1445 1444
1446 ret_val = e1000_check_lbtest_frame( 1445 ret_val = e1000_check_lbtest_frame(
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index 79626ba7e87a..694db74ddea3 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -1687,7 +1687,7 @@ static int e1000_setup_rx_resources(struct e1000_adapter *adapter,
1687 struct pci_dev *pdev = adapter->pdev; 1687 struct pci_dev *pdev = adapter->pdev;
1688 int size, desc_len; 1688 int size, desc_len;
1689 1689
1690 size = sizeof(struct e1000_buffer) * rxdr->count; 1690 size = sizeof(struct e1000_rx_buffer) * rxdr->count;
1691 rxdr->buffer_info = vzalloc(size); 1691 rxdr->buffer_info = vzalloc(size);
1692 if (!rxdr->buffer_info) 1692 if (!rxdr->buffer_info)
1693 return -ENOMEM; 1693 return -ENOMEM;
@@ -2062,7 +2062,7 @@ static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
2062 struct e1000_rx_ring *rx_ring) 2062 struct e1000_rx_ring *rx_ring)
2063{ 2063{
2064 struct e1000_hw *hw = &adapter->hw; 2064 struct e1000_hw *hw = &adapter->hw;
2065 struct e1000_buffer *buffer_info; 2065 struct e1000_rx_buffer *buffer_info;
2066 struct pci_dev *pdev = adapter->pdev; 2066 struct pci_dev *pdev = adapter->pdev;
2067 unsigned long size; 2067 unsigned long size;
2068 unsigned int i; 2068 unsigned int i;
@@ -2073,12 +2073,12 @@ static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
2073 if (buffer_info->dma && 2073 if (buffer_info->dma &&
2074 adapter->clean_rx == e1000_clean_rx_irq) { 2074 adapter->clean_rx == e1000_clean_rx_irq) {
2075 dma_unmap_single(&pdev->dev, buffer_info->dma, 2075 dma_unmap_single(&pdev->dev, buffer_info->dma,
2076 buffer_info->length, 2076 adapter->rx_buffer_len,
2077 DMA_FROM_DEVICE); 2077 DMA_FROM_DEVICE);
2078 } else if (buffer_info->dma && 2078 } else if (buffer_info->dma &&
2079 adapter->clean_rx == e1000_clean_jumbo_rx_irq) { 2079 adapter->clean_rx == e1000_clean_jumbo_rx_irq) {
2080 dma_unmap_page(&pdev->dev, buffer_info->dma, 2080 dma_unmap_page(&pdev->dev, buffer_info->dma,
2081 buffer_info->length, 2081 adapter->rx_buffer_len,
2082 DMA_FROM_DEVICE); 2082 DMA_FROM_DEVICE);
2083 } 2083 }
2084 2084
@@ -2099,7 +2099,7 @@ static void e1000_clean_rx_ring(struct e1000_adapter *adapter,
2099 rx_ring->rx_skb_top = NULL; 2099 rx_ring->rx_skb_top = NULL;
2100 } 2100 }
2101 2101
2102 size = sizeof(struct e1000_buffer) * rx_ring->count; 2102 size = sizeof(struct e1000_rx_buffer) * rx_ring->count;
2103 memset(rx_ring->buffer_info, 0, size); 2103 memset(rx_ring->buffer_info, 0, size);
2104 2104
2105 /* Zero out the descriptor ring */ 2105 /* Zero out the descriptor ring */
@@ -3415,7 +3415,7 @@ rx_ring_summary:
3415 3415
3416 for (i = 0; rx_ring->desc && (i < rx_ring->count); i++) { 3416 for (i = 0; rx_ring->desc && (i < rx_ring->count); i++) {
3417 struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rx_ring, i); 3417 struct e1000_rx_desc *rx_desc = E1000_RX_DESC(*rx_ring, i);
3418 struct e1000_buffer *buffer_info = &rx_ring->buffer_info[i]; 3418 struct e1000_rx_buffer *buffer_info = &rx_ring->buffer_info[i];
3419 struct my_u { __le64 a; __le64 b; }; 3419 struct my_u { __le64 a; __le64 b; };
3420 struct my_u *u = (struct my_u *)rx_desc; 3420 struct my_u *u = (struct my_u *)rx_desc;
3421 const char *type; 3421 const char *type;
@@ -3951,7 +3951,7 @@ static void e1000_rx_checksum(struct e1000_adapter *adapter, u32 status_err,
3951/** 3951/**
3952 * e1000_consume_page - helper function 3952 * e1000_consume_page - helper function
3953 **/ 3953 **/
3954static void e1000_consume_page(struct e1000_buffer *bi, struct sk_buff *skb, 3954static void e1000_consume_page(struct e1000_rx_buffer *bi, struct sk_buff *skb,
3955 u16 length) 3955 u16 length)
3956{ 3956{
3957 bi->page = NULL; 3957 bi->page = NULL;
@@ -4104,7 +4104,7 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
4104 struct net_device *netdev = adapter->netdev; 4104 struct net_device *netdev = adapter->netdev;
4105 struct pci_dev *pdev = adapter->pdev; 4105 struct pci_dev *pdev = adapter->pdev;
4106 struct e1000_rx_desc *rx_desc, *next_rxd; 4106 struct e1000_rx_desc *rx_desc, *next_rxd;
4107 struct e1000_buffer *buffer_info, *next_buffer; 4107 struct e1000_rx_buffer *buffer_info, *next_buffer;
4108 u32 length; 4108 u32 length;
4109 unsigned int i; 4109 unsigned int i;
4110 int cleaned_count = 0; 4110 int cleaned_count = 0;
@@ -4137,7 +4137,7 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
4137 cleaned = true; 4137 cleaned = true;
4138 cleaned_count++; 4138 cleaned_count++;
4139 dma_unmap_page(&pdev->dev, buffer_info->dma, 4139 dma_unmap_page(&pdev->dev, buffer_info->dma,
4140 buffer_info->length, DMA_FROM_DEVICE); 4140 adapter->rx_buffer_len, DMA_FROM_DEVICE);
4141 buffer_info->dma = 0; 4141 buffer_info->dma = 0;
4142 4142
4143 length = le16_to_cpu(rx_desc->length); 4143 length = le16_to_cpu(rx_desc->length);
@@ -4273,7 +4273,7 @@ next_desc:
4273 * of reassembly being done in the stack 4273 * of reassembly being done in the stack
4274 */ 4274 */
4275static struct sk_buff *e1000_copybreak(struct e1000_adapter *adapter, 4275static struct sk_buff *e1000_copybreak(struct e1000_adapter *adapter,
4276 struct e1000_buffer *buffer_info, 4276 struct e1000_rx_buffer *buffer_info,
4277 u32 length, const void *data) 4277 u32 length, const void *data)
4278{ 4278{
4279 struct sk_buff *skb; 4279 struct sk_buff *skb;
@@ -4307,7 +4307,7 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
4307 struct net_device *netdev = adapter->netdev; 4307 struct net_device *netdev = adapter->netdev;
4308 struct pci_dev *pdev = adapter->pdev; 4308 struct pci_dev *pdev = adapter->pdev;
4309 struct e1000_rx_desc *rx_desc, *next_rxd; 4309 struct e1000_rx_desc *rx_desc, *next_rxd;
4310 struct e1000_buffer *buffer_info, *next_buffer; 4310 struct e1000_rx_buffer *buffer_info, *next_buffer;
4311 u32 length; 4311 u32 length;
4312 unsigned int i; 4312 unsigned int i;
4313 int cleaned_count = 0; 4313 int cleaned_count = 0;
@@ -4337,7 +4337,8 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
4337 skb = buffer_info->skb; 4337 skb = buffer_info->skb;
4338 buffer_info->skb = NULL; 4338 buffer_info->skb = NULL;
4339 dma_unmap_single(&pdev->dev, buffer_info->dma, 4339 dma_unmap_single(&pdev->dev, buffer_info->dma,
4340 buffer_info->length, DMA_FROM_DEVICE); 4340 adapter->rx_buffer_len,
4341 DMA_FROM_DEVICE);
4341 buffer_info->dma = 0; 4342 buffer_info->dma = 0;
4342 } 4343 }
4343 4344
@@ -4443,7 +4444,7 @@ e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
4443 struct net_device *netdev = adapter->netdev; 4444 struct net_device *netdev = adapter->netdev;
4444 struct pci_dev *pdev = adapter->pdev; 4445 struct pci_dev *pdev = adapter->pdev;
4445 struct e1000_rx_desc *rx_desc; 4446 struct e1000_rx_desc *rx_desc;
4446 struct e1000_buffer *buffer_info; 4447 struct e1000_rx_buffer *buffer_info;
4447 struct sk_buff *skb; 4448 struct sk_buff *skb;
4448 unsigned int i; 4449 unsigned int i;
4449 unsigned int bufsz = 256 - 16 /*for skb_reserve */ ; 4450 unsigned int bufsz = 256 - 16 /*for skb_reserve */ ;
@@ -4466,7 +4467,6 @@ e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
4466 } 4467 }
4467 4468
4468 buffer_info->skb = skb; 4469 buffer_info->skb = skb;
4469 buffer_info->length = adapter->rx_buffer_len;
4470check_page: 4470check_page:
4471 /* allocate a new page if necessary */ 4471 /* allocate a new page if necessary */
4472 if (!buffer_info->page) { 4472 if (!buffer_info->page) {
@@ -4480,7 +4480,7 @@ check_page:
4480 if (!buffer_info->dma) { 4480 if (!buffer_info->dma) {
4481 buffer_info->dma = dma_map_page(&pdev->dev, 4481 buffer_info->dma = dma_map_page(&pdev->dev,
4482 buffer_info->page, 0, 4482 buffer_info->page, 0,
4483 buffer_info->length, 4483 PAGE_SIZE,
4484 DMA_FROM_DEVICE); 4484 DMA_FROM_DEVICE);
4485 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) { 4485 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) {
4486 put_page(buffer_info->page); 4486 put_page(buffer_info->page);
@@ -4528,7 +4528,7 @@ static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
4528 struct net_device *netdev = adapter->netdev; 4528 struct net_device *netdev = adapter->netdev;
4529 struct pci_dev *pdev = adapter->pdev; 4529 struct pci_dev *pdev = adapter->pdev;
4530 struct e1000_rx_desc *rx_desc; 4530 struct e1000_rx_desc *rx_desc;
4531 struct e1000_buffer *buffer_info; 4531 struct e1000_rx_buffer *buffer_info;
4532 struct sk_buff *skb; 4532 struct sk_buff *skb;
4533 unsigned int i; 4533 unsigned int i;
4534 unsigned int bufsz = adapter->rx_buffer_len; 4534 unsigned int bufsz = adapter->rx_buffer_len;
@@ -4576,10 +4576,9 @@ static void e1000_alloc_rx_buffers(struct e1000_adapter *adapter,
4576 dev_kfree_skb(oldskb); 4576 dev_kfree_skb(oldskb);
4577 } 4577 }
4578 buffer_info->skb = skb; 4578 buffer_info->skb = skb;
4579 buffer_info->length = adapter->rx_buffer_len;
4580 buffer_info->dma = dma_map_single(&pdev->dev, 4579 buffer_info->dma = dma_map_single(&pdev->dev,
4581 skb->data, 4580 skb->data,
4582 buffer_info->length, 4581 adapter->rx_buffer_len,
4583 DMA_FROM_DEVICE); 4582 DMA_FROM_DEVICE);
4584 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) { 4583 if (dma_mapping_error(&pdev->dev, buffer_info->dma)) {
4585 dev_kfree_skb(skb); 4584 dev_kfree_skb(skb);