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