netxen: ethtool statistics and control for LRO

Add ethtool -K knob to control LRO in firmware.
LRO path is completely separated from GRO, LRO packets
are still fed with netif_receive_skb().

Also fix ethtool statistics to include LRO packets.
Also use correct message type while configuring interrupt coalescing.

Signed-off-by: Narender Kumar <narender.kumar@qlogic.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Narender Kumar
2009-08-23 08:35:09 +00:00
committed by David S. Miller
parent 8fea0f0db8
commit 1bb482f8a4
6 changed files with 114 additions and 8 deletions

View File

@@ -576,7 +576,8 @@ struct netxen_adapter_stats {
u64 rxdropped;
u64 txdropped;
u64 csummed;
u64 no_rcv;
u64 rx_pkts;
u64 lro_pkts;
u64 rxbytes;
u64 txbytes;
};
@@ -958,7 +959,8 @@ typedef struct {
#define NX_NIC_H2C_OPCODE_PROXY_STOP_DONE 20
#define NX_NIC_H2C_OPCODE_GET_LINKEVENT 21
#define NX_NIC_C2C_OPCODE 22
#define NX_NIC_H2C_OPCODE_LAST 23
#define NX_NIC_H2C_OPCODE_CONFIG_HW_LRO 24
#define NX_NIC_H2C_OPCODE_LAST 25
/*
* Firmware --> Driver
@@ -984,6 +986,19 @@ typedef struct {
#define VPORT_MISS_MODE_ACCEPT_ALL 1 /* accept all packets */
#define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */
#define NX_NIC_LRO_REQUEST_FIRST 0
#define NX_NIC_LRO_REQUEST_ADD_FLOW 1
#define NX_NIC_LRO_REQUEST_DELETE_FLOW 2
#define NX_NIC_LRO_REQUEST_TIMER 3
#define NX_NIC_LRO_REQUEST_CLEANUP 4
#define NX_NIC_LRO_REQUEST_ADD_FLOW_SCHEDULED 5
#define NX_TOE_LRO_REQUEST_ADD_FLOW 6
#define NX_TOE_LRO_REQUEST_ADD_FLOW_RESPONSE 7
#define NX_TOE_LRO_REQUEST_DELETE_FLOW 8
#define NX_TOE_LRO_REQUEST_DELETE_FLOW_RESPONSE 9
#define NX_TOE_LRO_REQUEST_TIMER 10
#define NX_NIC_LRO_REQUEST_LAST 11
#define NX_FW_CAPABILITY_LINK_NOTIFICATION (1 << 5)
#define NX_FW_CAPABILITY_SWITCHING (1 << 6)
#define NX_FW_CAPABILITY_PEXQ (1 << 7)
@@ -1064,6 +1079,7 @@ typedef struct {
#define NETXEN_NIC_MSI_ENABLED 0x02
#define NETXEN_NIC_MSIX_ENABLED 0x04
#define NETXEN_NIC_LRO_ENABLED 0x08
#define NETXEN_IS_MSI_FAMILY(adapter) \
((adapter)->flags & (NETXEN_NIC_MSI_ENABLED | NETXEN_NIC_MSIX_ENABLED))
@@ -1290,6 +1306,8 @@ void netxen_advert_link_change(struct netxen_adapter *adapter, int linkup);
int nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, int mtu);
int netxen_nic_change_mtu(struct net_device *netdev, int new_mtu);
int netxen_config_hw_lro(struct netxen_adapter *adapter, int enable);
int netxen_send_lro_cleanup(struct netxen_adapter *adapter);
int netxen_nic_set_mac(struct net_device *netdev, void *p);
struct net_device_stats *netxen_nic_get_stats(struct net_device *netdev);