diff options
author | Bhanu Prakash Gollapudi <bprakash@broadcom.com> | 2011-07-27 14:32:05 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-07-28 03:42:57 -0400 |
commit | 6c5a7ce4f176b641fd11e59be4df31ee3e6202dd (patch) | |
tree | 676e052ad6c2ac3868e934a9f22e2f5528d6a8f3 /drivers/scsi/bnx2fc/bnx2fc.h | |
parent | d6857595394f1fa5c5752eae9bb6045c067fa41e (diff) |
[SCSI] bnx2fc: Support 'sequence cleanup' task
For the devices that support sequence level error recovery, based on the REC
response, the firmware has to be informed about the offset from which the
retransmission should happen. Driver initiates sequence cleanup task to
firmware so that the firmware can program the task. Upon the sequence cleanup
completion, SRR is issued to retransmit the sequence.
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bnx2fc/bnx2fc.h')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc.h b/drivers/scsi/bnx2fc/bnx2fc.h index d38dcc7f1047..45d5391229e2 100644 --- a/drivers/scsi/bnx2fc/bnx2fc.h +++ b/drivers/scsi/bnx2fc/bnx2fc.h | |||
@@ -357,6 +357,8 @@ struct bnx2fc_els_cb_arg { | |||
357 | struct bnx2fc_cmd *aborted_io_req; | 357 | struct bnx2fc_cmd *aborted_io_req; |
358 | struct bnx2fc_cmd *io_req; | 358 | struct bnx2fc_cmd *io_req; |
359 | u16 l2_oxid; | 359 | u16 l2_oxid; |
360 | u32 offset; | ||
361 | enum fc_rctl r_ctl; | ||
360 | }; | 362 | }; |
361 | 363 | ||
362 | /* bnx2fc command structure */ | 364 | /* bnx2fc command structure */ |
@@ -370,6 +372,7 @@ struct bnx2fc_cmd { | |||
370 | #define BNX2FC_ABTS 3 | 372 | #define BNX2FC_ABTS 3 |
371 | #define BNX2FC_ELS 4 | 373 | #define BNX2FC_ELS 4 |
372 | #define BNX2FC_CLEANUP 5 | 374 | #define BNX2FC_CLEANUP 5 |
375 | #define BNX2FC_SEQ_CLEANUP 6 | ||
373 | u8 io_req_flags; | 376 | u8 io_req_flags; |
374 | struct kref refcount; | 377 | struct kref refcount; |
375 | struct fcoe_port *port; | 378 | struct fcoe_port *port; |
@@ -466,6 +469,10 @@ int bnx2fc_init_mp_req(struct bnx2fc_cmd *io_req); | |||
466 | void bnx2fc_init_cleanup_task(struct bnx2fc_cmd *io_req, | 469 | void bnx2fc_init_cleanup_task(struct bnx2fc_cmd *io_req, |
467 | struct fcoe_task_ctx_entry *task, | 470 | struct fcoe_task_ctx_entry *task, |
468 | u16 orig_xid); | 471 | u16 orig_xid); |
472 | void bnx2fc_init_seq_cleanup_task(struct bnx2fc_cmd *seq_clnup_req, | ||
473 | struct fcoe_task_ctx_entry *task, | ||
474 | struct bnx2fc_cmd *orig_io_req, | ||
475 | u32 offset); | ||
469 | void bnx2fc_init_mp_task(struct bnx2fc_cmd *io_req, | 476 | void bnx2fc_init_mp_task(struct bnx2fc_cmd *io_req, |
470 | struct fcoe_task_ctx_entry *task); | 477 | struct fcoe_task_ctx_entry *task); |
471 | void bnx2fc_init_task(struct bnx2fc_cmd *io_req, | 478 | void bnx2fc_init_task(struct bnx2fc_cmd *io_req, |
@@ -515,5 +522,12 @@ void bnx2fc_process_l2_frame_compl(struct bnx2fc_rport *tgt, | |||
515 | unsigned char *buf, | 522 | unsigned char *buf, |
516 | u32 frame_len, u16 l2_oxid); | 523 | u32 frame_len, u16 l2_oxid); |
517 | int bnx2fc_send_stat_req(struct bnx2fc_hba *hba); | 524 | int bnx2fc_send_stat_req(struct bnx2fc_hba *hba); |
525 | int bnx2fc_send_rec(struct bnx2fc_cmd *orig_io_req); | ||
526 | int bnx2fc_send_srr(struct bnx2fc_cmd *orig_io_req, u32 offset, u8 r_ctl); | ||
527 | void bnx2fc_process_seq_cleanup_compl(struct bnx2fc_cmd *seq_clnup_req, | ||
528 | struct fcoe_task_ctx_entry *task, | ||
529 | u8 rx_state); | ||
530 | int bnx2fc_initiate_seq_cleanup(struct bnx2fc_cmd *orig_io_req, u32 offset, | ||
531 | enum fc_rctl r_ctl); | ||
518 | 532 | ||
519 | #endif | 533 | #endif |