diff options
author | Sivakumar Subramani <sivakumar.subramani@neterion.com> | 2007-09-17 16:05:35 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:51:09 -0400 |
commit | 8116f3cf4a2a5a4fa2335e6f32023ac50506698f (patch) | |
tree | 4db08fb067fd37c892f9a98e127854acd0fa3956 /drivers/net/s2io.h | |
parent | 9caab4587b8320c54fc666a6c820e966e6403aea (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.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/drivers/net/s2io.h b/drivers/net/s2io.h index b9654dfeb87..1e2e72d6aad 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); | |||
1018 | static int init_nic(struct s2io_nic *nic); | 1038 | static int init_nic(struct s2io_nic *nic); |
1019 | static void rx_intr_handler(struct ring_info *ring_data); | 1039 | static void rx_intr_handler(struct ring_info *ring_data); |
1020 | static void tx_intr_handler(struct fifo_info *fifo_data); | 1040 | static void tx_intr_handler(struct fifo_info *fifo_data); |
1021 | static void alarm_intr_handler(struct s2io_nic *sp); | 1041 | static void s2io_handle_errors(void * dev_id); |
1022 | 1042 | ||
1023 | static int s2io_starter(void); | 1043 | static int s2io_starter(void); |
1024 | static void s2io_closer(void); | 1044 | static void s2io_closer(void); |