summaryrefslogtreecommitdiffstats
path: root/src/net/fcp.c
diff options
context:
space:
mode:
authorMichael Brown2014-06-02 03:17:28 +0200
committerMichael Brown2014-06-03 03:04:46 +0200
commite047811c859bd11777c9a01d7ca89ca948567199 (patch)
treec84557d88a049527dfc80631dcc3d9cb3bed2380 /src/net/fcp.c
parent[ethernet] Provide eth_random_addr() to generate random Ethernet addresses (diff)
downloadipxe-e047811c859bd11777c9a01d7ca89ca948567199.tar.gz
ipxe-e047811c859bd11777c9a01d7ca89ca948567199.tar.xz
ipxe-e047811c859bd11777c9a01d7ca89ca948567199.zip
[scsi] Improve sense code parsing
Parse the sense data to extract the reponse code, the sense key, the additional sense code, and the additional sense code qualifier. Originally-implemented-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/net/fcp.c')
-rw-r--r--src/net/fcp.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/net/fcp.c b/src/net/fcp.c
index 241b5463..9c36a4c7 100644
--- a/src/net/fcp.c
+++ b/src/net/fcp.c
@@ -551,7 +551,6 @@ static int fcpcmd_recv_rsp ( struct fcp_command *fcpcmd,
struct fcp_device *fcpdev = fcpcmd->fcpdev;
struct scsi_cmd *command = &fcpcmd->command;
struct fcp_rsp *rsp = iobuf->data;
- struct scsi_sense *sense;
struct scsi_rsp response;
int rc;
@@ -607,8 +606,8 @@ static int fcpcmd_recv_rsp ( struct fcp_command *fcpcmd,
if ( rsp->flags & FCP_RSP_RESIDUAL_UNDERRUN )
response.overrun = -response.overrun;
}
- if ( ( sense = fcp_rsp_sense_data ( rsp ) ) != NULL )
- memcpy ( &response.sense, sense, sizeof ( response.sense ) );
+ scsi_parse_sense ( fcp_rsp_sense_data ( rsp ),
+ fcp_rsp_sense_data_len ( rsp ), &response.sense );
/* Free buffer before sending response, to minimise
* out-of-memory errors.