summaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorJesse Brandeburg2006-10-24 23:46:01 +0200
committerAuke Kok2006-10-24 23:46:01 +0200
commite64d7d02090e475cfd7efbc830146d0c6dd579bc (patch)
tree2b015175ac065a034257a02c9c9793e5fce6f129 /drivers/net
parente1000: FIX: fix wrong txdctl threshold bitmasks (diff)
downloadkernel-qcow2-linux-e64d7d02090e475cfd7efbc830146d0c6dd579bc.tar.gz
kernel-qcow2-linux-e64d7d02090e475cfd7efbc830146d0c6dd579bc.tar.xz
kernel-qcow2-linux-e64d7d02090e475cfd7efbc830146d0c6dd579bc.zip
e1000: FIX: Disable Packet Split for non jumbo frames
Allocations using alloc_page are taking too long for normal MTU, so use LPE only for jumbo frames. Signed-off-bu: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/e1000/e1000_main.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index fb83082c4f75..7362e1240178 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -1808,9 +1808,11 @@ e1000_setup_rctl(struct e1000_adapter *adapter)
* followed by the page buffers. Therefore, skb->data is
* sized to hold the largest protocol header.
*/
+ /* allocations using alloc_page take too long for regular MTU
+ * so only enable packet split for jumbo frames */
pages = PAGE_USE_COUNT(adapter->netdev->mtu);
- if ((adapter->hw.mac_type > e1000_82547_rev_2) && (pages <= 3) &&
- PAGE_SIZE <= 16384)
+ if ((adapter->hw.mac_type >= e1000_82571) && (pages <= 3) &&
+ PAGE_SIZE <= 16384 && (rctl & E1000_RCTL_LPE))
adapter->rx_ps_pages = pages;
else
adapter->rx_ps_pages = 0;