dmproto.h revision 285809
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
8*following disclaimer.
9*2. Redistributions in binary form must reproduce the above copyright notice,
10*this list of conditions and the following disclaimer in the documentation and/or other materials provided
11*with the distribution.
12*
13*THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED
14*WARRANTIES,INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
15*FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
16*FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
17*NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
18*BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
19*LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
20*SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
21*
22* $FreeBSD$
23*
24********************************************************************************/
25#ifndef __DMPROTO_H__
26#define __DMPROTO_H__
27
28#include <dev/pms/RefTisa/discovery/dm/dmtypes.h>
29
30/***************** util ****************************************/
31osGLOBAL void
32*dm_memset(void *s, int c, bit32 n);
33
34osGLOBAL void
35*dm_memcpy(void *dst, void *src, bit32 count);
36
37osGLOBAL void
38dmhexdump(const char *ptitle, bit8 *pbuf, int len);
39
40
41/* timer related */
42osGLOBAL void
43dmInitTimers(
44             dmRoot_t *dmRoot
45            );
46osGLOBAL void
47dmInitTimerRequest(
48                   dmRoot_t                *dmRoot,
49                   dmTimerRequest_t        *timerRequest
50                   );
51
52osGLOBAL void
53dmSetTimerRequest(
54                  dmRoot_t            *dmRoot,
55                  dmTimerRequest_t    *timerRequest,
56                  bit32               timeout,
57                  dmTimerCBFunc_t     CBFunc,
58                  void                *timerData1,
59                  void                *timerData2,
60                  void                *timerData3
61                  );
62
63osGLOBAL void
64dmAddTimer(
65           dmRoot_t            *dmRoot,
66           dmList_t            *timerListHdr,
67           dmTimerRequest_t    *timerRequest
68          );
69
70osGLOBAL void
71dmKillTimer(
72            dmRoot_t            *dmRoot,
73            dmTimerRequest_t    *timerRequest
74           );
75
76osGLOBAL void
77dmProcessTimers(
78                dmRoot_t *dmRoot
79                );
80
81
82
83osGLOBAL void
84dmPortContextInit(
85                  dmRoot_t *dmRoot
86                 );
87
88osGLOBAL void
89dmPortContextReInit(
90                    dmRoot_t		  *dmRoot,
91                    dmIntPortContext_t    *onePortContext
92                    );
93
94osGLOBAL void
95dmDeviceDataInit(
96                 dmRoot_t *dmRoot
97                );
98
99osGLOBAL void
100dmDeviceDataReInit(
101                   dmRoot_t		  *dmRoot,
102                   dmDeviceData_t         *oneDeviceData
103                  );
104
105osGLOBAL void
106dmExpanderDeviceDataInit(
107                         dmRoot_t *dmRoot,
108                         bit32    max_exp
109                        );
110
111osGLOBAL void
112dmExpanderDeviceDataReInit(
113                           dmRoot_t 	    *dmRoot,
114                           dmExpander_t     *oneExpander
115                          );
116
117
118osGLOBAL void
119dmSMPInit(
120          dmRoot_t *dmRoot
121         );
122
123
124osGLOBAL bit32
125dmDiscoverCheck(
126                dmRoot_t 	    	*dmRoot,
127                dmIntPortContext_t      *onePortContext
128                );
129osGLOBAL void
130dmDiscoverAbort(
131                dmRoot_t 	    	*dmRoot,
132                dmIntPortContext_t      *onePortContext
133                );
134
135
136osGLOBAL bit32
137dmFullDiscover(
138               dmRoot_t 	    	*dmRoot,
139               dmIntPortContext_t       *onePortContext
140              );
141
142osGLOBAL bit32
143dmIncrementalDiscover(
144                      dmRoot_t 	    	      *dmRoot,
145                      dmIntPortContext_t      *onePortContext,
146		      bit32                   flag
147                     );
148
149osGLOBAL dmExpander_t *
150dmDiscoveringExpanderAlloc(
151                           dmRoot_t                 *dmRoot,
152                           dmIntPortContext_t       *onePortContext,
153                           dmDeviceData_t           *oneDeviceData
154                          );
155osGLOBAL void
156dmDiscoveringExpanderAdd(
157                         dmRoot_t                 *dmRoot,
158                         dmIntPortContext_t       *onePortContext,
159                         dmExpander_t             *oneExpander
160                        );
161
162osGLOBAL void
163dmDiscoveringExpanderRemove(
164                            dmRoot_t                 *dmRoot,
165                            dmIntPortContext_t       *onePortContext,
166                            dmExpander_t             *oneExpander
167                           );
168
169osGLOBAL dmExpander_t *
170dmExpFind(
171          dmRoot_t            *dmRoot,
172          dmIntPortContext_t  *onePortContext,
173          bit32               sasAddrHi,
174          bit32               sasAddrLo
175         );
176
177osGLOBAL dmExpander_t *
178dmExpMainListFind(
179                  dmRoot_t            *dmRoot,
180                  dmIntPortContext_t  *onePortContext,
181                  bit32               sasAddrHi,
182                  bit32               sasAddrLo
183                 );
184
185osGLOBAL dmDeviceData_t *
186dmDeviceFind(
187             dmRoot_t            *dmRoot,
188             dmIntPortContext_t  *onePortContext,
189             bit32               sasAddrHi,
190             bit32               sasAddrLo
191            );
192
193osGLOBAL void
194dmUpStreamDiscoverStart(
195                        dmRoot_t             *dmRoot,
196                        dmIntPortContext_t   *onePortContext
197                       );
198
199osGLOBAL void
200dmUpStreamDiscovering(
201                      dmRoot_t              *dmRoot,
202                      dmIntPortContext_t    *onePortContext,
203                      dmDeviceData_t        *oneDeviceData
204                     );
205
206osGLOBAL void
207dmDownStreamDiscovering(
208                        dmRoot_t              *dmRoot,
209                        dmIntPortContext_t    *onePortContext,
210                        dmDeviceData_t        *oneDeviceData
211                       );
212
213osGLOBAL void
214dmDownStreamDiscoverStart(
215                          dmRoot_t              *dmRoot,
216                          dmIntPortContext_t    *onePortContext,
217                          dmDeviceData_t        *oneDeviceData
218                         );
219
220osGLOBAL void
221dmCleanAllExp(
222              dmRoot_t                 *dmRoot,
223              dmIntPortContext_t       *onePortContext
224             );
225
226osGLOBAL void
227dmInternalRemovals(
228                   dmRoot_t                 *dmRoot,
229                   dmIntPortContext_t       *onePortContext
230                   );
231osGLOBAL void
232dmDiscoveryResetProcessed(
233                          dmRoot_t                 *dmRoot,
234                          dmIntPortContext_t       *onePortContext
235                         );
236
237osGLOBAL void
238dmDiscoverDone(
239               dmRoot_t                 *dmRoot,
240               dmIntPortContext_t       *onePortContext,
241               bit32                    flag
242              );
243
244osGLOBAL void
245dmUpStreamDiscoverExpanderPhy(
246                              dmRoot_t              *dmRoot,
247                              dmIntPortContext_t    *onePortContext,
248                              dmExpander_t          *oneExpander,
249                              smpRespDiscover_t     *pDiscoverResp
250                             );
251
252osGLOBAL void
253dmUpStreamDiscover2ExpanderPhy(
254                              dmRoot_t              *dmRoot,
255                              dmIntPortContext_t    *onePortContext,
256                              dmExpander_t          *oneExpander,
257                              smpRespDiscover2_t    *pDiscoverResp
258                             );
259
260osGLOBAL void
261dmDownStreamDiscoverExpanderPhy(
262                                dmRoot_t              *dmRoot,
263                                dmIntPortContext_t    *onePortContext,
264                                dmExpander_t          *oneExpander,
265                                smpRespDiscover_t     *pDiscoverResp
266                               );
267osGLOBAL void
268dmDownStreamDiscover2ExpanderPhy(
269                                dmRoot_t              *dmRoot,
270                                dmIntPortContext_t    *onePortContext,
271                                dmExpander_t          *oneExpander,
272                                smpRespDiscover2_t     *pDiscoverResp
273                               );
274
275osGLOBAL void
276dmUpStreamDiscoverExpanderPhySkip(
277                                   dmRoot_t              *dmRoot,
278                                   dmIntPortContext_t    *onePortContext,
279                                   dmExpander_t          *oneExpander
280                                   );
281
282osGLOBAL void
283dmUpStreamDiscover2ExpanderPhySkip(
284                                   dmRoot_t              *dmRoot,
285                                   dmIntPortContext_t    *onePortContext,
286                                   dmExpander_t          *oneExpander
287                                   );
288
289osGLOBAL void
290dmDownStreamDiscoverExpanderPhySkip(
291                                     dmRoot_t              *dmRoot,
292                                     dmIntPortContext_t    *onePortContext,
293                                     dmExpander_t          *oneExpander
294                                     );
295osGLOBAL void
296dmDownStreamDiscover2ExpanderPhySkip(
297                                     dmRoot_t              *dmRoot,
298                                     dmIntPortContext_t    *onePortContext,
299                                     dmExpander_t          *oneExpander
300                                     );
301
302osGLOBAL void
303dmDiscoveringUndoAdd(
304                     dmRoot_t                 *dmRoot,
305                     dmIntPortContext_t       *onePortContext,
306                     dmExpander_t             *oneExpander
307                    );
308
309
310osGLOBAL void
311dmExpanderUpStreamPhyAdd(
312                         dmRoot_t              *dmRoot,
313                         dmExpander_t          *oneExpander,
314                         bit8                  phyId
315                         );
316
317osGLOBAL void
318dmExpanderDownStreamPhyAdd(
319                           dmRoot_t              *dmRoot,
320                           dmExpander_t          *oneExpander,
321                           bit8                  phyId
322                          );
323
324osGLOBAL dmDeviceData_t *
325dmPortSASDeviceFind(
326                    dmRoot_t            *dmRoot,
327                    dmIntPortContext_t  *onePortContext,
328                    bit32               sasAddrLo,
329                    bit32               sasAddrHi,
330                    dmDeviceData_t      *CurrentDeviceData
331                    );
332bit32
333dmNewEXPorNot(
334              dmRoot_t              *dmRoot,
335              dmIntPortContext_t    *onePortContext,
336              dmSASSubID_t          *dmSASSubID
337             );
338
339bit32
340dmNewSASorNot(
341              dmRoot_t              *dmRoot,
342              dmIntPortContext_t    *onePortContext,
343              dmSASSubID_t          *dmSASSubID
344             );
345
346osGLOBAL dmDeviceData_t *
347dmPortSASDeviceAdd(
348                   dmRoot_t            *dmRoot,
349                   dmIntPortContext_t  *onePortContext,
350                   agsaSASIdentify_t   sasIdentify,
351                   bit32               sasInitiator,
352                   bit8                connectionRate,
353                   bit32               itNexusTimeout,
354                   bit32               firstBurstSize,
355                   bit32               deviceType,
356                   dmDeviceData_t      *oneDeviceData,
357                   dmExpander_t        *dmExpander,
358                   bit8                phyID
359                  );
360
361
362osGLOBAL dmDeviceData_t *
363dmFindRegNValid(
364                dmRoot_t             *dmRoot,
365                dmIntPortContext_t   *onePortContext,
366                dmSASSubID_t         *dmSASSubID
367               );
368
369osGLOBAL dmExpander_t *
370dmFindConfigurableExp(
371                      dmRoot_t                  *dmRoot,
372                      dmIntPortContext_t        *onePortContext,
373                      dmExpander_t              *oneExpander
374                     );
375
376osGLOBAL bit32
377dmDuplicateConfigSASAddr(
378                         dmRoot_t                 *dmRoot,
379                         dmExpander_t             *oneExpander,
380                         bit32                    configSASAddressHi,
381                         bit32                    configSASAddressLo
382                        );
383
384
385osGLOBAL bit16
386dmFindCurrentDownStreamPhyIndex(
387                                dmRoot_t          *dmRoot,
388                                dmExpander_t      *oneExpander
389                                );
390
391
392osGLOBAL bit32
393dmFindDiscoveringExpander(
394                          dmRoot_t                  *dmRoot,
395                          dmIntPortContext_t        *onePortContext,
396                          dmExpander_t              *oneExpander
397                         );
398
399osGLOBAL void
400dmDumpAllExp(
401             dmRoot_t                  *dmRoot,
402             dmIntPortContext_t        *onePortContext,
403             dmExpander_t              *oneExpander
404            );
405
406
407osGLOBAL void
408dmDumpAllUpExp(
409               dmRoot_t                  *dmRoot,
410               dmIntPortContext_t        *onePortContext,
411               dmExpander_t              *oneExpander
412              );
413
414osGLOBAL void
415dmDumpAllFreeExp(
416                 dmRoot_t                  *dmRoot
417                );
418
419osGLOBAL void
420dmDumpAllMainExp(
421                 dmRoot_t                 *dmRoot,
422                 dmIntPortContext_t       *onePortContext
423                );
424
425osGLOBAL void
426dmDumpAllMainDevice(
427                   dmRoot_t                 *dmRoot,
428                   dmIntPortContext_t       *onePortContext
429                   );
430
431osGLOBAL void
432dmSubReportChanges(
433                   dmRoot_t                  *dmRoot,
434                   dmIntPortContext_t        *onePortContext,
435		   dmDeviceData_t            *oneDeviceData,
436                   bit32                     flag
437                  );
438osGLOBAL void
439dmSubReportRemovals(
440                   dmRoot_t                  *dmRoot,
441                   dmIntPortContext_t        *onePortContext,
442                   dmDeviceData_t            *oneDeviceData,
443                   bit32                     flag
444                  );
445
446osGLOBAL void
447dmReportChanges(
448                dmRoot_t                  *dmRoot,
449                dmIntPortContext_t        *onePortContext
450               );
451
452osGLOBAL void
453dmReportRemovals(
454                 dmRoot_t                  *dmRoot,
455                 dmIntPortContext_t        *onePortContext,
456                 bit32                     flag
457                );
458
459osGLOBAL void
460dmDiscoveryDeviceCleanUp(
461                         dmRoot_t                  *dmRoot,
462                         dmIntPortContext_t        *onePortContext
463                        );
464osGLOBAL void
465dmDiscoveryExpanderCleanUp(
466                         dmRoot_t                  *dmRoot,
467                         dmIntPortContext_t        *onePortContext
468                        );
469
470osGLOBAL void
471dmResetReported(
472                dmRoot_t                  *dmRoot,
473                dmIntPortContext_t        *onePortContext
474               );
475
476osGLOBAL void
477dmDiscoveryErrorRemovals(
478                         dmRoot_t                  *dmRoot,
479                         dmIntPortContext_t        *onePortContext
480                        );
481osGLOBAL void
482dmDiscoveryInvalidateDevices(
483                             dmRoot_t                  *dmRoot,
484                             dmIntPortContext_t        *onePortContext
485                            );
486
487osGLOBAL dmDeviceData_t *
488dmAddSASToSharedcontext(
489                         dmRoot_t              *dmRoot,
490                         dmIntPortContext_t    *onePortContext,
491                         dmSASSubID_t          *dmSASSubID,
492                         dmDeviceData_t        *oneExpDeviceData,
493                         bit8                  phyID
494                        );
495osGLOBAL bit32
496dmSAS2SAS11ErrorCheck(
497                      dmRoot_t              *dmRoot,
498                      dmIntPortContext_t    *onePortContext,
499                      dmExpander_t          *topExpander,
500                      dmExpander_t          *bottomExpander,
501                      dmExpander_t          *currentExpander
502                     );
503
504osGLOBAL void
505dmUpdateMCN(
506            dmRoot_t            *dmRoot,
507            dmIntPortContext_t  *onePortContext,
508            dmDeviceData_t      *AdjacentDeviceData, /* adjacent expander */
509            dmDeviceData_t      *oneDeviceData /* current one */
510           );
511
512osGLOBAL void
513dmUpdateAllAdjacent(
514                    dmRoot_t            *dmRoot,
515                    dmIntPortContext_t  *onePortContext,
516                    dmDeviceData_t      *oneDeviceData /* current one */
517                   );
518osGLOBAL void
519dmDiscoveryResetMCN(
520                    dmRoot_t                 *dmRoot,
521                    dmIntPortContext_t       *onePortContext
522                   );
523
524osGLOBAL void
525dmDiscoveryDumpMCN(
526                    dmRoot_t                 *dmRoot,
527                    dmIntPortContext_t       *onePortContext
528                   );
529
530osGLOBAL void
531dmDiscoveryReportMCN(
532                    dmRoot_t                 *dmRoot,
533                    dmIntPortContext_t       *onePortContext
534                   );
535
536GLOBAL void dmSetDeviceInfoCB(
537                                agsaRoot_t        *agRoot,
538                                agsaContext_t     *agContext,
539                                agsaDevHandle_t   *agDevHandle,
540                                bit32             status,
541                                bit32             option,
542                                bit32             param
543                                );
544
545/*********************************** SMP-related *******************************************************/
546osGLOBAL void
547dmsaSMPCompleted(
548                 agsaRoot_t            *agRoot,
549                 agsaIORequest_t       *agIORequest,
550                 bit32                 agIOStatus,
551                 bit32                 agIOInfoLen,
552                 agsaFrameHandle_t     agFrameHandle
553                 );
554
555osGLOBAL bit32
556dmSMPStart(
557           dmRoot_t              *dmRoot,
558           agsaRoot_t            *agRoot,
559           dmDeviceData_t        *oneDeviceData,
560           bit32                 functionCode,
561           bit8                  *pSmpBody,
562           bit32                 smpBodySize,
563           bit32                 agRequestType
564           );
565
566osGLOBAL void
567dmReportGeneralSend(
568                    dmRoot_t             *dmRoot,
569                    dmDeviceData_t       *oneDeviceData
570                    );
571
572osGLOBAL void
573dmReportGeneralRespRcvd(
574                        dmRoot_t              *dmRoot,
575                        agsaRoot_t            *agRoot,
576                        agsaIORequest_t       *agIORequest,
577                        dmDeviceData_t        *oneDeviceData,
578                        dmSMPFrameHeader_t    *frameHeader,
579                        agsaFrameHandle_t     frameHandle
580                        );
581
582osGLOBAL void
583dmReportGeneral2RespRcvd(
584                        dmRoot_t              *dmRoot,
585                        agsaRoot_t            *agRoot,
586                        agsaIORequest_t       *agIORequest,
587                        dmDeviceData_t        *oneDeviceData,
588                        dmSMPFrameHeader_t    *frameHeader,
589                        agsaFrameHandle_t     frameHandle
590                        );
591
592osGLOBAL void
593dmDiscoverSend(
594               dmRoot_t             *dmRoot,
595               dmDeviceData_t       *oneDeviceData
596              );
597
598osGLOBAL void
599dmDiscoverRespRcvd(
600                   dmRoot_t              *dmRoot,
601                   agsaRoot_t            *agRoot,
602                   agsaIORequest_t       *agIORequest,
603                   dmDeviceData_t        *oneDeviceData,
604                   dmSMPFrameHeader_t    *frameHeader,
605                   agsaFrameHandle_t     frameHandle
606                  );
607
608osGLOBAL void
609dmDiscover2RespRcvd(
610                   dmRoot_t              *dmRoot,
611                   agsaRoot_t            *agRoot,
612                   agsaIORequest_t       *agIORequest,
613                   dmDeviceData_t        *oneDeviceData,
614                   dmSMPFrameHeader_t    *frameHeader,
615                   agsaFrameHandle_t     frameHandle
616                  );
617
618#ifdef NOT_YET
619osGLOBAL void
620dmDiscoverList2Send(
621                    dmRoot_t             *dmRoot,
622                    dmDeviceData_t       *oneDeviceData
623                   );
624
625osGLOBAL void
626dmDiscoverList2RespRcvd(
627                        dmRoot_t              *dmRoot,
628                        agsaRoot_t            *agRoot,
629                        dmDeviceData_t        *oneDeviceData,
630                        dmSMPFrameHeader_t    *frameHeader,
631                        agsaFrameHandle_t     frameHandle
632                       );
633#endif
634
635osGLOBAL void
636dmReportPhySataSend(
637                    dmRoot_t             *dmRoot,
638                    dmDeviceData_t       *oneDeviceData,
639                    bit8                 phyId
640                    );
641
642osGLOBAL void
643dmReportPhySataRcvd(
644                    dmRoot_t              *dmRoot,
645                    agsaRoot_t            *agRoot,
646                    agsaIORequest_t       *agIORequest,
647                    dmDeviceData_t        *oneDeviceData,
648                    dmSMPFrameHeader_t    *frameHeader,
649                    agsaFrameHandle_t     frameHandle
650                   );
651
652osGLOBAL void
653dmReportPhySata2Rcvd(
654                    dmRoot_t              *dmRoot,
655                    agsaRoot_t            *agRoot,
656                    agsaIORequest_t       *agIORequest,
657                    dmDeviceData_t        *oneDeviceData,
658                    dmSMPFrameHeader_t    *frameHeader,
659                    agsaFrameHandle_t     frameHandle
660                   );
661
662osGLOBAL bit32
663dmRoutingEntryAdd(
664                  dmRoot_t          *dmRoot,
665                  dmExpander_t      *oneExpander,
666                  bit32             phyId,
667                  bit32             configSASAddressHi,
668                  bit32             configSASAddressLo
669                 );
670
671osGLOBAL void
672dmConfigRoutingInfoRespRcvd(
673                            dmRoot_t              *dmRoot,
674                            agsaRoot_t            *agRoot,
675                            agsaIORequest_t       *agIORequest,
676                            dmDeviceData_t        *oneDeviceData,
677                            dmSMPFrameHeader_t    *frameHeader,
678                            agsaFrameHandle_t     frameHandle
679                           );
680
681osGLOBAL void
682dmConfigRoutingInfo2RespRcvd(
683                            dmRoot_t              *dmRoot,
684                            agsaRoot_t            *agRoot,
685                            agsaIORequest_t       *agIORequest,
686                            dmDeviceData_t        *oneDeviceData,
687                            dmSMPFrameHeader_t    *frameHeader,
688                            agsaFrameHandle_t     frameHandle
689                           );
690
691osGLOBAL bit32
692dmPhyControlSend(
693                 dmRoot_t             *dmRoot,
694                 dmDeviceData_t       *oneDeviceData,
695                 bit8                 phyOp,
696                 bit8                 phyID
697                 );
698
699osGLOBAL void
700dmPhyControlRespRcvd(
701                     dmRoot_t              *dmRoot,
702                     agsaRoot_t            *agRoot,
703                     agsaIORequest_t       *agIORequest,
704                     dmDeviceData_t        *oneDeviceData,
705                     dmSMPFrameHeader_t    *frameHeader,
706                     agsaFrameHandle_t     frameHandle
707                    );
708
709osGLOBAL void
710dmPhyControl2RespRcvd(
711                     dmRoot_t              *dmRoot,
712                     agsaRoot_t            *agRoot,
713                     agsaIORequest_t       *agIORequest,
714                     dmDeviceData_t        *oneDeviceData,
715                     dmSMPFrameHeader_t    *frameHeader,
716                     agsaFrameHandle_t     frameHandle
717                    );
718
719osGLOBAL void
720dmPhyControlFailureRespRcvd(
721                            dmRoot_t              *dmRoot,
722                            agsaRoot_t            *agRoot,
723                            dmDeviceData_t        *oneDeviceData,
724                            dmSMPFrameHeader_t    *frameHeader,
725                            agsaFrameHandle_t     frameHandle
726                           );
727
728osGLOBAL void
729dmHandleZoneViolation(
730                      dmRoot_t              *dmRoot,
731                      agsaRoot_t            *agRoot,
732                      agsaIORequest_t       *agIORequest,
733                      dmDeviceData_t        *oneDeviceData,
734                      dmSMPFrameHeader_t    *frameHeader,
735                      agsaFrameHandle_t     frameHandle
736                     );
737
738osGLOBAL void
739dmSMPCompleted(
740               agsaRoot_t            *agRoot,
741               agsaIORequest_t       *agIORequest,
742               bit32                 agIOStatus,
743               bit32                 agIOInfoLen,
744               agsaFrameHandle_t     agFrameHandle
745              );
746
747osGLOBAL void
748dmSMPAbortCB(
749             agsaRoot_t           *agRoot,
750             agsaIORequest_t      *agIORequest,
751             bit32                flag,
752             bit32                status
753             );
754
755osGLOBAL void
756dmBCTimer(
757          dmRoot_t                 *dmRoot,
758          dmIntPortContext_t       *onePortContext
759         );
760
761osGLOBAL void
762dmBCTimerCB(
763              dmRoot_t    * dmRoot_t,
764              void        * timerData1,
765              void        * timerData2,
766              void        * timerData3
767              );
768
769/*********************************** SMP-related *******************************************************/
770osGLOBAL void
771dmDiscoverySMPTimer(dmRoot_t                 *dmRoot,
772                    dmIntPortContext_t       *onePortContext,
773                    bit32                    functionCode,
774                    dmSMPRequestBody_t       *dmSMPRequestBody
775                   );
776
777osGLOBAL void
778dmDiscoverySMPTimerCB(
779                      dmRoot_t    * dmRoot,
780                      void        * timerData1,
781                      void        * timerData2,
782                      void        * timerData3
783                     );
784
785osGLOBAL void
786dmDiscoveryConfiguringTimer(dmRoot_t                 *dmRoot,
787                            dmIntPortContext_t       *onePortContext,
788                            dmDeviceData_t           *oneDeviceData
789                           );
790
791
792osGLOBAL void
793dmDiscoveryConfiguringTimerCB(
794                              dmRoot_t    * dmRoot,
795                              void        * timerData1,
796                              void        * timerData2,
797                              void        * timerData3
798                             );
799
800osGLOBAL void
801dmSMPBusyTimer(dmRoot_t             *dmRoot,
802               dmIntPortContext_t   *onePortContext,
803               dmDeviceData_t       *oneDeviceData,
804               dmSMPRequestBody_t   *dmSMPRequestBody
805              );
806
807osGLOBAL void
808dmSMPBusyTimerCB(
809                 dmRoot_t    * dmRoot,
810                 void        * timerData1,
811                 void        * timerData2,
812                 void        * timerData3
813                );
814
815osGLOBAL void
816dmConfigureRouteTimer(dmRoot_t                 *dmRoot,
817                      dmIntPortContext_t       *onePortContext,
818                      dmExpander_t             *oneExpander,
819                      smpRespDiscover_t        *pdmSMPDiscoverResp,
820                      smpRespDiscover2_t       *pdmSMPDiscover2Resp
821                     );
822
823osGLOBAL void
824dmConfigureRouteTimerCB(
825                        dmRoot_t    * dmRoot,
826                        void        * timerData1,
827                        void        * timerData2,
828                        void        * timerData3
829                       );
830
831#endif                          /* __DMPROTO_H__ */
832
833
834