aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Brandeburg <jesse.brandeburg@intel.com>2010-09-22 14:23:05 -0400
committerDavid S. Miller <davem@davemloft.net>2010-09-23 17:33:38 -0400
commit6a08d194ee40806e0ccd5f36ed768e64cbfc979f (patch)
tree499232227906728b21759d92365a51fc5ebd6704
parent338c15e470d818f215d651505dc169d4e92f36a4 (diff)
e1000: use GRO for receive
E1000 can benefit from calling the GRO receive functions. Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/e1000/e1000_main.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
index c88439deb7d8..796523f2c6b1 100644
--- a/drivers/net/e1000/e1000_main.c
+++ b/drivers/net/e1000/e1000_main.c
@@ -3664,13 +3664,14 @@ static void e1000_consume_page(struct e1000_buffer *bi, struct sk_buff *skb,
3664static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status, 3664static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status,
3665 __le16 vlan, struct sk_buff *skb) 3665 __le16 vlan, struct sk_buff *skb)
3666{ 3666{
3667 if (unlikely(adapter->vlgrp && (status & E1000_RXD_STAT_VP))) { 3667 skb->protocol = eth_type_trans(skb, adapter->netdev);
3668 vlan_hwaccel_receive_skb(skb, adapter->vlgrp, 3668
3669 le16_to_cpu(vlan) & 3669 if ((unlikely(adapter->vlgrp && (status & E1000_RXD_STAT_VP))))
3670 E1000_RXD_SPC_VLAN_MASK); 3670 vlan_gro_receive(&adapter->napi, adapter->vlgrp,
3671 } else { 3671 le16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK,
3672 netif_receive_skb(skb); 3672 skb);
3673 } 3673 else
3674 napi_gro_receive(&adapter->napi, skb);
3674} 3675}
3675 3676
3676/** 3677/**
@@ -3828,8 +3829,6 @@ static bool e1000_clean_jumbo_rx_irq(struct e1000_adapter *adapter,
3828 goto next_desc; 3829 goto next_desc;
3829 } 3830 }
3830 3831
3831 skb->protocol = eth_type_trans(skb, netdev);
3832
3833 e1000_receive_skb(adapter, status, rx_desc->special, skb); 3832 e1000_receive_skb(adapter, status, rx_desc->special, skb);
3834 3833
3835next_desc: 3834next_desc:
@@ -3992,8 +3991,6 @@ static bool e1000_clean_rx_irq(struct e1000_adapter *adapter,
3992 ((u32)(rx_desc->errors) << 24), 3991 ((u32)(rx_desc->errors) << 24),
3993 le16_to_cpu(rx_desc->csum), skb); 3992 le16_to_cpu(rx_desc->csum), skb);
3994 3993
3995 skb->protocol = eth_type_trans(skb, netdev);
3996
3997 e1000_receive_skb(adapter, status, rx_desc->special, skb); 3994 e1000_receive_skb(adapter, status, rx_desc->special, skb);
3998 3995
3999next_desc: 3996next_desc: