diff options
author | Thomas Klein <tklein@de.ibm.com> | 2010-04-20 19:10:55 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-04-22 01:32:43 -0400 |
commit | ea96ceac80cc82cb1c54a37bb8aaf4e695e87d0a (patch) | |
tree | 1d7225d032cff478b9b01609cd739b3e5ebfa7bf /drivers/net/ehea/ehea_qmr.h | |
parent | a1aa8822d577c8714f8d343eea028befbab3da9d (diff) |
ehea: error handling improvement
Reset a port's resources only if they're actually in an error state
Signed-off-by: Thomas Klein <tklein@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ehea/ehea_qmr.h')
-rw-r--r-- | drivers/net/ehea/ehea_qmr.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/net/ehea/ehea_qmr.h b/drivers/net/ehea/ehea_qmr.h index 0817c1e74a19..882c50c9c34f 100644 --- a/drivers/net/ehea/ehea_qmr.h +++ b/drivers/net/ehea/ehea_qmr.h | |||
@@ -154,6 +154,9 @@ struct ehea_rwqe { | |||
154 | #define EHEA_CQE_STAT_ERR_IP 0x2000 | 154 | #define EHEA_CQE_STAT_ERR_IP 0x2000 |
155 | #define EHEA_CQE_STAT_ERR_CRC 0x1000 | 155 | #define EHEA_CQE_STAT_ERR_CRC 0x1000 |
156 | 156 | ||
157 | /* Defines which bad send cqe stati lead to a port reset */ | ||
158 | #define EHEA_CQE_STAT_RESET_MASK 0x0002 | ||
159 | |||
157 | struct ehea_cqe { | 160 | struct ehea_cqe { |
158 | u64 wr_id; /* work request ID from WQE */ | 161 | u64 wr_id; /* work request ID from WQE */ |
159 | u8 type; | 162 | u8 type; |
@@ -187,6 +190,14 @@ struct ehea_cqe { | |||
187 | #define EHEA_EQE_SM_MECH_NUMBER EHEA_BMASK_IBM(48, 55) | 190 | #define EHEA_EQE_SM_MECH_NUMBER EHEA_BMASK_IBM(48, 55) |
188 | #define EHEA_EQE_SM_PORT_NUMBER EHEA_BMASK_IBM(56, 63) | 191 | #define EHEA_EQE_SM_PORT_NUMBER EHEA_BMASK_IBM(56, 63) |
189 | 192 | ||
193 | #define EHEA_AER_RESTYPE_QP 0x8 | ||
194 | #define EHEA_AER_RESTYPE_CQ 0x4 | ||
195 | #define EHEA_AER_RESTYPE_EQ 0x3 | ||
196 | |||
197 | /* Defines which affiliated errors lead to a port reset */ | ||
198 | #define EHEA_AER_RESET_MASK 0xFFFFFFFFFEFFFFFFULL | ||
199 | #define EHEA_AERR_RESET_MASK 0xFFFFFFFFFFFFFFFFULL | ||
200 | |||
190 | struct ehea_eqe { | 201 | struct ehea_eqe { |
191 | u64 entry; | 202 | u64 entry; |
192 | }; | 203 | }; |
@@ -379,7 +390,8 @@ int ehea_gen_smr(struct ehea_adapter *adapter, struct ehea_mr *old_mr, | |||
379 | 390 | ||
380 | int ehea_rem_mr(struct ehea_mr *mr); | 391 | int ehea_rem_mr(struct ehea_mr *mr); |
381 | 392 | ||
382 | void ehea_error_data(struct ehea_adapter *adapter, u64 res_handle); | 393 | u64 ehea_error_data(struct ehea_adapter *adapter, u64 res_handle, |
394 | u64 *aer, u64 *aerr); | ||
383 | 395 | ||
384 | int ehea_add_sect_bmap(unsigned long pfn, unsigned long nr_pages); | 396 | int ehea_add_sect_bmap(unsigned long pfn, unsigned long nr_pages); |
385 | int ehea_rem_sect_bmap(unsigned long pfn, unsigned long nr_pages); | 397 | int ehea_rem_sect_bmap(unsigned long pfn, unsigned long nr_pages); |