1 /*******************************************************************************
2 *Copyright (c) 2014 PMC-Sierra, Inc. All rights reserved.
3 *
4 *Redistribution and use in source and binary forms, with or without modification, are permitted provided
5 *that the following conditions are met:
6 *1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
7 *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
10 *with the distribution.
11 *
12 *THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
13 *WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 *FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
15 *FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
16 *NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
17 *BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
18 *LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
19 *SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
20 *
21 * $FreeBSD$
22 *
23 ********************************************************************************/
24 /*******************************************************************************/
25 /** \file
26 *
27 * function definitions used in SAS/SATA TD layer
28 *
29 */
30
31 #ifndef __TDPROTO_H__
32 #define __TDPROTO_H__
33
34 #ifdef FDS_DM
35 #include <dev/pms/RefTisa/discovery/api/dm.h>
36 #endif
37
38 /*****************************************************************************
39 *
40 * SA SHARED PROTOTYPES
41 *
42 *****************************************************************************/
43
44 osGLOBAL void
45 tdsaQueueConfigInit(
46 tiRoot_t *tiRoot
47 );
48
49 osGLOBAL void
50 tdsaEsglInit(
51 tiRoot_t *tiRoot
52 );
53
54 osGLOBAL void
55 tdsaResetComMemFlags(
56 tiRoot_t *tiRoot
57 );
58
59
60 osGLOBAL void
61 tdsaInitTimerRequest(
62 tiRoot_t *tiRoot,
63 tdsaTimerRequest_t *timerRequest
64 );
65
66 osGLOBAL void
67 tdsaSetTimerRequest(
68 tiRoot_t *tiRoot,
69 tdsaTimerRequest_t *timerRequest,
70 bit32 timeout,
71 tdsaTimerCBFunc_t CBFunc,
72 void *timerData1,
73 void *timerData2,
74 void *timerData3
75 );
76
77 osGLOBAL void
78 tdsaAddTimer (
79 tiRoot_t *tiRoot,
80 tdList_t *timerListHdr,
81 tdsaTimerRequest_t *timerRequest
82 );
83
84 osGLOBAL void
85 tdsaKillTimer(
86 tiRoot_t *tiRoot,
87 tdsaTimerRequest_t *timerRequest
88 );
89
90
91
92
93
94 osGLOBAL void
95 tdsaLoLevelGetResource (
96 tiRoot_t * tiRoot,
97 tiLoLevelResource_t * loResource
98 );
99
100 osGLOBAL void
101 tdsaSharedMemCalculate (
102 tiRoot_t * tiRoot,
103 tiLoLevelResource_t * loResource,
104 tiTdSharedMem_t * tdSharedMem
105 );
106
107 osGLOBAL void
108 tdsaGetEsglPagesInfo(
109 tiRoot_t *tiRoot,
110 bit32 *PageSize,
111 bit32 *NumPages
112 );
113
114 osGLOBAL void
115 tdsaGetPortParams(
116 tiRoot_t *tiRoot
117 );
118
119
120
121 osGLOBAL void
122 tdsaGetSwConfigParams(
123 tiRoot_t *tiRoot
124 );
125
126 osGLOBAL void
127 tdsaGetHwConfigParams(
128 tiRoot_t *tiRoot
129 );
130
131 osGLOBAL void
132 tdsaGetCardPhyParams(
133 tiRoot_t *tiRoot
134 );
135
136
137 osGLOBAL void
138 tdsaGetGlobalPhyParams(
139 tiRoot_t *tiRoot
140 );
141
142 osGLOBAL bit32
143 tdsaGetCardIDString(
144 tiRoot_t *tiRoot
145 );
146
147 osGLOBAL void
148 tdsaParseLinkRateMode(
149 tiRoot_t *tiRoot,
150 bit32 index,
151 bit32 LinkRateRead,
152 bit32 ModeRead,
153 bit32 OpticalModeRead,
154 bit32 LinkRate,
155 bit32 Mode,
156 bit32 OpticalMode
157 );
158
159 osGLOBAL void
160 tdsaInitTimers(
161 tiRoot_t *tiRoot
162 );
163
164 osGLOBAL void
165 tdsaProcessTimers(
166 tiRoot_t *tiRoot
167 );
168
169 osGLOBAL void
170 tdsaInitTimerHandler(
171 tiRoot_t *tiRoot,
172 void *timerData
173 );
174
175 osGLOBAL void
176 tdsaGetEsglPages(
177 tiRoot_t *tiRoot,
178 tdList_t *EsglListHdr,
179 tiSgl_t *ptiSgl,
180 tiSgl_t *virtSgl
181 );
182
183 osGLOBAL void
184 tdsaFreeEsglPages(
185 tiRoot_t *tiRoot,
186 tdList_t *EsglListHdr
187 );
188
189 osGLOBAL void
190 tdssGetMaxTargetsParams(
191 tiRoot_t *tiRoot,
192 bit32 *pMaxTargets
193 );
194
195 osGLOBAL void
196 tdssGetSATAOnlyModeParams(
197 tiRoot_t *tiRoot,
198 bit32 *pMaxTargets
199 );
200
201 osGLOBAL bit32
202 tdipFWControlIoctl(
203 tiRoot_t *tiRoot,
204 tiIOCTLPayload_t *agIOCTLPayload,
205 void *agParam1,
206 void *agParam2,
207 void *agParam3
208 );
209
210 osGLOBAL bit32
211 tdsaVPDGetIoctl(
212 tiRoot_t *tiRoot,
213 tiIOCTLPayload_t *agIOCTLPayload,
214 void *agParam1,
215 void *agParam2,
216 void *agParam3
217 );
218
219 osGLOBAL bit32
220 tdsaVPDSetIoctl(
221 tiRoot_t *tiRoot,
222 tiIOCTLPayload_t *agIOCTLPayload,
223 void *agParam1,
224 void *agParam2,
225 void *agParam3
226 );
227
228 osGLOBAL void
229 ostiCOMMgntVPDSetIOCTLRsp(
230 tiRoot_t *tiRoot,
231 bit32 status
232 );
233
234 osGLOBAL void
235 tdsaFreeCardID(tiRoot_t *tiRoot,
236 bit32 CardID
237 );
238
239
240 osGLOBAL bit32
241 tdsaAbortAll(
242 tiRoot_t *tiRoot,
243 agsaRoot_t *agRoot,
244 tdsaDeviceData_t *oneDeviceData
245 );
246
247 osGLOBAL bit32
248 tdsaFindLocalMCN(
249 tiRoot_t *tiRoot,
250 tdsaPortContext_t *onePortContext
251 );
252
253 osGLOBAL bit32
254 tdsaRegDumpGetIoctl(
255 tiRoot_t *tiRoot,
256 tiIOCTLPayload_t *agIOCTLPayload,
257 void *agParam1,
258 void *agParam2,
259 void *agParam3
260 );
261
262 osGLOBAL bit32
263 tdsaNVMDSetIoctl(
264 tiRoot_t *tiRoot,
265 tiIOCTLPayload_t *agIOCTLPayload,
266 void *agParam1,
267 void *agParam2,
268 void *agParam3
269 );
270
271 osGLOBAL bit32
272 tdsaNVMDGetIoctl(
273 tiRoot_t *tiRoot,
274 tiIOCTLPayload_t *agIOCTLPayload,
275 void *agParam1,
276 void *agParam2,
277 void *agParam3
278 );
279
280 osGLOBAL void ostiGetGpioIOCTLRsp(
281 tiRoot_t *tiRoot,
282 bit32 status,
283 bit32 gpioReadValue,
284 agsaGpioPinSetupInfo_t *gpioPinSetupInfo,
285 agsaGpioEventSetupInfo_t *gpioEventSetupInfo
286 );
287
288 osGLOBAL bit32
289 tdsaGpioSetup(
290 tiRoot_t *tiRoot,
291 agsaContext_t *agContext,
292 tiIOCTLPayload_t *agIOCTLPayload,
293 void *agParam1,
294 void *agParam2
295 );
296
297
298 osGLOBAL bit32
299 tdsaSGpioIoctlSetup(
300 tiRoot_t *tiRoot,
301 agsaContext_t *agContext,
302 tiIOCTLPayload_t *agIOCTLPayload,
303 void *agParam1,
304 void *agParam2
305 );
306
307 osGLOBAL void ostiSgpioIoctlRsp(
308 tiRoot_t *tiRoot,
309 agsaSGpioReqResponse_t *pSgpioResponse
310 );
311 osGLOBAL bit32
312 tdsaDeviceInfoGetIoctl(
313 tiRoot_t *tiRoot,
314 tiIOCTLPayload_t *agIOCTLPayload,
315 void *agParam1,
316 void *agParam2,
317 void *agParam3
318 );
319
320 osGLOBAL bit32
321 tdsaIoErrorStatisticGetIoctl(
322 tiRoot_t *tiRoot,
323 tiIOCTLPayload_t *agIOCTLPayload,
324 void *agParam1,
325 void *agParam2,
326 void *agParam3
327 );
328
329 osGLOBAL bit32
330 tdsaIoEventStatisticGetIoctl(
331 tiRoot_t *tiRoot,
332 tiIOCTLPayload_t *agIOCTLPayload,
333 void *agParam1,
334 void *agParam2,
335 void *agParam3
336 );
337
338 osGLOBAL bit32
339 tdsaForensicDataGetIoctl(
340 tiRoot_t *tiRoot,
341 tiIOCTLPayload_t *agIOCTLPayload,
342 void *agParam1,
343 void *agParam2,
344 void *agParam3
345 );
346
347 osGLOBAL bit32
348 tdsaSendSMPIoctl(
349 tiRoot_t *tiRoot,
350 tiIOCTLPayload_t *agIOCTLPayload,
351 void *agParam1,
352 void *agParam2,
353 void *agParam3
354 );
355
356 osGLOBAL bit32
357 tdsaSendBISTIoctl(
358 tiRoot_t *tiRoot,
359 tiIOCTLPayload_t *agIOCTLPayload,
360 void *agParam1,
361 void *agParam2,
362 void *agParam3
363 );
364
365 osGLOBAL bit32
366 tdsaSendTMFIoctl(
367 tiRoot_t *tiRoot,
368 tiIOCTLPayload_t *agIOCTLPayload,
369 void *agParam1,
370 void *agParam2,
371 unsigned long resetType
372 );
373
374
375 osGLOBAL bit32
376 tdsaRegisterIoctl(
377 tiRoot_t *tiRoot,
378 tiIOCTLPayload_t *agIOCTLPayload,
379 void *agParam1,
380 void *agParam2,
381 void *agParam3
382 );
383
384 osGLOBAL bit32
385 tdsaGetPhyGeneralStatusIoctl(
386 tiRoot_t *tiRoot,
387 agsaPhyGeneralState_t *PhyData
388 );
389
390 osGLOBAL void ostiGetPhyGeneralStatusRsp(
391 tiRoot_t *tiRoot,
392 agsaSASPhyGeneralStatusPage_t *GenStatus,
393 bit32 phyID
394 );
395
396
397 osGLOBAL bit32
398 tdsaPhyProfileIoctl(
399 tiRoot_t *tiRoot,
400 tiIOCTLPayload_t *agIOCTLPayload,
401 void *agParam1,
402 void *agParam2,
403 void *agParam3
404 );
405
406 osGLOBAL void
407 tdsaDeregisterDevicesInPort(
408 tiRoot_t *tiRoot,
409 tdsaPortContext_t *onePortContext
410 );
411
412 #ifdef VPD_TESTING
413 osGLOBAL bit32
414 tdsaVPDGet(
415 tiRoot_t *tiRoot
416 );
417
418 osGLOBAL bit32
419 tdsaVPDSet(
420 tiRoot_t *tiRoot
421 );
422
423 #endif
424
425 /*****************************************************************************
426 *
427 * SAS SHARED PROTOTYPES
428 *
429 *****************************************************************************/
430 osGLOBAL void
431 tdsaJumpTableInit(
432 tiRoot_t *tiRoot
433 );
434
435 osGLOBAL void
436 tdsaPortContextInit(
437 tiRoot_t *tiRoot
438 );
439
440 osGLOBAL void
441 tdsaPortContextReInit(
442 tiRoot_t *tiRoot,
443 tdsaPortContext_t *onePortContext
444 );
445
446 osGLOBAL void
447 tdsaDeviceDataInit(
448 tiRoot_t *tiRoot
449 );
450
451 osGLOBAL void
452 tdsaDeviceDataReInit(
453 tiRoot_t *tiRoot,
454 tdsaDeviceData_t *oneDeviceData
455 );
456
457 #ifdef TD_INT_COALESCE
458 osGLOBAL void
459 tdsaIntCoalCxtInit(
460 tiRoot_t *tiRoot
461 );
462 #endif
463
464 osGLOBAL FORCEINLINE bit32
465 tdsaRotateQnumber(tiRoot_t *tiRoot,
466 tdsaDeviceData_t *oneDeviceData);
467
468 osGLOBAL bit32
469 tdsaRotateQnumber1(tiRoot_t *tiRoot,
470 tdsaDeviceData_t *oneDeviceData );
471 osGLOBAL void
472 tdssRemoveSASSATAFromSharedcontext(
473 agsaRoot_t *agRoot,
474 tdsaPortContext_t *PortContext_Instance
475 );
476 osGLOBAL void
477 tdssRemoveSASSATAFromSharedcontextByReset(
478 agsaRoot_t *agRoot
479 );
480 osGLOBAL bit32
481 tdssSASFindDiscoveringExpander(
482 tiRoot_t *tiRoot,
483 tdsaPortContext_t *onePortContext,
484 tdsaExpander_t *oneExpander
485 );
486
487 osGLOBAL void
488 tdssAddSASToSharedcontext(
489 tdsaPortContext_t *tdsaPortContext_Instance,
490 agsaRoot_t *agRoot,
491 agsaDevHandle_t *agDevHandle,
492 tdsaSASSubID_t *agSASSubID,
493 bit32 registered,
494 bit8 phyID,
495 bit32 flag
496 );
497
498 osGLOBAL void
499 tdssRemoveSASFromSharedcontext(
500 tdsaPortContext_t *tdsaPortContext_Ins,
501 tdsaDeviceData_t *tdsaDeviceData_ins,
502 agsaRoot_t *agRoot
503 );
504
505 osGLOBAL void
506 tdssRemoveAllDevicelistFromPortcontext(
507 tdsaPortContext_t *PortContext_Ins,
508 agsaRoot_t *agRoot
509 );
510
511 osGLOBAL void
512 tdssAddSATAToSharedcontext( tdsaPortContext_t *tdsaPortContext_Instance,
513 agsaRoot_t *agRoot,
514 agsaDevHandle_t *agDevHandle,
515 agsaSATADeviceInfo_t *agSATADeviceInfo,
516 bit32 registered,
517 bit8 phyID
518 );
519
520 osGLOBAL void
521 tdssSubAddSATAToSharedcontext( tiRoot_t *tiRoot,
522 tdsaDeviceData_t *oneDeviceData
523 );
524
525 osGLOBAL void
526 tdssRetrySATAID( tiRoot_t *tiRoot,
527 tdsaDeviceData_t *oneDeviceData
528 );
529
530 osGLOBAL void
531 tdssInitSASPortStartInfo(
532 tiRoot_t *tiRoot
533 );
534 #ifndef ossaDeviceRegistrationCB
535 osGLOBAL void
536 ossaDeviceRegistrationCB(
537 agsaRoot_t *agRoot,
538 agsaContext_t *agContext,
539 bit32 status,
540 agsaDevHandle_t *agDevHandle,
541 bit32 deviceID);
542 #endif
543
544 #ifndef ossaDeregisterDeviceHandleCB
545 osGLOBAL void
546 ossaDeregisterDeviceHandleCB(
547 agsaRoot_t *agRoot,
548 agsaContext_t *agContext,
549 agsaDevHandle_t *agDevHandle,
550 bit32 status
551 );
552 #endif
553
554 #ifdef INITIATOR_DRIVER
555 /*****************************************************************************
556 *
557 * SAS Initiator only PROTOTYPES
558 *
559 *****************************************************************************/
560 osGLOBAL bit32
561 itdssInit(
562 tiRoot_t *tiRoot,
563 tiInitiatorResource_t *initiatorResource,
564 tiTdSharedMem_t *tdSharedMem
565 );
566
567 osGLOBAL void
568 itdssInitTimers (
569 tiRoot_t *tiRoot
570 );
571
572 osGLOBAL FORCEINLINE void
573 itdssIOCompleted(
574 agsaRoot_t *agRoot,
575 agsaIORequest_t *agIORequest,
576 bit32 agIOStatus,
577 bit32 agIOInfoLen,
578 void *agParam,
579 bit32 agOtherInfo
580 );
581
582 osGLOBAL void
583 itdssTaskCompleted(
584 agsaRoot_t *agRoot,
585 agsaIORequest_t *agIORequest,
586 bit32 agIOStatus,
587 bit32 agIOInfoLen,
588 void *agParam,
589 bit32 agOtherInfo
590 );
591
592 osGLOBAL void
593 itdssQueryTaskCompleted(
594 agsaRoot_t *agRoot,
595 agsaIORequest_t *agIORequest,
596 bit32 agIOStatus,
597 bit32 agIOInfoLen,
598 void *agParam,
599 bit32 agOtherInfo
600 );
601
602 osGLOBAL void
603 itdssSMPCompleted (
604 agsaRoot_t *agRoot,
605 agsaIORequest_t *agIORequest,
606 bit32 agIOStatus,
607 bit32 agIOInfoLen,
608 agsaFrameHandle_t agFrameHandle
609 );
610
611 osGLOBAL void
612 ossaSMPCAMCompleted(
613 agsaRoot_t *agRoot,
614 agsaIORequest_t *agIORequest,
615 bit32 agIOStatus,
616 bit32 agIOInfoLen,
617 agsaFrameHandle_t agFrameHandle
618 );
619
620 osGLOBAL void
621 itdssIOSuccessHandler(
622 agsaRoot_t *agRoot,
623 agsaIORequest_t *agIORequest,
624 bit32 agIOStatus,
625 bit32 agIOInfoLen,
626 void *agParam,
627 bit32 agOtherInfo
628 );
629 osGLOBAL void
630 itdssIOAbortedHandler(
631 agsaRoot_t *agRoot,
632 agsaIORequest_t *agIORequest,
633 bit32 agIOStatus,
634 bit32 agIOInfoLen,
635 void *agParam,
636 bit32 agOtherInfo
637 );
638
639 #ifdef REMOVED
640 osGLOBAL void
641 itdssIOOverFlowHandler(
642 agsaRoot_t *agRoot,
643 agsaIORequest_t *agIORequest,
644 bit32 agIOStatus,
645 bit32 agIOInfoLen,
646 void *agParam
647 );
648 #endif
649
650 osGLOBAL void
651 itdssIOUnderFlowHandler(
652 agsaRoot_t *agRoot,
653 agsaIORequest_t *agIORequest,
654 bit32 agIOStatus,
655 bit32 agIOInfoLen,
656 void *agParam,
657 bit32 agOtherInfo
658 );
659
660 osGLOBAL void
661 itdssIOFailedHandler(
662 agsaRoot_t *agRoot,
663 agsaIORequest_t *agIORequest,
664 bit32 agIOStatus,
665 bit32 agIOInfoLen,
666 void *agParam,
667 bit32 agOtherInfo
668 );
669
670 osGLOBAL void
671 itdssIOAbortResetHandler(
672 agsaRoot_t *agRoot,
673 agsaIORequest_t *agIORequest,
674 bit32 agIOStatus,
675 bit32 agIOInfoLen,
676 void *agParam,
677 bit32 agOtherInfo
678 );
679 osGLOBAL void
680 itdssIONotValidHandler(
681 agsaRoot_t *agRoot,
682 agsaIORequest_t *agIORequest,
683 bit32 agIOStatus,
684 bit32 agIOInfoLen,
685 void *agParam,
686 bit32 agOtherInfo
687 );
688
689 osGLOBAL void
690 itdssIONoDeviceHandler(
691 agsaRoot_t *agRoot,
692 agsaIORequest_t *agIORequest,
693 bit32 agIOStatus,
694 bit32 agIOInfoLen,
695 void *agParam,
696 bit32 agOtherInfo
697 );
698
699 #ifdef REMOVED /* removed from spec */
700 osGLOBAL void
701 itdssIllegalParameterHandler(
702 agsaRoot_t *agRoot,
703 agsaIORequest_t *agIORequest,
704 bit32 agIOStatus,
705 bit32 agIOInfoLen,
706 void *agParam
707 );
708 #endif
709
710 osGLOBAL void
711 itdssLinkFailureHandler(
712 agsaRoot_t *agRoot,
713 agsaIORequest_t *agIORequest,
714 bit32 agIOStatus,
715 bit32 agIOInfoLen,
716 void *agParam,
717 bit32 agOtherInfo
718 );
719 osGLOBAL void
720 itdssProgErrorHandler(
721 agsaRoot_t *agRoot,
722 agsaIORequest_t *agIORequest,
723 bit32 agIOStatus,
724 bit32 agIOInfoLen,
725 void *agParam,
726 bit32 agOtherInfo
727 );
728 osGLOBAL void
729 itdssXferErrorBreakHandler(
730 agsaRoot_t *agRoot,
731 agsaIORequest_t *agIORequest,
732 bit32 agIOStatus,
733 bit32 agIOInfoLen,
734 void *agParam,
735 bit32 agOtherInfo
736 );
737 osGLOBAL void
738 itdssXferErrorPhyNotReadyHandler(
739 agsaRoot_t *agRoot,
740 agsaIORequest_t *agIORequest,
741 bit32 agIOStatus,
742 bit32 agIOInfoLen,
743 void *agParam,
744 bit32 agOtherInfo
745 );
746 osGLOBAL void
747 itdssOpenCnxErrorProtocolNotSupprotedHandler(
748 agsaRoot_t *agRoot,
749 agsaIORequest_t *agIORequest,
750 bit32 agIOStatus,
751 bit32 agIOInfoLen,
752 void *agParam,
753 bit32 agOtherInfo
754 );
755 osGLOBAL void
756 itdssOpenCnxErrorZoneViolationHandler(
757 agsaRoot_t *agRoot,
758 agsaIORequest_t *agIORequest,
759 bit32 agIOStatus,
760 bit32 agIOInfoLen,
761 void *agParam,
762 bit32 agOtherInfo
763 );
764 osGLOBAL void
765 itdssOpenCnxErrorBreakHandler(
766 agsaRoot_t *agRoot,
767 agsaIORequest_t *agIORequest,
768 bit32 agIOStatus,
769 bit32 agIOInfoLen,
770 void *agParam,
771 bit32 agOtherInfo
772 );
773 osGLOBAL void
774 itdssOpenCnxErrorITNexusLossHandler(
775 agsaRoot_t *agRoot,
776 agsaIORequest_t *agIORequest,
777 bit32 agIOStatus,
778 bit32 agIOInfoLen,
779 void *agParam,
780 bit32 agOtherInfo
781 );
782 osGLOBAL void
783 itdssOpenCnxErrorBadDestinationHandler(
784 agsaRoot_t *agRoot,
785 agsaIORequest_t *agIORequest,
786 bit32 agIOStatus,
787 bit32 agIOInfoLen,
788 void *agParam,
789 bit32 agOtherInfo
790 );
791 osGLOBAL void
792 itdssOpenCnxErrorConnectionRateNotSupportedHandler(
793 agsaRoot_t *agRoot,
794 agsaIORequest_t *agIORequest,
795 bit32 agIOStatus,
796 bit32 agIOInfoLen,
797 void *agParam,
798 bit32 agOtherInfo
799 );
800
801 osGLOBAL void
802 itdssOpenCnxErrorSTPResourceBusyHandler(
803 agsaRoot_t *agRoot,
804 agsaIORequest_t *agIORequest,
805 bit32 agIOStatus,
806 bit32 agIOInfoLen,
807 void *agParam,
808 bit32 agOtherInfo
809 );
810 osGLOBAL void
811 itdssOpenCnxErrorWrongDestinationHandler(
812 agsaRoot_t *agRoot,
813 agsaIORequest_t *agIORequest,
814 bit32 agIOStatus,
815 bit32 agIOInfoLen,
816 void *agParam,
817 bit32 agOtherInfo
818 );
819 osGLOBAL void
820 itdssOpenCnxErrorUnknownErrorHandler(
821 agsaRoot_t *agRoot,
822 agsaIORequest_t *agIORequest,
823 bit32 agIOStatus,
824 bit32 agIOInfoLen,
825 void *agParam,
826 bit32 agOtherInfo
827 );
828 osGLOBAL void
829 itdssXferErrorNAKReceivedHandler(
830 agsaRoot_t *agRoot,
831 agsaIORequest_t *agIORequest,
832 bit32 agIOStatus,
833 bit32 agIOInfoLen,
834 void *agParam,
835 bit32 agOtherInfo
836 );
837 osGLOBAL void
838 itdssXferErrorACKNAKTimeoutHandler(
839 agsaRoot_t *agRoot,
840 agsaIORequest_t *agIORequest,
841 bit32 agIOStatus,
842 bit32 agIOInfoLen,
843 void *agParam,
844 bit32 agOtherInfo
845 );
846 osGLOBAL void
847 itdssXferErrorPeerAbortedHandler(
848 agsaRoot_t *agRoot,
849 agsaIORequest_t *agIORequest,
850 bit32 agIOStatus,
851 bit32 agIOInfoLen,
852 void *agParam,
853 bit32 agOtherInfo
854 );
855 osGLOBAL void
856 itdssXferErrorRxFrameHandler(
857 agsaRoot_t *agRoot,
858 agsaIORequest_t *agIORequest,
859 bit32 agIOStatus,
860 bit32 agIOInfoLen,
861 void *agParam,
862 bit32 agOtherInfo
863 );
864 osGLOBAL void
865 itdssXferErrorDMAHandler(
866 agsaRoot_t *agRoot,
867 agsaIORequest_t *agIORequest,
868 bit32 agIOStatus,
869 bit32 agIOInfoLen,
870 void *agParam,
871 bit32 agOtherInfo
872 );
873 osGLOBAL void
874 itdssXferErrorCreditTimeoutHandler(
875 agsaRoot_t *agRoot,
876 agsaIORequest_t *agIORequest,
877 bit32 agIOStatus,
878 bit32 agIOInfoLen,
879 void *agParam,
880 bit32 agOtherInfo
881 );
882
883 osGLOBAL void
884 itdssXferErrorCMDIssueACKNAKTimeoutHandler(
885 agsaRoot_t *agRoot,
886 agsaIORequest_t *agIORequest,
887 bit32 agIOStatus,
888 bit32 agIOInfoLen,
889 void *agParam,
890 bit32 agOtherInfo
891 );
892 osGLOBAL void
893 itdssXferErrorCMDIssueBreakBeforeACKNAKHandler(
894 agsaRoot_t *agRoot,
895 agsaIORequest_t *agIORequest,
896 bit32 agIOStatus,
897 bit32 agIOInfoLen,
898 void *agParam,
899 bit32 agOtherInfo
900 );
901 osGLOBAL void
902 itdssXferErrorCMDIssuePhyDownBeforeACKNAKHandler(
903 agsaRoot_t *agRoot,
904 agsaIORequest_t *agIORequest,
905 bit32 agIOStatus,
906 bit32 agIOInfoLen,
907 void *agParam,
908 bit32 agOtherInfo
909 );
910 osGLOBAL void
911 itdssXferErrorDisruptedPhyDownHandler(
912 agsaRoot_t *agRoot,
913 agsaIORequest_t *agIORequest,
914 bit32 agIOStatus,
915 bit32 agIOInfoLen,
916 void *agParam,
917 bit32 agOtherInfo
918 );
919 osGLOBAL void
920 itdssXferErrorOffsetMismatchHandler(
921 agsaRoot_t *agRoot,
922 agsaIORequest_t *agIORequest,
923 bit32 agIOStatus,
924 bit32 agIOInfoLen,
925 void *agParam,
926 bit32 agOtherInfo
927 );
928 osGLOBAL void
929 itdssXferErrorXferZeroDataLenHandler(
930 agsaRoot_t *agRoot,
931 agsaIORequest_t *agIORequest,
932 bit32 agIOStatus,
933 bit32 agIOInfoLen,
934 void *agParam,
935 bit32 agOtherInfo
936 );
937
938 osGLOBAL void
939 itdssXferOpenRetryTimeoutHandler(
940 agsaRoot_t *agRoot,
941 agsaIORequest_t *agIORequest,
942 bit32 agIOStatus,
943 bit32 agIOInfoLen,
944 void *agParam,
945 bit32 agOtherInfo
946 );
947
948 osGLOBAL void
949 itdssPortInResetHandler(
950 agsaRoot_t *agRoot,
951 agsaIORequest_t *agIORequest,
952 bit32 agIOStatus,
953 bit32 agIOInfoLen,
954 void *agParam,
955 bit32 agOtherInfo
956 );
957
958 osGLOBAL void
959 itdssDsNonOperationalHandler(
960 agsaRoot_t *agRoot,
961 agsaIORequest_t *agIORequest,
962 bit32 agIOStatus,
963 bit32 agIOInfoLen,
964 void *agParam,
965 bit32 agOtherInfo
966 );
967 osGLOBAL void
968 itdssDsInRecoveryHandler(
969 agsaRoot_t *agRoot,
970 agsaIORequest_t *agIORequest,
971 bit32 agIOStatus,
972 bit32 agIOInfoLen,
973 void *agParam,
974 bit32 agOtherInfo
975 );
976 osGLOBAL void
977 itdssTmTagNotFoundHandler(
978 agsaRoot_t *agRoot,
979 agsaIORequest_t *agIORequest,
980 bit32 agIOStatus,
981 bit32 agIOInfoLen,
982 void *agParam,
983 bit32 agOtherInfo
984 );
985 osGLOBAL void
986 itdssSSPExtIUZeroLenHandler(
987 agsaRoot_t *agRoot,
988 agsaIORequest_t *agIORequest,
989 bit32 agIOStatus,
990 bit32 agIOInfoLen,
991 void *agParam,
992 bit32 agOtherInfo
993 );
994 osGLOBAL void
995 itdssXferErrorUnexpectedPhaseHandler(
996 agsaRoot_t *agRoot,
997 agsaIORequest_t *agIORequest,
998 bit32 agIOStatus,
999 bit32 agIOInfoLen,
1000 void *agParam,
1001 bit32 agOtherInfo
1002 );
1003
1004 #ifdef REMOVED
1005 osGLOBAL void
1006 itdssIOUnderFlowWithChkConditionHandler(
1007 agsaRoot_t *agRoot,
1008 agsaIORequest_t *agIORequest,
1009 bit32 agIOStatus,
1010 bit32 agIOInfoLen,
1011 void *agParam
1012 );
1013 #endif
1014
1015 osGLOBAL void
1016 itdssEncryptionHandler (
1017 agsaRoot_t *agRoot,
1018 agsaIORequest_t *agIORequest,
1019 bit32 agIOStatus,
1020 bit32 agIOInfoLen,
1021 void *agParam,
1022 bit32 agOtherInfo
1023 );
1024
1025 osGLOBAL void
1026 itdssXferOpenRetryBackoffThresholdReachedHandler(
1027 agsaRoot_t *agRoot,
1028 agsaIORequest_t *agIORequest,
1029 bit32 agIOStatus,
1030 bit32 agIOInfoLen,
1031 void *agParam,
1032 bit32 agOtherInfo
1033 );
1034
1035 osGLOBAL void
1036 itdssOpenCnxErrorItNexusLossOpenTmoHandler(
1037 agsaRoot_t *agRoot,
1038 agsaIORequest_t *agIORequest,
1039 bit32 agIOStatus,
1040 bit32 agIOInfoLen,
1041 void *agParam,
1042 bit32 agOtherInfo
1043 );
1044 osGLOBAL void
1045 itdssOpenCnxErrorItNexusLossNoDestHandler(
1046 agsaRoot_t *agRoot,
1047 agsaIORequest_t *agIORequest,
1048 bit32 agIOStatus,
1049 bit32 agIOInfoLen,
1050 void *agParam,
1051 bit32 agOtherInfo
1052 );
1053 osGLOBAL void
1054 itdssOpenCnxErrorItNexusLossOpenCollideHandler(
1055 agsaRoot_t *agRoot,
1056 agsaIORequest_t *agIORequest,
1057 bit32 agIOStatus,
1058 bit32 agIOInfoLen,
1059 void *agParam,
1060 bit32 agOtherInfo
1061 );
1062 osGLOBAL void
1063 itdssOpenCnxErrorItNexusLossOpenPathwayBlockedHandler(
1064 agsaRoot_t *agRoot,
1065 agsaIORequest_t *agIORequest,
1066 bit32 agIOStatus,
1067 bit32 agIOInfoLen,
1068 void *agParam,
1069 bit32 agOtherInfo
1070 );
1071 osGLOBAL void
1072 itdssDifHandler(
1073 agsaRoot_t *agRoot,
1074 agsaIORequest_t *agIORequest,
1075 bit32 agIOStatus,
1076 bit32 agIOInfoLen,
1077 void *agParam,
1078 bit32 agOtherInfo
1079 );
1080
1081 osGLOBAL void
1082 itdssIOResourceUnavailableHandler(
1083 agsaRoot_t *agRoot,
1084 agsaIORequest_t *agIORequest,
1085 bit32 agIOStatus,
1086 bit32 agIOInfoLen,
1087 void *agParam,
1088 bit32 agOtherInfo
1089 );
1090
1091 osGLOBAL void
1092 itdssIORQEBusyFullHandler(
1093 agsaRoot_t *agRoot,
1094 agsaIORequest_t *agIORequest,
1095 bit32 agIOStatus,
1096 bit32 agIOInfoLen,
1097 void *agParam,
1098 bit32 agOtherInfo
1099 );
1100
1101 osGLOBAL void
1102 itdssXferErrorInvalidSSPRspFrameHandler(
1103 agsaRoot_t *agRoot,
1104 agsaIORequest_t *agIORequest,
1105 bit32 agIOStatus,
1106 bit32 agIOInfoLen,
1107 void *agParam,
1108 bit32 agOtherInfo
1109 );
1110
1111 osGLOBAL void
1112 itdssXferErrorEOBDataOverrunHandler(
1113 agsaRoot_t *agRoot,
1114 agsaIORequest_t *agIORequest,
1115 bit32 agIOStatus,
1116 bit32 agIOInfoLen,
1117 void *agParam,
1118 bit32 agOtherInfo
1119 );
1120
1121 osGLOBAL void
1122 itdssOpenCnxErrorOpenPreemptedHandler(
1123 agsaRoot_t *agRoot,
1124 agsaIORequest_t *agIORequest,
1125 bit32 agIOStatus,
1126 bit32 agIOInfoLen,
1127 void *agParam,
1128 bit32 agOtherInfo
1129 );
1130
1131 /* default handler */
1132 osGLOBAL void
1133 itdssIODefaultHandler (
1134 agsaRoot_t *agRoot,
1135 agsaIORequest_t *agIORequest,
1136 bit32 agIOStatus,
1137 bit32 agIOInfoLen,
1138 void *agParam,
1139 bit32 agOtherInfo
1140 );
1141 osGLOBAL void
1142 itdssIOForDebugging1Completed(
1143 agsaRoot_t *agRoot,
1144 agsaIORequest_t *agIORequest,
1145 bit32 agIOStatus,
1146 bit32 agIOInfoLen,
1147 void *agParam,
1148 bit32 agOtherInfo
1149 );
1150
1151 osGLOBAL void
1152 itdssIOForDebugging2Completed(
1153 agsaRoot_t *agRoot,
1154 agsaIORequest_t *agIORequest,
1155 bit32 agIOStatus,
1156 bit32 agIOInfoLen,
1157 void *agParam,
1158 bit32 agOtherInfo
1159 );
1160
1161 osGLOBAL void
1162 itdssIOForDebugging3Completed(
1163 agsaRoot_t *agRoot,
1164 agsaIORequest_t *agIORequest,
1165 bit32 agIOStatus,
1166 bit32 agIOInfoLen,
1167 void *agParam,
1168 bit32 agOtherInfo
1169 );
1170
1171 osGLOBAL void
1172 itdssInitDiscoveryModule (
1173 tiRoot_t *tiRoot
1174 );
1175
1176 osGLOBAL void
1177 itdssGetResource (
1178 tiRoot_t *tiRoot,
1179 tiInitiatorResource_t *initiatorResource
1180 );
1181
1182
1183 osGLOBAL void
1184 itdssGetOperatingOptionParams(
1185 tiRoot_t *tiRoot,
1186 itdssOperatingOption_t *OperatingOption
1187 );
1188
1189
1190 osGLOBAL FORCEINLINE bit32
1191 itdssIOPrepareSGL(
1192 tiRoot_t *tiRoot,
1193 tdIORequestBody_t *IORequestBody,
1194 tiSgl_t *tiSgl1,
1195 void *sglVirtualAddr
1196 );
1197
1198 #ifdef FDS_SM
1199 osGLOBAL void
1200 smReportRemoval(
1201 tiRoot_t *tiRoot,
1202 agsaRoot_t *agRoot,
1203 tdsaDeviceData_t *oneDeviceData,
1204 tdsaPortContext_t *onePortContext
1205 );
1206 osGLOBAL void
1207 smReportRemovalDirect(
1208 tiRoot_t *tiRoot,
1209 agsaRoot_t *agRoot,
1210 tdsaDeviceData_t *oneDeviceData
1211 );
1212 osGLOBAL void
1213 smHandleDirect(
1214 tiRoot_t *tiRoot,
1215 agsaRoot_t *agRoot,
1216 tdsaDeviceData_t *oneDeviceData,
1217 void *IDdata
1218 );
1219
1220 osGLOBAL void
1221 ossaSATAIDAbortCB(
1222 agsaRoot_t *agRoot,
1223 agsaIORequest_t *agIORequest,
1224 bit32 flag,
1225 bit32 status
1226 );
1227
1228 osGLOBAL void
1229 ossaIniSetDeviceInfoCB(
1230 agsaRoot_t *agRoot,
1231 agsaContext_t *agContext,
1232 agsaDevHandle_t *agDevHandle,
1233 bit32 status,
1234 bit32 option,
1235 bit32 param
1236 );
1237
1238 #endif /* FDS_SM */
1239
1240 #endif /* INITIATOR_DRIVER */
1241
1242 #ifdef TARGET_DRIVER
1243 /*****************************************************************************
1244 *
1245 * SAS Target only PROTOTYPES (ttdproto.h)
1246 *
1247 *****************************************************************************/
1248 osGLOBAL bit32
1249 ttdssInit(
1250 tiRoot_t *tiRoot,
1251 tiTargetResource_t *targetResource,
1252 tiTdSharedMem_t *tdSharedMem
1253 );
1254
1255 osGLOBAL void
1256 ttdssGetResource (
1257 tiRoot_t *tiRoot,
1258 tiTargetResource_t *targetResource
1259 );
1260
1261 osGLOBAL void
1262 ttdssGetTargetParams(
1263 tiRoot_t *tiRoot
1264 );
1265
1266 osGLOBAL void
1267 ttdssGetOperatingOptionParams(
1268 tiRoot_t *tiRoot,
1269 ttdssOperatingOption_t *OperatingOption
1270 );
1271
1272 osGLOBAL agBOOLEAN
1273 ttdsaXchgInit(
1274 tiRoot_t *tiRoot,
1275 ttdsaXchgData_t *ttdsaXchgData,
1276 tiTargetMem_t *tgtMem,
1277 bit32 maxNumXchgs
1278 );
1279
1280 osGLOBAL void
1281 ttdsaXchgLinkInit(
1282 tiRoot_t *tiRoot,
1283 ttdsaXchg_t *ttdsaXchg
1284 );
1285
1286
1287 osGLOBAL void
1288 ttdsaXchgFreeStruct(
1289 tiRoot_t *tiRoot,
1290 ttdsaXchg_t *ttdsaXchg
1291 );
1292 osGLOBAL void
1293 ttdsaSSPReqReceived(
1294 agsaRoot_t *agRoot,
1295 agsaDevHandle_t *agDevHandle,
1296 agsaFrameHandle_t agFrameHandle,
1297 bit32 agInitiatorTag,
1298 bit32 parameter,
1299 bit32 agFrameLen
1300 );
1301
1302 osGLOBAL ttdsaXchg_t
1303 *ttdsaXchgGetStruct(
1304 agsaRoot_t *agRoot
1305 );
1306 osGLOBAL void
1307 ttdsaDumpallXchg(tiRoot_t *tiRoot);
1308
1309 osGLOBAL void
1310 tdsaProcessCDB(
1311 agsaSSPCmdInfoUnit_t *cmdIU,
1312 ttdsaXchg_t *ttdsaXchg
1313 );
1314
1315 osGLOBAL bit32
1316 ttdssIOPrepareSGL(
1317 tiRoot_t *tiRoot,
1318 tdIORequestBody_t *tdIORequestBody,
1319 tiSgl_t *tiSgl1,
1320 tiSgl_t *tiSgl2,
1321 void *sglVirtualAddr);
1322
1323 osGLOBAL void
1324 ttdsaIOCompleted(
1325 agsaRoot_t *agRoot,
1326 agsaIORequest_t *agIORequest,
1327 bit32 agIOStatus,
1328 bit32 agIOInfoLen,
1329 agsaFrameHandle_t agFrameHandle,
1330 bit32 agOtherInfo
1331 );
1332
1333 osGLOBAL void
1334 ttdsaTMProcess(
1335 tiRoot_t *tiRoot,
1336 ttdsaXchg_t *ttdsaXchg
1337 );
1338
1339 osGLOBAL void
1340 ttdsaSMPReqReceived(
1341 agsaRoot_t *agRoot,
1342 agsaDevHandle_t *agDevHandle,
1343 agsaSMPFrameHeader_t *agFrameHeader,
1344 agsaFrameHandle_t agFrameHandle,
1345 bit32 agFrameLength,
1346 bit32 phyId
1347 );
1348 osGLOBAL void
1349 ttdsaSMPCompleted(
1350 agsaRoot_t *agRoot,
1351 agsaIORequest_t *agIORequest,
1352 bit32 agIOStatus,
1353 //agsaSMPFrameHeader_t *agFrameHeader, (TP)
1354 bit32 agIOInfoLen,
1355 agsaFrameHandle_t agFrameHandle
1356 );
1357 osGLOBAL bit32
1358 ttdsaSendResp(
1359 agsaRoot_t *agRoot,
1360 ttdsaXchg_t *ttdsaXchg
1361 );
1362
1363 osGLOBAL void
1364 ttdssReportRemovals(
1365 agsaRoot_t *agRoot,
1366 tdsaPortContext_t *onePortContext,
1367 bit32 flag
1368 );
1369
1370
1371 osGLOBAL void
1372 ttdsaAbortAll(
1373 tiRoot_t *tiRoot,
1374 agsaRoot_t *agRoot,
1375 tdsaDeviceData_t *oneDeviceData
1376 );
1377
1378 osGLOBAL void
1379 ttdssIOAbortedHandler(
1380 agsaRoot_t *agRoot,
1381 agsaIORequest_t *agIORequest,
1382 bit32 agIOStatus,
1383 bit32 agIOInfoLen,
1384 void *agParam,
1385 bit32 agOtherInfo
1386 );
1387
1388 #endif /* TARGET_DRIVER */
1389
1390
1391
1392 /*****************************************************************************
1393 *
1394 * For debugging only
1395 *
1396 *****************************************************************************/
1397 osGLOBAL void
1398 tdsaPrintSwConfig(
1399 agsaSwConfig_t *SwConfig
1400 );
1401
1402 osGLOBAL void
1403 tdsaPrintHwConfig(
1404 agsaHwConfig_t *HwConfig
1405 );
1406 osGLOBAL void
1407 tdssPrintSASIdentify(
1408 agsaSASIdentify_t *id
1409 );
1410 osGLOBAL void
1411 print_tdlist_flink(tdList_t *hdr, int type, int flag);
1412
1413 osGLOBAL void
1414 print_tdlist_blink(tdList_t *hdr, int flag);
1415
1416 osGLOBAL void
1417 tdhexdump(const char *ptitle, bit8 *pbuf, int len);
1418
1419
1420 /*****************************************************************************
1421 *
1422 * SAT only PROTOTYPE
1423 *
1424 *****************************************************************************/
1425
1426 #ifdef SATA_ENABLE
1427
1428 /*****************************************************************************
1429 *! \brief satIOStart
1430 *
1431 * This routine is called to initiate a new SCSI request to SATL.
1432 *
1433 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1434 * \param tiIORequest: Pointer to TISA I/O request context for this I/O.
1435 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1436 * \param tiScsiRequest: Pointer to TISA SCSI I/O request and SGL list.
1437 * \param satIOContext_t: Pointer to the SAT IO Context
1438 *
1439 * \return:
1440 *
1441 * \e tiSuccess: I/O request successfully initiated.
1442 * \e tiBusy: No resources available, try again later.
1443 * \e tiIONoDevice: Invalid device handle.
1444 * \e tiError: Other errors that prevent the I/O request to be started.
1445 *
1446 *
1447 *****************************************************************************/
1448
1449 GLOBAL bit32 satIOStart(
1450 tiRoot_t *tiRoot,
1451 tiIORequest_t *tiIORequest,
1452 tiDeviceHandle_t *tiDeviceHandle,
1453 tiScsiInitiatorRequest_t *tiScsiRequest,
1454 satIOContext_t *satIOContext
1455 );
1456
1457 /*****************************************************************************
1458 *! \brief satIOAbort
1459 *
1460 * This routine is called to initiate a I/O abort to SATL.
1461 * This routine is independent of HW/LL API.
1462 *
1463 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1464 * \param taskTag: Pointer to TISA I/O request context/tag to be aborted.
1465 *
1466 * \return:
1467 *
1468 * \e tiSuccess: I/O request successfully initiated.
1469 * \e tiBusy: No resources available, try again later.
1470 * \e tiError: Other errors that prevent the I/O request to be started.
1471 *
1472 *
1473 *****************************************************************************/
1474
1475 GLOBAL bit32 satIOAbort(
1476 tiRoot_t *tiRoot,
1477 tiIORequest_t *taskTag );
1478
1479
1480 /*****************************************************************************
1481 *! \brief satTM
1482 *
1483 * This routine is called to initiate a TM request to SATL.
1484 * This routine is independent of HW/LL API.
1485 *
1486 * \param tiRoot: Pointer to TISA initiator driver/port instance.
1487 * \param tiDeviceHandle: Pointer to TISA device handle for this I/O.
1488 * \param task: SAM-3 task management request.
1489 * \param lun: Pointer to LUN.
1490 * \param taskTag: Pointer to the associated task where the TM
1491 * command is to be applied.
1492 * \param currentTaskTag: Pointer to tag/context for this TM request.
1493 *
1494 * \return:
1495 *
1496 * \e tiSuccess: I/O request successfully initiated.
1497 * \e tiBusy: No resources available, try again later.
1498 * \e tiIONoDevice: Invalid device handle.
1499 * \e tiError: Other errors that prevent the I/O request to be started.
1500 *
1501 *
1502 *****************************************************************************/
1503
1504 osGLOBAL bit32 satTM(
1505 tiRoot_t *tiRoot,
1506 tiDeviceHandle_t *tiDeviceHandle,
1507 bit32 task,
1508 tiLUN_t *lun,
1509 tiIORequest_t *taskTag,
1510 tiIORequest_t *currentTaskTag,
1511 tdIORequestBody_t *tiRequestBody,
1512 bit32 NotifyOS
1513 );
1514
1515
1516 #endif /* SAT only */
1517
1518 #ifdef INITIATOR_DRIVER
1519 #ifdef TD_DISCOVER
1520
1521 osGLOBAL void
1522 tdsaExpanderInit(
1523 tiRoot_t *tiRoot
1524 );
1525
1526 osGLOBAL bit32
1527 tdsaDiscover(
1528 tiRoot_t *tiRoot,
1529 tdsaPortContext_t *onePortContext,
1530 bit32 type,
1531 bit32 option
1532 );
1533
1534 osGLOBAL bit32
1535 tdsaSASFullDiscover(
1536 tiRoot_t *tiRoot,
1537 tdsaPortContext_t *onePortContext
1538 );
1539
1540 osGLOBAL bit32
1541 tdsaSATAFullDiscover(
1542 tiRoot_t *tiRoot,
1543 tdsaPortContext_t *onePortContext
1544 );
1545 osGLOBAL bit32
1546 tdsaSASIncrementalDiscover(
1547 tiRoot_t *tiRoot,
1548 tdsaPortContext_t *onePortContext
1549 );
1550
1551 osGLOBAL bit32
1552 tdsaSATAIncrementalDiscover(
1553 tiRoot_t *tiRoot,
1554 tdsaPortContext_t *onePortContext
1555 );
1556
1557 osGLOBAL void
1558 tdsaSASUpStreamDiscoverStart(
1559 tiRoot_t *tiRoot,
1560 tdsaPortContext_t *onePortContext,
1561 tdsaDeviceData_t *oneDeviceData
1562 );
1563
1564 osGLOBAL void
1565 tdsaSASUpStreamDiscovering(
1566 tiRoot_t *tiRoot,
1567 tdsaPortContext_t *onePortContext,
1568 tdsaDeviceData_t *oneDeviceData
1569 );
1570
1571
1572 osGLOBAL void
1573 tdsaSASDownStreamDiscoverStart(
1574 tiRoot_t *tiRoot,
1575 tdsaPortContext_t *onePortContext,
1576 tdsaDeviceData_t *oneDeviceData
1577 );
1578
1579 osGLOBAL void
1580 tdsaSASDownStreamDiscovering(
1581 tiRoot_t *tiRoot,
1582 tdsaPortContext_t *onePortContext,
1583 tdsaDeviceData_t *oneDeviceData
1584 );
1585
1586 osGLOBAL void
1587 tdsaSASDiscoverDone(
1588 tiRoot_t *tiRoot,
1589 tdsaPortContext_t *onePortContext,
1590 bit32 flag
1591 );
1592
1593 osGLOBAL void
1594 tdsaSATADiscoverDone(
1595 tiRoot_t *tiRoot,
1596 tdsaPortContext_t *onePortContext,
1597 bit32 flag
1598 );
1599
1600 osGLOBAL void
1601 tdsaAckBC(
1602 tiRoot_t *tiRoot,
1603 tdsaPortContext_t *onePortContext
1604 );
1605
1606 osGLOBAL void
1607 tdsaDiscoveryResetProcessed(
1608 tiRoot_t *tiRoot,
1609 tdsaPortContext_t *onePortContext
1610 );
1611
1612
1613
1614 osGLOBAL void
1615 tdsaSASUpStreamDiscoverExpanderPhy(
1616 tiRoot_t *tiRoot,
1617 tdsaPortContext_t *onePortContext,
1618 tdsaExpander_t *oneExpander,
1619 smpRespDiscover_t *pDiscoverResp
1620 );
1621 osGLOBAL tdsaExpander_t *
1622 tdsaFindUpStreamConfigurableExp(tiRoot_t *tiRoot,
1623 tdsaExpander_t *oneExpander);
1624
1625 osGLOBAL void
1626 tdsaSASDownStreamDiscoverExpanderPhy(
1627 tiRoot_t *tiRoot,
1628 tdsaPortContext_t *onePortContext,
1629 tdsaExpander_t *oneExpander,
1630 smpRespDiscover_t *pDiscoverResp
1631 );
1632 osGLOBAL void
1633 tdsaSASUpStreamDiscoverExpanderPhySkip(
1634 tiRoot_t *tiRoot,
1635 tdsaPortContext_t *onePortContext,
1636 tdsaExpander_t *oneExpander
1637 );
1638 osGLOBAL tdsaExpander_t *
1639 tdsaFindDownStreamConfigurableExp(tiRoot_t *tiRoot,
1640 tdsaExpander_t *oneExpander);
1641
1642 osGLOBAL void
1643 tdsaSASDownStreamDiscoverExpanderPhySkip(
1644 tiRoot_t *tiRoot,
1645 tdsaPortContext_t *onePortContext,
1646 tdsaExpander_t *oneExpander
1647 );
1648 osGLOBAL void
1649 tdsaDiscoveringStpSATADevice(
1650 tiRoot_t *tiRoot,
1651 tdsaPortContext_t *onePortContext,
1652 tdsaDeviceData_t *oneDeviceData
1653 );
1654
1655
1656 osGLOBAL void
1657 tdsaSASExpanderUpStreamPhyAdd(
1658 tiRoot_t *tiRoot,
1659 tdsaExpander_t *oneExpander,
1660 bit8 phyId
1661 );
1662
1663 osGLOBAL void
1664 tdsaSASExpanderDownStreamPhyAdd(
1665 tiRoot_t *tiRoot,
1666 tdsaExpander_t *oneExpander,
1667 bit8 phyId
1668 );
1669 osGLOBAL bit16
1670 tdsaFindCurrentDownStreamPhyIndex(
1671 tiRoot_t *tiRoot,
1672 tdsaExpander_t *oneExpander
1673 );
1674
1675 osGLOBAL tdsaDeviceData_t *
1676 tdsaPortSASDeviceFind(
1677 tiRoot_t *tiRoot,
1678 tdsaPortContext_t *onePortContext,
1679 bit32 sasAddrLo,
1680 bit32 sasAddrHi
1681 );
1682
1683 GLOBAL tdsaDeviceData_t *
1684 tdsaPortSASDeviceAdd(
1685 tiRoot_t *tiRoot,
1686 tdsaPortContext_t *onePortContext,
1687 agsaSASIdentify_t sasIdentify,
1688 bit32 sasInitiator,
1689 bit8 connectionRate,
1690 bit32 itNexusTimeout,
1691 bit32 firstBurstSize,
1692 bit32 deviceType,
1693 tdsaDeviceData_t *oneExpDeviceData,
1694 bit8 phyID
1695 );
1696
1697
1698
1699
1700
1701 /* in tdport.c */
1702 osGLOBAL tdsaDeviceData_t *
1703 tdssNewAddSASToSharedcontext(
1704 agsaRoot_t *agRoot,
1705 tdsaPortContext_t *onePortContext,
1706 tdsaSASSubID_t *agSASSubID,
1707 tdsaDeviceData_t *oneExpDeviceData,
1708 bit8 phyID
1709 );
1710 osGLOBAL void
1711 tdsaResetValidDeviceData(
1712 agsaRoot_t *agRoot,
1713 tdsaPortContext_t *onePortContext
1714 );
1715
1716
1717 osGLOBAL void
1718 tdssReportChanges(
1719 agsaRoot_t *agRoot,
1720 tdsaPortContext_t *onePortContext );
1721
1722 osGLOBAL void
1723 tdssReportRemovals(
1724 agsaRoot_t *agRoot,
1725 tdsaPortContext_t *onePortContext,
1726 bit32 flag
1727 );
1728 osGLOBAL void
1729 tdssInternalRemovals(
1730 agsaRoot_t *agRoot,
1731 tdsaPortContext_t *onePortContext
1732 );
1733 osGLOBAL void
1734 tdssDiscoveryErrorRemovals(
1735 agsaRoot_t *agRoot,
1736 tdsaPortContext_t *onePortContext
1737 );
1738
1739 osGLOBAL void
1740 tdsaSASDiscoverAbort(
1741 tiRoot_t *tiRoot,
1742 tdsaPortContext_t *onePortContext
1743 );
1744
1745
1746 osGLOBAL tdsaDeviceData_t *
1747 tdsaFindRegNValid(
1748 agsaRoot_t *agRoot,
1749 tdsaPortContext_t *onePortContext,
1750 tdsaSASSubID_t *agSASSubID
1751 );
1752 bit32
1753 tdssNewSASorNot(
1754 agsaRoot_t *agRoot,
1755 tdsaPortContext_t *onePortContext,
1756 tdsaSASSubID_t *agSASSubID
1757 );
1758
1759
1760 osGLOBAL tdsaExpander_t *
1761 tdssSASDiscoveringExpanderAlloc(
1762 tiRoot_t *tiRoot,
1763 tdsaPortContext_t *onePortContext,
1764 tdsaDeviceData_t *oneDeviceData
1765 );
1766
1767 osGLOBAL void
1768 tdssSASDiscoveringExpanderAdd(
1769 tiRoot_t *tiRoot,
1770 tdsaPortContext_t *onePortContext,
1771 tdsaExpander_t *oneExpander
1772 );
1773
1774 osGLOBAL void
1775 tdssSASDiscoveringExpanderRemove(
1776 tiRoot_t *tiRoot,
1777 tdsaPortContext_t *onePortContext,
1778 tdsaExpander_t *oneExpander
1779 );
1780
1781 GLOBAL bit32
1782 tdssSATADeviceTypeDecode(
1783 bit8 *pSignature
1784 );
1785
1786
1787 GLOBAL tdsaDeviceData_t *
1788 tdsaPortSATADeviceAdd(
1789 tiRoot_t *tiRoot,
1790 tdsaPortContext_t *onePortContext,
1791 tdsaDeviceData_t *oneSTPBridge,
1792 bit8 *Signature,
1793 bit8 pm,
1794 bit8 pmField,
1795 bit8 connectionRate,
1796 tdsaDeviceData_t *oneExpDeviceData,
1797 bit8 phyID
1798 );
1799
1800 /* in tdport.c */
1801 osGLOBAL tdsaDeviceData_t *
1802 tdssNewAddSATAToSharedcontext(tiRoot_t *tiRoot,
1803 agsaRoot_t *agRoot,
1804 tdsaPortContext_t *onePortContext,
1805 agsaSATADeviceInfo_t *agSATADeviceInfo,
1806 bit8 *Signature,
1807 bit8 pm,
1808 bit8 pmField,
1809 bit32 connectionRate,
1810 tdsaDeviceData_t *oneExpDeviceData,
1811 bit8 phyID
1812 );
1813
1814 osGLOBAL tdsaDeviceData_t *
1815 tdsaFindRightDevice(
1816 tiRoot_t *tiRoot,
1817 tdsaPortContext_t *onePortContext,
1818 tdsaDeviceData_t *tdsaDeviceData
1819 );
1820 GLOBAL void
1821 ossaIDCDiscoverCompleted(
1822 agsaRoot_t *agRoot,
1823 agsaIORequest_t *agIORequest,
1824 bit32 agIOStatus,
1825 void *agFirstDword,
1826 bit32 agIOInfoLen,
1827 agsaFrameHandle_t agFrameHandle
1828 );
1829
1830 osGLOBAL bit8
1831 tdsaFindLocalLinkRate(
1832 tiRoot_t *tiRoot,
1833 tdsaPortStartInfo_t *tdsaPortStartInfo
1834 );
1835
1836 /* SMP related */
1837
1838 osGLOBAL bit32
1839 tdSMPStart(
1840 tiRoot_t *tiRoot,
1841 agsaRoot_t *agRoot,
1842 tdsaDeviceData_t *oneDeviceData,
1843 bit32 functionCode,
1844 bit8 *pSmpBody,
1845 bit32 smpBodySize,
1846 bit32 agRequestType,
1847 tiIORequest_t *CurrentTaskTag,
1848 bit32 queueNumber
1849 );
1850 //temp for testing
1851 osGLOBAL void
1852 tdsaReportManInfoSend(
1853 tiRoot_t *tiRoot,
1854 tdsaDeviceData_t *oneDeviceData
1855 );
1856
1857 osGLOBAL void
1858 tdsaReportManInfoRespRcvd(
1859 tiRoot_t *tiRoot,
1860 agsaRoot_t *agRoot,
1861 tdsaDeviceData_t *oneDeviceData,
1862 tdssSMPFrameHeader_t *frameHeader,
1863 agsaFrameHandle_t frameHandle
1864 );
1865
1866 //end temp for testing
1867
1868 osGLOBAL void
1869 tdsaReportGeneralSend(
1870 tiRoot_t *tiRoot,
1871 tdsaDeviceData_t *oneDeviceData
1872 );
1873
1874 osGLOBAL void
1875 tdsaReportGeneralRespRcvd(
1876 tiRoot_t *tiRoot,
1877 agsaRoot_t *agRoot,
1878 agsaIORequest_t *agIORequest,
1879 tdsaDeviceData_t *oneDeviceData,
1880 tdssSMPFrameHeader_t *frameHeader,
1881 agsaFrameHandle_t frameHandle
1882 );
1883 osGLOBAL void
1884 tdsaDiscoverSend(
1885 tiRoot_t *tiRoot,
1886 tdsaDeviceData_t *oneDeviceData
1887 );
1888
1889 osGLOBAL void
1890 tdsaDiscoverRespRcvd(
1891 tiRoot_t *tiRoot,
1892 agsaRoot_t *agRoot,
1893 agsaIORequest_t *agIORequest,
1894 tdsaDeviceData_t *oneDeviceData,
1895 tdssSMPFrameHeader_t *frameHeader,
1896 agsaFrameHandle_t frameHandle
1897 );
1898
1899
1900 osGLOBAL void
1901 tdsaReportPhySataSend(
1902 tiRoot_t *tiRoot,
1903 tdsaDeviceData_t *oneDeviceData,
1904 bit8 phyId
1905 );
1906
1907
1908
1909 osGLOBAL void
1910 tdsaReportPhySataRcvd(
1911 tiRoot_t *tiRoot,
1912 agsaRoot_t *agRoot,
1913 agsaIORequest_t *agIORequest,
1914 tdsaDeviceData_t *oneDeviceData,
1915 tdssSMPFrameHeader_t *frameHeader,
1916 agsaFrameHandle_t frameHandle
1917 );
1918
1919 osGLOBAL bit32
1920 tdsaSASRoutingEntryAdd(
1921 tiRoot_t *tiRoot,
1922 tdsaExpander_t *oneExpander,
1923 bit32 phyId,
1924 bit32 configSASAddressHi,
1925 bit32 configSASAddressLo
1926 );
1927
1928
1929 osGLOBAL void
1930 tdsaConfigRoutingInfoRespRcvd(
1931 tiRoot_t *tiRoot,
1932 agsaRoot_t *agRoot,
1933 agsaIORequest_t *agIORequest,
1934 tdsaDeviceData_t *oneDeviceData,
1935 tdssSMPFrameHeader_t *frameHeader,
1936 agsaFrameHandle_t frameHandle
1937 );
1938
1939 osGLOBAL bit32
1940 tdsaPhyControlSend(
1941 tiRoot_t *tiRoot,
1942 tdsaDeviceData_t *oneDeviceData,
1943 bit8 phyOp,
1944 tiIORequest_t *CurrentTaskTag,
1945 bit32 queueNumber
1946 );
1947
1948 osGLOBAL void
1949 tdsaPhyControlRespRcvd(
1950 tiRoot_t *tiRoot,
1951 agsaRoot_t *agRoot,
1952 agsaIORequest_t *agIORequest,
1953 tdsaDeviceData_t *oneDeviceData,
1954 tdssSMPFrameHeader_t *frameHeader,
1955 agsaFrameHandle_t frameHandle,
1956 tiIORequest_t *CurrentTaskTag
1957 );
1958
1959 osGLOBAL void
1960 tdsaPhyControlFailureRespRcvd(
1961 tiRoot_t *tiRoot,
1962 agsaRoot_t *agRoot,
1963 tdsaDeviceData_t *oneDeviceData,
1964 tdssSMPFrameHeader_t *frameHeader,
1965 agsaFrameHandle_t frameHandle,
1966 tiIORequest_t *CurrentTaskTag
1967 );
1968
1969
1970 osGLOBAL void
1971 tdsaDumpAllExp(
1972 tiRoot_t *tiRoot,
1973 tdsaPortContext_t *onePortContext,
1974 tdsaExpander_t *oneExpander
1975 );
1976 osGLOBAL void
1977 tdsaDumpAllUpExp(
1978 tiRoot_t *tiRoot,
1979 tdsaPortContext_t *onePortContext,
1980 tdsaExpander_t *oneExpander
1981 );
1982 osGLOBAL void
1983 tdsaCleanAllExp(
1984 tiRoot_t *tiRoot,
1985 tdsaPortContext_t *onePortContext
1986 );
1987 osGLOBAL void
1988 tdsaFreeAllExp(
1989 tiRoot_t *tiRoot,
1990 tdsaPortContext_t *onePortContext
1991 );
1992 osGLOBAL void
1993 tdsaDumpAllFreeExp(
1994 tiRoot_t *tiRoot
1995 );
1996
1997 osGLOBAL void
1998 tdsaDiscoveryTimer(tiRoot_t *tiRoot,
1999 tdsaPortContext_t *onePortContext,
2000 tdsaDeviceData_t *oneDeviceData
2001 );
2002
2003 osGLOBAL void
2004 tdsaDiscoveryTimerCB(
2005 tiRoot_t * tiRoot,
2006 void * timerData1,
2007 void * timerData2,
2008 void * timerData3
2009 );
2010
2011 osGLOBAL void
2012 tdsaConfigureRouteTimer(tiRoot_t *tiRoot,
2013 tdsaPortContext_t *onePortContext,
2014 tdsaExpander_t *oneExpander,
2015 smpRespDiscover_t *ptdSMPDiscoverResp
2016 );
2017
2018 osGLOBAL void
2019 tdsaConfigureRouteTimerCB(
2020 tiRoot_t * tiRoot,
2021 void * timerData1,
2022 void * timerData2,
2023 void * timerData3
2024 );
2025
2026 osGLOBAL void
2027 tdsaDeviceRegistrationTimer(tiRoot_t *tiRoot,
2028 tdsaPortContext_t *onePortContext,
2029 tdsaDeviceData_t *oneDeviceData
2030 );
2031
2032 osGLOBAL void
2033 tdsaDeviceRegistrationTimerCB(
2034 tiRoot_t * tiRoot,
2035 void * timerData1,
2036 void * timerData2,
2037 void * timerData3
2038 );
2039
2040 osGLOBAL void
2041 tdsaSMPBusyTimer(tiRoot_t *tiRoot,
2042 tdsaPortContext_t *onePortContext,
2043 tdsaDeviceData_t *oneDeviceData,
2044 tdssSMPRequestBody_t *tdSMPRequestBody
2045 );
2046
2047 osGLOBAL void
2048 tdsaSMPBusyTimerCB(
2049 tiRoot_t * tiRoot,
2050 void * timerData1,
2051 void * timerData2,
2052 void * timerData3
2053 );
2054
2055 osGLOBAL void
2056 tdsaSATAIDDeviceTimer(tiRoot_t *tiRoot,
2057 tdsaDeviceData_t *oneDeviceData
2058 );
2059 #ifdef FDS_SM
2060 osGLOBAL void
2061 tdIDStartTimer(tiRoot_t *tiRoot,
2062 smIORequest_t *smIORequest,
2063 tdsaDeviceData_t *oneDeviceData
2064 );
2065 osGLOBAL void
2066 tdIDStartTimerCB(
2067 tiRoot_t * tiRoot,
2068 void * timerData1,
2069 void * timerData2,
2070 void * timerData3
2071 );
2072 #endif
2073 osGLOBAL void
2074 tdsaBCTimer(tiRoot_t *tiRoot,
2075 tdsaPortContext_t *onePortContext
2076 );
2077
2078 osGLOBAL void
2079 tdsaBCTimerCB(
2080 tiRoot_t * tiRoot,
2081 void * timerData1,
2082 void * timerData2,
2083 void * timerData3
2084 );
2085
2086 osGLOBAL void
2087 tdsaSATAIDDeviceTimerCB(
2088 tiRoot_t * tiRoot,
2089 void * timerData1,
2090 void * timerData2,
2091 void * timerData3
2092 );
2093
2094 osGLOBAL void
2095 tdsaDiscoverySMPTimer(tiRoot_t *tiRoot,
2096 tdsaPortContext_t *onePortContext,
2097 bit32 functionCode,
2098 tdssSMPRequestBody_t *tdSMPRequestBody
2099 );
2100
2101 osGLOBAL void
2102 tdsaDiscoverySMPTimerCB(
2103 tiRoot_t * tiRoot,
2104 void * timerData1,
2105 void * timerData2,
2106 void * timerData3
2107 );
2108
2109 osGLOBAL void
2110 dumpRoutingAttributes(
2111 tiRoot_t *tiRoot,
2112 tdsaExpander_t *oneExpander,
2113 bit8 phyID
2114 );
2115
2116 osGLOBAL bit32
2117 tdsaDuplicateConfigSASAddr(
2118 tiRoot_t *tiRoot,
2119 tdsaExpander_t *oneExpander,
2120 bit32 configSASAddressHi,
2121 bit32 configSASAddressLo
2122 );
2123
2124 osGLOBAL tdsaExpander_t *
2125 tdsaFindConfigurableExp(
2126 tiRoot_t *tiRoot,
2127 tdsaPortContext_t *onePortContext,
2128 tdsaExpander_t *oneExpander
2129 );
2130
2131 GLOBAL bit32
2132 tdsaDiscoveryStartIDDev(
2133 tiRoot_t *tiRoot,
2134 tiIORequest_t *tiIORequest,
2135 tiDeviceHandle_t *tiDeviceHandle,
2136 tiScsiInitiatorRequest_t *tiScsiRequest,
2137 tdsaDeviceData_t *oneDeviceData
2138 );
2139
2140 GLOBAL void satFreeIntIoResource(
2141 tiRoot_t *tiRoot,
2142 satDeviceData_t *satDevData,
2143 satInternalIo_t *satIntIo);
2144 osGLOBAL void
2145 tddmDeregisterDevicesInPort(
2146 tiRoot_t *tiRoot,
2147 tdsaPortContext_t *onePortContext
2148 );
2149
2150 #ifdef AGTIAPI_CTL
2151 osGLOBAL void
2152 tdsaCTLSet(
2153 tiRoot_t *tiRoot,
2154 tdsaPortContext_t *onePortContext,
2155 tiIntrEventType_t eventType,
2156 bit32 eventStatus);
2157
2158 STATIC void
2159 tdsaCTLNextDevice(
2160 tiRoot_t *tiRoot,
2161 tdsaPortContext_t *onePortContext,
2162 tdIORequest_t *tdIORequest,
2163 tdList_t *DeviceList);
2164
2165 STATIC int
2166 tdsaCTLModeSelect(
2167 tiRoot_t *tiRoot,
2168 tiDeviceHandle_t *tiDeviceHandle,
2169 tdIORequest_t *tdIORequest);
2170
2171 STATIC void
2172 tdsaCTLIOCompleted(
2173 agsaRoot_t *agRoot,
2174 agsaIORequest_t *agIORequest,
2175 bit32 agIOStatus,
2176 bit32 agIOInfoLen,
2177 void *agParam,
2178 bit16 sspTag,
2179 bit32 agOtherInfo);
2180 #endif /* AGTIAPI_CTL */
2181
2182 #endif /* TD_DISCOVER */
2183 #endif /* INITIATOR_DRIVER */
2184
2185 #ifdef FDS_DM
2186 /********** For DM *******/
2187 osGLOBAL tdsaDeviceData_t *
2188 tddmPortDeviceAdd(
2189 tiRoot_t *tiRoot,
2190 tdsaPortContext_t *onePortContext,
2191 dmDeviceInfo_t *dmDeviceInfo,
2192 tdsaDeviceData_t *oneExpDeviceData
2193 );
2194
2195 osGLOBAL void
2196 tddmInvalidateDevicesInPort(
2197 tiRoot_t *tiRoot,
2198 tdsaPortContext_t *onePortContext
2199 );
2200
2201 osGLOBAL bit32
2202 tddmNewSASorNot(
2203 tiRoot_t *tiRoot,
2204 tdsaPortContext_t *onePortContext,
2205 tdsaSASSubID_t *agSASSubID
2206 );
2207
2208 osGLOBAL tdsaDeviceData_t *
2209 tddmPortSASDeviceFind(
2210 tiRoot_t *tiRoot,
2211 tdsaPortContext_t *onePortContext,
2212 bit32 sasAddrLo,
2213 bit32 sasAddrHi
2214 );
2215
2216 osGLOBAL tdsaDeviceData_t *
2217 tddmAddToSharedcontext(
2218 agsaRoot_t *agRoot,
2219 tdsaPortContext_t *onePortContext,
2220 tdsaSASSubID_t *agSASSubID,
2221 tdsaDeviceData_t *oneExpDeviceData,
2222 bit8 phyID
2223 );
2224
2225 osGLOBAL void
2226 tdsaUpdateMCN(
2227 dmRoot_t *dmRoot,
2228 tdsaPortContext_t *onePortContext
2229 );
2230 #endif
2231
2232 GLOBAL void
2233 tdsaSingleThreadedEnter(tiRoot_t *ptiRoot, bit32 queueId);
2234
2235 GLOBAL void
2236 tdsaSingleThreadedLeave(tiRoot_t *ptiRoot, bit32 queueId);
2237
2238 #ifdef PERF_COUNT
2239 GLOBAL void
2240 tdsaEnter(tiRoot_t *ptiRoot, int io);
2241
2242 GLOBAL void
2243 tdsaLeave(tiRoot_t *ptiRoot, int io);
2244
2245 #define TDSA_INP_ENTER(root) tdsaEnter(root, 0)
2246 #define TDSA_INP_LEAVE(root) tdsaLeave(root, 0)
2247 #define TDSA_OUT_ENTER(root) tdsaEnter(root, 1)
2248 #define TDSA_OUT_LEAVE(root) tdsaLeave(root, 1)
2249 #else
2250 #define TDSA_INP_ENTER(root)
2251 #define TDSA_INP_LEAVE(root)
2252 #define TDSA_OUT_ENTER(root)
2253 #define TDSA_OUT_LEAVE(root)
2254 #endif
2255
2256 #if defined(FDS_DM) && defined(FDS_SM)
2257 GLOBAL void
2258 tdIDStart(
2259 tiRoot_t *tiRoot,
2260 agsaRoot_t *agRoot,
2261 smRoot_t *smRoot,
2262 tdsaDeviceData_t *oneDeviceData,
2263 tdsaPortContext_t *onePortContext
2264 );
2265 #endif
2266
2267 void t_MacroCheck( agsaRoot_t *agRoot);
2268
2269 #endif /* __TDPROTO_H__ */
Cache object: 2e0d1b24a40a341b49fded34fe82f86e
|