netxen: enable GRO support
authorAmit Kumar Salecha <amit@dut4146.(none)>
Tue, 7 Apr 2009 22:50:47 +0000 (22:50 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 8 Apr 2009 22:58:30 +0000 (15:58 -0700)
Signed-off-by: Amit Kumar Salecha <amit@netxen.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netxen/netxen_nic_init.c
drivers/net/netxen/netxen_nic_main.c

index 0c91238..8893a97 100644 (file)
@@ -923,7 +923,8 @@ no_skb:
 
 static struct netxen_rx_buffer *
 netxen_process_rcv(struct netxen_adapter *adapter,
-               int ring, int index, int length, int cksum, int pkt_offset)
+               int ring, int index, int length, int cksum, int pkt_offset,
+               struct nx_host_sds_ring *sds_ring)
 {
        struct net_device *netdev = adapter->netdev;
        struct netxen_recv_context *recv_ctx = &adapter->recv_ctx;
@@ -951,7 +952,7 @@ netxen_process_rcv(struct netxen_adapter *adapter,
 
        skb->protocol = eth_type_trans(skb, netdev);
 
-       netif_receive_skb(skb);
+       napi_gro_receive(&sds_ring->napi, skb);
 
        adapter->stats.no_rcv++;
        adapter->stats.rxbytes += length;
@@ -1011,7 +1012,7 @@ netxen_process_rcv_ring(struct nx_host_sds_ring *sds_ring, int max)
                pkt_offset = netxen_get_sts_pkt_offset(sts_data);
 
                rxbuf = netxen_process_rcv(adapter, ring, index,
-                               length, cksum, pkt_offset);
+                               length, cksum, pkt_offset, sds_ring);
 
                if (rxbuf)
                        list_add_tail(&rxbuf->list, &sds_ring->free_list[ring]);
index da9b90d..e877eef 100644 (file)
@@ -981,6 +981,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
        SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops);
 
        netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO);
+       netdev->features |= (NETIF_F_GRO);
        netdev->vlan_features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO);
 
        if (NX_IS_REVISION_P3(revision_id)) {