aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bnx2fc/bnx2fc.h
diff options
context:
space:
mode:
authorBhanu Prakash Gollapudi <bprakash@broadcom.com>2011-07-27 14:32:05 -0400
committerJames Bottomley <JBottomley@Parallels.com>2011-07-28 03:42:57 -0400
commit6c5a7ce4f176b641fd11e59be4df31ee3e6202dd (patch)
tree676e052ad6c2ac3868e934a9f22e2f5528d6a8f3 /drivers/scsi/bnx2fc/bnx2fc.h
parentd6857595394f1fa5c5752eae9bb6045c067fa41e (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.h14
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);
466void bnx2fc_init_cleanup_task(struct bnx2fc_cmd *io_req, 469void 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);
472void 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);
469void bnx2fc_init_mp_task(struct bnx2fc_cmd *io_req, 476void bnx2fc_init_mp_task(struct bnx2fc_cmd *io_req,
470 struct fcoe_task_ctx_entry *task); 477 struct fcoe_task_ctx_entry *task);
471void bnx2fc_init_task(struct bnx2fc_cmd *io_req, 478void 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);
517int bnx2fc_send_stat_req(struct bnx2fc_hba *hba); 524int bnx2fc_send_stat_req(struct bnx2fc_hba *hba);
525int bnx2fc_send_rec(struct bnx2fc_cmd *orig_io_req);
526int bnx2fc_send_srr(struct bnx2fc_cmd *orig_io_req, u32 offset, u8 r_ctl);
527void bnx2fc_process_seq_cleanup_compl(struct bnx2fc_cmd *seq_clnup_req,
528 struct fcoe_task_ctx_entry *task,
529 u8 rx_state);
530int bnx2fc_initiate_seq_cleanup(struct bnx2fc_cmd *orig_io_req, u32 offset,
531 enum fc_rctl r_ctl);
518 532
519#endif 533#endif