aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfa_fcpim.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/bfa/bfa_fcpim.h')
-rw-r--r--drivers/scsi/bfa/bfa_fcpim.h22
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
202static inline bfa_boolean_t 208static inline bfa_boolean_t
203bfa_ioim_get_iotag(struct bfa_ioim_s *ioim) 209bfa_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 */