diff options
Diffstat (limited to 'include/scsi/libfc.h')
| -rw-r--r-- | include/scsi/libfc.h | 76 |
1 files changed, 33 insertions, 43 deletions
diff --git a/include/scsi/libfc.h b/include/scsi/libfc.h index 7d96829b0c00..5d1a758e0595 100644 --- a/include/scsi/libfc.h +++ b/include/scsi/libfc.h | |||
| @@ -281,9 +281,6 @@ struct fc_seq_els_data { | |||
| 281 | * @timer: The command timer | 281 | * @timer: The command timer |
| 282 | * @tm_done: Completion indicator | 282 | * @tm_done: Completion indicator |
| 283 | * @wait_for_comp: Indicator to wait for completion of the I/O (in jiffies) | 283 | * @wait_for_comp: Indicator to wait for completion of the I/O (in jiffies) |
| 284 | * @start_time: Timestamp indicating the start of the I/O (in jiffies) | ||
| 285 | * @end_time: Timestamp indicating the end of the I/O (in jiffies) | ||
| 286 | * @last_pkt_time: Timestamp of the last frame received (in jiffies) | ||
| 287 | * @data_len: The length of the data | 284 | * @data_len: The length of the data |
| 288 | * @cdb_cmd: The CDB command | 285 | * @cdb_cmd: The CDB command |
| 289 | * @xfer_len: The transfer length | 286 | * @xfer_len: The transfer length |
| @@ -304,50 +301,46 @@ struct fc_seq_els_data { | |||
| 304 | * @recov_seq: The sequence for REC or SRR | 301 | * @recov_seq: The sequence for REC or SRR |
| 305 | */ | 302 | */ |
| 306 | struct fc_fcp_pkt { | 303 | struct fc_fcp_pkt { |
| 307 | /* Housekeeping information */ | ||
| 308 | struct fc_lport *lp; | ||
| 309 | u16 state; | ||
| 310 | atomic_t ref_cnt; | ||
| 311 | spinlock_t scsi_pkt_lock; | 304 | spinlock_t scsi_pkt_lock; |
| 305 | atomic_t ref_cnt; | ||
| 306 | |||
| 307 | /* SCSI command and data transfer information */ | ||
| 308 | u32 data_len; | ||
| 312 | 309 | ||
| 313 | /* SCSI I/O related information */ | 310 | /* SCSI I/O related information */ |
| 314 | struct scsi_cmnd *cmd; | 311 | struct scsi_cmnd *cmd; |
| 315 | struct list_head list; | 312 | struct list_head list; |
| 316 | 313 | ||
| 317 | /* Timeout related information */ | 314 | /* Housekeeping information */ |
| 318 | struct timer_list timer; | 315 | struct fc_lport *lp; |
| 319 | struct completion tm_done; | 316 | u8 state; |
| 320 | int wait_for_comp; | ||
| 321 | unsigned long start_time; | ||
| 322 | unsigned long end_time; | ||
| 323 | unsigned long last_pkt_time; | ||
| 324 | |||
| 325 | /* SCSI command and data transfer information */ | ||
| 326 | u32 data_len; | ||
| 327 | |||
| 328 | /* Transport related veriables */ | ||
| 329 | struct fcp_cmnd cdb_cmd; | ||
| 330 | size_t xfer_len; | ||
| 331 | u16 xfer_ddp; | ||
| 332 | u32 xfer_contig_end; | ||
| 333 | u16 max_payload; | ||
| 334 | 317 | ||
| 335 | /* SCSI/FCP return status */ | 318 | /* SCSI/FCP return status */ |
| 336 | u32 io_status; | ||
| 337 | u8 cdb_status; | 319 | u8 cdb_status; |
| 338 | u8 status_code; | 320 | u8 status_code; |
| 339 | u8 scsi_comp_flags; | 321 | u8 scsi_comp_flags; |
| 322 | u32 io_status; | ||
| 340 | u32 req_flags; | 323 | u32 req_flags; |
| 341 | u32 scsi_resid; | 324 | u32 scsi_resid; |
| 342 | 325 | ||
| 326 | /* Transport related veriables */ | ||
| 327 | size_t xfer_len; | ||
| 328 | struct fcp_cmnd cdb_cmd; | ||
| 329 | u32 xfer_contig_end; | ||
| 330 | u16 max_payload; | ||
| 331 | u16 xfer_ddp; | ||
| 332 | |||
| 343 | /* Associated structures */ | 333 | /* Associated structures */ |
| 344 | struct fc_rport *rport; | 334 | struct fc_rport *rport; |
| 345 | struct fc_seq *seq_ptr; | 335 | struct fc_seq *seq_ptr; |
| 346 | 336 | ||
| 347 | /* Error Processing information */ | 337 | /* Timeout/error related information */ |
| 348 | u8 recov_retry; | 338 | struct timer_list timer; |
| 339 | int wait_for_comp; | ||
| 340 | u32 recov_retry; | ||
| 349 | struct fc_seq *recov_seq; | 341 | struct fc_seq *recov_seq; |
| 350 | }; | 342 | struct completion tm_done; |
| 343 | } ____cacheline_aligned_in_smp; | ||
| 351 | 344 | ||
| 352 | /* | 345 | /* |
| 353 | * Structure and function definitions for managing Fibre Channel Exchanges | 346 | * Structure and function definitions for managing Fibre Channel Exchanges |
| @@ -413,35 +406,32 @@ struct fc_seq { | |||
| 413 | * sequence allocation | 406 | * sequence allocation |
| 414 | */ | 407 | */ |
| 415 | struct fc_exch { | 408 | struct fc_exch { |
| 409 | spinlock_t ex_lock; | ||
| 410 | atomic_t ex_refcnt; | ||
| 411 | enum fc_class class; | ||
| 416 | struct fc_exch_mgr *em; | 412 | struct fc_exch_mgr *em; |
| 417 | struct fc_exch_pool *pool; | 413 | struct fc_exch_pool *pool; |
| 418 | u32 state; | ||
| 419 | u16 xid; | ||
| 420 | struct list_head ex_list; | 414 | struct list_head ex_list; |
| 421 | spinlock_t ex_lock; | ||
| 422 | atomic_t ex_refcnt; | ||
| 423 | struct delayed_work timeout_work; | ||
| 424 | struct fc_lport *lp; | 415 | struct fc_lport *lp; |
| 416 | u32 esb_stat; | ||
| 417 | u8 state; | ||
| 418 | u8 fh_type; | ||
| 419 | u8 seq_id; | ||
| 420 | u8 encaps; | ||
| 421 | u16 xid; | ||
| 425 | u16 oxid; | 422 | u16 oxid; |
| 426 | u16 rxid; | 423 | u16 rxid; |
| 427 | u32 oid; | 424 | u32 oid; |
| 428 | u32 sid; | 425 | u32 sid; |
| 429 | u32 did; | 426 | u32 did; |
| 430 | u32 esb_stat; | ||
| 431 | u32 r_a_tov; | 427 | u32 r_a_tov; |
| 432 | u8 seq_id; | ||
| 433 | u8 encaps; | ||
| 434 | u32 f_ctl; | 428 | u32 f_ctl; |
| 435 | u8 fh_type; | 429 | struct fc_seq seq; |
| 436 | enum fc_class class; | ||
| 437 | struct fc_seq seq; | ||
| 438 | |||
| 439 | void (*resp)(struct fc_seq *, struct fc_frame *, void *); | 430 | void (*resp)(struct fc_seq *, struct fc_frame *, void *); |
| 440 | void *arg; | 431 | void *arg; |
| 441 | |||
| 442 | void (*destructor)(struct fc_seq *, void *); | 432 | void (*destructor)(struct fc_seq *, void *); |
| 443 | 433 | struct delayed_work timeout_work; | |
| 444 | }; | 434 | } ____cacheline_aligned_in_smp; |
| 445 | #define fc_seq_exch(sp) container_of(sp, struct fc_exch, seq) | 435 | #define fc_seq_exch(sp) container_of(sp, struct fc_exch, seq) |
| 446 | 436 | ||
| 447 | 437 | ||
