aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/s2io.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/s2io.h')
-rw-r--r--drivers/net/s2io.h59
1 files changed, 48 insertions, 11 deletions
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h
index 0a0b5b29d81e..3203732a668d 100644
--- a/drivers/net/s2io.h
+++ b/drivers/net/s2io.h
@@ -31,6 +31,8 @@
31#define SUCCESS 0 31#define SUCCESS 0
32#define FAILURE -1 32#define FAILURE -1
33 33
34#define CHECKBIT(value, nbit) (value & (1 << nbit))
35
34/* Maximum time to flicker LED when asked to identify NIC using ethtool */ 36/* Maximum time to flicker LED when asked to identify NIC using ethtool */
35#define MAX_FLICKER_TIME 60000 /* 60 Secs */ 37#define MAX_FLICKER_TIME 60000 /* 60 Secs */
36 38
@@ -78,6 +80,11 @@ static int debug_level = ERR_DBG;
78typedef struct { 80typedef struct {
79 unsigned long long single_ecc_errs; 81 unsigned long long single_ecc_errs;
80 unsigned long long double_ecc_errs; 82 unsigned long long double_ecc_errs;
83 unsigned long long parity_err_cnt;
84 unsigned long long serious_err_cnt;
85 unsigned long long soft_reset_cnt;
86 unsigned long long fifo_full_cnt;
87 unsigned long long ring_full_cnt;
81 /* LRO statistics */ 88 /* LRO statistics */
82 unsigned long long clubbed_frms_cnt; 89 unsigned long long clubbed_frms_cnt;
83 unsigned long long sending_both; 90 unsigned long long sending_both;
@@ -87,6 +94,25 @@ typedef struct {
87 unsigned long long num_aggregations; 94 unsigned long long num_aggregations;
88} swStat_t; 95} swStat_t;
89 96
97/* Xpak releated alarm and warnings */
98typedef struct {
99 u64 alarm_transceiver_temp_high;
100 u64 alarm_transceiver_temp_low;
101 u64 alarm_laser_bias_current_high;
102 u64 alarm_laser_bias_current_low;
103 u64 alarm_laser_output_power_high;
104 u64 alarm_laser_output_power_low;
105 u64 warn_transceiver_temp_high;
106 u64 warn_transceiver_temp_low;
107 u64 warn_laser_bias_current_high;
108 u64 warn_laser_bias_current_low;
109 u64 warn_laser_output_power_high;
110 u64 warn_laser_output_power_low;
111 u64 xpak_regs_stat;
112 u32 xpak_timer_count;
113} xpakStat_t;
114
115
90/* The statistics block of Xena */ 116/* The statistics block of Xena */
91typedef struct stat_block { 117typedef struct stat_block {
92/* Tx MAC statistics counters. */ 118/* Tx MAC statistics counters. */
@@ -263,7 +289,9 @@ typedef struct stat_block {
263 u32 rmac_accepted_ip_oflow; 289 u32 rmac_accepted_ip_oflow;
264 u32 reserved_14; 290 u32 reserved_14;
265 u32 link_fault_cnt; 291 u32 link_fault_cnt;
292 u8 buffer[20];
266 swStat_t sw_stat; 293 swStat_t sw_stat;
294 xpakStat_t xpak_stat;
267} StatInfo_t; 295} StatInfo_t;
268 296
269/* 297/*
@@ -659,7 +687,8 @@ typedef struct {
659} usr_addr_t; 687} usr_addr_t;
660 688
661/* Default Tunable parameters of the NIC. */ 689/* Default Tunable parameters of the NIC. */
662#define DEFAULT_FIFO_LEN 4096 690#define DEFAULT_FIFO_0_LEN 4096
691#define DEFAULT_FIFO_1_7_LEN 512
663#define SMALL_BLK_CNT 30 692#define SMALL_BLK_CNT 30
664#define LARGE_BLK_CNT 100 693#define LARGE_BLK_CNT 100
665 694
@@ -732,7 +761,7 @@ struct s2io_nic {
732 int device_close_flag; 761 int device_close_flag;
733 int device_enabled_once; 762 int device_enabled_once;
734 763
735 char name[50]; 764 char name[60];
736 struct tasklet_struct task; 765 struct tasklet_struct task;
737 volatile unsigned long tasklet_status; 766 volatile unsigned long tasklet_status;
738 767
@@ -803,6 +832,8 @@ struct s2io_nic {
803 char desc1[35]; 832 char desc1[35];
804 char desc2[35]; 833 char desc2[35];
805 834
835 int avail_msix_vectors; /* No. of MSI-X vectors granted by system */
836
806 struct msix_info_st msix_info[0x3f]; 837 struct msix_info_st msix_info[0x3f];
807 838
808#define XFRAME_I_DEVICE 1 839#define XFRAME_I_DEVICE 1
@@ -824,6 +855,8 @@ struct s2io_nic {
824 spinlock_t rx_lock; 855 spinlock_t rx_lock;
825 atomic_t isr_cnt; 856 atomic_t isr_cnt;
826 u64 *ufo_in_band_v; 857 u64 *ufo_in_band_v;
858#define VPD_PRODUCT_NAME_LEN 50
859 u8 product_name[VPD_PRODUCT_NAME_LEN];
827}; 860};
828 861
829#define RESET_ERROR 1; 862#define RESET_ERROR 1;
@@ -848,28 +881,32 @@ static inline void writeq(u64 val, void __iomem *addr)
848 writel((u32) (val), addr); 881 writel((u32) (val), addr);
849 writel((u32) (val >> 32), (addr + 4)); 882 writel((u32) (val >> 32), (addr + 4));
850} 883}
884#endif
851 885
852/* In 32 bit modes, some registers have to be written in a 886/*
853 * particular order to expect correct hardware operation. The 887 * Some registers have to be written in a particular order to
854 * macro SPECIAL_REG_WRITE is used to perform such ordered 888 * expect correct hardware operation. The macro SPECIAL_REG_WRITE
855 * writes. Defines UF (Upper First) and LF (Lower First) will 889 * is used to perform such ordered writes. Defines UF (Upper First)
856 * be used to specify the required write order. 890 * and LF (Lower First) will be used to specify the required write order.
857 */ 891 */
858#define UF 1 892#define UF 1
859#define LF 2 893#define LF 2
860static inline void SPECIAL_REG_WRITE(u64 val, void __iomem *addr, int order) 894static inline void SPECIAL_REG_WRITE(u64 val, void __iomem *addr, int order)
861{ 895{
896 u32 ret;
897
862 if (order == LF) { 898 if (order == LF) {
863 writel((u32) (val), addr); 899 writel((u32) (val), addr);
900 ret = readl(addr);
864 writel((u32) (val >> 32), (addr + 4)); 901 writel((u32) (val >> 32), (addr + 4));
902 ret = readl(addr + 4);
865 } else { 903 } else {
866 writel((u32) (val >> 32), (addr + 4)); 904 writel((u32) (val >> 32), (addr + 4));
905 ret = readl(addr + 4);
867 writel((u32) (val), addr); 906 writel((u32) (val), addr);
907 ret = readl(addr);
868 } 908 }
869} 909}
870#else
871#define SPECIAL_REG_WRITE(val, addr, dummy) writeq(val, addr)
872#endif
873 910
874/* Interrupt related values of Xena */ 911/* Interrupt related values of Xena */
875 912
@@ -965,7 +1002,7 @@ static int verify_xena_quiescence(nic_t *sp, u64 val64, int flag);
965static struct ethtool_ops netdev_ethtool_ops; 1002static struct ethtool_ops netdev_ethtool_ops;
966static void s2io_set_link(unsigned long data); 1003static void s2io_set_link(unsigned long data);
967static int s2io_set_swapper(nic_t * sp); 1004static int s2io_set_swapper(nic_t * sp);
968static void s2io_card_down(nic_t *nic); 1005static void s2io_card_down(nic_t *nic, int flag);
969static int s2io_card_up(nic_t *nic); 1006static int s2io_card_up(nic_t *nic);
970static int get_xena_rev_id(struct pci_dev *pdev); 1007static int get_xena_rev_id(struct pci_dev *pdev);
971static void restore_xmsi_data(nic_t *nic); 1008static void restore_xmsi_data(nic_t *nic);