aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/e1000
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2012-05-10 23:21:58 -0400
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>2012-05-17 07:21:08 -0400
commit4af4a23328cb766172c0ecb833c7fae905d18862 (patch)
tree6f332c555ebb2f5bd53be6fb058ede777b1f34d1 /drivers/net/ethernet/intel/e1000
parentba9e186faf9f6bffa5a9bb62891bf9beed9dd7ca (diff)
e1000: remove workaround for Errata 23 from jumbo alloc
According to the comment, errata 23 says that the memory we allocate can't cross a 64KiB boundary. In case of jumbo frames we allocate complete pages which can never cross the 64KiB boundary because PAGE_SIZE should be a multiple of 64KiB so we stop either before the boundary or start after it but never cross it. Furthermore the check seems bogus because it looks at skb->data which is not seen by the HW at all because we only pass the DMA address of the page we allocated. So I *think* the workaround is not required here. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Diffstat (limited to 'drivers/net/ethernet/intel/e1000')
-rw-r--r--drivers/net/ethernet/intel/e1000/e1000_main.c24
1 files changed, 0 insertions, 24 deletions
diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c b/drivers/net/ethernet/intel/e1000/e1000_main.c
index f1aef68e1e83..fefbf4d66e18 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -4391,30 +4391,6 @@ e1000_alloc_jumbo_rx_buffers(struct e1000_adapter *adapter,
4391 break; 4391 break;
4392 } 4392 }
4393 4393
4394 /* Fix for errata 23, can't cross 64kB boundary */
4395 if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
4396 struct sk_buff *oldskb = skb;
4397 e_err(rx_err, "skb align check failed: %u bytes at "
4398 "%p\n", bufsz, skb->data);
4399 /* Try again, without freeing the previous */
4400 skb = netdev_alloc_skb_ip_align(netdev, bufsz);
4401 /* Failed allocation, critical failure */
4402 if (!skb) {
4403 dev_kfree_skb(oldskb);
4404 adapter->alloc_rx_buff_failed++;
4405 break;
4406 }
4407
4408 if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
4409 /* give up */
4410 dev_kfree_skb(skb);
4411 dev_kfree_skb(oldskb);
4412 break; /* while (cleaned_count--) */
4413 }
4414
4415 /* Use new allocation */
4416 dev_kfree_skb(oldskb);
4417 }
4418 buffer_info->skb = skb; 4394 buffer_info->skb = skb;
4419 buffer_info->length = adapter->rx_buffer_len; 4395 buffer_info->length = adapter->rx_buffer_len;
4420check_page: 4396check_page: