Bug 24712 - Aic7xxx and 160M drives : failure
Summary: Aic7xxx and 160M drives : failure
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Red Hat Raw Hide
Classification: Retired
Component: kernel
Version: 1.0
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Dave Jones
QA Contact: Brock Organ
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2001-01-23 18:17 UTC by Need Real Name
Modified: 2015-01-04 22:01 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2004-10-30 03:39:49 UTC
Embargoed:


Attachments (Terms of Use)

Description Need Real Name 2001-01-23 18:17:17 UTC
Hello,
  Just mirroring this bug over to you. 

the stoch 2.2.14 - 2.4.0 aic7xxx drive is BROKEN in relation
to 160M controllers. the TCQ logic is flawed. There are fixes

1. Disable TCQ for the AIC7xxx driver. (Config file option)

2. Use the new beta driver.

       http://people.FreeBSD.org/~gibbs/linux/
       linux-aic7xxx-6.0.9BETA-2.4.0.diffs

3. Use the patch below:

I have notified the powers that be and the kernel-list has a thread
relating to this. But wile in bugzilla I thought I would drop
one to you :)

Leslie Donaldson


*** linux/drivers/scsi/aic7xxx.c.2.4.0-12       Sat Jan  6 21:55:47 2001
--- linux/drivers/scsi/aic7xxx.c        Sat Jan  6 22:08:12 2001
***************
*** 7073,7078 ****
--- 7073,7092 ----
        else
        {
  
+         if(((strcmp("Adaptec AIC-7892 Ultra 160/m SCSI host
adapter",board_names[p->board_name_index])) == 0 ) ||
+            ((strcmp("Adaptec AIC-7899 Ultra 160/m SCSI host
adapter",board_names[p->board_name_index])) == 0 ))
+         {
+           /* The TCQ code for 160M devices is BROKEN */
+           /* This is a quick, dirty, sad fix until I have time for a
better */
+           /* one. We do it this way in case the driver is supporting two
seperate */
+           /* styles of scsi chipsets... I do have two boards so it does
happen */
+           tag_enabled = FALSE;
+           device->queue_depth = 3;  /* Tagged queueing is disabled. */
+           printk(INFO_LEAD "DISABLED TAGGED QUEUING, queue depth %d.\n",
+                  p->host_no, device->channel, device->id,
+                  device->lun, 0);
+         }
+         else
          if (aic7xxx_tag_info[p->instance].tag_commands[tindex] == 255)
          {
            tag_enabled = FALSE;


Note You need to log in before you can comment on or make changes to this bug.