Author: jkim
Date: Tue Dec  8 05:35:51 2009
New Revision: 200251
URL: http://svn.freebsd.org/changeset/base/200251

Log:
  - Try pre-allocating all FIBs upfront.  Previously we tried pre-allocating
  128 FIBs first and allocated more later if necessary.  Remove now unused
  definitions from the header file[1].
  - Force sequential bus scanning.  It seems parallel scanning is in fact
  slower and causes more harm than good[1].  Adjust a comment to reflect that.
  
  PR:           kern/141269
  Submitted by: Alexander Sack (asack at niksun dot com)[1]
  Reviewed by:  scottl

Modified:
  head/sys/dev/aac/aac.c
  head/sys/dev/aac/aac_cam.c
  head/sys/dev/aac/aacvar.h

Modified: head/sys/dev/aac/aac.c
==============================================================================
--- head/sys/dev/aac/aac.c      Tue Dec  8 05:32:44 2009        (r200250)
+++ head/sys/dev/aac/aac.c      Tue Dec  8 05:35:51 2009        (r200251)
@@ -604,7 +604,7 @@ aac_alloc(struct aac_softc *sc)
        TAILQ_INIT(&sc->aac_fibmap_tqh);
        sc->aac_commands = malloc(sc->aac_max_fibs * sizeof(struct aac_command),
                                  M_AACBUF, M_WAITOK|M_ZERO);
-       while (sc->total_fibs < AAC_PREALLOCATE_FIBS) {
+       while (sc->total_fibs < sc->aac_max_fibs) {
                if (aac_alloc_commands(sc) != 0)
                        break;
        }

Modified: head/sys/dev/aac/aac_cam.c
==============================================================================
--- head/sys/dev/aac/aac_cam.c  Tue Dec  8 05:32:44 2009        (r200250)
+++ head/sys/dev/aac/aac_cam.c  Tue Dec  8 05:35:51 2009        (r200251)
@@ -260,8 +260,11 @@ aac_cam_action(struct cam_sim *sim, unio
                cpi->hba_inquiry = PI_WIDE_16;
                cpi->target_sprt = 0;
 
-               /* Resetting via the passthrough causes problems. */
-               cpi->hba_misc = PIM_NOBUSRESET;
+               /*
+                * Resetting via the passthrough or parallel bus scan
+                * causes problems.
+                */
+               cpi->hba_misc = PIM_NOBUSRESET | PIM_SEQSCAN;
                cpi->hba_eng_cnt = 0;
                cpi->max_target = camsc->inf->TargetsPerBus;
                cpi->max_lun = 8;       /* Per the controller spec */

Modified: head/sys/dev/aac/aacvar.h
==============================================================================
--- head/sys/dev/aac/aacvar.h   Tue Dec  8 05:32:44 2009        (r200250)
+++ head/sys/dev/aac/aacvar.h   Tue Dec  8 05:35:51 2009        (r200251)
@@ -57,13 +57,6 @@
 #define AAC_ADAPTER_FIBS       8
 
 /*
- * FIBs are allocated in page-size chunks and can grow up to the 512
- * limit imposed by the hardware.
- */
-#define AAC_PREALLOCATE_FIBS   128
-#define AAC_NUM_MGT_FIB                8
-
-/*
  * The controller reports status events in AIFs.  We hang on to a number of
  * these in order to pass them out to user-space management tools.
  */
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to