diff options
author | ken <ken@FreeBSD.org> | 1999-09-27 06:12:57 +0000 |
---|---|---|
committer | ken <ken@FreeBSD.org> | 1999-09-27 06:12:57 +0000 |
commit | f6f24090f11ada165b24617fcf5b6b24ca2788b7 (patch) | |
tree | e6589830aec1b4ff9b7e880902fcbe31e9bd2b96 | |
parent | cfa4d8f19b74e21d78651260f625f9169d912351 (diff) | |
download | FreeBSD-src-f6f24090f11ada165b24617fcf5b6b24ca2788b7.zip FreeBSD-src-f6f24090f11ada165b24617fcf5b6b24ca2788b7.tar.gz |
Fix two rather embarrassing bugs in camcontrol. The first caused the
CAM_PASS_ERR_RECOVER flag to be set unconditionally on READ DEFECTS
commands, and also caused the CAM_DIR_IN flag to not be set. This was
the cause of all of the "camcontrol defects doesn't work with my NCR
controller" bugs.
The second prevented camcontrol negotiate from negotiating any bus width
other than 8 bits.
Submitted by: groudier@club-internet.fr (Gerard Roudier)
-rw-r--r-- | sbin/camcontrol/camcontrol.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sbin/camcontrol/camcontrol.c b/sbin/camcontrol/camcontrol.c index b6f9e67..7eb0e65 100644 --- a/sbin/camcontrol/camcontrol.c +++ b/sbin/camcontrol/camcontrol.c @@ -1151,8 +1151,8 @@ readdefects(struct cam_device *device, int argc, char **argv, cam_fill_csio(&ccb->csio, /*retries*/ retry_count, /*cbfcnp*/ NULL, - /*flags*/ CAM_DIR_IN | (arglist & CAM_ARG_ERR_RECOVER) ? - CAM_PASS_ERR_RECOVER : 0, + /*flags*/ CAM_DIR_IN | ((arglist & CAM_ARG_ERR_RECOVER) ? + CAM_PASS_ERR_RECOVER : 0), /*tag_action*/ MSG_SIMPLE_Q_TAG, /*data_ptr*/ defect_list, /*dxfer_len*/ dlist_length, @@ -2529,7 +2529,9 @@ ratecontrol(struct cam_device *device, int retry_count, int timeout, warnx("HBA does not support 32 bit bus width"); retval = 1; goto ratecontrol_bailout; - } else if (bus_width != 8) { + } else if ((bus_width != 8) + && (bus_width != 16) + && (bus_width != 32)) { warnx("Invalid bus width %d", bus_width); retval = 1; goto ratecontrol_bailout; |