Subject: ACB4000 SCSI target controller
To: patc@staff.cs.su.oz.au, <perry@piermont.com>
From: Gordon W. Ross <gwr@mc.com>
List: port-sun3
Date: 02/22/1996 17:58:14
> Date: Thu, 22 Feb 1996 12:17:05 +1000 (EST)
> From: "Patrick Caldon" <patc@staff.cs.su.oz.au>

[ Support for Archive QIC-24 on Emulex? ]
Should be OK.  The one in my 3/260 works...

> > Has any progress been made on the drivers that control the standard 3/50
> > SCSI tape drive (the Archive QIC-24 drive controlled by an Emulex SCSI
> > controller)? I still cannot write tapes, and am nervous about getting
> > backups done.

> Which reminds me, I found the cause of the adaptec ACB4000 boards failing
> (these are in old 70 meg disk packs).  They don't respond to SCSI ENQ at
> all.  The problem with the Emulex might be similar?

I don't have an ACB4000, but here is something you might try that
should at least let the stuipd thing be recognized by autoconfig.

Put an explicit line in your autoconfig for the device,
with "flags 1" at the end,  i.e.:

	sd0 at scsibus0 target 0 lun 0 flags 1

Also, apply this change below.  Please let me know if it works!

*** sys/scsi/scsiconf.c.~1~	Fri Feb 16 12:56:37 1996
--- sys/scsi/scsiconf.c	Thu Feb 22 17:50:00 1996
***************
*** 139,150 ****
  	struct cfdata *cf = match;
  	struct scsibus_attach_args *sa = aux;
  	struct scsi_link *sc_link = sa->sa_sc_link;
  
  	if (cf->cf_loc[0] != -1 && cf->cf_loc[0] != sc_link->target)
  		return 0;
  	if (cf->cf_loc[1] != -1 && cf->cf_loc[1] != sc_link->lun)
  		return 0;
! 	return ((*cf->cf_driver->cd_match)(parent, match, aux));
  }
  
  /*
--- 139,159 ----
  	struct cfdata *cf = match;
  	struct scsibus_attach_args *sa = aux;
  	struct scsi_link *sc_link = sa->sa_sc_link;
+ 	int priority;
  
  	if (cf->cf_loc[0] != -1 && cf->cf_loc[0] != sc_link->target)
  		return 0;
  	if (cf->cf_loc[1] != -1 && cf->cf_loc[1] != sc_link->lun)
  		return 0;
! 	priority = (*cf->cf_driver->cd_match)(parent, match, aux);
! #if 1
! 	/* XXX: hack for zero-length inquiry result */
! 	if ((priority == 0) && (cf->cf_flags & 1) &&
! 		(cf->cf_loc[0] == sc_link->target) &&
! 		(cf->cf_loc[1] == sc_link->lun) )
! 		priority = 1;
! #endif
! 	return (priority);
  }
  
  /*