diff options
Diffstat (limited to 'drivers/scsi/bfa/bfa_fcpim.h')
-rw-r--r-- | drivers/scsi/bfa/bfa_fcpim.h | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/scsi/bfa/bfa_fcpim.h b/drivers/scsi/bfa/bfa_fcpim.h index f9334587e02a..1e38dade8423 100644 --- a/drivers/scsi/bfa/bfa_fcpim.h +++ b/drivers/scsi/bfa/bfa_fcpim.h | |||
@@ -41,7 +41,7 @@ | |||
41 | (__itnim->ioprofile.iocomps[__index]++) | 41 | (__itnim->ioprofile.iocomps[__index]++) |
42 | 42 | ||
43 | #define BFA_IOIM_RETRY_TAG_OFFSET 11 | 43 | #define BFA_IOIM_RETRY_TAG_OFFSET 11 |
44 | #define BFA_IOIM_RETRY_TAG_MASK 0x07ff /* 2K IOs */ | 44 | #define BFA_IOIM_IOTAG_MASK 0x07ff /* 2K IOs */ |
45 | #define BFA_IOIM_RETRY_MAX 7 | 45 | #define BFA_IOIM_RETRY_MAX 7 |
46 | 46 | ||
47 | /* Buckets are are 512 bytes to 2MB */ | 47 | /* Buckets are are 512 bytes to 2MB */ |
@@ -189,8 +189,9 @@ struct bfa_itnim_s { | |||
189 | 189 | ||
190 | #define bfa_itnim_is_online(_itnim) ((_itnim)->is_online) | 190 | #define bfa_itnim_is_online(_itnim) ((_itnim)->is_online) |
191 | #define BFA_FCPIM_MOD(_hal) (&(_hal)->modules.fcpim_mod) | 191 | #define BFA_FCPIM_MOD(_hal) (&(_hal)->modules.fcpim_mod) |
192 | #define BFA_IOIM_TAG_2_ID(_iotag) ((_iotag) & BFA_IOIM_IOTAG_MASK) | ||
192 | #define BFA_IOIM_FROM_TAG(_fcpim, _iotag) \ | 193 | #define BFA_IOIM_FROM_TAG(_fcpim, _iotag) \ |
193 | (&fcpim->ioim_arr[(_iotag & BFA_IOIM_RETRY_TAG_MASK)]) | 194 | (&fcpim->ioim_arr[(_iotag & BFA_IOIM_IOTAG_MASK)]) |
194 | #define BFA_TSKIM_FROM_TAG(_fcpim, _tmtag) \ | 195 | #define BFA_TSKIM_FROM_TAG(_fcpim, _tmtag) \ |
195 | (&fcpim->tskim_arr[_tmtag & (fcpim->num_tskim_reqs - 1)]) | 196 | (&fcpim->tskim_arr[_tmtag & (fcpim->num_tskim_reqs - 1)]) |
196 | 197 | ||
@@ -198,20 +199,21 @@ struct bfa_itnim_s { | |||
198 | (_bfa->modules.fcpim_mod.io_profile_start_time) | 199 | (_bfa->modules.fcpim_mod.io_profile_start_time) |
199 | #define bfa_fcpim_get_io_profile(_bfa) \ | 200 | #define bfa_fcpim_get_io_profile(_bfa) \ |
200 | (_bfa->modules.fcpim_mod.io_profile) | 201 | (_bfa->modules.fcpim_mod.io_profile) |
202 | #define bfa_ioim_update_iotag(__ioim) do { \ | ||
203 | uint16_t k = (__ioim)->iotag >> BFA_IOIM_RETRY_TAG_OFFSET; \ | ||
204 | k++; (__ioim)->iotag &= BFA_IOIM_IOTAG_MASK; \ | ||
205 | (__ioim)->iotag |= k << BFA_IOIM_RETRY_TAG_OFFSET; \ | ||
206 | } while (0) | ||
201 | 207 | ||
202 | static inline bfa_boolean_t | 208 | static inline bfa_boolean_t |
203 | bfa_ioim_get_iotag(struct bfa_ioim_s *ioim) | 209 | bfa_ioim_maxretry_reached(struct bfa_ioim_s *ioim) |
204 | { | 210 | { |
205 | u16 k = ioim->iotag; | 211 | uint16_t k = ioim->iotag >> BFA_IOIM_RETRY_TAG_OFFSET; |
206 | 212 | if (k < BFA_IOIM_RETRY_MAX) | |
207 | k >>= BFA_IOIM_RETRY_TAG_OFFSET; k++; | ||
208 | |||
209 | if (k > BFA_IOIM_RETRY_MAX) | ||
210 | return BFA_FALSE; | 213 | return BFA_FALSE; |
211 | ioim->iotag &= BFA_IOIM_RETRY_TAG_MASK; | ||
212 | ioim->iotag |= k<<BFA_IOIM_RETRY_TAG_OFFSET; | ||
213 | return BFA_TRUE; | 214 | return BFA_TRUE; |
214 | } | 215 | } |
216 | |||
215 | /* | 217 | /* |
216 | * function prototypes | 218 | * function prototypes |
217 | */ | 219 | */ |