diff options
author | Amit Kumar Salecha <amit@dut4146.(none)> | 2009-04-07 18:50:47 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-04-08 18:58:30 -0400 |
commit | a92e9e65f0068a291a677c627a747fae1f230284 (patch) | |
tree | 6f55898d9b7108f89588e776c0b34770c092e1d6 | |
parent | f6d21f44122630cc9549b8ffbab23ea8c68254e0 (diff) |
netxen: enable GRO support
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>
-rw-r--r-- | drivers/net/netxen/netxen_nic_init.c | 7 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 1 |
2 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/netxen/netxen_nic_init.c b/drivers/net/netxen/netxen_nic_init.c index 0c91238133f0..8893a973399a 100644 --- a/drivers/net/netxen/netxen_nic_init.c +++ b/drivers/net/netxen/netxen_nic_init.c | |||
@@ -923,7 +923,8 @@ no_skb: | |||
923 | 923 | ||
924 | static struct netxen_rx_buffer * | 924 | static struct netxen_rx_buffer * |
925 | netxen_process_rcv(struct netxen_adapter *adapter, | 925 | netxen_process_rcv(struct netxen_adapter *adapter, |
926 | int ring, int index, int length, int cksum, int pkt_offset) | 926 | int ring, int index, int length, int cksum, int pkt_offset, |
927 | struct nx_host_sds_ring *sds_ring) | ||
927 | { | 928 | { |
928 | struct net_device *netdev = adapter->netdev; | 929 | struct net_device *netdev = adapter->netdev; |
929 | struct netxen_recv_context *recv_ctx = &adapter->recv_ctx; | 930 | struct netxen_recv_context *recv_ctx = &adapter->recv_ctx; |
@@ -951,7 +952,7 @@ netxen_process_rcv(struct netxen_adapter *adapter, | |||
951 | 952 | ||
952 | skb->protocol = eth_type_trans(skb, netdev); | 953 | skb->protocol = eth_type_trans(skb, netdev); |
953 | 954 | ||
954 | netif_receive_skb(skb); | 955 | napi_gro_receive(&sds_ring->napi, skb); |
955 | 956 | ||
956 | adapter->stats.no_rcv++; | 957 | adapter->stats.no_rcv++; |
957 | adapter->stats.rxbytes += length; | 958 | adapter->stats.rxbytes += length; |
@@ -1011,7 +1012,7 @@ netxen_process_rcv_ring(struct nx_host_sds_ring *sds_ring, int max) | |||
1011 | pkt_offset = netxen_get_sts_pkt_offset(sts_data); | 1012 | pkt_offset = netxen_get_sts_pkt_offset(sts_data); |
1012 | 1013 | ||
1013 | rxbuf = netxen_process_rcv(adapter, ring, index, | 1014 | rxbuf = netxen_process_rcv(adapter, ring, index, |
1014 | length, cksum, pkt_offset); | 1015 | length, cksum, pkt_offset, sds_ring); |
1015 | 1016 | ||
1016 | if (rxbuf) | 1017 | if (rxbuf) |
1017 | list_add_tail(&rxbuf->list, &sds_ring->free_list[ring]); | 1018 | list_add_tail(&rxbuf->list, &sds_ring->free_list[ring]); |
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index da9b90da5207..e877eefdfeb0 100644 --- a/drivers/net/netxen/netxen_nic_main.c +++ b/drivers/net/netxen/netxen_nic_main.c | |||
@@ -981,6 +981,7 @@ netxen_nic_probe(struct pci_dev *pdev, const struct pci_device_id *ent) | |||
981 | SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops); | 981 | SET_ETHTOOL_OPS(netdev, &netxen_nic_ethtool_ops); |
982 | 982 | ||
983 | netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO); | 983 | netdev->features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO); |
984 | netdev->features |= (NETIF_F_GRO); | ||
984 | netdev->vlan_features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO); | 985 | netdev->vlan_features |= (NETIF_F_SG | NETIF_F_IP_CSUM | NETIF_F_TSO); |
985 | 986 | ||
986 | if (NX_IS_REVISION_P3(revision_id)) { | 987 | if (NX_IS_REVISION_P3(revision_id)) { |