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