- 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
This commit is contained in:
Jung-uk Kim 2009-12-08 05:35:51 +00:00
parent 9766cbd144
commit 23e876b121
3 changed files with 6 additions and 10 deletions

View File

@ -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;
}

View File

@ -260,8 +260,11 @@ aac_cam_action(struct cam_sim *sim, union ccb *ccb)
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 */

View File

@ -56,13 +56,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.