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 <[email protected]>
---
 drivers/net/ethernet/intel/e1000/e1000_main.c |   24 ------------------------
 1 file changed, 24 deletions(-)

diff --git a/drivers/net/ethernet/intel/e1000/e1000_main.c 
b/drivers/net/ethernet/intel/e1000/e1000_main.c
index 4348b6f..edd3504 100644
--- a/drivers/net/ethernet/intel/e1000/e1000_main.c
+++ b/drivers/net/ethernet/intel/e1000/e1000_main.c
@@ -4365,30 +4365,6 @@ e1000_alloc_jumbo_rx_buffers(struct e1000_adapter 
*adapter,
                        break;
                }
 
-               /* Fix for errata 23, can't cross 64kB boundary */
-               if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
-                       struct sk_buff *oldskb = skb;
-                       e_err(rx_err, "skb align check failed: %u bytes at "
-                             "%p\n", bufsz, skb->data);
-                       /* Try again, without freeing the previous */
-                       skb = netdev_alloc_skb_ip_align(netdev, bufsz);
-                       /* Failed allocation, critical failure */
-                       if (!skb) {
-                               dev_kfree_skb(oldskb);
-                               adapter->alloc_rx_buff_failed++;
-                               break;
-                       }
-
-                       if (!e1000_check_64k_bound(adapter, skb->data, bufsz)) {
-                               /* give up */
-                               dev_kfree_skb(skb);
-                               dev_kfree_skb(oldskb);
-                               break; /* while (cleaned_count--) */
-                       }
-
-                       /* Use new allocation */
-                       dev_kfree_skb(oldskb);
-               }
                buffer_info->skb = skb;
                buffer_info->length = adapter->rx_buffer_len;
 check_page:
-- 
1.7.10


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to