summaryrefslogtreecommitdiffstats
path: root/sys/cam/cam_xpt.c
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1998-10-07 03:25:21 +0000
committergibbs <gibbs@FreeBSD.org>1998-10-07 03:25:21 +0000
commit45e0ab6055d6715aaa774b1621e8467af76520e1 (patch)
treecd70deb1f5a574f831f8d335386dbecbf61284a8 /sys/cam/cam_xpt.c
parentb397316abdf18534a0f24204d9d910dc98b865e2 (diff)
downloadFreeBSD-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.c11
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
OpenPOWER on IntegriCloud