Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Feb 1997 19:58:25 -0800 (PST)
From:      "Justin T. Gibbs" <gibbs>
To:        CVS-committers, cvs-all, cvs-sys
Subject:   cvs commit:  src/sys/dev/aic7xxx aic7xxx.seq src/sys/i386/scsi aic7xxx.c
Message-ID:  <199702280358.TAA11960@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
gibbs       97/02/27 19:58:24

  Modified:    sys/dev/aic7xxx  aic7xxx.seq
  Log:
  No longer clear all interrupt status when the sequencer is reset.  The only
  time that we really want to do this is when a bus reset causes the sequencer
  to be reset and the kernel driver now handles this case.
  
  Remove some reordering in the select2 routine that wasn't necessary.
  It was an experimental fix for a race condition I fixed elsewhere, and
  confused the code flow.
  
  Don't bother looping on a parity error in the mesgout loop since we can't
  see parity errors on out phases.
  
  Clean up the mesgin_identify code.  In the old days, we "snooped" for tag
  messages and used this as an indicator of whether or not the target was
  using tagged transactions.  This forced the sequencer to ack the identify
  before determining if a valid SCB matched the target meaning that an abort
  message to handle this case might not be seen before the target entered a
  data phase.  Since we can determin the "tagged-ness" of a target by looking
  it up in the array of busy targets (recently introduced), we can determine
  this up front simplifying the search code as well as ensuring we can follow
  the SCSI specs method for rejecting a reselection.
  
  When an SCB is placed on the free list, set its SCB_TAG to SCB_LIST_NULL.
  This makes it much easier for the kernel driver to find active SCBs on the
  card during error recovery.
  
  Revision  Changes    Path
  1.63      +29 -40    src/sys/dev/aic7xxx/aic7xxx.seq

  Modified:    sys/i386/scsi  aic7xxx.c
  Log:
  Functionalize some code that was repeated throughout the driver.
  
  Fix a bug in the initialization of the busreset_args that left the B channel
  args unitialized and the A channel ones initialized to B's vales.  Oops.
  
  If we get a NO_IDENT sequencer interrupt (the reconnecting target didn't
  issue an identify or botched it), reset the bus instead of panicing.  We
  should be able to recover from this error.
  
  In the AWAITING_MSG handler, order messages by severity.  Since the message
  we send is based on a flag on the SCB, it is possible, during error recovery,
  to get more than one flag set.  This is fine since any time a new flag is
  set, it is meant to take us to a more draconian level of recovery.  This
  also ensures that we don't lose any "history" of what the command has gone
  through.
  
  When we reset the bus, reset the "send ordered tag" bitmask.
  
  Clear some additional interrupt status when we perform a bus reset.
  
  Revision  Changes    Path
  1.104     +78 -51    src/sys/i386/scsi/aic7xxx.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199702280358.TAA11960>