Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Jesse Brandeburg and committed by
David S. Miller
6a08d194 338c15e4

+8 -11
+8 -11
drivers/net/e1000/e1000_main.c
··· 3664 3664 static void e1000_receive_skb(struct e1000_adapter *adapter, u8 status, 3665 3665 __le16 vlan, struct sk_buff *skb) 3666 3666 { 3667 - if (unlikely(adapter->vlgrp && (status & E1000_RXD_STAT_VP))) { 3668 - vlan_hwaccel_receive_skb(skb, adapter->vlgrp, 3669 - le16_to_cpu(vlan) & 3670 - E1000_RXD_SPC_VLAN_MASK); 3671 - } else { 3672 - netif_receive_skb(skb); 3673 - } 3667 + skb->protocol = eth_type_trans(skb, adapter->netdev); 3668 + 3669 + if ((unlikely(adapter->vlgrp && (status & E1000_RXD_STAT_VP)))) 3670 + vlan_gro_receive(&adapter->napi, adapter->vlgrp, 3671 + le16_to_cpu(vlan) & E1000_RXD_SPC_VLAN_MASK, 3672 + skb); 3673 + else 3674 + napi_gro_receive(&adapter->napi, skb); 3674 3675 } 3675 3676 3676 3677 /** ··· 3828 3827 dev_kfree_skb(skb); 3829 3828 goto next_desc; 3830 3829 } 3831 - 3832 - skb->protocol = eth_type_trans(skb, netdev); 3833 3830 3834 3831 e1000_receive_skb(adapter, status, rx_desc->special, skb); 3835 3832 ··· 3990 3991 (u32)(status) | 3991 3992 ((u32)(rx_desc->errors) << 24), 3992 3993 le16_to_cpu(rx_desc->csum), skb); 3993 - 3994 - skb->protocol = eth_type_trans(skb, netdev); 3995 3994 3996 3995 e1000_receive_skb(adapter, status, rx_desc->special, skb); 3997 3996