Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 31 Jul 2000 23:51:05 -0700 (PDT)
From:      Matt Jacob <mjacob@FreeBSD.org>
To:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   cvs commit: src/sys/dev/isp isp.c
Message-ID:  <200008010651.XAA60353@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
mjacob      2000/07/31 23:51:05 PDT

  Modified files:
    sys/dev/isp          isp.c 
  Log:
  Major whacking for core version 2.0. A major motivator for 2.0 and these
  changes is that there's now a Solaris port of this driver, so some things
  in the core version had to change (not much, but some).
  
  In order, from the top.....:
  
  A lot of error strings are gathered in one place at the head of the file.
  This caused me to rewrite them to look consistent (with respect to
  things like 'Port 0x%' and 'Target %d' and 'Loop ID 0x%x'.
  
  The major mailbox function, isp_mboxcmd, now takes a third argument,
  which is a mask that selectively says whether mailbox command failures
  will be logged. This will substantially reduce a lot of spurious noise
  from the driver.
  
  At the first run through isp_reset we used to try and get the current
  running firmware's revision by issuing a mailbox command. This would
  invariably fail on alpha's with anything but a Qlogic 1040 since SRM
  doesn't *start* the f/w on these cards. Instead, we now see whether we're
  sitting ROM state before trying to get a running BIOS loaded f/w version.
  
  All CFGPRINTF/PRINTF/IDPRINTF macros have been replaced with calls to
  isp_prt. There are seperate print levels that can be independently
  set (see ispvar.h), which include debugging, etc.
  
  All SYS_DELAY macros are now USEC_DELAY macros. RQUEST_QUEUE_LEN and
  RESULT_QUEUE_LEN now take ispsoftc as a parameter- the Fibre Channel
  cards and the Ultra2/Ultra3 cards can have 16 bit request queue entry
  indices, so we can make a 1024 entry index for them instead of the
  256 entries we've had until now.
  
  A major change it to fix isp_fclink_test to actually only wait the
  delay of time specified in the microsecond argument being passed.
  The problem has always been that a call to isp_mboxcmd to get he
  current firmware state takes an unknown (sometimes long) amount of
  time- this is if the firmware is busy doing PLOGIs while we ask
  it what's up. So, up until now, the usdelay argument has been
  a joke. The net effect has been that if you boot without being plugged
  into a good loop or into a switch, you hang. Massively annonying, and
  hard to fix because the actual time delta was impossible to know
  from just guessing. Now, using the new GET_NANOTIME macros, a precise
  and measured amount of USEC_DELAY calls are done so that only the
  specified usecdelay is allowed to pass. This means that if the initial
  startup of the firmware if followed by a call from isp_freebsd.c:isp_attach
  to isp_control(isp, ISP_FCLINK_TEST, &tdelay) where tdelay is 2 * 1000000,
  no more than two seconds will actually elapse before we leave concluding
  that the cable is unhooked. Jeez. About time....
  
  Change the ispscsicmd entry point to isp_start, and the XS_CMD_DONE
  macro to a call to the platform supplied isp_done (sane naming).
  
  Limit our size of request queue completions we'll look at at interrupt
  time. Since we've increased the size of the Request Queue (and the
  size of the Response Queue proportionally), let's not create an
  interrupt stack overflow by having to keep a max completion list
  (forw links are not an option because this is common code with
  some platforms that don't have link space in their XS_T structures).
  A limit of 32 is not unreasonable- I doubt there'd be even this many
  request queue completions at a time- remember, most boards now use
  fast posting for normal command completion instead of filling out
  response queue entries.
  
  In the isp_mboxcmd cleanup, also create an array of command
  names so that "ABOUT FIRMWARE" can be printed instead of "CMD #8".
  
  Remove the isp_lostcmd function- it's been deprecated for a while.
  Remove isp_dumpregs- the ISP_DUMPREGS goes to the specific bus
  register dump fucntion.
  
  Various other cleanups.
  
  Revision  Changes    Path
  1.49      +982 -940  src/sys/dev/isp/isp.c



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




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