FreeBSD kernel pms device code
agtiapi.h
Go to the documentation of this file.
1/*******************************************************************************
2**
3*Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
4*
5*Redistribution and use in source and binary forms, with or without modification, are permitted provided
6*that the following conditions are met:
7*1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8*2. Redistributions in binary form must reproduce the above copyright notice,
9*this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10*
11*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
12*
13*INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
14*ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
15*SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
16*OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
17*WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
18*THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
19**
20* $FreeBSD$
21**
22*******************************************************************************/
23
29#ifdef AGTIAPI_ISCSI
30#include "cmtypes.h"
31#include "bktypes.h"
32#endif
33#ifdef FDS_DM
35#endif
39#include <vm/uma.h>
40
41typedef u_int32_t atomic_t;
42
43#define atomic_set(p,v) (*(p) = (v))
44#define atomic_read(p) (*(p))
45#define atomic_inc(p) atomic_add_int(p,1)
46#define atomic_dec(p) atomic_subtract_int(p,1)
47#define atomic_add(n,p) atomic_add_int(p,n)
48#define atomic_sub(n,p) atomic_subtract_int(p,n)
49
50#define AGSCSI_INIT_XCHG_LEN sizeof(tiScsiInitiatorRequest_t)
51#define AGSMP_INIT_XCHG_LEN sizeof(tiSMPFrame_t)
52#define CMND_DMA_UNMAP( pCard, cmnd )
53
54
55// define PMC lean flags used for bit operations to track dev listing state
56#define DPMC_LEANFLAG_NOAGDEVYT 2 // agDev handle not present yet
57#define DPMC_LEANFLAG_NOWWNLIST 4 // WWNList entry not present
58#define DPMC_LEANFLAG_AGDEVUSED 8 // agDev handle used
59#define DPMC_LEANFLAG_PDEVSUSED 16 // pDevice slot used
60
61typedef bus_dmamap_t dma_addr_t; // ##
62
63#define timer_list callout
64
65typedef struct ccb_hdr_s {
66 void *next;
68
69
70typedef struct _CCB {
83 caddr_t pSenseData; // auto request sense data
84 tiSgl_t *sgList; // [AGTIAPI_MAX_DMA_SEGS]
85 bus_addr_t tisgl_busaddr;
86 // dma_addr_t sglDmaHandle; // ## dmaHandle for sgList
88 struct _CCB *pccbNext;
89 struct _CCB *pccbChainNext; // forward link pointers
90 struct scsi_cmnd *cmd; // call back owner pointer
91 struct _CCB *pccbIO; // for TM TARGET_RESET
97#ifdef CCBUILD_TEST_EPL
98 caddr_t epl_ptr;
99 dma_addr_t epl_dma_ptr;
100#endif
101
102#ifdef CCBUILD_TEST_DPL
103 caddr_t dplPtr;
104 dma_addr_t dplDma;
105#endif
106
107#if defined (PERF_COUNT)
108 u64 startCmnd; // temp var to hold cmnd arrival
109#endif
110#ifdef ENABLE_NONSTANDARD_SECTORS
111 caddr_t metaPtr;
112 dma_addr_t dmaHandleMeta;
113#endif
114#ifdef ENABLE_SATA_DIF
115 caddr_t holePtr;
116 dma_addr_t dmaHandleHole;
117 int scaling_done;
118#endif
119
120#ifdef SUPER_FAST_IO_TEST
121 agsaIORequest_t IoContext;
122 agsaSASRequestBody_t sasRequestBody;
123 u32 reqType;
124 u32 queueId;
125 agsaSgl_t *sgl; // Used for esgl
126#endif
127 //new
128 bus_dmamap_t CCB_dmamap;
129 union ccb *ccb; /* replacement of struct scsi_cmnd */
131
133
134
135#define AGTIAPI_CCB_SIZE sizeof(struct _CCB)
136
137/*
138typedef struct _ag_portal_data
139{
140 ag_portal_info_t portalInfo;
141 void *pCard;
142} ag_portal_data_t;
143*/
144
145typedef enum {
149 } dek_table_e;
150
151typedef struct ag_encrypt_map_s {
152 unsigned long long lbaMin;
153 unsigned long long lbaMax;
159 struct list_head *list;
161
162typedef struct ag_kek_table_s {
163 #define KEK_TABLE_MAX_ENTRY 8
167
168typedef struct ag_dek_kek_map_s {
171
172/*
173** There is no LUN filed for the device structure.
174** The reason is if the device is a single lun device, it
175** will be lun 0. If is a multi-lun device such as EMC
176** or Galaxi, only one device structure is associated with
177** the device since only one device handler is provided.
178*/
179typedef struct _ag_device {
180//#ifdef HOTPLUG_SUPPORT
181 /* used for hot-plug, temporarily either in new or removed devices list */
183//#endif
189 void *pCard;
192#ifdef HOTPLUG_SUPPORT
193 struct scsi_device *sdev;
194#endif
203
204
205/*
206** Use an array of these structures to map from assigned
207** device target id (which is the index into the array) to
208** the entry in the bd_devlist.
209**
210** Please note that an extra entry has been added to both
211** the bd_devlist array and the bd_WWN_list. This last
212** entry is the "no mapping" entry -- used for initialization
213** and to indicate an inactive entry.
214*/
215typedef struct _ag_tgt_map {
221 int sasLrIdx; // Index into SAS Local/Remote list (part of extend-portID)
222 uint32_t devRemoved; // when set, ghost target device is timing out
224
225
226// use an array of this struct to map local/remote dyads to ag_tgt_map_t
227// entries
228typedef struct _ag_slr_map {
234
235
236#ifdef LINUX_PERBI_SUPPORT
237// Use a list of these structures to hold target-WWN
238// mapping assignments on the boot line during driver
239// loading.
240typedef struct _ag_mapping_s
241{
242 struct _ag_mapping_s *next;
243 U16 targetId;
244 U08 cardNo;
245 U08 targetLen;
246 U08 targetName[AGTIAPI_MAX_NAME];
247} ag_mapping_t;
248#endif
249
250typedef struct _ag_portal_data
251{
253 void *pCard;
255
256
257// The softc holds our per-instance data
259 device_t my_dev;
260 struct cdev *my_cdev;
261 struct cam_sim *sim;
262 struct cam_path *path;
263 struct resource *resirq;
265
267 struct resource *irq[MAX_MSIX_NUM_VECTOR];
269
270 // timer stuff; mc lean
271 bus_dma_tag_t buffer_dmat;
272 struct cam_devq *devq;
273 struct callout OS_timer;
274 struct mtx OS_timer_lock;
275 struct callout IO_timer;
276 struct mtx IO_timer_lock;
277 struct callout devRmTimer;
278 struct mtx devRmTimerLock;
279 uint16_t rmChkCt;
280
281 // for tiSgl_t memory
283 bus_addr_t tisgl_busaddr;
284 bus_dma_tag_t tisgl_dmat;
285 bus_dmamap_t tisgl_map;
286
287 // for ostiAllocMemory() pre allocation pool
288 void *osti_mem;
289 bus_addr_t osti_busaddr;
290 bus_dma_tag_t osti_dmat;
291 bus_dmamap_t osti_mapp;
292
293 // pre-allocation pool
294 U32 typhn; // size needed
295 void *typh_mem;
296 bus_addr_t typh_busaddr;
297 bus_dma_tag_t typh_dmat;
298 bus_dmamap_t typh_mapp;
301
302
303 // begin ag_card_t references (AKA pCard)
304 struct Scsi_Host *pHost;
305 tiRoot_t tiRoot; // tiRoot for the card
308 U32 flags; // keep track of state
312 U08 hostNo; // host number signed by OS
313 U08 cardNo; // host no signed by driver
314 U16 tgtCount; // total target devices
315 U16 badTgtCount; // total bad target devices
316 U16 activeCCB; // number of active CCB
317 U32 ccbTotal; // total # of CCB allocated
318 U32 devDiscover; // # of device to be discovered
321 U32 portCount; // portal count
322 U32 SimQFrozen; // simq frozen state
323 U32 devq_flag; //device busy flag
324 U32 dev_scan; //device ready
325 pccb_t ccbSendHead; // CCB send list head
326 pccb_t ccbSendTail; // CCB send list tail
327 pccb_t ccbDoneHead; // CCB done list head
328 pccb_t ccbDoneTail; // CCB done list tail
329 pccb_t smpSendHead; // CCB send list head
330 pccb_t smpSendTail; // CCB send list tail
331 pccb_t smpDoneHead; // CCB done list head
332 pccb_t smpDoneTail; // CCB done list tail
333 caddr_t *ccbChainList; // ccb chain list head
334 caddr_t *ccbFreeList; // free ccb list head
335 ccb_hdr_t *ccbAllocList; // ### ccb allocation chain list head
336 struct pci_pool *sglPool; // for SGL pci_alloc_consistent
337 struct timer_list osTimerList; // card timer list
338#ifdef TD_TIMER
339 struct timer_list tdTimerList; // tdlayer timer list
340#endif
341 struct timer_list tiTimerList; // tilayer timer list
345
346#define CIPHER_MODE_INVALID 0xffffffffUL
347#define DEK_INDEX_INVALID 0xffffffffUL
348#define KEK_INDEX_INVALID 0xffffffffUL
349 int encrypt; // enable/disable encryption flag
350 bit32 dek_size; // size of dek
351 void *ioctl_data; // encryption ioctl data pointer
352
353 struct list_head *encrypt_map; // encryption map
355 // KEK table
357 // storage for dek index in tables (sysfs)
358 int dek_index[2];
359#define DEK_SIZE_PLAIN 72
360#define DEK_SIZE_ENCRYPT 80
361#define ENCRYPTION_MAP_MEMPOOL_SIZE 64
362 char map_cache_name[32]; // name of mapping memory pool
363 struct kmem_cache *map_cache; // handle to mapping cache
364 bit32 cipher_mode; // storage of cipher mode
365#define ENCRYPTION_IO_ERR_MEMPOOL_SIZE 256
368 struct kmem_cache *ioerr_cache; // handle to IO error cache
369
370//#ifdef LINUX_PERBI_SUPPORT
372 ag_slr_map_t *pSLRList; // SAS Local/Remote map list
373 U32 numTgtHardMapped; // hard mapped target number
374//#endif
375 struct sema *pIoctlSem; // for ioctl sync.
376 U32_64 osLockFlag; // flag for oslayer spin lock TBU
377#ifdef AGTIAPI_LOCAL_LOCK
378 struct mtx sendLock; // local queue lock
379 struct mtx doneLock; // local queue lock
380 struct mtx sendSMPLock; // local queue lock
381 struct mtx doneSMPLock; // local queue lock
382 struct mtx ccbLock; // ccb list lock
383 struct mtx *STLock; // Low Level & TD locks
384 unsigned long *STLockFlags; // Low Level & TD locks flags
385 struct mtx memLock; // dynamic memory allocation lock
386 struct mtx freezeLock;
387#endif
388#ifdef AGTIAPI_DPC // card deferred intr process tasklet
389 struct callout tasklet_dpc[MAX_MSIX_NUM_DPC];
390#endif
391//#ifdef HOTPLUG_SUPPORT
392 struct mtx devListLock; // device lists lock
393//#endif
394
395};
396
398 tiIOCTLPayload_t *agIOCTLPayload );
400 U32_64 size,
401 void *buffer );
402
403#ifndef LINUX_PERBI_SUPPORT
404#define INDEX(_pCard, _T) (_T)
405#else
406#define INDEX(_pCard, _T) (((_pCard)->pWWNList + (_T))->devListIndex)
407#endif
408
struct _ag_device ag_device_t
struct _CCB * pccb_t
struct ag_dek_kek_map_s ag_dek_kek_map_t
struct ag_encrypt_map_s ag_encrypt_map_t
struct _ag_slr_map ag_slr_map_t
struct _ag_portal_data ag_portal_data_t
#define timer_list
Definition: agtiapi.h:63
dek_table_e
Definition: agtiapi.h:145
@ DEK_TABLE_INVALID
Definition: agtiapi.h:148
@ DEK_TABLE_0
Definition: agtiapi.h:146
@ DEK_TABLE_1
Definition: agtiapi.h:147
struct ag_kek_table_s ag_kek_table_t
struct _ag_tgt_map ag_tgt_map_t
struct ccb_hdr_s ccb_hdr_t
u_int32_t atomic_t
Definition: agtiapi.h:41
struct _CCB ccb_t
bus_dmamap_t dma_addr_t
Definition: agtiapi.h:61
int agtiapi_getCardInfo(struct agtiapi_softc *pCard, U32_64 size, void *buffer)
Definition: agtiapi.c:449
#define KEK_TABLE_MAX_ENTRY
Definition: agtiapi.h:163
int agtiapi_getdevlist(struct agtiapi_softc *pCard, tiIOCTLPayload_t *agIOCTLPayload)
Definition: agtiapi.c:290
#define AGTIAPI_MAX_NAME
Definition: lxcommon.h:82
#define AGTIAPI_MIN_NAME
Definition: lxcommon.h:83
#define DEK_MAX_TABLE_ITEMS
Definition: lxcommon.h:40
#define MAX_MSIX_NUM_DPC
Definition: lxcommon.h:443
#define MAX_MSIX_NUM_VECTOR
Definition: lxcommon.h:442
struct agtiapi_softc * pCard
Definition: lxencrypt.h:80
unsigned char U08
Definition: ostypes.h:122
unsigned long U32_64
Definition: ostypes.h:125
unsigned int bit32
Definition: ostypes.h:99
unsigned int U32
Definition: ostypes.h:124
unsigned short U16
Definition: ostypes.h:123
Definition: agtiapi.h:70
U32 channel
Definition: agtiapi.h:73
U16 ccbStatus
Definition: agtiapi.h:74
bus_addr_t tisgl_busaddr
Definition: agtiapi.h:85
U08 senseLen
Definition: agtiapi.h:77
struct scsi_cmnd * cmd
Definition: agtiapi.h:90
U08 retryCount
Definition: agtiapi.h:79
struct _CCB * pccbIO
Definition: agtiapi.h:91
tiSMPFrame_t tiSMPFrame
Definition: agtiapi.h:96
U32_64 dmaHandle
Definition: agtiapi.h:82
U16 scsiStatus
Definition: agtiapi.h:75
struct agtiapi_softc * pmcsc
Definition: agtiapi.h:130
bus_dmamap_t CCB_dmamap
Definition: agtiapi.h:128
U32 flags
Definition: agtiapi.h:81
U32 targetId
Definition: agtiapi.h:71
U32_64 startTime
Definition: agtiapi.h:92
caddr_t pSenseData
Definition: agtiapi.h:83
tiSgl_t * sgList
Definition: agtiapi.h:84
U08 addrMode
Definition: agtiapi.h:78
U32 dataLen
Definition: agtiapi.h:76
U32 lun
Definition: agtiapi.h:72
U16 numSgElements
Definition: agtiapi.h:80
tiSuperScsiInitiatorRequest_t tiSuperScsiRequest
Definition: agtiapi.h:95
tiDeviceHandle_t * devHandle
Definition: agtiapi.h:87
union ccb * ccb
Definition: agtiapi.h:129
struct _CCB * pccbChainNext
Definition: agtiapi.h:89
struct _CCB * pccbNext
Definition: agtiapi.h:88
tdIORequestBody_t tdIOReqBody
Definition: agtiapi.h:94
tiIORequest_t tiIORequest
Definition: agtiapi.h:93
void * pCard
Definition: agtiapi.h:189
U16 targetLen
Definition: agtiapi.h:199
U32 CCBCount
Definition: agtiapi.h:191
U32 qdepth
Definition: agtiapi.h:201
LINK_NODE devLink
Definition: agtiapi.h:182
U32 flags
Definition: agtiapi.h:185
ag_portal_info_t * pPortalInfo
Definition: agtiapi.h:197
U32 portalId
Definition: agtiapi.h:188
U16 resetCount
Definition: agtiapi.h:187
U32 sector_size
Definition: agtiapi.h:190
tiDeviceHandle_t * pDevHandle
Definition: agtiapi.h:195
U32 targetId
Definition: agtiapi.h:184
U32 qbusy
Definition: agtiapi.h:200
U08 targetName[AGTIAPI_MAX_NAME]
Definition: agtiapi.h:198
tiDeviceInfo_t devInfo
Definition: agtiapi.h:196
U16 devType
Definition: agtiapi.h:186
void * pCard
Definition: agtiapi.h:253
ag_portal_info_t portalInfo
Definition: agtiapi.h:252
U08 localeName[AGTIAPI_MIN_NAME]
Definition: agtiapi.h:229
int remoteNameLen
Definition: agtiapi.h:232
int localeNameLen
Definition: agtiapi.h:231
U08 remoteName[AGTIAPI_MAX_NAME]
Definition: agtiapi.h:230
uint32_t devRemoved
Definition: agtiapi.h:222
U16 targetLen
Definition: agtiapi.h:219
U16 flags
Definition: agtiapi.h:217
U08 targetName[AGTIAPI_MAX_NAME]
Definition: agtiapi.h:218
U08 portId
Definition: agtiapi.h:220
U16 devListIndex
Definition: agtiapi.h:216
int sasLrIdx
Definition: agtiapi.h:221
bit32 kekIndex
Definition: agtiapi.h:169
dek_table_e dekTable
Definition: agtiapi.h:154
unsigned long long lbaMin
Definition: agtiapi.h:152
bit32 kekIndex
Definition: agtiapi.h:156
unsigned long long lbaMax
Definition: agtiapi.h:153
bit32 dekIndex
Definition: agtiapi.h:155
struct list_head * list
Definition: agtiapi.h:159
bit32 kekTagCheck
Definition: agtiapi.h:157
bit32 kekTag[2]
Definition: agtiapi.h:158
bit32 wrapperIndex
Definition: agtiapi.h:164
tiEncryptKekBlob_t kekBlob
Definition: agtiapi.h:165
data structure stores OS specific and LL specific context
Definition: sa.h:1658
data structure used to pass information about the scatter-gather list to the LL Layer
Definition: sa.h:2755
tiRoot_t tiRoot
Definition: agtiapi.h:305
pccb_t ccbSendTail
Definition: agtiapi.h:326
ag_tgt_map_t * pWWNList
Definition: agtiapi.h:371
void * ioctl_data
Definition: agtiapi.h:351
ag_slr_map_t * pSLRList
Definition: agtiapi.h:372
struct callout IO_timer
Definition: agtiapi.h:275
struct mtx IO_timer_lock
Definition: agtiapi.h:276
struct sema * pIoctlSem
Definition: agtiapi.h:375
U32 numTgtHardMapped
Definition: agtiapi.h:373
bus_dmamap_t osti_mapp
Definition: agtiapi.h:291
struct kmem_cache * map_cache
Definition: agtiapi.h:363
char ioerr_cache_name[32]
Definition: agtiapi.h:367
ag_portal_data_t * pPortalData
Definition: agtiapi.h:342
struct resource * resirq
Definition: agtiapi.h:263
ag_dek_kek_map_t dek_kek_map[DEK_MAX_TABLES][DEK_MAX_TABLE_ITEMS]
Definition: agtiapi.h:356
struct cam_sim * sim
Definition: agtiapi.h:261
bus_dmamap_t typh_mapp
Definition: agtiapi.h:298
pccb_t ccbDoneTail
Definition: agtiapi.h:328
struct mtx devListLock
Definition: agtiapi.h:392
struct list_head * encrypt_map
Definition: agtiapi.h:353
pccb_t ccbSendHead
Definition: agtiapi.h:325
U32 resetCount
Definition: agtiapi.h:319
U32 up_count
Definition: agtiapi.h:310
struct timer_list tiTimerList
Definition: agtiapi.h:341
U32 devDiscover
Definition: agtiapi.h:318
caddr_t * ccbFreeList
Definition: agtiapi.h:334
U32 portCount
Definition: agtiapi.h:321
U32 SimQFrozen
Definition: agtiapi.h:322
struct mtx OS_timer_lock
Definition: agtiapi.h:274
struct cam_path * path
Definition: agtiapi.h:262
bus_dmamap_t tisgl_map
Definition: agtiapi.h:285
char map_cache_name[32]
Definition: agtiapi.h:362
U16 activeCCB
Definition: agtiapi.h:316
pccb_t ccbDoneHead
Definition: agtiapi.h:327
uint16_t rmChkCt
Definition: agtiapi.h:279
pccb_t smpSendTail
Definition: agtiapi.h:330
struct mtx ioerr_queue_lock
Definition: agtiapi.h:366
pccb_t smpDoneTail
Definition: agtiapi.h:332
U16 badTgtCount
Definition: agtiapi.h:315
struct pci_pool * sglPool
Definition: agtiapi.h:336
struct callout devRmTimer
Definition: agtiapi.h:277
bus_addr_t tisgl_busaddr
Definition: agtiapi.h:283
ccb_hdr_t * ccbAllocList
Definition: agtiapi.h:335
int dek_index[2]
Definition: agtiapi.h:358
bit32 dek_size
Definition: agtiapi.h:350
ag_device_t * pDevList
Definition: agtiapi.h:344
void * osti_mem
Definition: agtiapi.h:288
struct cdev * my_cdev
Definition: agtiapi.h:260
U32 freezeSim
Definition: agtiapi.h:309
U32 devq_flag
Definition: agtiapi.h:323
bus_dma_tag_t typh_dmat
Definition: agtiapi.h:297
U32 timeoutTicks
Definition: agtiapi.h:320
tiSgl_t * tisgl_mem
Definition: agtiapi.h:282
void * intrcookie[MAX_MSIX_NUM_VECTOR]
Definition: agtiapi.h:268
U32 dev_scan
Definition: agtiapi.h:324
struct Scsi_Host * pHost
Definition: agtiapi.h:304
bus_dma_tag_t osti_dmat
Definition: agtiapi.h:290
struct cam_devq * devq
Definition: agtiapi.h:272
ag_card_info_t * pCardInfo
Definition: agtiapi.h:343
U16 tgtCount
Definition: agtiapi.h:314
struct timer_list osTimerList
Definition: agtiapi.h:337
U32 ccbTotal
Definition: agtiapi.h:317
ag_kek_table_t kek_table[KEK_TABLE_MAX_ENTRY]
Definition: agtiapi.h:354
struct mtx devRmTimerLock
Definition: agtiapi.h:278
struct kmem_cache * ioerr_cache
Definition: agtiapi.h:368
bit32 cipher_mode
Definition: agtiapi.h:364
pccb_t smpSendHead
Definition: agtiapi.h:329
U32_64 osLockFlag
Definition: agtiapi.h:376
struct callout OS_timer
Definition: agtiapi.h:273
bus_addr_t typh_busaddr
Definition: agtiapi.h:296
bus_dma_tag_t buffer_dmat
Definition: agtiapi.h:271
bus_dma_tag_t tisgl_dmat
Definition: agtiapi.h:284
void * intr_cookie
Definition: agtiapi.h:264
pccb_t smpDoneHead
Definition: agtiapi.h:331
bus_addr_t osti_busaddr
Definition: agtiapi.h:289
caddr_t * ccbChainList
Definition: agtiapi.h:333
U32 down_count
Definition: agtiapi.h:311
U32 SVID_SSID
Definition: agtiapi.h:307
device_t my_dev
Definition: agtiapi.h:259
struct resource * irq[MAX_MSIX_NUM_VECTOR]
Definition: agtiapi.h:267
void * typh_mem
Definition: agtiapi.h:295
int rscID[MAX_MSIX_NUM_VECTOR]
Definition: agtiapi.h:266
void * next
Definition: agtiapi.h:66
data structure for SAS SSP IO reuqest body This structure contains IO related fields....
Definition: tdtypes.h:587
Definition: titypes.h:61
#define DEK_MAX_TABLES
Definition: titypes.h:263
union data structure specifies a request
Definition: sa.h:3104