aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/isp/ispvar.h
diff options
context:
space:
mode:
authorAlexander Motin <mav@FreeBSD.org>2016-04-12 14:19:19 +0000
committerAlexander Motin <mav@FreeBSD.org>2016-04-12 14:19:19 +0000
commit4ff970c46236857f6a260a617044516a05ea4694 (patch)
treeb462101073da292d02baa274f4499c7efb140cac /sys/dev/isp/ispvar.h
parent0d63fc3ed8bac59f7966921bfacf2cc3899b1ed3 (diff)
downloadsrc-4ff970c46236857f6a260a617044516a05ea4694.tar.gz
src-4ff970c46236857f6a260a617044516a05ea4694.zip
Allocate separate DMA area for synchronous IOCB execution.
Usually IOCBs should be put on queue for asynchronous processing and should not require additional DMA memory. But there are some cases like aborts and resets that for external reasons has to be synchronous. Give those cases separate 2*64 byte DMA area to decouple them from other DMA scratch area users, using it for asynchronous requests.
Notes
Notes: svn path=/head/; revision=297858
Diffstat (limited to 'sys/dev/isp/ispvar.h')
-rw-r--r--sys/dev/isp/ispvar.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/isp/ispvar.h b/sys/dev/isp/ispvar.h
index a7184e24e9d4..f0f8cf82cce7 100644
--- a/sys/dev/isp/ispvar.h
+++ b/sys/dev/isp/ispvar.h
@@ -130,6 +130,8 @@ struct ispmdvec {
#define SYNC_SFORCPU 3 /* scratch, sync for CPU */
#define SYNC_REG 4 /* for registers */
#define SYNC_ATIOQ 5 /* atio result queue (24xx) */
+#define SYNC_IFORDEV 6 /* synchrounous IOCB, sync for ISP */
+#define SYNC_IFORCPU 7 /* synchrounous IOCB, sync for CPU */
/*
* Request/Response Queue defines and macros.
@@ -596,6 +598,12 @@ struct ispsoftc {
isp_hdl_t *isp_xffree;
/*
+ * DMA mapped in area for synchronous IOCB requests.
+ */
+ void * isp_iocb;
+ XS_DMA_ADDR_T isp_iocb_dma;
+
+ /*
* request/result queue pointers and DMA handles for them.
*/
void * isp_rquest;