diff options
author | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2010-09-22 14:23:05 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-09-23 17:33:38 -0400 |
commit | 6a08d194ee40806e0ccd5f36ed768e64cbfc979f (patch) | |
tree | 499232227906728b21759d92365a51fc5ebd6704 /drivers/net/e1000/e1000_main.c | |
parent | 338c15e470d818f215d651505dc169d4e92f36a4 (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>
Diffstat (limited to 'drivers/net/e1000/e1000_main.c')
-rw-r--r-- | drivers/net/e1000/e1000_main.c | 19 |
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, | |||
3664 | static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status, | 3664 | static 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 | ||
3835 | next_desc: | 3834 | next_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 | ||
3999 | next_desc: | 3996 | next_desc: |