From: Herbert Xu <herbert.xu@redhat.com> Date: Mon, 1 Jun 2009 14:12:14 +1000 Subject: [net] netxen: add GRO Support Message-id: 20090601041214.GA8926@gondor.apana.org.au O-Subject: [RHEL5 PATCH] netxen: Add GRO Support Bugzilla: 499347 RH-Acked-by: David Miller <davem@redhat.com> RH-Acked-by: Thomas Graf <tgraf@redhat.com> RHEL5 bugzilla 499347 Thanks to Mark Wagner for providing the hardware for testing. netxen: Add GRO Support Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 320bf55..1c7ac2f 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h @@ -1212,6 +1212,7 @@ struct netxen_dummy_dma { struct netxen_adapter { struct netxen_hardware_context ahw; + struct napi_struct napi; struct net_device *netdev; struct pci_dev *pdev; diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index ea2b2d3..dc1092f 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c @@ -1300,7 +1300,7 @@ netxen_process_rcv(struct netxen_adapter *adapter, int ctxid, adapter->stats.rxdropped++; } else { - netif_receive_skb(skb); + napi_gro_receive(&adapter->napi, skb); netdev->last_rx = jiffies; adapter->stats.no_rcv++; diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 2cab2a0..05a3396 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c @@ -687,6 +687,7 @@ skip_doorbell: #endif netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO); + netdev->features |= (NETIF_F_GRO); if (NX_IS_REVISION_P3(revision_id)) { netdev->features |= (NETIF_F_HW_CSUM | NETIF_F_TSO6); @@ -1607,6 +1608,8 @@ static int netxen_nic_poll(struct net_device *netdev, int *budget) netdev->quota -= work_done; *budget -= work_done; + napi_gro_flush(&adapter->napi); + if ((work_done < work_to_do) && tx_complete) { netif_rx_complete(adapter->netdev); netxen_nic_enable_int(adapter);