Print this page
*** NO COMMENTS ***
@@ -1,12 +1,13 @@
/*
- * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
*/
/*
- * Copyright 2005-06 Adaptec, Inc.
- * Copyright (c) 2005-06 Adaptec Inc., Achim Leubner
+ * Copyright (c) 2010-12 PMC-Sierra, Inc.
+ * Copyright (c) 2005-10 Adaptec Inc., Achim Leubner
* Copyright (c) 2000 Michael Smith
* Copyright (c) 2001 Scott Long
* Copyright (c) 2000 BSDi
* All rights reserved.
*
@@ -28,21 +29,26 @@
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
- *
- * $FreeBSD: src/sys/dev/aac/aacvar.h,v 1.47 2005/10/08 15:55:09 scottl Exp $
*/
#ifndef _AAC_H_
#define _AAC_H_
+#pragma ident "@(#)aac.h 1.16 08/01/29 SMI"
+
#ifdef __cplusplus
extern "C" {
#endif
+#ifdef AAC_DEBUG_ALL
+#define AAC_DEBUG
+#define DEBUG /* activate assertions */
+#endif
+
#define AAC_ROUNDUP(x, y) (((x) + (y) - 1) / (y) * (y))
#define AAC_TYPE_DEVO 1
#define AAC_TYPE_ALPHA 2
#define AAC_TYPE_BETA 3
@@ -51,21 +57,22 @@
#ifndef AAC_DRIVER_BUILD
#define AAC_DRIVER_BUILD 1
#endif
#define AAC_DRIVER_MAJOR_VERSION 2
-#define AAC_DRIVER_MINOR_VERSION 2
-#define AAC_DRIVER_BUGFIX_LEVEL 11
+#define AAC_DRIVER_MINOR_VERSION 7
+#define AAC_DRIVER_BUGFIX_LEVEL 1
#define AAC_DRIVER_TYPE AAC_TYPE_RELEASE
#define STR(s) # s
#define AAC_VERSION(a, b, c) STR(a.b.c)
#define AAC_DRIVER_VERSION AAC_VERSION(AAC_DRIVER_MAJOR_VERSION, \
AAC_DRIVER_MINOR_VERSION, \
AAC_DRIVER_BUGFIX_LEVEL)
#define AACOK 0
+#define AACOK2 1
#define AACERR -1
#define AAC_MAX_ADAPTERS 64
/* Definitions for mode sense */
@@ -92,16 +99,19 @@
#else
#define AAC_IMMEDIATE_TIMEOUT 60 /* seconds */
#endif
#define AAC_FWUP_TIMEOUT 180 /* wait up to 3 minutes */
#define AAC_IOCTL_TIMEOUT 900 /* wait up to 15 minutes */
-#define AAC_SYNC_TIMEOUT 900 /* wait up to 15 minutes */
+#define AAC_AIF_TIMEOUT 180 /* up to 3 minutes */
/* Adapter hardware interface types */
#define AAC_HWIF_UNKNOWN 0
#define AAC_HWIF_I960RX 1
#define AAC_HWIF_RKT 2
+#define AAC_HWIF_NARK 3
+#define AAC_HWIF_SRC 4
+#define AAC_HWIF_SRCV 5
#define AAC_TYPE_UNKNOWN 0
#define AAC_TYPE_SCSI 1
#define AAC_TYPE_SATA 2
#define AAC_TYPE_SAS 3
@@ -110,17 +120,10 @@
#define AAC_MS32(d) ((uint32_t)((d) >> 32))
#define AAC_LO32(p64) ((uint32_t *)(p64))
#define AAC_HI32(p64) ((uint32_t *)(p64) + 1)
/*
- * Internal events that will be handled serially by aac_event_thread()
- */
-#define AAC_EVENT_AIF (1 << 0)
-#define AAC_EVENT_TIMEOUT (1 << 1)
-#define AAC_EVENT_SYNCTICK (1 << 2)
-
-/*
* AAC_CMDQ_SYNC should be 0 and AAC_CMDQ_ASYNC be 1 for Sync FIB io
* to be served before async FIB io, see aac_start_waiting_io().
* So that io requests sent by interactive userland commands get
* responded asap.
*/
@@ -154,36 +157,18 @@
uint16_t type; /* hard drive type */
char *vid; /* ASCII data for INQUIRY command vendor id */
char *desc; /* ASCII data for INQUIRY command product id */
};
-/* Device types */
#define AAC_DEV_LD 0 /* logical device */
#define AAC_DEV_PD 1 /* physical device */
-/* Device flags */
-#define AAC_DFLAG_VALID (1 << 0)
-#define AAC_DFLAG_CONFIGURING (1 << 1)
-
-#define AAC_DEV_IS_VALID(dvp) ((dvp)->flags & AAC_DFLAG_VALID)
-#define AAC_P2VTGT(softs, bus, tgt) \
- ((softs)->tgt_max * (bus) + (tgt) + AAC_MAX_LD)
-
-/*
- * Device config change events
- */
-enum aac_cfg_event {
- AAC_CFG_NULL_NOEXIST = 0, /* No change with no device */
- AAC_CFG_NULL_EXIST, /* No change but have device */
- AAC_CFG_ADD, /* Device added */
- AAC_CFG_DELETE, /* Device deleted */
- AAC_CFG_CHANGE /* Device changed */
-};
-
+#define AAC_DEV_NONE 0
+#define AAC_DEV_ONLINE 1
+#define AAC_DEV_OFFLINE 2
struct aac_device {
- int flags;
-
+ uint8_t valid;
uint8_t type;
dev_info_t *dip;
int ncmds[AAC_CMDQ_NUM]; /* outstanding cmds of the device */
int throttle[AAC_CMDQ_NUM]; /* hold IO cmds for the device */
};
@@ -204,10 +189,11 @@
struct aac_nondasd {
struct aac_device dev;
uint32_t bus;
uint32_t tid;
+ uint8_t dtype; /* SCSI device type */
};
/*
* The firmware can support a lot of outstanding commands. Each aac_slot
* is corresponding to one of such commands. It records the command and
@@ -221,106 +207,28 @@
uint64_t fib_phyaddr; /* physical address of FIB memory */
struct aac_cmd *acp; /* command using this slot */
struct aac_fib *fibp; /* virtual address of FIB memory */
};
-/*
- * Scatter-gather list structure defined by HBA hardware
- */
-struct aac_sge {
- uint32_t bcount; /* byte count */
- union {
- uint32_t ad32; /* 32 bit address */
- struct {
- uint32_t lo;
- uint32_t hi;
- } ad64; /* 64 bit address */
- } addr;
-};
-
-/* aac_cmd flags */
-#define AAC_CMD_CONSISTENT (1 << 0)
-#define AAC_CMD_DMA_PARTIAL (1 << 1)
-#define AAC_CMD_DMA_VALID (1 << 2)
-#define AAC_CMD_BUF_READ (1 << 3)
-#define AAC_CMD_BUF_WRITE (1 << 4)
-#define AAC_CMD_SYNC (1 << 5) /* use sync FIB */
-#define AAC_CMD_NO_INTR (1 << 6) /* poll IO, no intr */
-#define AAC_CMD_NO_CB (1 << 7) /* sync IO, no callback */
-#define AAC_CMD_NTAG (1 << 8)
-#define AAC_CMD_CMPLT (1 << 9) /* cmd exec'ed by driver/fw */
-#define AAC_CMD_ABORT (1 << 10)
-#define AAC_CMD_TIMEOUT (1 << 11)
-#define AAC_CMD_ERR (1 << 12)
-#define AAC_CMD_IN_SYNC_SLOT (1 << 13)
-
-struct aac_softstate;
-typedef void (*aac_cmd_fib_t)(struct aac_softstate *, struct aac_cmd *);
-
-struct aac_cmd {
- /*
- * Note: should be the first member for aac_cmd_queue to work
- * correctly.
- */
- struct aac_cmd *next;
- struct aac_cmd *prev;
-
- struct scsi_pkt *pkt;
- int cmdlen;
- int flags;
- uint32_t timeout; /* time when the cmd should have completed */
- struct buf *bp;
- ddi_dma_handle_t buf_dma_handle;
-
- /* For non-aligned buffer and SRB */
- caddr_t abp;
- ddi_acc_handle_t abh;
-
- /* Data transfer state */
- ddi_dma_cookie_t cookie;
- uint_t left_cookien;
- uint_t cur_win;
- uint_t total_nwin;
- size_t total_xfer;
- uint64_t blkno;
- uint32_t bcount; /* buffer size in byte */
- struct aac_sge *sgt; /* sg table */
-
- /* FIB construct function */
- aac_cmd_fib_t aac_cmd_fib;
- /* Call back function for completed command */
- void (*ac_comp)(struct aac_softstate *, struct aac_cmd *);
-
- struct aac_slot *slotp; /* slot used by this command */
- struct aac_device *dvp; /* target device */
-
- /* FIB for this IO command */
- int fib_size; /* size of the FIB xferred to/from the card */
- struct aac_fib *fibp;
-
-#ifdef DEBUG
- uint32_t fib_flags;
-#endif
-};
-
/* Flags for attach tracking */
#define AAC_ATTACH_SOFTSTATE_ALLOCED (1 << 0)
#define AAC_ATTACH_CARD_DETECTED (1 << 1)
#define AAC_ATTACH_PCI_MEM_MAPPED (1 << 2)
#define AAC_ATTACH_KMUTEX_INITED (1 << 3)
-#define AAC_ATTACH_SCSI_TRAN_SETUP (1 << 4)
-#define AAC_ATTACH_COMM_SPACE_SETUP (1 << 5)
-#define AAC_ATTACH_CREATE_DEVCTL (1 << 6)
-#define AAC_ATTACH_CREATE_SCSI (1 << 7)
+#define AAC_ATTACH_HARD_INTR_SETUP (1 << 4)
+#define AAC_ATTACH_SOFT_INTR_SETUP (1 << 5)
+#define AAC_ATTACH_SCSI_TRAN_SETUP (1 << 6)
+#define AAC_ATTACH_COMM_SPACE_SETUP (1 << 7)
+#define AAC_ATTACH_CREATE_DEVCTL (1 << 8)
+#define AAC_ATTACH_CREATE_SCSI (1 << 9)
/* Driver running states */
#define AAC_STATE_STOPPED 0
#define AAC_STATE_RUN (1 << 0)
#define AAC_STATE_RESET (1 << 1)
#define AAC_STATE_QUIESCED (1 << 2)
#define AAC_STATE_DEAD (1 << 3)
-#define AAC_STATE_INTR (1 << 4)
/*
* Flags for aac firmware
* Note: Quirks are only valid for the older cards. These cards only supported
* old comm. Thus they are not valid for any cards that support new comm.
@@ -335,33 +243,37 @@
#define AAC_FLAGS_ARRAY_64BIT (1 << 6) /* 64-bit array size */
#define AAC_FLAGS_LBA_64BIT (1 << 7) /* 64-bit LBA supported */
#define AAC_FLAGS_17SG (1 << 8) /* quirk: 17 scatter gather maximum */
#define AAC_FLAGS_34SG (1 << 9) /* quirk: 34 scatter gather maximum */
#define AAC_FLAGS_NONDASD (1 << 10) /* non-DASD device supported */
-#define AAC_FLAGS_BRKUP (1 << 11) /* pkt breakup support */
-#define AAC_FLAGS_JBOD (1 << 12) /* JBOD mode support */
+#define AAC_FLAGS_NEW_COMM_TYPE1 (1 << 11) /* New comm. type1 supported */
+#define AAC_FLAGS_NEW_COMM_TYPE2 (1 << 12) /* New comm. type2 supported */
+#define AAC_FLAGS_NEW_COMM_TYPE34 (1 << 13) /* New comm. type3-4 */
+#define AAC_FLAGS_SYNC_MODE (1 << 14) /* Sync. transfer mode */
struct aac_softstate;
struct aac_interface {
+ void (*aif_set_intr)(struct aac_softstate *, int enable);
+ void (*aif_status_clr)(struct aac_softstate *, int mask);
+ int (*aif_status_get)(struct aac_softstate *);
+ void (*aif_notify)(struct aac_softstate *, int val);
int (*aif_get_fwstatus)(struct aac_softstate *);
int (*aif_get_mailbox)(struct aac_softstate *, int);
void (*aif_set_mailbox)(struct aac_softstate *, uint32_t,
uint32_t, uint32_t, uint32_t, uint32_t);
+ int (*aif_send_command)(struct aac_softstate *, struct aac_slot *);
};
-#define AAC_CTXFLAG_FILLED 0x01 /* aifq's full for this ctx */
-#define AAC_CTXFLAG_RESETED 0x02
-
struct aac_fib_context {
uint32_t unique;
int ctx_idx;
int ctx_filled; /* aifq is full for this fib context */
- int ctx_flags;
- int ctx_overrun;
struct aac_fib_context *next, *prev;
};
+typedef void (*aac_cmd_fib_t)(struct aac_softstate *, struct aac_cmd *);
+
#define AAC_VENDOR_LEN 8
#define AAC_PRODUCT_LEN 16
struct aac_softstate {
int card; /* index to aac_cards */
@@ -371,58 +283,62 @@
uint16_t devid; /* device id */
uint16_t subsysid; /* sub system id */
char vendor_name[AAC_VENDOR_LEN + 1];
char product_name[AAC_PRODUCT_LEN + 1];
uint32_t support_opt; /* firmware features */
- uint32_t support_opt2;
- uint32_t feature_bits;
uint32_t atu_size; /* actual size of PCI mem space */
uint32_t map_size; /* mapped PCI mem space size */
uint32_t map_size_min; /* minimum size of PCI mem that must be */
/* mapped to address the card */
int flags; /* firmware features enabled */
int instance;
dev_info_t *devinfo_p;
scsi_hba_tran_t *hba_tran;
int slen;
- int legacy; /* legacy device naming */
- uint32_t dma_max; /* for buf breakup */
+ int legacy;
+ int sync_mode;
+ int no_sgl_conv;
/* DMA attributes */
ddi_dma_attr_t buf_dma_attr;
ddi_dma_attr_t addr_dma_attr;
/* PCI spaces */
- ddi_device_acc_attr_t acc_attr;
- ddi_device_acc_attr_t reg_attr;
- ddi_acc_handle_t pci_mem_handle;
- uint8_t *pci_mem_base_vaddr;
- uint32_t pci_mem_base_paddr;
+ ddi_acc_handle_t pci_mem_handle[AAC_MAX_MEM_SPACE];
+ char *pci_mem_base_vaddr[AAC_MAX_MEM_SPACE];
+ uint32_t pci_mem_base_paddr[AAC_MAX_MEM_SPACE];
struct aac_interface aac_if; /* adapter hardware interface */
- struct aac_cmd sync_ac; /* sync FIB */
+ struct aac_slot *sync_slot; /* sync FIB */
+ int sync_slot_busy;
+ struct aac_slot *sync_mode_slot;
/* Communication space */
struct aac_comm_space *comm_space;
ddi_acc_handle_t comm_space_acc_handle;
ddi_dma_handle_t comm_space_dma_handle;
uint32_t comm_space_phyaddr;
+ /* New Comm. type1: response buffer index */
+ uint32_t aac_host_rrq_idx;
+
/* Old Comm. interface: message queues */
struct aac_queue_table *qtablep;
struct aac_queue_entry *qentries[AAC_QUEUE_COUNT];
/* New Comm. interface */
uint32_t aac_max_fibs; /* max. FIB count */
uint32_t aac_max_fib_size; /* max. FIB size */
uint32_t aac_sg_tablesize; /* max. sg count from host */
uint32_t aac_max_sectors; /* max. I/O size from host (blocks) */
+ uint32_t aac_max_aif; /* max. AIF count */
aac_cmd_fib_t aac_cmd_fib; /* IO cmd FIB construct function */
aac_cmd_fib_t aac_cmd_fib_scsi; /* SRB construct function */
+ ddi_iblock_cookie_t iblock_cookie;
ddi_softintr_t softint_id; /* soft intr */
kmutex_t io_lock;
int state; /* driver state */
@@ -429,10 +345,12 @@
struct aac_container containers[AAC_MAX_LD];
int container_count; /* max container id + 1 */
struct aac_nondasd *nondasds;
uint32_t bus_max; /* max FW buses exposed */
uint32_t tgt_max; /* max FW target per bus */
+ uint32_t aac_feature_bits;
+ uint32_t aac_support_opt2;
/*
* Command queues
* Each aac command flows through wait(or wait_sync) queue,
* busy queue, and complete queue sequentially.
@@ -446,58 +364,35 @@
int total_slots; /* total slots allocated */
int total_fibs; /* total FIBs allocated */
struct aac_slot *io_slot; /* static list for allocated slots */
struct aac_slot *free_io_slot_head;
+ timeout_id_t timeout_id; /* for timeout daemon */
+
kcondvar_t event; /* for ioctl_send_fib() and sync IO */
- kcondvar_t sync_fib_cv; /* for sync_fib_slot_bind/release */
int bus_ncmds[AAC_CMDQ_NUM]; /* total outstanding async cmds */
int bus_throttle[AAC_CMDQ_NUM]; /* hold IO cmds for the bus */
int ndrains; /* number of draining threads */
timeout_id_t drain_timeid; /* for outstanding cmd drain */
kcondvar_t drain_cv; /* for quiesce drain */
- /* Internal timer */
- kmutex_t time_mutex;
- timeout_id_t timeout_id; /* for timeout daemon */
- uint32_t timebase; /* internal timer in seconds */
- uint32_t time_sync; /* next time to sync with firmware */
- uint32_t time_out; /* next time to check timeout */
- uint32_t time_throttle; /* next time to restore throttle */
-
- /* Internal events handling */
- kmutex_t ev_lock;
- int events;
- kthread_t *event_thread; /* for AIF & timeout */
- kcondvar_t event_wait_cv;
- kcondvar_t event_disp_cv;
-
/* AIF */
kmutex_t aifq_mutex; /* for AIF queue aifq */
- kcondvar_t aifq_cv;
+ kcondvar_t aifv;
union aac_fib_align aifq[AAC_AIFQ_LENGTH];
int aifq_idx; /* slot for next new AIF */
int aifq_wrap; /* AIF queue has ever been wrapped */
- struct aac_fib_context aifctx; /* sys aif ctx */
- struct aac_fib_context *fibctx_p;
+ struct aac_fib_context *fibctx;
int devcfg_wait_on; /* AIF event waited for rescan */
int fm_capabilities;
+ ddi_taskq_t *taskq;
- /* MSI specific fields */
- ddi_intr_handle_t *htable; /* For array of interrupts */
- int intr_type; /* What type of interrupt */
- int intr_cnt; /* # of intrs count returned */
- int intr_size;
- uint_t intr_pri; /* Interrupt priority */
- int intr_cap; /* Interrupt capabilities */
-
-#ifdef DEBUG
+#ifdef AAC_DEBUG
/* UART trace printf variables */
uint32_t debug_flags; /* debug print flags bitmap */
- uint32_t debug_fib_flags; /* debug FIB print flags bitmap */
uint32_t debug_fw_flags; /* FW debug flags */
uint32_t debug_buf_offset; /* offset from DPMEM start */
uint32_t debug_buf_size; /* FW debug buffer size in bytes */
uint32_t debug_header_size; /* size of debug header */
#endif
@@ -509,14 +404,98 @@
* re-initialization.
*/
_NOTE(SCHEME_PROTECTS_DATA("stable data", aac_softstate::{flags slen \
buf_dma_attr pci_mem_handle pci_mem_base_vaddr \
comm_space_acc_handle comm_space_dma_handle aac_max_fib_size \
- aac_sg_tablesize aac_cmd_fib aac_cmd_fib_scsi debug_flags bus_max tgt_max}))
+ aac_sg_tablesize aac_cmd_fib aac_cmd_fib_scsi debug_flags bus_max tgt_max \
+ aac_feature_bits}))
-#ifdef DEBUG
+/*
+ * Scatter-gather list structure defined by HBA hardware
+ */
+struct aac_sge {
+ uint32_t bcount; /* byte count */
+ union {
+ uint32_t ad32; /* 32 bit address */
+ struct {
+ uint32_t lo;
+ uint32_t hi;
+ } ad64; /* 64 bit address */
+ } addr;
+};
+/* aac_cmd flags */
+#define AAC_CMD_CONSISTENT (1 << 0)
+#define AAC_CMD_DMA_PARTIAL (1 << 1)
+#define AAC_CMD_DMA_VALID (1 << 2)
+#define AAC_CMD_BUF_READ (1 << 3)
+#define AAC_CMD_BUF_WRITE (1 << 4)
+#define AAC_CMD_SYNC (1 << 5) /* use sync FIB */
+#define AAC_CMD_NO_INTR (1 << 6) /* poll IO, no intr */
+#define AAC_CMD_NO_CB (1 << 7) /* sync IO, no callback */
+#define AAC_CMD_NTAG (1 << 8)
+#define AAC_CMD_CMPLT (1 << 9) /* cmd exec'ed by driver/fw */
+#define AAC_CMD_ABORT (1 << 10)
+#define AAC_CMD_TIMEOUT (1 << 11)
+#define AAC_CMD_ERR (1 << 12)
+#define AAC_CMD_AIF (1 << 13)
+#define AAC_CMD_AIF_NOMORE (1 << 14)
+#define AAC_CMD_FASTRESP (1 << 15)
+
+#define AAC_MAXSEGMENTS 16
+
+struct aac_cmd {
+ /*
+ * Note: should be the first member for aac_cmd_queue to work
+ * correctly.
+ */
+ struct aac_cmd *next;
+ struct aac_cmd *prev;
+
+ struct scsi_pkt *pkt;
+ int cmdlen;
+ int flags;
+ uint32_t timeout; /* time when the cmd should have completed */
+ struct buf *bp;
+
+ uint_t segment_cnt;
+ uint_t left_cookien;
+ struct {
+ ddi_dma_handle_t buf_dma_handle;
+ /* For non-aligned buffer and SRB */
+ caddr_t abp;
+ ddi_acc_handle_t abh;
+ uint32_t abp_size;
+ size_t abp_real_size;
+
+ /* Data transfer state */
+ ddi_dma_cookie_t cookie;
+ uint_t left_cookien;
+ struct aac_sge *sgt;
+ } segments[AAC_MAXSEGMENTS];
+ uint_t cur_segment;
+ uint_t cur_win;
+ uint_t total_nwin;
+ size_t total_xfer;
+ uint64_t blkno;
+ uint32_t bcount; /* buffer size in byte */
+ struct aac_sge *sgt; /* sg table */
+
+ /* FIB construct function */
+ aac_cmd_fib_t aac_cmd_fib;
+ /* Call back function for completed command */
+ void (*ac_comp)(struct aac_softstate *, struct aac_cmd *);
+
+ struct aac_slot *slotp; /* slot used by this command */
+ struct aac_device *dvp; /* target device */
+
+ /* FIB for this IO command */
+ int fib_size; /* size of the FIB xferred to/from the card */
+ struct aac_fib *fibp;
+};
+
+#ifdef AAC_DEBUG
#define AACDB_FLAGS_MASK 0x0000ffff
#define AACDB_FLAGS_KERNEL_PRINT 0x00000001
#define AACDB_FLAGS_FW_PRINT 0x00000002
#define AACDB_FLAGS_NO_HEADERS 0x00000004
@@ -526,27 +505,13 @@
#define AACDB_FLAGS_SCMD 0x00000080
#define AACDB_FLAGS_AIF 0x00000100
#define AACDB_FLAGS_FIB 0x00000200
#define AACDB_FLAGS_IOCTL 0x00000400
-/*
- * Flags for FIB print
- */
-/* FIB sources */
-#define AACDB_FLAGS_FIB_SCMD 0x00000001
-#define AACDB_FLAGS_FIB_IOCTL 0x00000002
-#define AACDB_FLAGS_FIB_SRB 0x00000004
-#define AACDB_FLAGS_FIB_SYNC 0x00000008
-/* FIB components */
-#define AACDB_FLAGS_FIB_HEADER 0x00000010
-/* FIB states */
-#define AACDB_FLAGS_FIB_TIMEOUT 0x00000100
-
extern uint32_t aac_debug_flags;
extern int aac_dbflag_on(struct aac_softstate *, int);
extern void aac_printf(struct aac_softstate *, uint_t, const char *, ...);
-extern void aac_print_fib(struct aac_softstate *, struct aac_slot *);
#define AACDB_PRINT(s, lev, ...) { \
if (aac_dbflag_on((s), AACDB_FLAGS_MISC)) \
aac_printf((s), (lev), __VA_ARGS__); }
@@ -559,32 +524,34 @@
aac_printf((s), CE_NOTE, __VA_ARGS__); }
#define DBCALLED(s, n) { \
if (aac_dbflag_on((s), AACDB_FLAGS_FUNC ## n)) \
aac_printf((s), CE_NOTE, "--- %s() called ---", __func__); }
+#else
+#define AACDB_PRINT(s, lev, ...)
+#define AACDB_PRINT_IOCTL(s, ...)
+#define AACDB_PRINT_TRAN(s, ...)
+#define DBCALLED(s, n)
+#endif /* AAC_DEBUG */
+#ifdef AAC_DEBUG_ALL
+extern void aac_print_fib(struct aac_softstate *, struct aac_fib *);
+
#define AACDB_PRINT_SCMD(s, x) { \
if (aac_dbflag_on((s), AACDB_FLAGS_SCMD)) aac_print_scmd((s), (x)); }
#define AACDB_PRINT_AIF(s, x) { \
if (aac_dbflag_on((s), AACDB_FLAGS_AIF)) aac_print_aif((s), (x)); }
#define AACDB_PRINT_FIB(s, x) { \
if (aac_dbflag_on((s), AACDB_FLAGS_FIB)) aac_print_fib((s), (x)); }
-
-#else /* DEBUG */
-
-#define AACDB_PRINT(s, lev, ...)
-#define AACDB_PRINT_IOCTL(s, ...)
-#define AACDB_PRINT_TRAN(s, ...)
+#else
#define AACDB_PRINT_FIB(s, x)
#define AACDB_PRINT_SCMD(s, x)
#define AACDB_PRINT_AIF(s, x)
-#define DBCALLED(s, n)
+#endif /* AAC_DEBUG_ALL */
-#endif /* DEBUG */
-
#ifdef __cplusplus
}
#endif
#endif /* _AAC_H_ */