Improve firmware download status check. Previous check was insufficient for

ATA since it ignored transport errors like command timeouts, while for SCSI
it was just wrong.
This commit is contained in:
Alexander Motin 2013-06-14 08:26:58 +00:00
parent 8d6235fb66
commit 126690fec1

View File

@ -370,17 +370,15 @@ fw_download_img(struct cam_device *cam_dev, const struct fw_vendor *vp,
}
if (!sim_mode) {
/* Execute the command. */
if (cam_send_ccb(cam_dev, ccb) < 0) {
if (cam_send_ccb(cam_dev, ccb) < 0 ||
(ccb->ccb_h.status & CAM_STATUS_MASK) !=
CAM_REQ_CMP) {
warnx("Error writing image to device");
if (printerrors)
cam_error_print(cam_dev, ccb, CAM_ESF_ALL,
CAM_EPF_ALL, stderr);
goto bailout;
}
if (ccb->ataio.res.status != 0 /*&& !last_pkt*/) {
cam_error_print(cam_dev, ccb, CAM_ESF_ALL,
CAM_EPF_ALL, stderr);
}
}
/* Prepare next round. */
pkt_count++;