netdev: drivers should make ethtool_ops const
[linux-2.6-block.git] / drivers / net / netxen / netxen_nic.h
index fa43aa059c43ebd1018ee982a70e972cdef2b1d4..224a74691312cdcd9d428f717e50c4a02a272217 100644 (file)
@@ -53,6 +53,7 @@
 #include <asm/io.h>
 #include <asm/byteorder.h>
 
+#include "netxen_nic_hdr.h"
 #include "netxen_nic_hw.h"
 
 #define _NETXEN_NIC_LINUX_MAJOR 4
 #define MPORT_SINGLE_FUNCTION_MODE 0x1111
 #define MPORT_MULTI_FUNCTION_MODE 0x2222
 
-#include "netxen_nic_phan_reg.h"
-
 /*
  * NetXen host-peg signal message structure
  *
@@ -503,17 +502,11 @@ struct netxen_skb_frag {
        u64 length;
 };
 
-#define _netxen_set_bits(config_word, start, bits, val)        {\
-       unsigned long long __tmask = (((1ULL << (bits)) - 1) << (start));\
-       unsigned long long __tvalue = (val);    \
-       (config_word) &= ~__tmask;      \
-       (config_word) |= (((__tvalue) << (start)) & __tmask); \
-}
-
-#define _netxen_clear_bits(config_word, start, bits) {\
-       unsigned long long __tmask = (((1ULL << (bits)) - 1) << (start));  \
-       (config_word) &= ~__tmask; \
-}
+struct netxen_recv_crb {
+       u32 crb_rcv_producer[NUM_RCV_DESC_RINGS];
+       u32 crb_sts_consumer[NUM_STS_DESC_RINGS];
+       u32 sw_int_mask[NUM_STS_DESC_RINGS];
+};
 
 /*    Following defines are for the state of the buffers    */
 #define        NETXEN_BUFFER_FREE      0
@@ -691,7 +684,19 @@ struct netxen_recv_context {
 #define NX_CDRP_CMD_GET_STATISTICS          0x0000000f
 #define NX_CDRP_CMD_DELETE_STATISTICS       0x00000010
 #define NX_CDRP_CMD_SET_MTU                 0x00000012
-#define NX_CDRP_CMD_MAX                     0x00000013
+#define NX_CDRP_CMD_READ_PHY                   0x00000013
+#define NX_CDRP_CMD_WRITE_PHY                  0x00000014
+#define NX_CDRP_CMD_READ_HW_REG                        0x00000015
+#define NX_CDRP_CMD_GET_FLOW_CTL               0x00000016
+#define NX_CDRP_CMD_SET_FLOW_CTL               0x00000017
+#define NX_CDRP_CMD_READ_MAX_MTU               0x00000018
+#define NX_CDRP_CMD_READ_MAX_LRO               0x00000019
+#define NX_CDRP_CMD_CONFIGURE_TOE              0x0000001a
+#define NX_CDRP_CMD_FUNC_ATTRIB                        0x0000001b
+#define NX_CDRP_CMD_READ_PEXQ_PARAMETERS       0x0000001c
+#define NX_CDRP_CMD_GET_LIC_CAPABILITIES       0x0000001d
+#define NX_CDRP_CMD_READ_MAX_LRO_PER_BOARD     0x0000001e
+#define NX_CDRP_CMD_MAX                                0x0000001f
 
 #define NX_RCODE_SUCCESS               0
 #define NX_RCODE_NO_HOST_MEM           1
@@ -959,6 +964,7 @@ 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_CONFIG_BRIDGING               23
 #define NX_NIC_H2C_OPCODE_CONFIG_HW_LRO                        24
 #define NX_NIC_H2C_OPCODE_LAST                         25
 
@@ -1080,6 +1086,7 @@ typedef struct {
 #define NETXEN_NIC_MSI_ENABLED         0x02
 #define NETXEN_NIC_MSIX_ENABLED                0x04
 #define NETXEN_NIC_LRO_ENABLED         0x08
+#define NETXEN_NIC_BRIDGE_ENABLED       0X10
 #define NETXEN_IS_MSI_FAMILY(adapter) \
        ((adapter)->flags & (NETXEN_NIC_MSI_ENABLED | NETXEN_NIC_MSIX_ENABLED))
 
@@ -1155,14 +1162,12 @@ struct netxen_adapter {
        struct netxen_recv_context recv_ctx;
        struct nx_host_tx_ring *tx_ring;
 
-       int (*enable_phy_interrupts) (struct netxen_adapter *);
-       int (*disable_phy_interrupts) (struct netxen_adapter *);
        int (*macaddr_set) (struct netxen_adapter *, u8 *);
        int (*set_mtu) (struct netxen_adapter *, int);
        int (*set_promisc) (struct netxen_adapter *, u32);
        void (*set_multi) (struct net_device *);
-       int (*phy_read) (struct netxen_adapter *, long reg, u32 *);
-       int (*phy_write) (struct netxen_adapter *, long reg, u32 val);
+       int (*phy_read) (struct netxen_adapter *, u32 reg, u32 *);
+       int (*phy_write) (struct netxen_adapter *, u32 reg, u32 val);
        int (*init_port) (struct netxen_adapter *, int);
        int (*stop_port) (struct netxen_adapter *);
 
@@ -1194,14 +1199,11 @@ struct netxen_adapter {
        const struct firmware *fw;
 };
 
-int netxen_niu_xgbe_enable_phy_interrupts(struct netxen_adapter *adapter);
-int netxen_niu_gbe_enable_phy_interrupts(struct netxen_adapter *adapter);
-int netxen_niu_xgbe_disable_phy_interrupts(struct netxen_adapter *adapter);
-int netxen_niu_gbe_disable_phy_interrupts(struct netxen_adapter *adapter);
-int netxen_niu_gbe_phy_read(struct netxen_adapter *adapter, long reg,
-                           __u32 * readval);
-int netxen_niu_gbe_phy_write(struct netxen_adapter *adapter,
-                            long reg, __u32 val);
+int netxen_niu_xg_init_port(struct netxen_adapter *adapter, int port);
+int netxen_niu_disable_xg_port(struct netxen_adapter *adapter);
+
+int nx_fw_cmd_query_phy(struct netxen_adapter *adapter, u32 reg, u32 *val);
+int nx_fw_cmd_set_phy(struct netxen_adapter *adapter, u32 reg, u32 val);
 
 /* Functions available from netxen_nic_hw.c */
 int netxen_nic_set_mtu_xgb(struct netxen_adapter *adapter, int new_mtu);
@@ -1215,6 +1217,30 @@ int netxen_p3_nic_set_mac_addr(struct netxen_adapter *adapter, u8 *addr);
 #define NXWR32(adapter, off, val) \
        (adapter->hw_write_wx(adapter, off, val))
 
+int netxen_pcie_sem_lock(struct netxen_adapter *, int, u32);
+void netxen_pcie_sem_unlock(struct netxen_adapter *, int);
+
+#define netxen_rom_lock(a)     \
+       netxen_pcie_sem_lock((a), 2, NETXEN_ROM_LOCK_ID)
+#define netxen_rom_unlock(a)   \
+       netxen_pcie_sem_unlock((a), 2)
+#define netxen_phy_lock(a)     \
+       netxen_pcie_sem_lock((a), 3, NETXEN_PHY_LOCK_ID)
+#define netxen_phy_unlock(a)   \
+       netxen_pcie_sem_unlock((a), 3)
+#define netxen_api_lock(a)     \
+       netxen_pcie_sem_lock((a), 5, 0)
+#define netxen_api_unlock(a)   \
+       netxen_pcie_sem_unlock((a), 5)
+#define netxen_sw_lock(a)      \
+       netxen_pcie_sem_lock((a), 6, 0)
+#define netxen_sw_unlock(a)    \
+       netxen_pcie_sem_unlock((a), 6)
+#define crb_win_lock(a)        \
+       netxen_pcie_sem_lock((a), 7, NETXEN_CRB_WIN_LOCK_ID)
+#define crb_win_unlock(a)      \
+       netxen_pcie_sem_unlock((a), 7)
+
 int netxen_nic_get_board_info(struct netxen_adapter *adapter);
 void netxen_nic_get_firmware_info(struct netxen_adapter *adapter);
 int netxen_nic_wol_supported(struct netxen_adapter *adapter);
@@ -1297,6 +1323,7 @@ int netxen_process_rcv_ring(struct nx_host_sds_ring *sds_ring, int max);
 void netxen_p2_nic_set_multi(struct net_device *netdev);
 void netxen_p3_nic_set_multi(struct net_device *netdev);
 void netxen_p3_free_mac_list(struct netxen_adapter *adapter);
+int netxen_p2_nic_set_promisc(struct netxen_adapter *adapter, u32 mode);
 int netxen_p3_nic_set_promisc(struct netxen_adapter *adapter, u32);
 int netxen_config_intr_coalesce(struct netxen_adapter *adapter);
 int netxen_config_rss(struct netxen_adapter *adapter, int enable);
@@ -1307,6 +1334,7 @@ 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_config_bridged_mode(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);
@@ -1382,6 +1410,6 @@ extern void netxen_change_ringparam(struct netxen_adapter *adapter);
 extern int netxen_rom_fast_read(struct netxen_adapter *adapter, int addr,
                                int *valp);
 
-extern struct ethtool_ops netxen_nic_ethtool_ops;
+extern const struct ethtool_ops netxen_nic_ethtool_ops;
 
 #endif                         /* __NETXEN_NIC_H_ */