diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_def.h')
-rw-r--r-- | drivers/s390/scsi/zfcp_def.h | 34 |
1 files changed, 2 insertions, 32 deletions
diff --git a/drivers/s390/scsi/zfcp_def.h b/drivers/s390/scsi/zfcp_def.h index 6ed48654c29..ff4e2ca19be 100644 --- a/drivers/s390/scsi/zfcp_def.h +++ b/drivers/s390/scsi/zfcp_def.h | |||
@@ -39,9 +39,7 @@ | |||
39 | #include <asm/sysinfo.h> | 39 | #include <asm/sysinfo.h> |
40 | #include "zfcp_fsf.h" | 40 | #include "zfcp_fsf.h" |
41 | 41 | ||
42 | /********************* GENERAL DEFINES *********************************/ | 42 | struct zfcp_reqlist; |
43 | |||
44 | #define REQUEST_LIST_SIZE 128 | ||
45 | 43 | ||
46 | /********************* SCSI SPECIFIC DEFINES *********************************/ | 44 | /********************* SCSI SPECIFIC DEFINES *********************************/ |
47 | #define ZFCP_SCSI_ER_TIMEOUT (10*HZ) | 45 | #define ZFCP_SCSI_ER_TIMEOUT (10*HZ) |
@@ -206,8 +204,7 @@ struct zfcp_adapter { | |||
206 | struct list_head port_list; /* remote port list */ | 204 | struct list_head port_list; /* remote port list */ |
207 | rwlock_t port_list_lock; /* port list lock */ | 205 | rwlock_t port_list_lock; /* port list lock */ |
208 | unsigned long req_no; /* unique FSF req number */ | 206 | unsigned long req_no; /* unique FSF req number */ |
209 | struct list_head *req_list; /* list of pending reqs */ | 207 | struct zfcp_reqlist *req_list; |
210 | spinlock_t req_list_lock; /* request list lock */ | ||
211 | u32 fsf_req_seq_no; /* FSF cmnd seq number */ | 208 | u32 fsf_req_seq_no; /* FSF cmnd seq number */ |
212 | rwlock_t abort_lock; /* Protects against SCSI | 209 | rwlock_t abort_lock; /* Protects against SCSI |
213 | stack abort/command | 210 | stack abort/command |
@@ -351,31 +348,4 @@ struct zfcp_data { | |||
351 | #define ZFCP_SET 0x00000100 | 348 | #define ZFCP_SET 0x00000100 |
352 | #define ZFCP_CLEAR 0x00000200 | 349 | #define ZFCP_CLEAR 0x00000200 |
353 | 350 | ||
354 | /* | ||
355 | * Helper functions for request ID management. | ||
356 | */ | ||
357 | static inline int zfcp_reqlist_hash(unsigned long req_id) | ||
358 | { | ||
359 | return req_id % REQUEST_LIST_SIZE; | ||
360 | } | ||
361 | |||
362 | static inline void zfcp_reqlist_remove(struct zfcp_adapter *adapter, | ||
363 | struct zfcp_fsf_req *fsf_req) | ||
364 | { | ||
365 | list_del(&fsf_req->list); | ||
366 | } | ||
367 | |||
368 | static inline struct zfcp_fsf_req * | ||
369 | zfcp_reqlist_find(struct zfcp_adapter *adapter, unsigned long req_id) | ||
370 | { | ||
371 | struct zfcp_fsf_req *request; | ||
372 | unsigned int idx; | ||
373 | |||
374 | idx = zfcp_reqlist_hash(req_id); | ||
375 | list_for_each_entry(request, &adapter->req_list[idx], list) | ||
376 | if (request->req_id == req_id) | ||
377 | return request; | ||
378 | return NULL; | ||
379 | } | ||
380 | |||
381 | #endif /* ZFCP_DEF_H */ | 351 | #endif /* ZFCP_DEF_H */ |