aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/s2io.h
diff options
context:
space:
mode:
authorSivakumar Subramani <sivakumar.subramani@neterion.com>2007-09-17 16:05:35 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2007-10-10 19:51:09 -0400
commit8116f3cf4a2a5a4fa2335e6f32023ac50506698f (patch)
tree4db08fb067fd37c892f9a98e127854acd0fa3956 /drivers/net/s2io.h
parent9caab4587b8320c54fc666a6c820e966e6403aea (diff)
[S2IO]: Handle and monitor all of the device errors and alarms
- Added support to poll entire set of device errors and alarams. - A note on how device errors and alarms are handled: - The adapter will automatically recover from uncorrectable ECC errors. Packets containing corrupted data will be dropped (not transmitted) or tagged as invalid before being passed to the host. - The adapter cannot recover from any internal state machine errors. A state machine error requires a device reset. - Any internal error that could potentially result in .store trampling. (undesirable PCI behaviour)is tagged as a "serious error". In such cases the adapter will give up its ability to be a bus master. In this situation the host will still be able to read internal device registers in order to generate an error report. A device reset is necessary to return to normal operation. - In the event of a pcix data parity error, the adapter will automatically disable itself. Adapter_En will automatically transition from '1' to '0' and the adapter will enter its clean-up routine. Once the device has achieved quiescence, an adapter reset should be performed. - Replaced alarm_intr_handler() with s2io_handle_errors(). - Added statistic counters to monitor the alarms. [ Fix warnings wrt. do_s2io_chk_alarm_bit(), Callers pass in an "unsigned long long *" but the function takes a "u64 *" which is different on many 64-bit platforms. -DaveM ] Signed-off-by: Sivakumar Subramani <sivakumar.subramani@neterion.com> Signed-off-by: Santosh Rastapur <santosh.rastapur@neterion.com> Signed-off-by: Ramkrishna Vepa <ram.vepa@neterion.com> Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/s2io.h')
-rw-r--r--drivers/net/s2io.h24
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h
index b9654dfeb877..1e2e72d6aad2 100644
--- a/drivers/net/s2io.h
+++ b/drivers/net/s2io.h
@@ -91,7 +91,7 @@ struct swStat {
91 unsigned long long serious_err_cnt; 91 unsigned long long serious_err_cnt;
92 unsigned long long soft_reset_cnt; 92 unsigned long long soft_reset_cnt;
93 unsigned long long fifo_full_cnt; 93 unsigned long long fifo_full_cnt;
94 unsigned long long ring_full_cnt; 94 unsigned long long ring_full_cnt[8];
95 /* LRO statistics */ 95 /* LRO statistics */
96 unsigned long long clubbed_frms_cnt; 96 unsigned long long clubbed_frms_cnt;
97 unsigned long long sending_both; 97 unsigned long long sending_both;
@@ -126,6 +126,26 @@ struct swStat {
126 unsigned long long rx_buf_size_err_cnt; 126 unsigned long long rx_buf_size_err_cnt;
127 unsigned long long rx_rxd_corrupt_cnt; 127 unsigned long long rx_rxd_corrupt_cnt;
128 unsigned long long rx_unkn_err_cnt; 128 unsigned long long rx_unkn_err_cnt;
129
130 /* Error/alarm statistics*/
131 unsigned long long tda_err_cnt;
132 unsigned long long pfc_err_cnt;
133 unsigned long long pcc_err_cnt;
134 unsigned long long tti_err_cnt;
135 unsigned long long lso_err_cnt;
136 unsigned long long tpa_err_cnt;
137 unsigned long long sm_err_cnt;
138 unsigned long long mac_tmac_err_cnt;
139 unsigned long long mac_rmac_err_cnt;
140 unsigned long long xgxs_txgxs_err_cnt;
141 unsigned long long xgxs_rxgxs_err_cnt;
142 unsigned long long rc_err_cnt;
143 unsigned long long prc_pcix_err_cnt;
144 unsigned long long rpa_err_cnt;
145 unsigned long long rda_err_cnt;
146 unsigned long long rti_err_cnt;
147 unsigned long long mc_err_cnt;
148
129}; 149};
130 150
131/* Xpak releated alarm and warnings */ 151/* Xpak releated alarm and warnings */
@@ -1018,7 +1038,7 @@ static void free_shared_mem(struct s2io_nic *sp);
1018static int init_nic(struct s2io_nic *nic); 1038static int init_nic(struct s2io_nic *nic);
1019static void rx_intr_handler(struct ring_info *ring_data); 1039static void rx_intr_handler(struct ring_info *ring_data);
1020static void tx_intr_handler(struct fifo_info *fifo_data); 1040static void tx_intr_handler(struct fifo_info *fifo_data);
1021static void alarm_intr_handler(struct s2io_nic *sp); 1041static void s2io_handle_errors(void * dev_id);
1022 1042
1023static int s2io_starter(void); 1043static int s2io_starter(void);
1024static void s2io_closer(void); 1044static void s2io_closer(void);