1 #ifndef _G_FABRIC_NVOC_H_
2 #define _G_FABRIC_NVOC_H_
3 #include "nvoc/runtime.h"
4 
5 #ifdef __cplusplus
6 extern "C" {
7 #endif
8 
9 /*
10  * SPDX-FileCopyrightText: Copyright (c) 2019-2023 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
11  * SPDX-License-Identifier: MIT
12  *
13  * Permission is hereby granted, free of charge, to any person obtaining a
14  * copy of this software and associated documentation files (the "Software"),
15  * to deal in the Software without restriction, including without limitation
16  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
17  * and/or sell copies of the Software, and to permit persons to whom the
18  * Software is furnished to do so, subject to the following conditions:
19  *
20  * The above copyright notice and this permission notice shall be included in
21  * all copies or substantial portions of the Software.
22  *
23  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
24  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
29  * DEALINGS IN THE SOFTWARE.
30  */
31 
32 /******************************************************************************
33  *
34  *   Description:
35  *       This file contains the functions managing the NVLink fabric
36  *
37  *****************************************************************************/
38 
39 #include "g_fabric_nvoc.h"
40 
41 #ifndef _FABRIC_H_
42 #define _FABRIC_H_
43 
44 #include "core/core.h"
45 #include "core/system.h"
46 #include "containers/multimap.h"
47 #include "containers/map.h"
48 #include "class/cl000f.h"
49 #include "ctrl/ctrl000f.h"
50 
51 #include "core/thread_state.h"
52 #include "rmapi/event.h"
53 #include "rmapi/resource.h"
54 #include "containers/list.h"
55 #include "nvCpuUuid.h"
56 #include "ctrl/ctrl00f1.h"
57 
58 
59 
60 // ****************************************************************************
61 //                          Type Definitions
62 // ****************************************************************************
63 
64 typedef struct
65 {
66     void *pData;
67 } FabricCacheMapEntry;
68 
69 MAKE_MAP(FabricCacheMap, FabricCacheMapEntry);
70 
71 typedef struct
72 {
73     FabricCacheMap map;
74 } FabricCacheEntry;
75 
76 MAKE_MULTIMAP(FabricCache, FabricCacheEntry);
77 
78 #define NV_FABRIC_INVALID_NODE_ID ((NvU16) 0xFFFF)
79 
80 MAKE_LIST(FabricEventListV2, NV00F1_CTRL_FABRIC_EVENT);
81 
82 // Callbacks
83 void fabricWakeUpThreadCallback(void *pData);
84 
85 #include "nvlink_inband_msg.h"
86 
87 void fabricMulticastWaitOnTeamCleanupCallback(void *pCbData);
88 
89 //
90 // The Fabric object is used to encapsulate the NVLink fabric
91 //
92 
93 // Private field names are wrapped in PRIVATE_FIELD, which does nothing for
94 // the matching C source file, but causes diagnostics to be issued if another
95 // source file references the field.
96 #ifdef NVOC_FABRIC_H_PRIVATE_ACCESS_ALLOWED
97 #define PRIVATE_FIELD(x) x
98 #else
99 #define PRIVATE_FIELD(x) NVOC_PRIVATE_FIELD(x)
100 #endif
101 
102 struct Fabric {
103     const struct NVOC_RTTI *__nvoc_rtti;
104     struct Object __nvoc_base_Object;
105     struct Object *__nvoc_pbase_Object;
106     struct Fabric *__nvoc_pbase_Fabric;
107     PORT_RWLOCK *pFabricImportModuleLock;
108     PORT_RWLOCK *pMulticastFabricModuleLock;
109     NvU32 PRIVATE_FIELD(flags);
110     FabricEventListV2 PRIVATE_FIELD(fabricEventListV2);
111     PORT_RWLOCK *PRIVATE_FIELD(pListLock);
112     FabricCache PRIVATE_FIELD(importCache);
113     PORT_RWLOCK *PRIVATE_FIELD(pImportCacheLock);
114     FabricCache PRIVATE_FIELD(unimportCache);
115     PORT_RWLOCK *PRIVATE_FIELD(pUnimportCacheLock);
116     NvP64 PRIVATE_FIELD(pOsImexEvent);
117     NvU16 PRIVATE_FIELD(nodeId);
118     volatile NvU64 PRIVATE_FIELD(eventId);
119     FabricCache PRIVATE_FIELD(fabricMulticastCache);
120     PORT_RWLOCK *PRIVATE_FIELD(pMulticastFabriCacheLock);
121 };
122 
123 #ifndef __NVOC_CLASS_Fabric_TYPEDEF__
124 #define __NVOC_CLASS_Fabric_TYPEDEF__
125 typedef struct Fabric Fabric;
126 #endif /* __NVOC_CLASS_Fabric_TYPEDEF__ */
127 
128 #ifndef __nvoc_class_id_Fabric
129 #define __nvoc_class_id_Fabric 0x0ac791
130 #endif /* __nvoc_class_id_Fabric */
131 
132 extern const struct NVOC_CLASS_DEF __nvoc_class_def_Fabric;
133 
134 #define __staticCast_Fabric(pThis) \
135     ((pThis)->__nvoc_pbase_Fabric)
136 
137 #ifdef __nvoc_fabric_h_disabled
138 #define __dynamicCast_Fabric(pThis) ((Fabric*)NULL)
139 #else //__nvoc_fabric_h_disabled
140 #define __dynamicCast_Fabric(pThis) \
141     ((Fabric*)__nvoc_dynamicCast(staticCast((pThis), Dynamic), classInfo(Fabric)))
142 #endif //__nvoc_fabric_h_disabled
143 
144 
145 NV_STATUS __nvoc_objCreateDynamic_Fabric(Fabric**, Dynamic*, NvU32, va_list);
146 
147 NV_STATUS __nvoc_objCreate_Fabric(Fabric**, Dynamic*, NvU32);
148 #define __objCreate_Fabric(ppNewObj, pParent, createFlags) \
149     __nvoc_objCreate_Fabric((ppNewObj), staticCast((pParent), Dynamic), (createFlags))
150 
151 NV_STATUS fabricConstruct_IMPL(struct Fabric *arg_pFabric);
152 
153 #define __nvoc_fabricConstruct(arg_pFabric) fabricConstruct_IMPL(arg_pFabric)
154 void fabricDestruct_IMPL(struct Fabric *pFabric);
155 
156 #define __nvoc_fabricDestruct(pFabric) fabricDestruct_IMPL(pFabric)
157 void fabricSetFmSessionFlags_IMPL(struct Fabric *pFabric, NvU32 flags);
158 
159 #ifdef __nvoc_fabric_h_disabled
fabricSetFmSessionFlags(struct Fabric * pFabric,NvU32 flags)160 static inline void fabricSetFmSessionFlags(struct Fabric *pFabric, NvU32 flags) {
161     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
162 }
163 #else //__nvoc_fabric_h_disabled
164 #define fabricSetFmSessionFlags(pFabric, flags) fabricSetFmSessionFlags_IMPL(pFabric, flags)
165 #endif //__nvoc_fabric_h_disabled
166 
167 NvU32 fabricGetFmSessionFlags_IMPL(struct Fabric *pFabric);
168 
169 #ifdef __nvoc_fabric_h_disabled
fabricGetFmSessionFlags(struct Fabric * pFabric)170 static inline NvU32 fabricGetFmSessionFlags(struct Fabric *pFabric) {
171     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
172     return 0;
173 }
174 #else //__nvoc_fabric_h_disabled
175 #define fabricGetFmSessionFlags(pFabric) fabricGetFmSessionFlags_IMPL(pFabric)
176 #endif //__nvoc_fabric_h_disabled
177 
178 NV_STATUS fabricSetImexEvent_IMPL(struct Fabric *pFabric, NvP64 pOsEvent);
179 
180 #ifdef __nvoc_fabric_h_disabled
fabricSetImexEvent(struct Fabric * pFabric,NvP64 pOsEvent)181 static inline NV_STATUS fabricSetImexEvent(struct Fabric *pFabric, NvP64 pOsEvent) {
182     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
183     return NV_ERR_NOT_SUPPORTED;
184 }
185 #else //__nvoc_fabric_h_disabled
186 #define fabricSetImexEvent(pFabric, pOsEvent) fabricSetImexEvent_IMPL(pFabric, pOsEvent)
187 #endif //__nvoc_fabric_h_disabled
188 
189 NvP64 fabricGetImexEvent_IMPL(struct Fabric *pFabric);
190 
191 #ifdef __nvoc_fabric_h_disabled
fabricGetImexEvent(struct Fabric * pFabric)192 static inline NvP64 fabricGetImexEvent(struct Fabric *pFabric) {
193     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
194     return 0;
195 }
196 #else //__nvoc_fabric_h_disabled
197 #define fabricGetImexEvent(pFabric) fabricGetImexEvent_IMPL(pFabric)
198 #endif //__nvoc_fabric_h_disabled
199 
200 void fabricSetNodeId_IMPL(struct Fabric *pFabric, NvU16 nodeId);
201 
202 #ifdef __nvoc_fabric_h_disabled
fabricSetNodeId(struct Fabric * pFabric,NvU16 nodeId)203 static inline void fabricSetNodeId(struct Fabric *pFabric, NvU16 nodeId) {
204     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
205 }
206 #else //__nvoc_fabric_h_disabled
207 #define fabricSetNodeId(pFabric, nodeId) fabricSetNodeId_IMPL(pFabric, nodeId)
208 #endif //__nvoc_fabric_h_disabled
209 
210 NvU16 fabricGetNodeId_IMPL(struct Fabric *pFabric);
211 
212 #ifdef __nvoc_fabric_h_disabled
fabricGetNodeId(struct Fabric * pFabric)213 static inline NvU16 fabricGetNodeId(struct Fabric *pFabric) {
214     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
215     return 0;
216 }
217 #else //__nvoc_fabric_h_disabled
218 #define fabricGetNodeId(pFabric) fabricGetNodeId_IMPL(pFabric)
219 #endif //__nvoc_fabric_h_disabled
220 
221 NV_STATUS fabricPostEventsV2_IMPL(struct Fabric *pFabric, NV00F1_CTRL_FABRIC_EVENT *pEvents, NvU32 numEvents);
222 
223 #ifdef __nvoc_fabric_h_disabled
fabricPostEventsV2(struct Fabric * pFabric,NV00F1_CTRL_FABRIC_EVENT * pEvents,NvU32 numEvents)224 static inline NV_STATUS fabricPostEventsV2(struct Fabric *pFabric, NV00F1_CTRL_FABRIC_EVENT *pEvents, NvU32 numEvents) {
225     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
226     return NV_ERR_NOT_SUPPORTED;
227 }
228 #else //__nvoc_fabric_h_disabled
229 #define fabricPostEventsV2(pFabric, pEvents, numEvents) fabricPostEventsV2_IMPL(pFabric, pEvents, numEvents)
230 #endif //__nvoc_fabric_h_disabled
231 
232 NvBool fabricExtractEventsV2_IMPL(struct Fabric *pFabric, NV00F1_CTRL_FABRIC_EVENT *pEventArray, NvU32 *pNumEvents);
233 
234 #ifdef __nvoc_fabric_h_disabled
fabricExtractEventsV2(struct Fabric * pFabric,NV00F1_CTRL_FABRIC_EVENT * pEventArray,NvU32 * pNumEvents)235 static inline NvBool fabricExtractEventsV2(struct Fabric *pFabric, NV00F1_CTRL_FABRIC_EVENT *pEventArray, NvU32 *pNumEvents) {
236     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
237     return NV_FALSE;
238 }
239 #else //__nvoc_fabric_h_disabled
240 #define fabricExtractEventsV2(pFabric, pEventArray, pNumEvents) fabricExtractEventsV2_IMPL(pFabric, pEventArray, pNumEvents)
241 #endif //__nvoc_fabric_h_disabled
242 
243 void fabricFlushUnhandledEvents_IMPL(struct Fabric *pFabric);
244 
245 #ifdef __nvoc_fabric_h_disabled
fabricFlushUnhandledEvents(struct Fabric * pFabric)246 static inline void fabricFlushUnhandledEvents(struct Fabric *pFabric) {
247     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
248 }
249 #else //__nvoc_fabric_h_disabled
250 #define fabricFlushUnhandledEvents(pFabric) fabricFlushUnhandledEvents_IMPL(pFabric)
251 #endif //__nvoc_fabric_h_disabled
252 
253 NvU64 fabricGenerateEventId_IMPL(struct Fabric *pFabric);
254 
255 #ifdef __nvoc_fabric_h_disabled
fabricGenerateEventId(struct Fabric * pFabric)256 static inline NvU64 fabricGenerateEventId(struct Fabric *pFabric) {
257     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
258     return 0;
259 }
260 #else //__nvoc_fabric_h_disabled
261 #define fabricGenerateEventId(pFabric) fabricGenerateEventId_IMPL(pFabric)
262 #endif //__nvoc_fabric_h_disabled
263 
264 NV_STATUS fabricImportCacheInsert_IMPL(struct Fabric *pFabric, const NvUuid *pExportUuid, NvU64 key, void *pData);
265 
266 #ifdef __nvoc_fabric_h_disabled
fabricImportCacheInsert(struct Fabric * pFabric,const NvUuid * pExportUuid,NvU64 key,void * pData)267 static inline NV_STATUS fabricImportCacheInsert(struct Fabric *pFabric, const NvUuid *pExportUuid, NvU64 key, void *pData) {
268     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
269     return NV_ERR_NOT_SUPPORTED;
270 }
271 #else //__nvoc_fabric_h_disabled
272 #define fabricImportCacheInsert(pFabric, pExportUuid, key, pData) fabricImportCacheInsert_IMPL(pFabric, pExportUuid, key, pData)
273 #endif //__nvoc_fabric_h_disabled
274 
275 void fabricImportCacheDelete_IMPL(struct Fabric *pFabric, const NvUuid *pExportUuid, NvU64 key);
276 
277 #ifdef __nvoc_fabric_h_disabled
fabricImportCacheDelete(struct Fabric * pFabric,const NvUuid * pExportUuid,NvU64 key)278 static inline void fabricImportCacheDelete(struct Fabric *pFabric, const NvUuid *pExportUuid, NvU64 key) {
279     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
280 }
281 #else //__nvoc_fabric_h_disabled
282 #define fabricImportCacheDelete(pFabric, pExportUuid, key) fabricImportCacheDelete_IMPL(pFabric, pExportUuid, key)
283 #endif //__nvoc_fabric_h_disabled
284 
285 void *fabricImportCacheGet_IMPL(struct Fabric *pFabric, const NvUuid *pExportUuid, NvU64 key);
286 
287 #ifdef __nvoc_fabric_h_disabled
fabricImportCacheGet(struct Fabric * pFabric,const NvUuid * pExportUuid,NvU64 key)288 static inline void *fabricImportCacheGet(struct Fabric *pFabric, const NvUuid *pExportUuid, NvU64 key) {
289     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
290     return NULL;
291 }
292 #else //__nvoc_fabric_h_disabled
293 #define fabricImportCacheGet(pFabric, pExportUuid, key) fabricImportCacheGet_IMPL(pFabric, pExportUuid, key)
294 #endif //__nvoc_fabric_h_disabled
295 
296 void fabricImportCacheClear_IMPL(struct Fabric *pFabric);
297 
298 #ifdef __nvoc_fabric_h_disabled
fabricImportCacheClear(struct Fabric * pFabric)299 static inline void fabricImportCacheClear(struct Fabric *pFabric) {
300     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
301 }
302 #else //__nvoc_fabric_h_disabled
303 #define fabricImportCacheClear(pFabric) fabricImportCacheClear_IMPL(pFabric)
304 #endif //__nvoc_fabric_h_disabled
305 
306 NV_STATUS fabricUnimportCacheInsert_IMPL(struct Fabric *pFabric, NvU64 unimportEventId, void *pData);
307 
308 #ifdef __nvoc_fabric_h_disabled
fabricUnimportCacheInsert(struct Fabric * pFabric,NvU64 unimportEventId,void * pData)309 static inline NV_STATUS fabricUnimportCacheInsert(struct Fabric *pFabric, NvU64 unimportEventId, void *pData) {
310     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
311     return NV_ERR_NOT_SUPPORTED;
312 }
313 #else //__nvoc_fabric_h_disabled
314 #define fabricUnimportCacheInsert(pFabric, unimportEventId, pData) fabricUnimportCacheInsert_IMPL(pFabric, unimportEventId, pData)
315 #endif //__nvoc_fabric_h_disabled
316 
317 void fabricUnimportCacheDelete_IMPL(struct Fabric *pFabric, NvU64 unimportEventId);
318 
319 #ifdef __nvoc_fabric_h_disabled
fabricUnimportCacheDelete(struct Fabric * pFabric,NvU64 unimportEventId)320 static inline void fabricUnimportCacheDelete(struct Fabric *pFabric, NvU64 unimportEventId) {
321     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
322 }
323 #else //__nvoc_fabric_h_disabled
324 #define fabricUnimportCacheDelete(pFabric, unimportEventId) fabricUnimportCacheDelete_IMPL(pFabric, unimportEventId)
325 #endif //__nvoc_fabric_h_disabled
326 
327 void *fabricUnimportCacheGet_IMPL(struct Fabric *pFabric, NvU64 unimportEventId);
328 
329 #ifdef __nvoc_fabric_h_disabled
fabricUnimportCacheGet(struct Fabric * pFabric,NvU64 unimportEventId)330 static inline void *fabricUnimportCacheGet(struct Fabric *pFabric, NvU64 unimportEventId) {
331     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
332     return NULL;
333 }
334 #else //__nvoc_fabric_h_disabled
335 #define fabricUnimportCacheGet(pFabric, unimportEventId) fabricUnimportCacheGet_IMPL(pFabric, unimportEventId)
336 #endif //__nvoc_fabric_h_disabled
337 
338 void fabricUnimportCacheIterateAll_IMPL(struct Fabric *pFabric, void (*pCb)(void *));
339 
340 #ifdef __nvoc_fabric_h_disabled
fabricUnimportCacheIterateAll(struct Fabric * pFabric,void (* pCb)(void *))341 static inline void fabricUnimportCacheIterateAll(struct Fabric *pFabric, void (*pCb)(void *)) {
342     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
343 }
344 #else //__nvoc_fabric_h_disabled
345 #define fabricUnimportCacheIterateAll(pFabric, pCb) fabricUnimportCacheIterateAll_IMPL(pFabric, pCb)
346 #endif //__nvoc_fabric_h_disabled
347 
348 NvBool fabricUnimportCacheInvokeCallback_IMPL(struct Fabric *pFabric, NvU64 unimportEventId, void (*pCb)(void *));
349 
350 #ifdef __nvoc_fabric_h_disabled
fabricUnimportCacheInvokeCallback(struct Fabric * pFabric,NvU64 unimportEventId,void (* pCb)(void *))351 static inline NvBool fabricUnimportCacheInvokeCallback(struct Fabric *pFabric, NvU64 unimportEventId, void (*pCb)(void *)) {
352     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
353     return NV_FALSE;
354 }
355 #else //__nvoc_fabric_h_disabled
356 #define fabricUnimportCacheInvokeCallback(pFabric, unimportEventId, pCb) fabricUnimportCacheInvokeCallback_IMPL(pFabric, unimportEventId, pCb)
357 #endif //__nvoc_fabric_h_disabled
358 
359 NV_STATUS fabricMulticastSetupCacheInsert_IMPL(struct Fabric *pFabric, NvU64 requesId, void *pData);
360 
361 #ifdef __nvoc_fabric_h_disabled
fabricMulticastSetupCacheInsert(struct Fabric * pFabric,NvU64 requesId,void * pData)362 static inline NV_STATUS fabricMulticastSetupCacheInsert(struct Fabric *pFabric, NvU64 requesId, void *pData) {
363     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
364     return NV_ERR_NOT_SUPPORTED;
365 }
366 #else //__nvoc_fabric_h_disabled
367 #define fabricMulticastSetupCacheInsert(pFabric, requesId, pData) fabricMulticastSetupCacheInsert_IMPL(pFabric, requesId, pData)
368 #endif //__nvoc_fabric_h_disabled
369 
370 void fabricMulticastSetupCacheDelete_IMPL(struct Fabric *pFabric, NvU64 requesId);
371 
372 #ifdef __nvoc_fabric_h_disabled
fabricMulticastSetupCacheDelete(struct Fabric * pFabric,NvU64 requesId)373 static inline void fabricMulticastSetupCacheDelete(struct Fabric *pFabric, NvU64 requesId) {
374     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
375 }
376 #else //__nvoc_fabric_h_disabled
377 #define fabricMulticastSetupCacheDelete(pFabric, requesId) fabricMulticastSetupCacheDelete_IMPL(pFabric, requesId)
378 #endif //__nvoc_fabric_h_disabled
379 
380 void *fabricMulticastSetupCacheGet_IMPL(struct Fabric *pFabric, NvU64 requestId);
381 
382 #ifdef __nvoc_fabric_h_disabled
fabricMulticastSetupCacheGet(struct Fabric * pFabric,NvU64 requestId)383 static inline void *fabricMulticastSetupCacheGet(struct Fabric *pFabric, NvU64 requestId) {
384     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
385     return NULL;
386 }
387 #else //__nvoc_fabric_h_disabled
388 #define fabricMulticastSetupCacheGet(pFabric, requestId) fabricMulticastSetupCacheGet_IMPL(pFabric, requestId)
389 #endif //__nvoc_fabric_h_disabled
390 
391 NV_STATUS fabricMulticastCleanupCacheInsert_IMPL(struct Fabric *pFabric, NvU64 requesId, void *pData);
392 
393 #ifdef __nvoc_fabric_h_disabled
fabricMulticastCleanupCacheInsert(struct Fabric * pFabric,NvU64 requesId,void * pData)394 static inline NV_STATUS fabricMulticastCleanupCacheInsert(struct Fabric *pFabric, NvU64 requesId, void *pData) {
395     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
396     return NV_ERR_NOT_SUPPORTED;
397 }
398 #else //__nvoc_fabric_h_disabled
399 #define fabricMulticastCleanupCacheInsert(pFabric, requesId, pData) fabricMulticastCleanupCacheInsert_IMPL(pFabric, requesId, pData)
400 #endif //__nvoc_fabric_h_disabled
401 
402 void fabricMulticastCleanupCacheDelete_IMPL(struct Fabric *pFabric, NvU64 requesId);
403 
404 #ifdef __nvoc_fabric_h_disabled
fabricMulticastCleanupCacheDelete(struct Fabric * pFabric,NvU64 requesId)405 static inline void fabricMulticastCleanupCacheDelete(struct Fabric *pFabric, NvU64 requesId) {
406     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
407 }
408 #else //__nvoc_fabric_h_disabled
409 #define fabricMulticastCleanupCacheDelete(pFabric, requesId) fabricMulticastCleanupCacheDelete_IMPL(pFabric, requesId)
410 #endif //__nvoc_fabric_h_disabled
411 
412 void *fabricMulticastCleanupCacheGet_IMPL(struct Fabric *pFabric, NvU64 requestId);
413 
414 #ifdef __nvoc_fabric_h_disabled
fabricMulticastCleanupCacheGet(struct Fabric * pFabric,NvU64 requestId)415 static inline void *fabricMulticastCleanupCacheGet(struct Fabric *pFabric, NvU64 requestId) {
416     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
417     return NULL;
418 }
419 #else //__nvoc_fabric_h_disabled
420 #define fabricMulticastCleanupCacheGet(pFabric, requestId) fabricMulticastCleanupCacheGet_IMPL(pFabric, requestId)
421 #endif //__nvoc_fabric_h_disabled
422 
423 void fabricMulticastCleanupCacheInvokeCallback_IMPL(struct Fabric *pFabric, NvU64 requestId, void (*pCb)(void *));
424 
425 #ifdef __nvoc_fabric_h_disabled
fabricMulticastCleanupCacheInvokeCallback(struct Fabric * pFabric,NvU64 requestId,void (* pCb)(void *))426 static inline void fabricMulticastCleanupCacheInvokeCallback(struct Fabric *pFabric, NvU64 requestId, void (*pCb)(void *)) {
427     NV_ASSERT_FAILED_PRECOMP("Fabric was disabled!");
428 }
429 #else //__nvoc_fabric_h_disabled
430 #define fabricMulticastCleanupCacheInvokeCallback(pFabric, requestId, pCb) fabricMulticastCleanupCacheInvokeCallback_IMPL(pFabric, requestId, pCb)
431 #endif //__nvoc_fabric_h_disabled
432 
433 #undef PRIVATE_FIELD
434 
435 
436 #endif // _FABRIC_H_
437 
438 #ifdef __cplusplus
439 } // extern "C"
440 #endif
441 
442 #endif // _G_FABRIC_NVOC_H_
443