diff options
author | gibbs <gibbs@FreeBSD.org> | 1998-10-07 03:25:21 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1998-10-07 03:25:21 +0000 |
commit | 45e0ab6055d6715aaa774b1621e8467af76520e1 (patch) | |
tree | cd70deb1f5a574f831f8d335386dbecbf61284a8 /sys/cam/cam_xpt.c | |
parent | b397316abdf18534a0f24204d9d910dc98b865e2 (diff) | |
download | FreeBSD-src-45e0ab6055d6715aaa774b1621e8467af76520e1.zip FreeBSD-src-45e0ab6055d6715aaa774b1621e8467af76520e1.tar.gz |
Add a quirk entry for the CFP2107, another drive with broken
tagged queuing support.
Ensure that we report that a device supports tagged queuing even if
the system is waiting a "command count delay" before starting to use
them.
If a user disables disconnects on a device ensure that tagged queuing
is also turned off. We did the right thing during initial configuration,
but could be confused by manual changes.
Diffstat (limited to 'sys/cam/cam_xpt.c')
-rw-r--r-- | sys/cam/cam_xpt.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/sys/cam/cam_xpt.c b/sys/cam/cam_xpt.c index 16228fa..b68f506 100644 --- a/sys/cam/cam_xpt.c +++ b/sys/cam/cam_xpt.c @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: cam_xpt.c,v 1.15 1998/10/02 21:00:50 ken Exp $ + * $Id: cam_xpt.c,v 1.16 1998/10/06 19:27:19 ken Exp $ */ #include <sys/param.h> #include <sys/systm.h> @@ -269,6 +269,11 @@ static struct xpt_quirk_entry xpt_quirk_table[] = { T_DIRECT, SIP_MEDIA_REMOVABLE, "iomega", "jaz*", "*" }, /*quirks*/0, /*mintags*/0, /*maxtags*/0 }, + { + /* Broken tagged queuing drive */ + { T_DIRECT, SIP_MEDIA_REMOVABLE, "CONNER", "CFP2107*", "*" }, + /*quirks*/0, /*mintags*/0, /*maxtags*/0 + }, { /* * Slow when tagged queueing is enabled. (1.5MB/sec versus @@ -1324,7 +1329,8 @@ xpt_announce_periph(struct cam_periph *periph, char *announce_string) } printf("\n"); - } else if (path->device->inq_flags & SID_CmdQue) { + } else if (path->device->inq_flags & SID_CmdQue + || path->device->flags & CAM_DEV_TAG_AFTER_COUNT) { printf("%s%d: Tagged Queueing Enabled\n", periph->periph_name, periph->unit_number); } @@ -5326,6 +5332,7 @@ xpt_set_transfer_settings(struct ccb_trans_settings *cts, struct cam_ed *device, * Can't tag queue without disconnection. */ cts->flags &= ~CCB_TRANS_TAG_ENB; + cts->valid |= CCB_TRANS_TQ_VALID; } if ((cpi.hba_inquiry & PI_TAG_ABLE) == 0 |