diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2012-05-10 23:21:58 -0400 |
---|---|---|
committer | Jeff Kirsher <jeffrey.t.kirsher@intel.com> | 2012-05-17 07:21:08 -0400 |
commit | 4af4a23328cb766172c0ecb833c7fae905d18862 (patch) | |
tree | 6f332c555ebb2f5bd53be6fb058ede777b1f34d1 /drivers/net/ethernet/intel/e1000 | |
parent | ba9e186faf9f6bffa5a9bb62891bf9beed9dd7ca (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.c | 24 |
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; |
4420 | check_page: | 4396 | check_page: |