netxen: fix promisc mode, mtu setting
For NX3031, multicast filtering, promisc mode, and max frame size setting is handled by firmware, driver needs to send request to enable/disable it. For old chip revisions / firmware, driver still sets it directly. Added function pointer to set mtu according to chip revision. Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:

committed by
Jeff Garzik

parent
83821a078a
commit
9ad27643f3
@@ -1172,6 +1172,36 @@ typedef struct {
|
||||
nx_nic_intr_coalesce_data_t irq;
|
||||
} nx_nic_intr_coalesce_t;
|
||||
|
||||
#define NX_HOST_REQUEST 0x13
|
||||
#define NX_NIC_REQUEST 0x14
|
||||
|
||||
#define NX_MAC_EVENT 0x1
|
||||
|
||||
enum {
|
||||
NX_NIC_H2C_OPCODE_START = 0,
|
||||
NX_NIC_H2C_OPCODE_CONFIG_RSS,
|
||||
NX_NIC_H2C_OPCODE_CONFIG_RSS_TBL,
|
||||
NX_NIC_H2C_OPCODE_CONFIG_INTR_COALESCE,
|
||||
NX_NIC_H2C_OPCODE_CONFIG_LED,
|
||||
NX_NIC_H2C_OPCODE_CONFIG_PROMISCUOUS,
|
||||
NX_NIC_H2C_OPCODE_CONFIG_L2_MAC,
|
||||
NX_NIC_H2C_OPCODE_LRO_REQUEST,
|
||||
NX_NIC_H2C_OPCODE_GET_SNMP_STATS,
|
||||
NX_NIC_H2C_OPCODE_PROXY_START_REQUEST,
|
||||
NX_NIC_H2C_OPCODE_PROXY_STOP_REQUEST,
|
||||
NX_NIC_H2C_OPCODE_PROXY_SET_MTU,
|
||||
NX_NIC_H2C_OPCODE_PROXY_SET_VPORT_MISS_MODE,
|
||||
NX_H2P_OPCODE_GET_FINGER_PRINT_REQUEST,
|
||||
NX_H2P_OPCODE_INSTALL_LICENSE_REQUEST,
|
||||
NX_H2P_OPCODE_GET_LICENSE_CAPABILITY_REQUEST,
|
||||
NX_NIC_H2C_OPCODE_GET_NET_STATS,
|
||||
NX_NIC_H2C_OPCODE_LAST
|
||||
};
|
||||
|
||||
#define VPORT_MISS_MODE_DROP 0 /* drop all unmatched */
|
||||
#define VPORT_MISS_MODE_ACCEPT_ALL 1 /* accept all packets */
|
||||
#define VPORT_MISS_MODE_ACCEPT_MULTI 2 /* accept unmatched multicast */
|
||||
|
||||
typedef struct {
|
||||
u64 qhdr;
|
||||
u64 req_hdr;
|
||||
@@ -1290,7 +1320,7 @@ struct netxen_adapter {
|
||||
int (*disable_phy_interrupts) (struct netxen_adapter *);
|
||||
int (*macaddr_set) (struct netxen_adapter *, netxen_ethernet_macaddr_t);
|
||||
int (*set_mtu) (struct netxen_adapter *, int);
|
||||
int (*set_promisc) (struct netxen_adapter *, netxen_niu_prom_mode_t);
|
||||
int (*set_promisc) (struct netxen_adapter *, u32);
|
||||
int (*phy_read) (struct netxen_adapter *, long reg, u32 *);
|
||||
int (*phy_write) (struct netxen_adapter *, long reg, u32 val);
|
||||
int (*init_port) (struct netxen_adapter *, int);
|
||||
@@ -1467,9 +1497,10 @@ int netxen_process_cmd_ring(struct netxen_adapter *adapter);
|
||||
u32 netxen_process_rcv_ring(struct netxen_adapter *adapter, int ctx, int max);
|
||||
void netxen_p2_nic_set_multi(struct net_device *netdev);
|
||||
void netxen_p3_nic_set_multi(struct net_device *netdev);
|
||||
int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32);
|
||||
int netxen_config_intr_coalesce(struct netxen_adapter *adapter);
|
||||
|
||||
u32 nx_fw_cmd_set_mtu(struct netxen_adapter *adapter, u32 mtu);
|
||||
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_nic_set_mac(struct net_device *netdev, void *p);
|
||||
|
Reference in New Issue
Block a user