diff options
author | mav <mav@FreeBSD.org> | 2012-05-12 13:55:36 +0000 |
---|---|---|
committer | mav <mav@FreeBSD.org> | 2012-05-12 13:55:36 +0000 |
commit | 693ceab23e831ec3a19ac0daa29f797e2596fb93 (patch) | |
tree | d0c5e4b9d4ea67d48c8380b39bd48b3506eb73a4 /sys/dev/ata | |
parent | 6a6a18bf5cd7caebec476234cbf2b10a703e7716 (diff) | |
download | FreeBSD-src-693ceab23e831ec3a19ac0daa29f797e2596fb93.zip FreeBSD-src-693ceab23e831ec3a19ac0daa29f797e2596fb93.tar.gz |
Add two functions xpt_batch_start() and xpt_batch_done() to the CAM SIM KPI
to allow drivers to handle request completion directly without passing
them to the CAM SWI thread removing extra context switch.
Modify all ATA/SATA drivers to use them.
Reviewed by: gibbs, ken
MFC after: 2 weeks
Diffstat (limited to 'sys/dev/ata')
-rw-r--r-- | sys/dev/ata/ata-all.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/dev/ata/ata-all.c b/sys/dev/ata/ata-all.c index 9ea25c0..3caad01 100644 --- a/sys/dev/ata/ata-all.c +++ b/sys/dev/ata/ata-all.c @@ -544,9 +544,11 @@ ata_interrupt(void *data) struct ata_channel *ch = (struct ata_channel *)data; mtx_lock(&ch->state_mtx); + xpt_batch_start(ch->sim); #endif ata_interrupt_locked(data); #ifdef ATA_CAM + xpt_batch_done(ch->sim); mtx_unlock(&ch->state_mtx); #endif } |