diff options
author | Bhanu Prakash Gollapudi <bprakash@broadcom.com> | 2011-07-27 14:32:06 -0400 |
---|---|---|
committer | James Bottomley <JBottomley@Parallels.com> | 2011-07-28 03:45:19 -0400 |
commit | 744469542951d32979a8dcb1dbed560bfed1745e (patch) | |
tree | d6be8757d3804b19fcc7cd498e215d8a232d2904 /drivers/scsi/bnx2fc/bnx2fc_io.c | |
parent | 6c5a7ce4f176b641fd11e59be4df31ee3e6202dd (diff) |
[SCSI] bnx2fc: REC/SRR link service request and response handling
Signed-off-by: Bhanu Prakash Gollapudi <bprakash@broadcom.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
Diffstat (limited to 'drivers/scsi/bnx2fc/bnx2fc_io.c')
-rw-r--r-- | drivers/scsi/bnx2fc/bnx2fc_io.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/scsi/bnx2fc/bnx2fc_io.c b/drivers/scsi/bnx2fc/bnx2fc_io.c index 9820d3060cd8..797b0051b6ff 100644 --- a/drivers/scsi/bnx2fc/bnx2fc_io.c +++ b/drivers/scsi/bnx2fc/bnx2fc_io.c | |||
@@ -18,8 +18,6 @@ static int bnx2fc_split_bd(struct bnx2fc_cmd *io_req, u64 addr, int sg_len, | |||
18 | int bd_index); | 18 | int bd_index); |
19 | static int bnx2fc_map_sg(struct bnx2fc_cmd *io_req); | 19 | static int bnx2fc_map_sg(struct bnx2fc_cmd *io_req); |
20 | static void bnx2fc_build_bd_list_from_sg(struct bnx2fc_cmd *io_req); | 20 | static void bnx2fc_build_bd_list_from_sg(struct bnx2fc_cmd *io_req); |
21 | static int bnx2fc_post_io_req(struct bnx2fc_rport *tgt, | ||
22 | struct bnx2fc_cmd *io_req); | ||
23 | static void bnx2fc_unmap_sg_list(struct bnx2fc_cmd *io_req); | 21 | static void bnx2fc_unmap_sg_list(struct bnx2fc_cmd *io_req); |
24 | static void bnx2fc_free_mp_resc(struct bnx2fc_cmd *io_req); | 22 | static void bnx2fc_free_mp_resc(struct bnx2fc_cmd *io_req); |
25 | static void bnx2fc_parse_fcp_rsp(struct bnx2fc_cmd *io_req, | 23 | static void bnx2fc_parse_fcp_rsp(struct bnx2fc_cmd *io_req, |
@@ -218,6 +216,11 @@ static void bnx2fc_scsi_done(struct bnx2fc_cmd *io_req, int err_code) | |||
218 | return; | 216 | return; |
219 | 217 | ||
220 | BNX2FC_IO_DBG(io_req, "scsi_done. err_code = 0x%x\n", err_code); | 218 | BNX2FC_IO_DBG(io_req, "scsi_done. err_code = 0x%x\n", err_code); |
219 | if (test_bit(BNX2FC_FLAG_CMD_LOST, &io_req->req_flags)) { | ||
220 | /* Do not call scsi done for this IO */ | ||
221 | return; | ||
222 | } | ||
223 | |||
221 | bnx2fc_unmap_sg_list(io_req); | 224 | bnx2fc_unmap_sg_list(io_req); |
222 | io_req->sc_cmd = NULL; | 225 | io_req->sc_cmd = NULL; |
223 | if (!sc_cmd) { | 226 | if (!sc_cmd) { |
@@ -1902,7 +1905,7 @@ void bnx2fc_process_scsi_cmd_compl(struct bnx2fc_cmd *io_req, | |||
1902 | kref_put(&io_req->refcount, bnx2fc_cmd_release); | 1905 | kref_put(&io_req->refcount, bnx2fc_cmd_release); |
1903 | } | 1906 | } |
1904 | 1907 | ||
1905 | static int bnx2fc_post_io_req(struct bnx2fc_rport *tgt, | 1908 | int bnx2fc_post_io_req(struct bnx2fc_rport *tgt, |
1906 | struct bnx2fc_cmd *io_req) | 1909 | struct bnx2fc_cmd *io_req) |
1907 | { | 1910 | { |
1908 | struct fcoe_task_ctx_entry *task; | 1911 | struct fcoe_task_ctx_entry *task; |